GIT地址 https://github.com/dxg1999
GIT用户名 dxg1999
学号后五位 62317
个人博客 我的博客
作业链接 作业内容

项目作业的整个过程

作业背景

阿超家里的孩子上小学一年级了,这个暑假老师给家长们布置了一个作业:家长每天要给孩子出一些合理的,但要有些难度的四则运算题目,并且家长要对孩子的作业打分记录。作为程序员的阿超心想,既然每天都需要出题,那何不做一个可以自动生成小学四则运算题目与解决题目的命令行 “软件”呢。他把老师的话翻译一下,就形成了这个软件的需求:

程序接收一个命令行参数 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

Part 1.项目环境配置过程

1.1先下载vs



1.2然后再勾选上C#所需的组件



GIT安装教程击这儿

1.3安装GIT



1.4回到电脑桌面,鼠标右击如果看到有两个git单词则安装成功

1.5遇到的问题

1.在安装C#组件时,最开始不知道咋查找安装,我又不想把以前安装好的vs删除,在重新安装的界面下勾选,因为重新安装要下载很久;最后,我在搜索栏下搜索组件安装才找到C#组件,也成功安装了。

2.初次使用Git,注册账号在验证邮箱哪里花了一点时间,不懂它那个意思,导致它发了好几个验证码;还有在安装时,不懂该勾选什么,不该勾选什么,还好有度娘(嘻嘻嘻)。

Part 2.克隆项目

2.1按照作业要求,在这个库拷贝下来

2.2拷贝完成

2.3Git初始化及仓库创建和操作



仓库复制创建,成功后,原先那个文件夹就多出一个Calculator



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

2.5遇到的问题

git的指令不太熟悉,在网上查找了一下解决掉了

Part 3.代码设计思路

3.1在VS中新建项目,地址就填刚刚那个文件夹的



3.2关键信息提取

不能出现负数

不能出现小数

项目采用C#完成

数字在0~100之内

运算符号在2~3个内

3.3先用Random函数生成随机数字和运算符号

     private void CreateEquation(int problem_cnt)
{
this.problem_cnt = problem_cnt;
for (int i = 0; i < this.problem_cnt; ++i)
{
int number = random.Next(0, 100);//生成随机运算数字,且取值范围为[0,100]
int Symbol = random.Next(2, 4);//随机生成运算符个数,且个数范围为[2,4)
CreateNum(Oparetion_Symbol); //调用生成问题函数
}

3.4再将生成运算符数量个数,且每个数在(1,100)之间,生成算式

    public static string Create()
{
string formula = null;
var seed = Guid.NewGuid().GetHashCode();//C#中默认以时间作为随机数种子,那么随机生成的运算式子很多都是相同的(伪随机)
Random random = new Random(seed);
int number = random.Next(0, 100);
int Symbol = random.Next(2, 4);
formula = number.ToString();
for (int i = 0; i <Symbol; i++)
{
number = random.Next(0, 101);//生成随机运算数字,且取值范围为[0,100]
int operation = random.Next(0, 4);//随机产生运算符
formula = formula + Operation_Symbol[operation] + number.ToString();
}
return formula;
}

3.5排除小数和负数,计算结果并返回值


public static string CalculateResult(string formula)
double result_1 = 0; //临时计算结果
if (formula.num.Count == 1) //若计算完毕返回结果
{
formula.result = formula.num[0];
return sb;
}
else if (formula.symbol.Exists(x => x == 2) || formula.symbol.Exists(x => x == 3)) //若运算中有*或/运算优先计算掉
{
for (int i = 0; i < formula.symbol.Count; i++)
{
if (formula.symbol[i] == 2 ||formula.symbol[i] == 3) //找到第一个为*或/的运算符
{
result_1 = Calculate(formula.symbol[i], formula.num[i], formula.num[i + 1]); //将这个运算符计算掉
//将计算结果保存并生成一个新的四则运算
formula.num[i] = result_1;
formula.num.RemoveAt(i+1);
formula.symbol.RemoveAt(i);
return result;
}
}
}
else
{
result_1 = Calculate(formula.symbol[0],formula.num[0],formula.num[1]);
//将计算结果保存并生成一个新的四则运算
formula.num[0] = result_1;
formula.num.RemoveAt(1);
formula.symbol.RemoveAt(0);
return CalculateResult(formula);
}
return result;
}

3.6将结果保存在subject.txt中

      StreamWriter writer = new StreamWriter(@"F:\练习\Calculator\subject.txt");

3.7运行结果





遇到的问题

1.随机数的生成以及调用

2.符号优先级不能处理

3.不能处理连续几个数相除

Part 4.单元测试

4.1创建单元测试



4.2查看结果

4.3回归测试

回归测试是指开发修改了旧代码后,测试重新进行测试以确认开发本次修改没有引入新的错误或导致其他代码产生错误。



将修改的和原来的分别运行,查看结果,从而优化程序。

4.4遇到的问题

1.最开始创建单元测试时,不能执行,说只有公开类才支持创建,后来将类改成公开的换成public就行了

2.我最开始在.Net core控制台上写的代码,导致没有右键直接生成创建单元测试的选项,必须自己从项目创建那里重新创建一个测试项目,才能对其测试;后来我改到在.Net premwork控制台上写,单击右键就有直接创建单元测试这个选项了

Part 5.提交代码

5.1打开git,先初始化本地仓库



5.2再执行add 和commit命令

5.3使用git status查看状态



接着用git push登录git



