第二次作业-熟悉使用工具
GIT地址 | 我的Github |
GIT用户名 | www1222 |
学号后五位 | 62111 |
博客地址 | https://www.cnblogs.com/Abbas/ |
作业链接 | 第二次作业-熟悉使用工具 |
参考博客 | |
参考Github地址 | https://github.com/Sranmi/Calculation |
1.配置环境
1.1配置vs2017
打开vs2017的时候出现了登陆过期的提醒,于是卸载重新进行了一次安装。安装时勾选有关c#的相关组件,更改默认安装路径。
1.2配置Github
在所提供的网站中下载Github,出现错误,如图。
进行多次尝试后,仍旧无法解决,后来在腾讯的电脑软件中下载成功。
2.克隆项目
2.1注册Github
在 https://github.com/join 申请注册 Github 账号。在 https://github.com/login 处账号登陆。
2.2拷贝Calculator
根据作业导读中的提示,将阿超的Calculator拷贝到自己的仓库中,如图。
3.代码设计
3.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
3.2代码设计具体思路
1.计算数和运算符的存储:将计算数分子分母分别存入一个二维数组中,运算符存入字符数组。
2.在主函数实现大致过程:用户参数及相关内容输入,调用生成题目及答案函数,并调用查重函数,生成相应r,n的题目和答案并使用数据流存入txt文件中。
3.在计算过程中负号运算时,若有负数生成,则题目重新生成
4.真分数除了将分子大于分母的约分成a'b/c的形式之外,还要注意约分。 a/b :若a>b,则输出形式为 a/b‘ a%b/b
5.运算符不超过三个,即计算式不超过4个,第一个和最后一个不为0,中间两个数字由随机数(0,1)决定有无,运算符则由计算数的数量决定。
6.生成的题目及答案存入指定目录下的subject.txt文件。
class Program { private static void Main(string[] args) { int r = 10; int n = 1; int[] result = new int[2]; Console.WriteLine("请输入生成题目的数量"); string nn = Console.ReadLine(); while (int.TryParse(nn, out n) == false) { Console.WriteLine("输入有误,请重新输入数字"); nn = Console.ReadLine(); } Console.WriteLine("请输入题目中数值的范围"); nn = Console.ReadLine(); while (int.TryParse(nn, out r) == false) { Console.WriteLine("输入有误,请重新输入数字"); nn = Console.ReadLine(); } calculation c = new calculation(); int[][] ic = new int[n][];//n个计算式中计算数的和数 for (int i = 0; i < n; i++) { string a = c.GetProblem(r, ref result, ref ic[i]); for (int j = 0; j < i; j++) { if (ic[j] == ic[i]) a = "重新生成"; } while (a == "重新生成") { a = c.GetProblem(r, ref result, ref ic[i]); for (int j = 0; j < i; j++) { if (ic[j] == ic[i]) a = "重新生成"; } } //将题目存入subject.txt中,可追加 using (StreamWriter sw = new StreamWriter(@"D:\Github\Calculation\test\subject.txt", true)) { sw.WriteLine(i + ".四则运算题目 " + a); } //将答案存入subject.txt using (StreamWriter sw = new StreamWriter(@"D:\Github\Calculation\test\subject.txt", true)) { if (result[0] == 0 || result[1] == 1) sw.WriteLine(i + ".答案 " + result[0].ToString()); else sw.WriteLine(i + ".答案 " + result[0].ToString() + "/" + result[1].ToString()); } } Console.ReadKey(); } }
ps:以上内容参考地址 https://www.cnblogs.com/huashengmi/p/9733199.html 。
4.代码提交
ps:参照博客地址 https://www.cnblogs.com/luomei/ ,实现push。
5.测试过程及效能工具的体验
5.1单元测试
1.根据指导方法中,添加引用,如图。
接着点击测试选项,运行,出现如图。
显示测试通过。
ps:上述参考内容 https://www.cnblogs.com/dreamq/p/5299080.html 。
5.2回归测试
增加判定条件,使得只有俩正数相加,才出现正确结果,其他情况均为0。测试如图
5.3效能工具
按照指导方案的步骤,如图。
6.感想
这次作业真的太难了,首先光题目要求就看了很多遍,才大致搞清楚需要做些什么。对编程真的太不熟悉了,以前没有完完整整的从头自己写代码,这次一上来,的确就懵了,代码是参照网上其他人写的博客中的。后续的测试代码,为了方便测试,编写了简单的函数进行测试。对git的不熟悉,导致push多次才上传成功代码。此外,英语真的太重要了,很多内容都看不懂,希望以后有所好转吧。。。