第二次作业&熟悉使用工具
GIT地址 | 我的地址 |
GIT用户名 | 995020892w |
学号后五位 | 81105 |
博客地址 | 我的博客 |
作业链接 | 第二次作业 |
一、环境配置过程
- 安装vs2017
因为以前学习C#相关课程中就需要用到vs2017,所以以前就已经安装好了,也没有遇到什么问题,安装的时候跟着流程选择自己需要的安装组件即可,这是我最终安装完成的环境图:
- 安装GIT
打开GIT官方网站(如下图):下载链接
然后根据自己的电脑操作系统位数选择性下载,但是我下载的时候速度很慢,并不是网速的问题,到后来下载进度条甚至不动,我猜想可能需要链接VPN。由于比较麻烦,就通过别人上传的安装包直接下载了。
安装的时候跟着步骤选NEXT就可以了,最后选择GIT BASH HERE,即安装完成。
- 注册GIT
根据步骤一步一步注册即可。
二、代码设计
- 题目设计背景
阿超家里的孩子上小学一年级了,这个暑假老师给家长们布置了一个作业:家长每天要给孩子出一些合理的,但要有些难度的四则运算题目,并且家长要对孩子的作业打分记录。
作为程序员的阿超心想,既然每天都需要出题,那何不做一个可以自动生成小学四则运算题目与解决题目的命令行 “软件”呢。他把老师的话翻译一下,就形成了这个软件的需求:
程序接收一个命令行参数 n,然后随机产生 n
道加减乘除(分别使用符号+-*/
来表示)练习题,每个数字在 0
和 100
之间,运算符在 2
个 到 3
个之间。
由于阿超的孩子才上一年级,并不知道分数。所以软件所出的练习题在运算过程中不得出现非整数,比如不能出现 3÷5+2=2.6
这样的算式。
练习题生成好后,将生成的 n
道练习题及其对应的正确答案输出到一个文件 subject.txt
中。
- 代码设计思路以及主要代码
根据题意,程序接受一个命令行参数,随机产生练习题,那么主要考察的是随机函数的应用,首先用Random生成随机数。
public int[] getRandomNum(int num, int min, int max)
{
Random x = new Random(unchecked((int)DateTime.Now.Ticks));
int[] Numx = new int[num];
int temp = 0;
for (int i = 0; i <= num - 1; i++)
{
temp = x.Next(min, max); //随机取数
Numx[i] = getNum(Numx, temp, min, max, x);
}
return Numx;
}
并且在运算过程中不能出现非负整数,所以在敲写过程中要排除负数的可能,同时判断能否被整除
switch (num1)
{
case 0:
a[0] = x[0] + x[1];
b[0] = '+';
break;
case 1:
if (x[0] < x[1]) //排除负数结果
{
temp1 = x[0];
x[0] = x[1];
x[1] = x[0];
}
a[0] = x[0] - x[1];
b[0] = '-';
break;
case 2:
if (x[0] % x[1] == 0) //判断是否可以整除
{
a[0] = x[0] / x[1];
b[0] = '/';
}
else
{
a[0] = x[0] * x[1];
b[0] = '*';
}
break;
default:
break;
}
最后将答案写入文件中
public void PutFile(string x)//将算式打印到文件中
{
string path = @"D:\subject.txt";
FileInfo fileInfo = new FileInfo(path);
StreamWriter sw = fileInfo.AppendText();
sw.WriteLine(x);
sw.Close();
}
最终运行效果图如下
三、相关测试
- 单元测试
用单元测试来保证代码中的各个类与函数的正确性,从而保证整个项目的稳定性。
首先对需要测试的函数或类创建单元测试,这个时候就遇到问题了,会出现如下图状况。
通过上网查阅资料得知必须将所有私有的类和函数都改为公有的才能成功。
创建好单元测试后,就能对指定函数或类进行测试了。
- 断点
首先右键插入断点
然后点击启动即可开始调试
- 回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。
单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复、改进或重构之后的正确性。也就是说,在每次修改完 Bug 之后,我们其实都需要运行一遍来看看是不是满足之前所有的单元测试样例。所以,在每次因为现有的 failed test 而修复原有代码后,最好都全部运行一遍单元测试,保证以前 passed test 仍然是可以通过的。
同样地,Git 的使用也是讲究勤提交,提交的粒度最好是细到每个小功能的完成。一个小功能可以是一处小 Bug 的修复,也可以是一个简单函数的实现。所以,在我们本次的编程训练任务中,Git 至少会提交 2 次或以上。
四、效能工具
通过选择分析里的性能探查器即可开始对其进行效能测试。
五、提交代码指GIT以及克隆项目
- 代码的克隆
输入阿超仓库的网址 https://github.com/ChildishChange/Calculator ,点击右上角的 Fork
,界面会自动转到登录用户自己的仓库中
在自己拷贝项目的主页的绿色按钮处可以找到一个可克隆的项目地址,打开 Git 命令行软件(Windows上可在空白处右键打开 Git Bash ),输入 git clone <clone url>
,其中 <clone url>
即我们刚刚复制的项目地址。
在完成上述操作后,可在当前目录下看到一个与仓库同名的文件夹Calculator,由于我是在桌面右键完成的,所以克隆文件显示在桌面
- 代码的提交
在文件夹中放入我们的代码
右键文件夹,点击git bash here,输入git push上传我们的代码即可
然后进入我们的仓库就可以查看到我们刚刚上交的代码
- 遇到的问题
在使用git过程中,对这个软件十分的陌生,一开始自己按照作业要求上的步骤来尝试上传始终无法push,最后还是通过同学上传的详细步骤才成功,主要是自己的仓库地址没有复制正确,并且push之后没有在仓库里上传。
六、感想
这次作业真的很难啊,都是拖到最后才交,而且我的内容也比较简单,主要是因为单元测试和效能不太会搞,下来我会继续尝试测试与工具的运用的。当然,在整个作业过程中也遇到了几个问题,主要的的在上文中提出了。从这个作业中感觉到自己要学的还有很多,以后会更加努力的。