世上无难事,只要肯攀登

Git地址 个人Git
Git用户名 dwyy666
学号后五位 62307
博客地址 个人博客
做业连接 我的第2次做业:熟悉使用工具

做业背景简介

    阿超家里的孩子上小学一年级了,这个暑假老师给家长们布置了一个做业:家长天天要给孩子出一些合理的,但要有些难度的四则运算题目,而且家长要对孩子的做业打分记录。
  html

    做为程序员的阿超心想,既然天天都须要出题,那何不作一个能够自动生成小学四则运算题目与解决题目的命令行 “软件”呢。他把老师的话翻译一下,就造成了这个软件的需求:java

    程序接收一个命令行参数 n,而后随机产生 n 道加减乘除(分别使用符号+-*/来表示)练习题,每一个数字在 0 和 100 之间,运算符在 2 个 到 3 个之间。因为阿超的孩子才上一年级,并不知道分数。因此软件所出的练习题在运算过程当中不得出现非整数,好比不能出现 3÷5+2=2.6 这样的算式。
  c++

    练习题生成好后,将生成的 n 道练习题及其对应的正确答案输出到一个文件 subject.txt 中。当程序接收的参数为4时,如下为一个输出文件示例。git

13+17-1=29
    11*15-5=160
    3+10+4-16=1
    15÷5+3-2=4

Part一、配置环境

   1. VS2017安装与配置

     因为以前的学习过程当中已经安装过VS2017,这里就再也不展现安装过程,除了安装比较耗时以外(它太庞大了),安装起来应该没有什么难度。
程序员

   2. Git安装

     因为以前没有操做过Git,因此每一步都是走的当心翼翼,参考ChildishChange助教的教程一步步操做。没想到,上来就遇到了让我抓狂的问题!!在下载Git的时候,从官网给定的连接下载巨慢,并且还下载失败!!在这里耽误了好久好久,最后经过面向百度解决问题,终于找到一种可行的办法。github

     即经过浏览器f12查看网页源代码,找到下载连接网址,直接复制网址到迅雷新建下载任务,十秒钟搞定!接下来就傻瓜式安装疯狂next就完事儿了!Git安装成功!

算法

   3. Github项目克隆

    虽然以前使用过Github,可是仅限于在上面学习前辈的代码,从没使用Github的仓库上传代码,因此,此次就体验了代码仓库的拷贝以及代码上传管理。首先,进入阿超的仓库,点击右上角的Fork,将阿超的四则运算库拷贝到本身的同名仓库,以下图所示
编程

    能够看到,本身也拥有了一个同名仓库
c#

    再利用Git将项目克隆到本地,在这里最好是在一个新目录下建立一个文件夹
数组

    体验完从Github上克隆项目,就准备开始新建本身的项目吧!

Part二、代码设计

  • 大概思路:产生随机数,拼接算式,打印文件

  • 首先建立一个getNum类,来产生随机数,这里须要产生四组随机数,两组做为数值,一组做为运算符数组的标记下标,一组做为运算符个数。

    private static char[] size = { '+', '-', '*', '/' };
      public string getnum()
      {
          int x, y, z, t;
    
          Random random = new Random();
          z = random.Next(2, 4);
          //做为随机运算符个数
    
          string str;
          x = random.Next(0, 100);
          //做为随机数值
          str = Convert.ToString(x);
    
          for (int i = 0; i < z; i++)
          {
               t = random.Next(0, 4);
               //做为随机运算符下标
               y = random.Next(0, 100);
               str += size[t] + Convert.ToString(y);
               //拼接字符串
               System.Threading.Thread.Sleep(50);
               //因为时间间隔过短,须要设置程序睡眠
          }
          return str;
      }
  • 而后建立一个写入文件writeFile类,调用StreamWriter方法,在这里加入一个容错判断机制,若是成功,则写入文件,不然写入失败。

    public void writefile(string str)
      {
    
          try
          {
              StreamWriter sw = new StreamWriter("e:\\test.txt", true);
              sw.WriteLine(str);
              sw.Close();
          }
          catch (Exception e)
          {
              Console.WriteLine("文件写入失败!");
          }  
      }
  • 最后写的是调用方法主函数,在这里判断除数为0以及结果为负数的时候,从新生成

    //若是结果含有小数点,或者表达式中有除以0,或者结果为负数则再次获取一个计算式
      if (result.ToString().Contains(".") || str.Contains("/0") || int.Parse(result.ToString()) < 0)
      continue;
  • 运行结果如图所示

