个人第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 ,。一个动W态演示图如下所示:
克隆项目

  • 提交代码
    接连使用 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是一个很好的平台,合理使用可以极大提高编程效率。
通过这次作业,我深深地明白了自己不足,在以后的日子里,我一定要好好学习,提升自己,多多实践。

posted @ 2019-09-18 16:31  书山压力大大大大  阅读(184)  评论(4编辑  收藏  举报