十二新作

导航

个人第2次作业:熟悉使用工具

GIT地址 链接地址
GIT用户名 lyg1071334926
学号后五位 24232
博客地址 链接地址
作业链接 链接地址

part0

写四则运算主要过程及核心代码。

生成随机数,运算符号。
生成1-100的随机数,产生2-3个符号,

         //产生随机数
    public class _random
    {
    Random random = new Random();
    public _random()
    {
    }
    //操作数(0-100)
    public float return_operand()
    {
        return (float)random.Next(0, 101);
    }
    //有几个运算符(2-3)
    public int return_num()
    {
        return random.Next(2, 4);
    }
    //运算符数组对应的下标
    public int return_operator()
    {
        return random.Next(0, 4);
    }

四则运算类,栈的运用
将数字和符号存储在栈中方便在生成四则运算式的时候取用。构造两个函数,一个对符号优先级进行判断,一个判断运算结果是否有负数,运算式是否合理。这一部分在网上看了很久栈的操作,虽然是弄出来了,可是还是不是很明白。

   public class inn
  {
    public static char[] str = new char[100];
    private static char[] temp;
    //操作数栈
    Stack<float> num = new Stack<float>();
    //符号栈
    Stack<char> ch = new Stack<char>();
    public inn(string question)
    {
        //初始化
        //num.Clear();
        //ch.Clear();
        temp = question.ToCharArray();
        for (int i = 0; i < str.Length; i++)
        {
            if (i < temp.Length)
            {
                str[i] = temp[i];
            }
            else
            {
                str[i] = '\0';
            }
        }
    } 

个判断符号优先级的函数,在运算时候对符号优先级进行判断。

        public int weight(char s)
       {
        switch (s)
        {
            case '*':
                return 2;
            case '/':
                return 2;
            case '+':
                return 1;
            case '-':
                return 1;
            default:
                return 0;
        }
    }

对四则运算的合法性进行判断。

 public float test()
    {
        int i = 0;
        float tmp = 0, j;
        while (str[i] != '\0' || ch.Count != 0)
        {
            if (str[i] >= '0' && str[i] <= '9')
            {
                tmp = tmp * 10 + str[i] - '0';
                i++;
                if (str[i] < '0' || str[i] > '9')
                {
                    num.Push(tmp);
                    tmp = 0;
                }
            }
            else
            {
                if (ch.Count != 0 && Priority(str[i]) <= Priority(ch.Peek()))
                {
                    switch (ch.Pop())
                    {
                        case '+':
                            num.Push(num.Pop() + num.Pop());
                            break;
                        case '-':
                            j = num.Pop();
                            num.Push(num.Pop() - j);
                            break;
                        case '*':
                            num.Push(num.Pop() * num.Pop());
                            break;
                        case '/':
                            j = num.Pop();
                            num.Push(num.Pop() / j);
                            break;
                    }
                    continue;
                }
                if (str[i] != '\0' && ((num.Count != 0) || (Priority(str[i]) > Priority(ch.Peek()))))
                {
                    ch.Push(str[i]);
                    i++;
                    continue;
                }
            }
        }
        return num.Pop();
    }

用循环结构构造四则运算式,并将其写入文件中

     for (int i = 0; i < n; i++)
     {
            question = "";
            float num;
            int _operator;
            for (int j = 0; j < random.return_num(); j++)
           {
                //储存操作数和操作符代号
                num = random.return_operand();
                _operator = random.return_operator();
                question += num;
                switch (_operator)
               {
                  case 0:
                        question += symbol[0];
                        break;
                    case 1:
                        question += symbol[1];
                        break;
                    case 2:
                        question += symbol[2];
                        break;
                    case 3:
                        question += symbol3];
                        break;
                }
            }
            num = random.return_operand();
            question += num;
            compute = new Compute(question);
            res = compute.run();
            if (Math.Abs(res - (int)res) != 0)
            {
                           i--;
                continue;
            }
            question += "=";
            sw1.WriteLine(question);
            question += res;
            sw2.WriteLine(question);
        }
        sw1.Flush();
        sw2.Flush();
        sw1.Close();
        sw2.Flush();
       Console.WriteLine(@"文件在 url(E:\新建文件夹 (3)\AchaoCalculator\lyg1071334926\lyg1071334926) );
        Console.ReadKey();
    }

在文件中查看到的题库。

在这里插入图片描述

part1配置环境

以前安装过c#,我安装的vc2019,所以这个过程基本上没有问题.

在这里插入图片描述
在这里插入图片描述

part2 克隆项目

在前面几个步骤中注册Github 账号,将阿超的四则运算库拷贝到自己的同名仓库中,然后将git安装到自己的电脑中都没什么问题,

将阿超四则运算拷贝到自己仓库中

在这里插入图片描述

安装完成后的git ,然后将项目克隆到本地

在这里插入图片描述

在这里插入图片描述

使用 git add,等常见的Git操作。第一次使用,所以使用如下两条命令配置自己的个人邮箱与 Commit 的用户名。

在这里插入图片描述

part3 单元测试

创建单元测试项目,将所有类和函数的访问修饰符改为 public;

在这里插入图片描述

在这里插入图片描述

右键运行测试或从菜单栏中找到测试→运行所有测试,可以看到是否通过测试。

在这里插入图片描述

part4 基本操作

断点
在 VS 中设置断点非常简单,在要设置断点的行号旁用鼠标单击一下

在这里插入图片描述
断点设置后,按f10就可以运行测试。

在这里插入图片描述

条件断点

设置断点后右键单击断点为该出添加条件,在该条件下看断点是否正常运行。

在这里插入图片描述

part5 回归测试

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。

part6 效能测试

点击 IDE 顶部菜单栏中的 分析 ,即可看到 性能探查器 。勾选CPU使用率

在这里插入图片描述

part7 提交代码

进行用户名和邮箱配置后,在git中输入 git add . ,git commit -m "Message" ,git push
就可以上次代码了 上传后可以在自己的git网站仓库中查看到上传的文件。

在这里插入图片描述

在这里插入图片描述

总结

在本次任务中 熟悉了git的基本操作,了解了单元测试、回归测试、效能分析等基本功能
在代码设计过程中,虽然有很多不会,不知道怎么写代码,但是网上有很多类似的可以借鉴,学到了很多,
后面几个部分的阅读和操作可以让我在以后的项目中学的分析项目需求,选择较好的设计模式,避免边写边改的情况发生
充分利用单元测试检测代码的可靠性。

posted on 2019-09-19 09:47  十二新作  阅读(187)  评论(0编辑  收藏  举报