个人第2次作业:熟悉使用工具
git地址 | https://github.com/sunnyyyt |
---|---|
git用户名 | sunnyyyt |
学号后5位 | 62505 |
博客地址 | https://www.cnblogs.com/sunnyyt/ |
作业链接 | https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesign/homework/7584 |
Part 0 项目背景
阿超家里的孩子上小学一年级了,这个暑假老师给家长们布置了一个作业:家长每天要给孩子出一些合理的,但要有些难度的四则运算题目,并且家长要对孩子的作业打分记录。
作为程序员的阿超心想,既然每天都需要出题,那何不做一个可以自动生成小学四则运算题目与解决题目的命令行 “软件”呢。他把老师的话翻译一下,就形成了这个软件的需求:
1. 程序接收一个命令行参数 n,然后随机产生 n 道加减乘除(分别使用符号+-*/来表示)练习题,每个数字在 0 和 100 之间,运算符在 2 个 到 3 个之间。
2. 由于阿超的孩子才上一年级,并不知道分数。所以软件所出的练习题在运算过程中不得出现非整数,比如不能出现 3÷5+2=2.6 这样的算式。
3. 练习题生成好后,将生成的 n 道练习题及其对应的正确答案输出到一个文件 subject.txt 中。
4. 当程序接收的参数为4时,以下为一个输出文件示例。
13+17-1=29
11*15-5=160
3+10+4-16=1
15÷5+3-2=4
Part 1 配置环境
下载Visual Studio 2017,并安装相关组件。
官方网站下载:下载链接
下载完成后选择相关组件进行安装,我们这里时用c#写程序,所以需要选择[.NET桌面开发]
由于vs体积较大,推荐大家在安装时修改存储位置,不要安装在c盘中。由于vs较大下载时间可能比较久,需要等待一下,安装完毕后,按指示重启即可。如果在后期需要对组件进行拓展可以进行修改。
Part 2.克隆项目
1. 在 https://github.com/join 这个网址处申请注册一个 Github 账号,申请成功后可在 https://github.com/login 处利用刚刚注册的账号进行登录,才能开始在 Github 上进行开发。
2. 成功登录后,输入阿超仓库的网址https://github.com/Cherish599/AchaoCalculator(这个为我们班级所指定的仓库地址),点击右上角的 Fork ,将阿超的四则运算库拷贝到自己的同名仓库中,如下图所示:
3. 拷贝成功后,可以看到自己已经拥有了一个同名仓库,这里登陆的是sunnyyyt的账号。
4. 在自己电脑上安装Git软件,安装链接:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git
Git学习相关手册链接:[https://www.cnblogs.com/math/p/git.html]
5. 创建一个文件,在空白处单击右键打开(Git Bash Here),输入git clone +仓库地址。
6. 完成上述操作后会生成一个与仓库同名的文件夹。因为我们是使用c#编写程序,所以使用默认的master分支,新建一个文件夹,重命名为你的Github账号名
在克隆项目时遇到的问题:
(1)刚开始用Github克隆项目时,由于对Github的不熟悉,导致整个过程耗时较长。
解决方法:查看有关github的博客,对Github一些步骤进行多方位的了解。
(2)在克隆地址时,不知道 git clone 后面加的地址是什么地址。
解决方法:查看相关博客,了解到后面加的是克隆的仓库地址。
(3)对git命令语句的使用不熟悉,可以百度搜索相关解决方案。
7. 打开vs 2017新建项目,选择c#语言,原则控制台应用,更改位置为刚才新建的文件夹的路径,自定义名称即可。
代码思路:
(1)用MakeFormula()函数生成等式,利用随机种子产生随机的2-3个随机符,再产生随机的0-100的数字,然后再通过字符串的拼接得出等式
(2)用Operator()函数生成随机的运算符
(3)用Calculate()函数判断等式的结果是否含有小数点、负数或者运算过程中是否出现除数为0的情况。
(4)用GetRandomSeed()生成不重复的随机种子
用MakeFormula()函数生成等式,利用随机种子产生随机的2-3个随机符,再产生随机的0-100的数字,然后再通过字符串的拼接得出等式
用Operator()函数生成随机的运算符
用Calculate()函数判断等式的结果是否含有小数点、负数或者运算过程中是否出现除数为0的情况。
用GetRandomSeed()生成不重复的随机种子
运行结果如下:
代码设计问题:
(1)在生成随机等式的时候,出现大量等式重复的情况,经过百度之后,添加了一个随机种子不重复的代码,才实现等式的随机性。
(2)在往.txt中写入程序的时候,遇到覆盖方面的问题,使得文件中只有一个等式,百度之后得到相关解决方案
(3)在往.txt中写入程序时,我本来事项实现控制台和文件里面都有等式,刚开始时我写出来之后发现控制台的代码和文件里面的代码不一样,然后查看代码才知#道,原来我调用了两次打印等式的代码,所以导致两此的结果不一样,然后我就改了一下代码,将第一次调用等式函数赋值给一个变量,然后在控制台打印时,打印变量,在文件中打印时也打印变量就实现了两边结果一样。
(4)在写计算等式的函数时,我现在想等式里面字符不一样而且运算顺序也不一样,如果要一步一步的慢慢来判断会写大量的代码,然后我就在想有没有比较简单的方法,比如说有没有一种函数可以将等式输入进去然后自己函数内部进行计算的,结果就真的百度到了相关的函数,但是要注意有些函数在引用的时候需要引入相关的using。
Part 3.单元测试
(1)在添加单元测试时要将所有的类和方法改为public,才可以点击右键创建单元测试
(2)点击创建单元测试后,进入新的界面,点击确定
(3)然后进入测试代码书写页面,对自己需要测试的函数书写相应的测试代码
(4)对每个函数测试代码书写完毕后,点击测试 -->窗口-->测试资源管理器,再点击测试代码右键选择测试所选项对代码进行测试
(5)当界面出现以下结果,就代表测试成功
单元测试时遇到的问题
(1)因为在老师的相关博客中,相关代码是用c++写的,所以在单元测试时步骤就有所不同,然后以前也没有学过c#方面相关的知识。就百度了相关方法,百度有提到在方法上点击右键会出现创建单元测试,然后再我点击时并没有那个选项,然后我有百度了相关问题还是未果,然后再和室友讨论代码时突然发现,她创建的项目和我创建的项目有所不同,要创建.NET framework 才会在点击右键时出现创建单元测试的方法,不然要花更长时间在这上面,感觉写代码时间不长,最主要的事件全部花在这些创建测试方面。
(2)在书写测试代码是时,很不熟练,不知道应该怎么书写来实现代码的测试,然后也百度了很久,询问同学才勉强写出可以测试通过的代码。这个过程对于一个新手来说是真的很艰难啊。
Part 4.回归测试
回归测试:是指在对旧代码进行修改后,有重新对修改后的代码进行单元测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。
在修改代码后继续测试代码
回归测试遇到的问题:在优化代码的同时要注意自己代码逻辑性,不要优化了但是代码又反复出错。还要注意在修改代码后一定要记住对代码的重新测试。
Part 4.效能工具介绍
点开VS分析下的性能探测器,在新界面中再勾选CPU使用率
性能分析报告:
Part 5.提交代码
先通过git add . 和git commit 命令
然后再输入git push 命令,会让你登录github账号,最后显示成功。
在完成push后,向阿超的仓库发起Pull Request,打开你Fork 后的项目主页,如图所示,点击按钮 New pull request
New pull request 后出现以下界面,此时点击 Create pull request 即可发起请求。
心得体会
这次的作业,我最想说的就是我好难啊。因为以前没有学习过c#,对其中的一些语法也是不怎么会用,然后就各种百度,问同学。这次代码作业逻辑还是挺简单的就是语法的书写过程十分的艰难,我也是过了好久才把整个过程的代码写出来,然后后面又是单元测试,哎呀呀,又是一个新难题,刚开始连怎么建立单元测试都不知道,通过重重关卡才建立起来,后面又写测试代码,哇塞真的是,就像室友说的那样,每天都感觉好刺激,都在学习一些新的东西,要自己去不断地学习,不断地探索才可以完成这个作业。这次作业也让我接触了github,以前有了解过相关的知识,但是由于很少使用它还是很陌生,这次的学习让我对于github也有了更进一步的了解。在短时间内学习新东西的过程是有些艰难,但是完成之后又会为自己收获了新的东西而感到开心。