GIT地址 | 个人GIT地址 |
---|---|
GIT用户名 | linlsj |
学号后五位 | 62311 |
博客地址 | 个人博客主页 |
做业连接 | 个人做业连接 |
关于这次做业我选择Visual Studio 2015这个工具,根据我的需求,我在微软官网上面下载了Visual Studio 2015的镜像文件。解压事后,内部文件如图所示:html
双击vs_community.exe文件进行安装,经过设置安装路径等一系列操做事后(这里,我的建议将vs安装到硬盘中,不要安装到系统盘中,由于vs这个软件仍是挺大的),进入到选择安装模块的界面,以下图git
这里根据我的需求选择相应的模块就好,固然我在这里选择所有安装(即安装全部模块)。在等待四五个小时后vs2015就安装完成了,此时你就能够打开vs2015进行界面、背景等开发环境的主题属性的设置。程序员
阿超家里的孩子上小学一年级了,这个暑假老师给家长们布置了一个做业:家长天天要给孩子出一些合理的,但要有些难度的四则运算题目,而且家长要对孩子的做业打分记录。做为程序员的阿超心想,既然天天都须要出题,那何不作一个能够自动生成小学四则运算题目与解决题目的命令行 “软件”呢。他把老师的话翻译一下,就造成了这个软件的需求:github
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=4c#
此次阿超选择使用他最拿手的 C# 语言来完成这样的需求,工欲善其事必先利其器,第一步就须要先安装一个好用的 IDE ,在这里我选择使用vs2015。数组
n
,用来肯定题目的数量咱们选择使用int n = Convert.Toint32(Console.ReadLine())
这一语句实现参数n
的获取,而后定义一些接下来会用到的变量。char[] op = {'+', '-', '*', '/'};
。Random dt = new Random();
。因为c#中的Random
函数生成的是伪随机数,为了解决这一问题,我选择用网络
a = rd.Next(0,100); c = rd.Next(2,4);这样的方式生成真正的随机数,避免生成伪随机数(经过使用不一样的范围来强制生成不一样的随机数)。
题目的储存,我选择用字符串的形式储存,使用c#中字符串的拼接特性以及循环结构dom
1. str = Convert.ToString(a); 2. for (int j = 0; j < c; j++) { m = rd.Next(0, 4); b = rd.Next(0, 100); str += op[m] + Convert.ToString(b); }实现题目的储存。
接下来须要计算结果,当时首先想到的是分割字符串生成字符数组而后进行计算,后面考虑到实现的难度比较大,所以放弃了这一作法,而后经过网络寻找c#的计算方法,终于找到了DataTable
这一个模块,能够经过使用其中的Compute
方法完成字符串中的加减乘除的运算,方法实现ssh
DataTable dt = new DataTable(); end = dt.Compute(str,"")其中
end
的数据类型是object
,经过使用end
来存储最后的运算结果。阿超的孩子刚上小学一年级,尚未接触过度数,他并不知道小数(分数)的形式,以及根据运算规则,除数不能为0
,还需知足运算结果不能出现负数。所以须要判断题目是否知足要求
if (end.ToString().Contains(".") || str.Contains("/0") || int.Parse(end.ToString()) < 0) continue;
若是包含,则使用continue
语句跳事后续操做。
题目以及答案的问题已经解决了,接下来就涉及到文件的操做,使用一个字符串将整个题目的信息都储存进去st = str.Replace("/", "÷") + "=" + end.ToString();
,因为小学一年级,没有接触过/
这种除号,我选择用÷
替换掉/
,而后使用StreamWriter
模块进行对.txt
的操做
StreamWriter streamWriter = new StreamWriter("test.txt", true); streamWriter.WriteLine(st); streamWriter.Close();
实现将题目输出到文件中的操做。
首先在GitHub网站首页注册一个GitHub帐号。使用该帐号登陆成功后,进入阿超的仓库中,进行克隆操做。进入阿超的仓库后,点击右上角的 Fork ,将阿超的四则运算库拷贝到本身的同名仓库中,以下图所示:
拷贝成功后,不难发现咱们有了一个同名仓库,若是你电脑上面尚未Git,那么你能够选择点击图片中右侧的绿色按钮,进行Git的下载安装。
打开Git Bash,输入git clone <你所须要克隆的项目地址> ,敲击回车,等待响应,而后就完成克隆了。
接下来因为首次使用Git,所以咱们须要配置本身的我的邮箱与Commit名(注:这里的邮箱和用户名最好和GitHub帐号一致)
配置完成后,接下来可使用git add .
以及git commit -m "咱们命名的分支"
进行文件保存工做。
在完成Git仓库的保存工做后,咱们能够经过git status
命令查看当前仓库状态。
接着咱们使用git push
提交命令将文件提交到GitHub中去,会弹出下列登陆界面,登陆事后便可传送文件。
而后等待文件上传,直至完成项目的上传工做。
Git在以前就已经配置好了,可是历来没有使用过,仍是比较陌生的。困住个人仍是Git的本地项目的上传,刚开始没有idb_rsa.pub文件,所以在GitHub上面一完成不了SSH keys的建立。后面经过百度,使用$ssh-keygen -t rsa -C "你的邮箱名"
命令完成了该文件的建立,若是没设置ssh keys,就建立新的ssh keys,否则git不能上传本地项目。当时就是由于这一缘由因此一直不能完成代码的提交。若是你是第一次使用Git上传本地项目,你能够参考这篇博客来完成本地项目的上传。
不过,个人代码只有一个Main()
函数,这个是有就只有修改个人代码了,修改后的代码形式如图
主函数
题目生成函数
存储题目函数
经过单元测试能够保证这一模块能被人放心的调用,让这一模块定义明确,模块内部的改变不会影响其余模块,并且模块的质量能获得稳定的、量化的保证。在这里,我使用vs2015来对我编写的函数进行测试
这个时候咱们能够在编写的函数中直接轻击鼠标右键,选择建立单元测试
而后出现这样的弹窗,接下来根据自身需求进行设置
随后咱们须要修改代码,修改file_opTests.cs
中的内容
接下来点击运行,查看运行结果便可。
回归测试就是在修改了原有代码的状况下,从新对该模块进行测试肯定这次修改没有引入新的错误或致使其余代码产生错误。修改file_op类中的方法事后,对其从新进行单元测试,须要知足单元测试的正确性,步骤与单元测试一致,file_op修改后的代码:
回归测试代码
Data Table
模块我以前彻底不知道,经过这一次的编程练习,对于这一模块我有了初步的了解。单元测试
和回归测试
这两个功能,之前就只是单纯的进行代码的调试与修改,经过单步调试寻找错误,并无考虑过我编写的模块被别人调用。历来没有考虑过模块的质量问题。Random
模块的使用中应该注意,咱们所生成的数是伪随机数,咱们应该采起必定的措施来限制它(例如:使用随机数种子、或者经过不一样范围内生成随机数)。SSH keys
,若是没有必定要新建一个,否则不能将项目上传到GitHub
里面去。