Part三、单元测试

  • 首先建立一个单元测试项目,经过在如今项目的解决方案右键—>添加—>新建项目选择单元测试项目。如图

  • 在单元测试项目里,还须要添加对被测试项目的引用

  • 在这里经过学习书上内容,须要将全部的类写成public共有类,才能够进行单元测试
  • 开始测试,如图

Part四、断点调试及回归测试

   1. 断点调试

  • 设断点调程序应该是从咱们开始编程就在使用了,刚开始可能用的编译器是vc++,后面到vs2017,这里就不得不提vs2017这个IDE,虽然他很是庞大,可是总体的使用体验真的很棒!断点调试功能很是强大(稍微感慨了一下,言归正传)
  • 首先设置起始断点,在对应代码行左边栏轻轻一点,断点就设置好了!能够选择快捷键F5进入调试界面,如图

  • 下一步,根据逻辑能够选择逐语句、逐过程进行调试

  • 这里还能够调出不少监视器,能够查看内存、cpu使用、监视变量等等

   2.回归测试

  • 回归测试是一种系统范围的测试,旨在确保系统某个部分的微小变化不会破坏系统中其余地方的现有功能。这很重要,由于没有回归测试,颇有可能将预期的修复程序引入到一个系统中,这个系统会产生比他们解决的问题更多的问题。——百度

  • 在我看来,就是在单元测试优化程序事后再次进行的单元测试,因此,在我修改完代码以后再次运行单元测试程序,步骤与上文一致,就再也不贴图了(贴图好难)

Part五、效能分析

  • VS 自带性能分析工具,能够执行直接在VS中执行书写的项目,也能够追踪生成的可执行文件(须要其它文件,如pdb),二者的操做差很少,主要在执行分析时有点区别。

  • 性能分析首先要执行分析并生成分析报告。VS开始性能分析的快捷键为 ALT+F2,也可使用菜单工具栏,有两处入口,以下图所示:
  • “分析” -> “性能探查器”

  • 开始分析

  • 诊断报告

  • 这里咱们还能够生成详细诊断报告

  • 点击函数,能够查看函数内方法被调用占CPU的效率

Part六、上传代码

  • 首先经过Git输入git add .和git commit -m "魏家田201731062307"命令对本地仓库进行修改,如图

  • 利用git push上传Git hub,在这里须要登陆一下Git hub的帐号

  • push完以后,登陆Git hub帐号能够看到个人仓库已经有了刚刚上传的文件,而后咱们就能够向源仓库发起Pull Request,如图,上传成功,到这里,阿超的四则运算项目告一段落。

Part七、总结感悟

    终于写完了,说实话,c#有点生涩了。编程测试上传再加写博客,耗费了我全部的课余时间,通宵写代码,开始掉头发??

    收获

    1.再一次锻炼个人心理承受能力,下载Git、程序调不通,尤为是当百度寻求解决办法无解的时候,心态是真的爆炸,不过还好,耐着凌晨3:00实验室空无一人的孤独总算是写完了。

    2.初步了解了程序的测试流程,以及根据测试结果调整代码优化的做用,可是距离熟练利用还须要深刻学习,

    3.近一年没写c#了,经过此次学习,又一次加深了对语言理解,不管是java仍是c#,思想都是同样的,就是须要一点时间去适应c#和vs,get到了一个很是强大的dataTable.compute()方法,它能够用来计算传递筛选条件的当前行上的给定表达式,免去了手写算法的困难。

相关文章
相关标签/搜索