GIT地址  我的地址
 GIT用户名  995020892w
 学号后五位  81105
 博客地址  我的博客
 作业链接  第二次作业

一、环境配置过程

  • 安装vs2017

因为以前学习C#相关课程中就需要用到vs2017,所以以前就已经安装好了,也没有遇到什么问题,安装的时候跟着流程选择自己需要的安装组件即可,这是我最终安装完成的环境图:

  • 安装GIT

打开GIT官方网站(如下图):下载链接

然后根据自己的电脑操作系统位数选择性下载,但是我下载的时候速度很慢,并不是网速的问题,到后来下载进度条甚至不动,我猜想可能需要链接VPN。由于比较麻烦,就通过别人上传的安装包直接下载了。

安装的时候跟着步骤选NEXT就可以了,最后选择GIT BASH HERE,即安装完成。

  • 注册GIT

登录网址https://github.com/join

根据步骤一步一步注册即可。

二、代码设计

  • 题目设计背景

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

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

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

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

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

  •  代码设计思路以及主要代码

根据题意,程序接受一个命令行参数,随机产生练习题,那么主要考察的是随机函数的应用,首先用Random生成随机数。

public int[] getRandomNum(int num, int min, int max)
{
Random x = new Random(unchecked((int)DateTime.Now.Ticks));
int[] Numx = new int[num];
int temp = ;
for (int i = ; i <= num - ; i++)
{
temp = x.Next(min, max); //随机取数
Numx[i] = getNum(Numx, temp, min, max, x);
}
return Numx;
}

并且在运算过程中不能出现非负整数,所以在敲写过程中要排除负数的可能,同时判断能否被整除

switch (num1)
{
case :
a[] = x[] + x[];
b[] = '+';
break;
case :
if (x[] < x[]) //排除负数结果
{
temp1 = x[];
x[] = x[];
x[] = x[];
}
a[] = x[] - x[];
b[] = '-';
break;
case :
if (x[] % x[] == ) //判断是否可以整除
{
a[] = x[] / x[];
b[] = '/';
}
else
{
a[] = x[] * x[];
b[] = '*';
}
break;
default:
break;
}

最后将答案写入文件中

public void PutFile(string x)//将算式打印到文件中
{
string path = @"D:\subject.txt";
FileInfo fileInfo = new FileInfo(path);
StreamWriter sw = fileInfo.AppendText();
sw.WriteLine(x);
sw.Close();
}

最终运行效果图如下

三、相关测试

  • 单元测试

  用单元测试来保证代码中的各个类与函数的正确性,从而保证整个项目的稳定性。

首先对需要测试的函数或类创建单元测试,这个时候就遇到问题了,会出现如下图状况。

通过上网查阅资料得知必须将所有私有的类和函数都改为公有的才能成功。

创建好单元测试后,就能对指定函数或类进行测试了。

  • 断点

首先右键插入断点

然后点击启动即可开始调试

  • 回归测试

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。

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

同样地,Git 的使用也是讲究勤提交,提交的粒度最好是细到每个小功能的完成。一个小功能可以是一处小 Bug 的修复,也可以是一个简单函数的实现。所以,在我们本次的编程训练任务中,Git 至少会提交 2 次或以上。

四、效能工具

通过选择分析里的性能探查器即可开始对其进行效能测试。

五、提交代码指GIT以及克隆项目

  • 代码的克隆

输入阿超仓库的网址 https://github.com/ChildishChange/Calculator ,点击右上角的 Fork ,界面会自动转到登录用户自己的仓库中

在自己拷贝项目的主页的绿色按钮处可以找到一个可克隆的项目地址,打开 Git 命令行软件(Windows上可在空白处右键打开 Git Bash ),输入 git clone <clone url> ,其中 <clone url>即我们刚刚复制的项目地址。

在完成上述操作后,可在当前目录下看到一个与仓库同名的文件夹Calculator,由于我是在桌面右键完成的,所以克隆文件显示在桌面

  • 代码的提交

在文件夹中放入我们的代码

右键文件夹,点击git bash here,输入git push上传我们的代码即可

然后进入我们的仓库就可以查看到我们刚刚上交的代码

  • 遇到的问题

在使用git过程中,对这个软件十分的陌生,一开始自己按照作业要求上的步骤来尝试上传始终无法push,最后还是通过同学上传的详细步骤才成功,主要是自己的仓库地址没有复制正确,并且push之后没有在仓库里上传。

六、感想

