第二次作业

陌路散爱 提交于 2019-11-30 03:51:07
GIT地址 https://github.com/ChildishChange/Calculator
GIT用户名 niuerduo
学号后五位 32285
博客地址 https://home.cnblogs.com/u/niuerduo/
作业链接 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience/homework/7582

项目背景

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

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

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

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

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

13+17-1=29

11*15-5=160

3+10+4-16=1

15÷5+3-2=4

这次阿超选择使用他最拿手的 C++ 语言来完成这样的需求,工欲善其事必先利其器,第一步就需要先安装一个好用的 IDE ,在这里我们推荐使用 Visual Studio 2017。

配置环境

在此之前,因为专业关系,学习的是C#语言,所以已经安装了Visual Studio Community 2017,并配置好了需要的相关库文件。

克隆项目

1、注册登录自己的Github账号,进入阿超的仓库https://github.com/niuerduo/Calculator

2、将阿超的四则运算库拷贝到自己的同名仓库中,若Fork变为灰色,则拷贝成功。

3、复制绿色按钮处的可克隆项目地址。

4、安装Git后,在 我的电脑 中任意找一个目录,打开 Git 命令行软件(Windows上可在空白处右键打开 Git Bash ),输入 git clone ,其中 即我们刚刚复制的项目地址。

5、进入项目文件夹 AchaoCalculator ,新建一个文件夹,重命名为你的 Github 账号名。

项目设计

代码设计

1、首先新建一个测试项目,右键单击解决方案,添加一个新建项目,在类型里选择 单元测试 ,这里新建了一个名为 Calculator_UnitTest 的单元测试项目。

2.添加引用

3.项目测试

其他的一些基本操作

1.插入断点

如下图在48行设置了一个断点,在行48左侧会出现一个红点

2、单步运行

设置好断点之后开始调试,这时可以看到程序已经运行到刚刚打的断点处前,且下方的自动窗口可以看到各个变量的值。

3、添加监视

回归测试

单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复、改进或重构之后的正确性。也就是说,在每次修改完 Bug 之后,我们其实都需要运行一遍来看看是不是满足之前所有的单元测试样例。所以,在每次因为现有的 failed test 而修复原有代码后,最好都全部运行一遍单元测试,保证以前 passed test 仍然是可以通过的。

效能分析

点击 IDE 顶部菜单栏中的 分析,即可看到 性能探查器 ,勾选 CPU使用率 。

输入想生成的算术式子个数n,较大的n探测效果更好,即使程序没有执行完成,效能分析也是可以强行结束的。让程序跑几十秒之后,就可以结束。点击效能分析工具界面左上角的 停止收集 即可停止收集数据。

点击“创建详细的报告”,生成更加详细的分析报告,如下图:

上传代码

1、使用“git add”和“git commit”命令对本地仓库进行修改,如下图:

2、想让 Github 上也跟踪到最新的改变,则需要使用使用“git push”命令,如下图:

3、在完成 push 后,我们就可以开始向源仓库(即阿超的仓库)发起 Pull Request(简称 PR ,指发起请求给仓库贡献代码)。打开我 Fork 后的项目主页,如下图所示,并点击按钮 New pull request 。

总结与感受

1.编写代码过程中,出现了一些逻辑上的错误,特别在循环上,错误的将一些应该放在循环体内的语句放在了循环体外,或者将应该放在循环体外的语句放在了循环体内。

2.原本是想用栈实现四则运算的,但难度较大且过于繁琐,便采用了 Data Table 提供的现成方法,查自于CSDN(链接)。

3.编写代码过程中,还是遇到了很多困难,花费了许多的时间,说明还是经验不足。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!