第二次作业

 

git地址  https://github.com/tei-kigen
git用户名  tei-kigen
学号后五位 62411
博客地址  https://www.cnblogs.com/teikigen/
作业链接  https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2795

 

 

 

 

 

 

 

 

 

一、配置环境

1、下载visual studio和github,注册git账号。因为visual studio上学期已经下载到电脑里了故略过。github是直接通过交流群的安装包链接下载,比较困难的是不大容易看懂英语,但对安装影响不大。

2、创建一个文件夹,为了方便展示我直接在桌面创了一个与git用户名同名的文件夹。

二、克隆项目

在github找到指定页面,点clone or download,复制链接,然后用git bash输入git clone (链接)完成克隆

三、代码编写

完整代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Calculator
{
class Program
{
static void Main(string[] args)
{
int j;
float m, n, sum;//定义float变量,用float是为了让sum%1==0可以筛掉出现小数的结果
string str;//定义字符串,用来储存和打印算式
Console.WriteLine("请输入需要生成的算式总数:");
j = int.Parse(Console.ReadLine());//记下用户需要的算式数量
for (int i = 0; i < j; i++)
{
Random a = new Random(Guid.NewGuid().GetHashCode());//使用random类生成随机数,用Guid的哈希码作为种子值避免重复
m =a.Next(0, 100);
str = m.ToString();
sum = m;
for (int z=0; z< a.Next(2, 4); z++)//这个for循环用来随机生成2到3个运算符号
{
switch (a.Next(1, 5))//随机生成四则运算符号
{
case 1:
n = a.Next(0, 100);
str = str + "+" + n.ToString() ;
sum = sum + n;
break;
case 2:
n = a.Next(0, 100);
str = str + "-" + n.ToString();
sum = sum - n;
break;
case 3:
n = a.Next(0, 100);
if (str.Contains('+') || str.Contains('-'))
str = "(" + str + ")";
//这个If语句用来给出现优先级问题的算式添加括号防止出现数学符号的逻辑错误,case 4中同理
str = str + "÷" + n.ToString();
sum = sum / n;
break;
case 4:
n = a.Next(0, 100);
if (str.Contains('+') || str.Contains('-'))
str = "(" + str + ")";
str = str + "*" + n.ToString();
sum = sum * n;
break;
}
}
if (sum%1==0&&sum>=0&&sum<=100)//筛掉小数结果和超范围的结果
{
Console.WriteLine(str + "=" + sum);
}
else//筛掉不要的结果时,不能影响生成的算式总数,故而i--
{
i--;
}

}
}
}
}

运行截图:

 

我编的时候是有注意代码对齐的不过复制代码到博客园直接就没有空格了所以看着可能有点难读。用来生成随机数的random类和用Guid的哈希码作为种子值避免重复的方法是百度来的。整体的想法是通过一个字符串str来储存算式,然后用float变量的sum来存储算式的运算结果(使用float的原因是为了让sum%1==0可以筛掉出现小数的结果),通过随机数生成2到3个随机运算符号,同时str和sum记录算式和运算结果。最后通过if语句检验算式的结果是否符合要求。具体的设计上的一些小细节可以参见代码中写的注释。

四、提交代码

 

 

 具体如图所示,登陆,复制,添加。说实在的因为github全是英语所以完全不知道怎么用,我自己也不知道是否是成功提交上了,关于github的资料似乎也很少,查了很久百度才弄完。

五、单元测试

 在类和main函数前添加public使其公有,右键选择创建单元测试

 

 

 

六、回归测试,效能分析

 

 以上是执行百万条算式的分析结果,这个程序用9分11秒打印了百万条符合要求的算式,这个算法效率大概算是很低,不过百万条算式够给小学生做几十年了所以还好吧。

 七、心得体会

这次作业完成得异常艰苦,我从来没用过github和vs的测试分析功能,这是第一次初步体验这些工具,软工的流程不仅仅是程序的编写,更多的是这样的分析与测试,这是我从本次作业中了解到的。

posted @ 2019-03-27 17:30  tei-kigen  阅读(144)  评论(1编辑  收藏  举报