《构建之法》——熟悉工具使用

Git地址
MyGit
Git用户名
icjy
学号后五位
04215
博客地址
博客地址
作业链接
作业内容的链接

1.配置环境——安装Visual Studio 2017

由于之前已经下载过Visual Studio 2017的企业版,我现在要做的就是看看电脑上是否已经安装过.Net Framework,Visual Studio是否安装了C#所需的组件。


1).NET Framework

在控制面板->卸载或更改程序中找到了.NET Framework 4.7.2,说明之前已经成功安装过较高的版本。


2)C#组件

在Windows中搜索studio,会出现Visual Studio Installer,双击打开。或者查看文件所在位置,能看到Visual Studio 的安装包具体位置信息,打开以后,会看到电脑已经安装了Visual Studio Enterprise 2017。



点击更多->修改

在安装工作组件的页面中,只要勾选了.NET 桌面开发使用C++的桌面开发通用Windows平台开发,系统驱动器不需要再占用空间,为0KB,说明之前已经安装好了所有的基本组件,包括C#,C++等等。

通过以上两步确认,本机已经配置好VS2017的环境。

2.克隆项目——GitHub的使用

1)之前已注册过GitHub账户,因此直接将阿超仓库的四则运算库拷贝到我的同名仓库中。


2)之前看的Git的安装和学习教程是廖雪峰老师的教程,本机能直接打开Git Bash,这里就不再给出安装过程。


3)我在E:\GitProject\chaosir 克隆了AchaoCalculator,具体如下图:


4)打开AchaoCalculator目录,新建文件夹并重命名为我的GitHub账户名。


## 3.代码设计思路

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

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

  • 程序接收一个命令行参数 n,然后随机产生 n 道加减乘除(分别使用符号+-*/来表示)练习题,每个数字在 0100 之间,运算符在 2 个 到 3 个之间。

  • 由于阿超的孩子才上一年级,并不知道分数。所以软件所出的练习题在运算过程中不得出现非整数,比如不能出现 3÷5+2=2.6 这样的算式。

  • 练习题生成好后,将生成的 n 道练习题及其对应的正确答案输出到一个文件 subject.txt 中。

  • 当程序接收的参数为4时,以下为一个输出文件示例。

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

**1)**按照题目要求,程序分为三个部分,第一部分接收题目个数,在`main()`中;第二部分随机生成题目,在`create()`中;第三部分将题目和答案输出到subject.txt中,这部分写在了`storeTest()`里。

2)在第二部分里,我使用Random和一个for循环来随机生成2个或者3个符号,能使每次生成的随机数都不同。

			Random r = new Random();
            for (i = 0; i <= 1; i++)
            {
                a[i] = r.Next(2, 4);//决定生成多少个符号
            }

符号+-*/本身就是字符,将所有的数字也转变成字符串,构造一个类似于123+5x2-1的形式,再用DataTableCompute("123+5*2-1","")即能算出结果。

3)将字符串输出到subject.txt,由于题目需要不断的追加到txt文件中,使用FileStreamStreamWriter能完美解决这个问题。


运行结果如下:


## 4.单元测试与回归测试

遇到的问题与解决:在写程序的过程中,偶尔出现了几个我觉得很不可思议的错误,这时我会在报错的位置打断点,按F5键开始调试,一般我习惯用逐过程F10来一步一步往下看,查找错误。如下图的错误:

报了数组索引越界的错误,一开始我还找了很久,后来才发现是错把j写成i了,于是后面我索性把需要用到for循环的地方都用i来表示。


C#进行单元测试的两大步骤

1)新建单元测试项目;

2)在测试项目中添加对原项目Calculator引用

我将用于计算加减乘除的代码提取出来,写为calculate(),对calculate()进行测试。


第一遍,运行测试通过,再运行了几遍,测试通过。**对原有代码进行一定的重构**,将代码修改的更精简,进行**回归测试**,测试通过。

修改代码如下,将原来的a[i]==2,即只有两个符号时的情况变成通用情况:

            int[] bnum = new int[3];//存储随机生成的数字
            String[] snum = new String[3];//数字转成字符串

            int[] c = new int[2];//存储随机生成的符号,1代表+,2代表-,3代表x,4代表/
            char[] dsign = new char[2];
            int[] result = new int[2];
            for (i = 0; i < 3; i++)//生成数字
            {
                bnum[i] = r.Next(1, 100);
                snum[i] = Convert.ToString(bnum[i]);
            }

通用情况:
            int sign = a[1];
            int num = sign + 1;
            int[] bnum = new int[num];//存储随机生成的数字
            String[] snum = new String[num];//数字转成字符串
            int[] c = new int[sign];//存储随机生成的符号,1代表+,2代表-,3代表x,4代表/
            char[] dsign = new char[sign];

            for (i = 0; i < num; i++)//生成数字
            {
                bnum[i] = r.Next(1, 100);
                snum[i] = Convert.ToString(bnum[i]);
            }

## 5.提交代码 在**2.克隆项目**中,`AchaoCalculator`的目录下我新建了`icjy`文件夹。提交代码时,右键`icjy`,点击`Git Bash Here`,再进行如下操作: ![](https://img2018.cnblogs.com/blog/1786466/201909/1786466-20190919234254316-710058683.png)

commit之后查看仓库当前状态:

最后push完成提交。


遇到的问题与解决:在提交之前除了看Part7,我还在网上找了其他的关于VS项目上传到GitHub的教程,当时没有搞懂VS里的GitHub插件是什么,是不是还要额外在VS里面下载插件,后来问了同学才知道之前安装的Git就相当于一个插件,不需要再安装VS自带的插件了。在文件夹下右键能直接进入Git Bash命令行,这个也是经同学传授的(超级感谢),这样就不用每次都通过输入命令,切换盘符找位置来进行git add和git commit了。


## 6.心得

本次作业学会了GitHub的基本操作,以前没有试过用GitHub提交代码,当时觉得太难了,上传经常失败,或者搞错分支,现在开始慢慢明白怎么去用了。C#虽然以前有学过,但是真正用来写程序的话这是第一次。所以刚上手的时候还是觉得有点困难,许多函数跟Java里的不一样,比如C#里我找不到String.ValueOf(),和StringBuffer,在类型转换的时候还是纠结了好久,C#里还有Stringstring之分。而且由于对VS界面的不熟悉,单元测试我花了很长时间才知道怎么去写(虽然Part3有教程但是操作的时候还是把引用给漏了)。一开始做这个作业的时候我还尝试过按照教程写C++的单元测试,相比之下我发现C++要配置的东西确实比C#要多一些。通过这次的学习我对VS有了更深的理解,功能真的是太强大,不愧是被称为最好用的IDE。

posted @ 2019-09-19 23:46  icjy  阅读(297)  评论(3编辑  收藏  举报