《构建之法》—— 系统分析与设计第二次作业

《构建之法》—— 系统分析与设计第二次作业

我的GitHub地址 superLeeHan的github
这个作业要求在哪里 第二次作业要求
学号后五位 62406
博客地址 LeeHan
作业链接 作业链接

环境的配置以及克隆的练习

这里先下载一个人称宇宙第一编译器的VS(为了给电脑腾出足够的储存空间,我删了我心爱的IDEA以及辛辛苦苦配好的SSH框架环境······(╯‵□′)╯︵┻━┻)。
由于电脑空间不足的问题,之前经常安装/卸载VS,整套操作流程已经熟练地让人心疼:
《构建之法》—— 系统分析与设计第二次作业_第1张图片
《构建之法》—— 系统分析与设计第二次作业_第2张图片
之后就是漫长的等待·······(顺带吐槽一下上限高的离谱下限低的吓人的校园网)
《构建之法》—— 系统分析与设计第二次作业_第3张图片
然后我们来看git,git是long long ago就已经下载好了的,这里就不演示下载流程了。直接克隆项目:

  1. github账号也是已经注册过了的,所以直接用现成的。
    《构建之法》—— 系统分析与设计第二次作业_第4张图片
  2. 然后fork阿超的四则运算
    《构建之法》—— 系统分析与设计第二次作业_第5张图片
  3. 将仓库克隆至本地
    《构建之法》—— 系统分析与设计第二次作业_第6张图片
    之后在该文件夹下建立一个新的文件夹,重命名为superLeeHan(与GitHub账号同名)
    并在此文件夹中建立C#项目
    《构建之法》—— 系统分析与设计第二次作业_第7张图片

    代码设计

    背景:阿超家里的孩子上小学一年级了,这个暑假老师给家长们布置了一个作业:家长每天要给孩子出一些合理的,但要有些难度的四则运算题目,并且家长要对孩子的作业打分记录。

作为程序员的阿超心想,既然每天都需要出题,那何不做一个可以自动生成小学四则运算题目与解决题目的命令行 “软件”呢。他把老师的话翻译一下,就形成了这个软件的需求:

程序接收一个命令行参数 n,然后随机产生 n 道加减乘除(分别使用符号+ - * /来表示)练习题,每个数字在 0 和 100 之间,运算符在 2 个 到 3 个之间。

由于阿超的孩子才上一年级,并不知道分数。所以软件所出的练习题在运算过程中不得出现非整数,比如不能出现 3÷5+2=2.6 这样的算式。

练习题生成好后,将生成的 n 道练习题及其对应的正确答案输出到一个文件 subject.txt 中。

首先分析题目

  1. 随机产生题目
  2. 题目生成的过程中不能产生小数
  3. 对数字和运算符有要求
  4. 将结果输出至subject.txt文件之中

我的代码分为三个主要部分:
1.按照题目要求生成算式。

public static string createqu()
        {
            StringBuilder build = new StringBuilder();
            Random ranum = new Random(Guid.NewGuid().GetHashCode());    //产生随机数     
            int sym_num = ranum.Next(1, 4);      
            int start = 0;
            int num1 = ranum.Next(1, 101);       
            build.Append(num1);
            for (start = 0; start <= sym_num; start++)
            {
                int idx = ranum.Next(0, 4);      // 随机运算符
                int num2 = ranum.Next(1, 101);
                build.Append(sym[idx]).Append(num2);         // 连接数字与字符
                start++;
            }
            return build.ToString();
        }

2.验证题目保证输出算式之中没有结果为小数的式子。

 public static string verify(string question)     //计算算式结果,验证式子结果是否为整数
        {
            DataTable dt = new DataTable();
            string answer = dt.Compute(question, null).ToString();         // 将算式部分计算出结果并转为字符串
            if (double.Parse(answer) % 1 != 0 || double.Parse(answer) < 0)         // 如果结果是个小数,则返回null
            {
                return null;
            }

            return answer;
        }

3.输出结果至文件之中。

public static void output(int n)
        {
            StreamWriter streamWriter = new StreamWriter(@"C:\Users\MAC1\Desktop\各种乱七八糟的作业\subject.txt", true);
            List list = new List();
            for (int i = 0; i < n; i++)
            {
                string question = createqu();
                string answer = verify(question);
                if (answer == null) // 如果是个小数,则continue
                {
                    i--; continue;
                }
                list.Add(question + "=" + answer);
                Console.WriteLine(question + "=" + answer);

            }

            foreach (string s in list)
            {
                streamWriter.WriteLine(s);
            }
            Console.ReadLine();
        }

结果如下
《构建之法》—— 系统分析与设计第二次作业_第8张图片
好久没写C#基本上是参考菜鸟教程才走到了最后。

测试

首先,将所有的类都改成public。
然后,安装单元测试的相关插件
《构建之法》—— 系统分析与设计第二次作业_第9张图片
然后重启,等(再次吐槽这感人的网速)
《构建之法》—— 系统分析与设计第二次作业_第10张图片
新建单元测试,
《构建之法》—— 系统分析与设计第二次作业_第11张图片
添加引用
《构建之法》—— 系统分析与设计第二次作业_第12张图片
之前从未写过测试代码 开始有一些不知所云,最后还是简单的写了一点。

性能测试

在分析->性能探查器中 勾选CPU使用率,点击开始即可
《构建之法》—— 系统分析与设计第二次作业_第13张图片

提交

之后就是提交代码了,开始遇到了一点小问题,百度了一下,摆平。
《构建之法》—— 系统分析与设计第二次作业_第14张图片
《构建之法》—— 系统分析与设计第二次作业_第15张图片

感想

之前写代码从来没有上传过github(之前只用GitHub看别人的代码······),从来没有进行过单元测试,也算是有不小的收获。真的一年多没碰过C#了,写代码真的是头大···几乎是一边看资料一边写了,不会的地方就疯狂百度。

你可能感兴趣的:(《构建之法》—— 系统分析与设计第二次作业)