第二次作业-熟悉使用工具
GIT地址 | https://github.com/sunyueqi |
GIT用户名 | sunyueqi |
学号后五位 | 64306 |
博客地址 | http://www.cnblogs.com/230332663abcd/ |
作业链接 | https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2793 |
一.环境配置问题
问题:因为是以前已经下好的,下载完成后,用了一段时间,评估到期不能使用,过了试用期就禁止用了。解决:保留安装包,重新安装,在选择的时候登录用户,要以管理员身份登录,在安装成功后,注册产品中,使用产品密钥解锁,在解压中的文件夹中找到并打开激活码,任意选择序列号,粘贴在产品密钥,点击应用,激活成功后使用。
这是下载的时间,因为以前学习过C#就装过。
二.代码设计思路
读完这道题,我觉得它主要考察的是随机函数的应用。产生n道加减法,n就是要输入的变量。n作为一个变量,先生成n个list,list装的是数字,假如用户输入的是两道题,那么就建两个list,list就存2到3个数字,这样数字准备就完成了。然后根据list,用随机数取四个符号,如果list中有两个参数,就取1个符号;如果有三个参数,就取两个符号。有了list和符号,就可以作运算。从list挨个取,再从符号里取 ,然后计算,打印。在运算的时候,因为题目说避免出现非整数,所以如果取到除号,判断是否整除,如果没有,返回随机数再取。如果是三个数,就要判断抽到除号出现的位置,如果在后面,就要让后面两个数重新取。
图片演示:
Random rd = new Random();设置随机函数
IList<IList<int>> timushu = new List<IList<int>>();存储题目数量
for (int i = 0; i < strN; i++) { IList<int> num = new List<int>();//每个题目内的数量 int numc = rd.Next(2, 4); //获得题目内的数字个数 for (int j = 0; j < numc; j++) { num.Add(rd.Next(1, 101));//获得题目数字 } timushu.Add(num); }
根据题目的输入做第一个循环,生成每个题目的数字rd.Next(2,4)从2取到4,不包含4的整数。第二层循环,再次取随机数,表示每个题目中的数字,两个循环,表示整个题目里有几道题,每个题目里有几个数。
private string returnSign(int type) { switch (type) { case 1: return "+"; case 2: return "-"; case 3: return "*"; case 4: return "÷"; } return ""; }
定义随机数代表的符号
int sign1 = rd.Next(1, 5); int sign2 = rd.Next(1, 5);
获得运算符
if (list.Count == 2) { if (sign1 == 4) { while (list[0] % list[1] != 0) { list[0] = rd.Next(1, 101); list[1] = rd.Next(1, 101); } } this.label2.Text += list[0] + " " + returnSign(sign1) + " " + list[1] + " = " + result(list[0], list[1], sign1) + "\n"; }
判断当前有几个数,避免出现小数,判断并处理运算符,如果是除号,需要第一个数是第二个数的倍数并小于100,不能整除则重新取数。
switch (sign) { case 1: return a + b; case 2: return a - b; case 3: return a * b; case 4: return a / b; } return 0;
进行运算
if (sign1 == 4)//如果是 除号 需要第一个数是第二个数的倍数并小于100 { while (list[0] % list[1] != 0)//不能整除则重新取数 { list[0] = rd.Next(1, 101); list[1] = rd.Next(1, 101); } if (sign2 == 4) { while ((list[0] / list[1]) % list[2] != 0)//不能整除则重新取数 { list[2] = rd.Next(1, 100); } } } else if (sign2 == 4)//如果是 除号 需要第一个数是第二个数的倍数并小于100 { while (list[1] % list[2] != 0)//不能整除则重新取数 { list[1] = rd.Next(1, 100); list[2] = rd.Next(1, 100); } } this.label2.Text += list[0] + " " + returnSign(sign1) + " " + list[1] + " " + returnSign(sign2) + " " + list[2] + " = " + result(list[0], list[1], list[2], sign1, sign2) + "\n"; }
这是两个数的,三个数同上,判断符号以及进行相关运算。
三.使用Git克隆及提交代码
首先是在Git上注册了自己的账号,在官方网站上下载了Git Bash。找到阿超的计算机,点击fork,拷贝到自己的账号下。在我自己的e盘上,右键点击Git Bash。出现一个黑色的对话框,在框里输入了git clone后面去网站阿超的计算机那里复制download的网址,粘贴在Git Bash里。成功后在自己的盘上出现了阿超的计算机这个文件夹,就是成功了,因为这一步指导网站上有动图,我做的比较顺利,没有问题。图片演示:
(注册账号,登录进去)(需要的地址)(在推荐官网下载成功)
(打开git界面)
(需要的网址)
(输入克隆地址,出现文档)
在提交代码上因为是自己写的代码然后上传,我就有点对不上指导上说的步骤。我用VS写好了代码保存起来,然后按照指导上所说,第一次配置了个人的邮箱和姓名。问题:地址的转换问题,文件存放的地址和我上传时的地址不一致,导致上传多次没有结果;其次就是要提交到账号没有办法 解决:通过查资料和问同学,我知道应该在先cd磁盘的位置和文件的名称,确定地址一致,再clone要上传的地址,然后再cd代码的文件名,add .再commit,同时要注意-m自己要备注的东西,然后再push,注意每一步要master才可以进行下一步。要把自己的代码先上传到自己的git账号上,再Push到统一的作业库里,这一步我看的时候有遗漏。
图片演示:(先确定地址)(将要交的文件拷贝到文件夹)
(再次输入文件夹的位置,出现master,进行下一步)
(用git add添加文件)
(git commit后面要跟名字)
(上传)
(上传成功后,在自己账号上出现编写的代码)(点击上传到班级仓库)
四.单元测试和回归测试
我首先是点开了我写好的项目,然后在选择的时候遇到了问题就是新建项目的时候,在倒数第二个有一个建立测试代码,点开也可以进去,但是后面引用的时候就没有了,我在这里找了一会。解决:后面重新过了流程,一定是在左边的菜单栏出现的测试,点击测试,再新建测试代码,再引用。但是属性的调试我还是没有找到。测试代码在没有写的时候还是可以先空运行,它可以出现一个测试的结果。最后再将测试代码填入放进界面,再运行就可以。
(选择测试)(引用里选择要测试的项目)
(进行测试)(写入测试代码)
首先是在不同的区域设置断点,然后点击项目为调试项目,进行调试。点击红色按钮,输入条件j==0,可以看到测试结果,这个我没有遇到大的问题都可以解决。
图片演示:(插入断点)
(运行调试过程)
(插入条件断点)
五.感受
首先我觉得是对代码的需求增加了,这种可以自动出题的程序是我的第一次尝试,考虑的方面有很多,因为是随机数,所以它的结果不符合提议的情况就很多,就需要在写之前就把程序可能出现的情况都考虑到。其次,就是这次新学的和新接触的git的应用,它可以通过程序控制,把本地的代码上传到网站上去,但因为没有注意它对路径的统一,导致我浪费了很多时间在提交代码上,所以要开始就搞清楚它的要求。我认为最重要的三步是cd一个路径,add.还有commmit后面要写内容,一般是可以成功的。还有提交的位置很关键,最后一步要申请将自己的代码推进班级的库里,这样别人才可以看到你的代码。学习了这块,也清楚了可以通过git来学习其他好的代码,只要可以下载知道路径,就可以放在自己的电脑上。最后的单元测验,分点测试,都可以有效的检查自己的代码,而且可以检查出有些看不出来的问题,回归测试注意的是在每一次更改代码后,要经过单元测试检查一下,确保其他地方没有发生错误。