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. 6.Python网络编程_全局变量基础

    变量作用域: 一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量.全局变量所有作用域都可用,局部变量只能在本函数可用,变量的使用顺序是,局部变量 > 全局变量, 也就是说:优 ...

  2. 浅谈AMD与CMD

    AMD 是 RequireJS 在推广过程中对模块定义的规范化产出. CMD 是 SeaJS 在推广过程中对模块定义的规范化产出. 这些规范的目的都是为了 JavaScript 的模块化开发,特别是在 ...

  3. 最短路问题的三种算法&模板

    最短路算法&模板 最短路问题是图论的基础问题.本篇随笔就图论中最短路问题进行剖析,讲解常用的三种最短路算法:Floyd算法.Dijkstra算法及SPFA算法,并给出三种算法的模板.流畅阅读本 ...

  4. js支持装饰器

    vscode中使用装饰器不报错 { "compilerOptions": { "experimentalDecorators": true } } yarn a ...

  5. [日常] NOI2019 退役记

    这次要彻底退役了 开个坑先 Day -2 出发坐车去gz 好像和上次去雅礼的车是同一趟于是大家都以为和上次一样是 \(10:40\) 开车, 于是提前2h大概八点多就去坐公交了 到了之后取票, 发现票 ...

  6. 线性结构之习题选讲-ReversingLinkedList

    目录 一.什么是抽象的链表 二.单链表的逆转 三.测试数据 3.1 边界测试 更新.更全的<数据结构与算法>的更新网站,更有python.go.人工智能教学等着你:https://www. ...

  7. [ZJOI2019] 开关 (一种扩展性较高的做法)

    [ZJOI2019] 开关 (一种扩展性较高的做法) 题意: 有n个开关,一开始状态都为关闭.每次随机选出一个开关将其状态改变,选出第i个开关的概率为${ p_i \over \sum_{i=1}^n ...

  8. Java实现字符串反转【Leetcode】

    Write a function that reverses a string. The input string is given as an array of characters char[]. ...

  9. React服务器端渲染框架next.js项目实战及部署上下文context问题解决办法

    在前段时间折腾过搭建react服务器端项目架构,点击这里了解下,正好最近有个重构PC网站的需求,考虑SEO等因素.在做技术选型的时候决定采用nextjs.项目开发过程中,nextjs的体验非常棒,个人 ...

  10. redis-5.0.5.tar.gz 安装

    参考5.0安装,地址:https://my.oschina.net/u/3367404/blog/2979102 前言 安装Redis需要知道自己需要哪个版本,有针对性的安装. 比如如果需要redis ...