5.4当出现这一步时,说明你没配置ssh密钥,要自己配置(不知道可以看下面的参考文献)



5.5push成功



5.6然后回到你的git上,去上

感悟

Git中不能允许直接Ctrl+v进行粘贴,只能通过右键然后paste进行粘贴.这次作业做下来很累,花了很多时间,因为有很多新东西要配置,但也因此学到了很多新的知识,很开心;首先配置ssh密钥哪里,不知道怎么回事我按照大佬给的步骤一直配不出来,后来直接回车不知怎么地就配好了,终于在自己的C盘里找到了那个id_rsa.pua文件;通过这次作业,感到自己还有很多不足,还有就是Vs的功能太牛皮了;原本是想用栈实现四则运算的,但难度较大且过于繁琐,便采用了 Data Table 提供的现成方法(网上查找到的),自己以后还要多加努力啊。

参考文献

第一次使用Git上传本地项目到github上

C#中生成随机数的几种方法

c#实现简单四则运算

————————————————

让你的指尖跳跃出一行行代码精灵,希望对你有所帮助。

本文版权归作者和博客园共有,欢迎转载,转载请附上原文出处链接及本声明。

个人第2次作业:熟悉使用Git工具的更多相关文章

  1. 代码管理工具:使用github和git工具管理自己的代码

    一.git工具和账户创建 1.1 安装 Git 是 Linus Torvalds 最近实现的源代码管理软件."Git 是一个快速.可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系 ...

  2. 使用Windows下的git工具往github上传代码 踩坑记录

    使用Windows下的git工具往github上传代码 踩坑记录 背景 由于以前接触的项目都是通过svn进行版本控制,现在公司项目使用git,加上自己平时有一个练手小项目,趁着周末试着把项目上传到自己 ...

  3. EXCEL,熟悉又不熟悉的项目管理工具

    EXCEL,熟悉又不熟悉的项目管理工具 如何利用excel做轻量级的项目管理 教你用Excel进行项目管理

  4. 【转】第 02 天:在 Windows 平台必裝的三套 Git 工具

    原文网址:https://github.com/doggy8088/Learn-Git-in-30-days/blob/master/docs/02%20%E5%9C%A8%20Windows%20% ...

  5. windows中使用Git工具连接GitHub(配置篇)

    Git在源码管理领域目前占很大的比重了,而且开源的项目很多都转到GitHub上面了.例如:jQuery, reddit, Sparkle, curl, Ruby on Rails, node.js,  ...

  6. Git详解之六 Git工具(转)

    Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力. 接下来你 ...

  7. 为异常处理做准备,熟悉一下WinDbg工具

    为异常处理做准备,熟悉一下WinDbg工具 马上开始异常处理第二讲,但是在讲解之前,还有熟悉一下我们的WinDbg工具,当然你如果熟悉这个工具,那么就可以不用看了. 一丶熟悉WinDbg界面 刚开始打 ...

  8. Git详解之六:Git工具

    Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力.(伯乐在线 ...

  9. 使用git工具将项目上传到github

    注册github账号 https://github.com/ 安装git工具: https://git-for-windows.github.io/ 上面的准备工作完成后,现在开始操作. 一.进入gi ...

随机推荐

  1. for循环结构

    循环结构: 在程序当中总有一些需要反复/重复的执行的代码,假设没有循环结构,那么这段需要重复知心的需要重复执行的代码自然是需要重复编写的,代码无法得到重复使用.所以多数变成语言都是支持循环结构的.将来 ...

  2. Reat学习笔记4

    相信很多初学react的朋友在研究组件的路由配置问题时都很困扰,我也是折腾了半天才搞明白的. 一般情况下路由配置包含path和component两个信息: component顾名思义是组件的意思,指的 ...

  3. [学习笔记] 舞蹈链(DLX)入门

    "在一个全集\(X\)中若干子集的集合为\(S\),精确覆盖(\(\boldsymbol{Exact~Cover}\))是指,\(S\)的子集\(S*\),满足\(X\)中的每一个元素在\( ...

  4. Vue中MVVM模式的双向绑定原理 和 代码的实现

      今天带大家简单的实现MVVM模式,Object.defineProperty代理(proxy)数据   MVVM的实现方式: 模板编译(Compile) 数据劫持(Observer) Object ...

  5. select使用css居右对齐

    select{ direction: rtl; } 下面的方法无效 select{ text-align: right; }

  6. windows上安装python2和python3虚拟环境

    一.windows上安装 1.安装python 分别安装了Python2和Python3 python3.7默认安装目录 C:\Users\Administrator\AppData\Local\Pr ...

  7. [开源]OSharpNS 步步为营系列 - 1. 业务模块设计

    什么是OSharp OSharpNS全称OSharp Framework with .NetStandard2.0,是一个基于.NetStandard2.0开发的一个.NetCore快速开发框架.这个 ...

  8. Java连载1-概述&常用的dos命令

    本想写完那两个再开始新的,然而客观条件不允许,之前从未接触过Java,从零开始吧​!!! 一.概述 C盘下​:programme file 一般为64位程序安装的目录,programme file(X ...

  9. 海边拾贝-A-算法篇

    收集若干算法博客地址,不定期会更新: 算法 陈浩,leetcode 的C++解法  https://github.com/haoel/leetcode 王亮,很多题目讲解的比较详细   https:/ ...

  10. 图片转PDF

    目的:图片转pdf(image2pdf)依赖:fpdf.php 网址 为 http://fpdf.org/ 有文档和包 demo:step 1 : First download fpdf librar ...