个人第2次作业:熟悉使用工具
GIT地址 | GIT地址 |
---|---|
GIT用户名 | shushanyalida5124 |
学号后五位 | 24218 |
博客地址 | 博客地址 |
作业链接 | 作业链接 |
一、环境配置
win7,vs2019,git。
配置环境没有遇到问题。
二、代码思路
- 1.先用一个随机数cnum表示运算符个数,则操作数个数为cnum+1;
- 2.用0、1、2、3表示+、-、*、/;
- 3 .将操作数与运算符按顺序连起来并计算结果;
- 4.得到最终等式并写入文本。
using System;
using System.IO;
using System.Data;
namespace Calculator
{
public class Program
{
public static string path = @"E:\Subjects.txt";
static void Main(string[] args)
{
int n;
StreamWriter sw = new StreamWriter(path);
Console.WriteLine("请输入练习题数量:");
n =Convert.ToInt32( Console.ReadLine());
Console.WriteLine("已将以下算式写入{0}:",path);
for (int i = 0; i < n; i++)
{
System.Threading.Thread.Sleep(200);
string sub = Get_A_Subject();
sw.WriteLine(sub);
Console.WriteLine(sub);
}
sw.Close();
}
//生成一个不等式
static public string Get_A_Subject()
{
DataTable dt = new DataTable();
Random rdm = new Random();
int[] num = new int[4];
num[0] = rdm.Next(101);
char[] ch = new char[3];
string subject = num[0].ToString(); //代表算式的字符串
int cnum = rdm.Next(2, 4); //运算符个数
num[cnum] = rdm.Next(101);
string subjectTest = num[0].ToString(); //用于检验算式的结果是否为整数
for (int m = 0; m < cnum; m++)
{
num[m] = rdm.Next(101);
int r = rdm.Next(4);
switch (r)
{
case 0:
ch[m] = '+'; break;
case 1:
ch[m] = '-'; break;
case 2:
ch[m] = '*'; break;
case 3:
ch[m] = '/'; break;
default:
break;
}
//排除除数为零的算式
if (ch[m] == '/' && num[m] == 0)
{
m--;
continue;
}
subjectTest = subject + ch[m] + num[m];
//排除结果非整数的算式
if (Convert.ToDouble(dt.Compute(subjectTest, "")) != Convert.ToDouble(Convert.ToInt64(Convert.ToDouble(dt.Compute(subjectTest, "")))))
{
m--;
continue;
}
subject = subject+ ch[m] + num[m];
}
subject = subject + "=" + dt.Compute(subject, "");
return subject;
}
}
}
三、使用github克隆项目以及提交代码的整个过程
-
克隆项目
在我的电脑中任意找一个目录,打开 Git 命令行软件,输入 git clone
- 提交代码
接连使用 git add,git commit -m "Message"(Message是你要写的内容)即可利用 Git 记录下所有的改动。
四、测试过程
- 单元测试
由于未知原因,测试时不能使用DataTable中的Compute方法,所以通过检测等式两边是否都不为空的方法来测试Get_A_Subject方法是否满足需求。单元测试代码如下
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Calculator.Tests
{
[TestClass()]
public class ProgramTests
{
[TestMethod()]
public void Get_A_SubjectTest()
{
string sTest = Program.Get_A_Subject();
string[] sTestArry = sTest.Split('=');
string sLeft = sTestArry[0]; //等式左边
string sRight = sTestArry[1]; //等式右边
Assert.IsFalse((sLeft is null) || (sRight is null));
}
}
}
- 回归测试
每次修改完 Bug 之后,再运行一遍来看看是不是满足之前所有的单元测试样例。
五、感想与分享
gitgub是一个很好的平台,合理使用可以极大提高编程效率。
通过这次作业,我深深地明白了自己不足,在以后的日子里,我一定要好好学习,提升自己,多多实践。