第二次作业
GIT地址 | https://github.com/liuqizuiniubi |
GIT用户名 | liuqizuiniubi |
学号后五位 | 62310 |
博客地址 | https://www.cnblogs.com/Ysml/ |
作业链接 | https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2793 |
一.配置环境
vs2017在上学期的c#课程中早已配置好,并且在配置过程中未出现问题,只需按提示操作就行。
(建议在配置时不要把安装路径设置为C盘,会影响电脑运行)。
二.代码设计
1.代码背景:
- 程序接收一个命令行参数 n,然后随机产生
n
道加减乘除(分别使用符号+-*/
来表示)练习题,每个数字在0
和100
之间,运算符在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
2.代码设计思路
第一步: 根据题目要求,要生成随机数和随机的运算字符,因此需要调用Random来随机生成数和运算符个数,随后将二者连接。
代码如下所示:
![](https://img2018.cnblogs.com/blog/1620347/201903/1620347-20190327142658171-865454134.png)
第二步:已将算式生成,但还需要计算其结果。将第一步返回的算式传入计算结果的函数中计算,得出完整的算式。
(根据题目要求:在运算过程中不得出现非整数和分数,便需要判断随机生成的算式是否符合要求。如果不满足,则需重新随机生成)
代码如下所示:
第三步:接受生成算式数量的参数,并将生成的算式打印并保存在.txt文件中。同时由于生成随机数的Random函数如果不指定随机种子的话,它
会生成一样的数,可以给Random一个系统时间作为参数。
(打开文件后,要记得关闭)
代码如下所示:
运行结果:
三.克隆项目
1.申请注册一个GitHub账号,随后登录。登录成功后,进入阿超仓库的网址:https://github.com/Jupi4ter/AchaoCalculator
2.进入网址后:点击左上角Fork,将阿超的四则运算库拷贝到自己的同名仓库中,如下图所示:
3.拷贝成功后,我们便有了一个同名的仓库。随后安装Git软件。在自己拷贝项目的主页的绿色按钮处(Clone or download)可以找到一个可克隆的项目地址,下面是一个示例
4.打开Git Bash,输入 git clone <clone url>
,其中 <clone url>
即我们刚刚复制的项目地址,克隆就完成了。
5.提交代码:
5.1在代码文件的空白处,点击右键,选择Git Bash Here
5.2初次使用Git,需要配置自己的个人邮箱与Commit时的用户名,(这里的邮箱和用户名最好与 Github 账号保持一致。)
5.3配置完后,接下来使用git add .(后面有一个点) git commit-m"我们命名的分支名"
5.4 完成上述后,可用git status 来检查,如果出现以下所示,便可提交代码。
5.5随后执行 git push 命令,弹出如下界面,输入账号密码,就可以完成提交了。(执行 git push命令时,要稍稍等待以下)
克隆项目中遇到的问题:
1.在拷贝时,不知道为什么不能拷贝成功。根据提示原来需要邮箱验证。
2.从未接触过Git,在提交代码时,不会提交,并且使用git语句时经常出现错误。向同学请教得以解决。
提交代码的问题:
阅读了几次后,还是不会提,便静下心来一步步根据指示提交,最终完成。
四.单元测试
用单元测试来保证代码中的各个类与函数的正确性,从而保证整个项目的稳定性,此次测试运用VS2017搭载的测试环境来进行。
按照步骤,建立一个单元测试项目,随后写单元测试代码进行测试:
右键点击想要测试的函数。会出现如下命令,随后点击 创建单元测试:
点击后会出现如下如下所示;
随后输入相应的代码,点击测试,选择运行,所有测试,便可完成测试
在单元测试运行完毕后,VS 的左侧会弹出一个测试结果窗口。绿色代表通过,红色代表失败。如果是失败就需要对代码进行相应的修改。
测试中遇到的问题:
由于对单元测试不熟悉,在进行测试时,以至于不知道该输入什么代码。随后通关百度解决该问题。
五.回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
修改源代码之后,对其重新进行单元测试,并且修改后的代码仍然要满足单元测试的正确性,达到回归测试的目的:
修改代码后,进行回归测试:
六.总结
通关对本次工具的熟悉,我发现久了不去敲代码是真的什么都不记得了,一敲代码不是这里就是那里的错误,一些相关的函数也记不得了,只能百度去找。
收获呢,第一次完整的去完成一个项目,以前仅仅是去填充代码,能够使其运行通过就行,根本不会去想什么测试之类的。还学会了GitHub的使用,第一
次用它,完全是懵的感受。虽然过程是十分痛心的,但是让我了解到软件工程不仅仅是去敲代码,而是需要各种相关知识去配合一个项目的完成。