这次作业真的很难啊,都是拖到最后才交,而且我的内容也比较简单,主要是因为单元测试和效能不太会搞,下来我会继续尝试测试与工具的运用的。当然,在整个作业过程中也遇到了几个问题,主要的的在上文中提出了。从这个作业中感觉到自己要学的还有很多,以后会更加努力的。

第二次作业&熟悉使用工具的更多相关文章

  1. 第二次作业-熟悉git

    GIT地址 https://github.com/gentlemanzq/yunsuanhomework GIT用户名  gentlemanzq 学号后五位  62320 博客地址 https://w ...

  2. Lobooi第二次作业:熟悉使用工具

    第二次作业 GIT地址 https://github.com/Lobooi//AchaoCalculator GIT用户名 Lobooi 学号后五位 24235 博客地址 https://home.c ...

  3. 20169212《Linux内核原理与分析》第二周作业

    <Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...

  4. 软件工程(QLGY2015)第二次作业点评(随机挑选20组点评)

    相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 说明:随机挑选20组点评,大家可以看看blog名字,github项目名字,看看那种是更好的,可以学习,每个小组都会反应出一些问题,希望能 ...

  5. 软件工程(GZSD2015)第二次作业小结

    第二次作业,从4月7号开始,陆续开始提交作业.根据同学们提交的作业报告,相比第一次作业,已经有了巨大改变,大家开始有了完整的实践,对那些抽象的名词也开始有了直观的感受,这很好.然后有一些普遍存在的问题 ...

  6. OO第二单元作业小结

    前言 转眼已是第九周,第二单元的电梯系列作业已经结束,终于体验了一番多线程电梯之旅. 第一次作业是单电梯的傻瓜调度,虽然是第一次写多线程,但在课程PPT的指引下,写起来还是非常容易:第二次作业是单电梯 ...

  7. 软件工程(GZSD2015) 第二次作业小结

    第二次作业,从4月7号开始,陆续开始提交作业.根据同学们提交的作业报告,相比第一次作业,已经有了巨大改变,大家开始有了完整的实践,对那些抽象的名词也开始有了直观的感受,这很好.然后有一些普遍存在的问题 ...

  8. OO第二单元作业总结【自我反思与审视】

    第二单元作业的完成史,就是一部心酸的血泪史…… 多线程的出现为我(们)打开一片广阔的天地,我也在这方天地摸爬滚打,不断成长!如果说第一单元之前还对Java语法有所了解的话,那么这单元学习多线程则完全是 ...

  9. 《Coderxiaoban团队》第二次作业:团队项目选题报告

    <Coderxiaoban团队>第二次作业:团队项目选题报告 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验六 团队作业2:团队项目选题 团队名称 Co ...

随机推荐

  1. node对称加密(转载)

    https://www.cnblogs.com/laogai/p/4664917.html

  2. jQuery cxSelect 联动下拉菜单

    插件简介 cxSelect 是基于 jQuery 的多级联动菜单插件,适用于省市.商品分类等联动菜单. 列表数据通过 AJAX 获取,也可以自定义,数据内容使用 JSON 格式. 同时兼容 Zepto ...

  3. Selenium Webdriver——操作隐藏的元素display属性

    有时候我们会碰到一些元素不可见,这个时候selenium就无法对这些元素进行操作了.例如,下面的情况: 页面主要通过“display:none”来控制整个下拉框不可见.这个时候如果直接操作这个下拉框, ...

  4. CODEVS——T 2618 核电站问题

    http://codevs.cn/problem/2618/  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description ...

  5. atomikos实现多数据源支持分布式事务管理(spring、tomcat、JTA)

    原文链接:http://iteye.blog.163.com/blog/static/1863080962012102945116222/   Atomikos TransactionsEssenti ...

  6. POJ 2375

    BFS+强连通.输出max(缩点后出度为0的点数,缩点后入度为0的点数). #include <cstdio> #include <iostream> #include < ...

  7. 区间最小值 线段树 (2015年 JXNU_ACS 算法组暑假第一次周赛)

    区间最小值 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submiss ...

  8. cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第六步--金币&amp;岩石加入而且管理

    说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  9. 远程桌面授权server没有提供许可证问题解决方法

    今天远程server报如图所看到的错误,网上查找的方法 方法一:(亲測有效) mstsc /V:192.168.0.3 /admin  方法二:(因为server正在使用中,未作測试) 删除远程桌面服 ...

  10. java泛型具体解释

    为什么引入泛型 bug是编程的一部分,我们仅仅能尽自己最大的能力降低出现bug的几率,可是谁也不能保证自己写出的程序不出现不论什么问题. 错误可分为两种:编译时错误与执行时错误.编译时错误在编译时能够 ...