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

GIT地址 https://github.com/caiyulan/
GIT用户名 caiyulan
学号后五位 24205
博客地址 https://home.cnblogs.com/u/caiyulan9013/
作业链接 https://www.cnblogs.com/harry240/p/11515697.html

一、配置环境

跟着教程安装,过程很顺利。遇到了个小问题,改存储路径的时候不能安装在非空目录下,起先不太明白什么意思,但通过百度很快得到了解决。

二、代码设计思路

1.生成表达式
定义两个变量,一个用于随机生成运算数字,一个用于随机生成运算符的个数。在for循环里随机生成除第一个运算数外的运算数和运算符,使用var randomseed = Guid.NewGuid().GetHashCode();控制选取不重复的运算式。【C#生成不重复随机数的方法 - 心所欲 - 博客园】

public static string CreateProblem()
        {
            string result = null;
            var randomseed = Guid.NewGuid().GetHashCode();//生成不相同的式子
            Random random = new Random(randomseed);
            int num = random.Next(0, 101);//生成随机运算数字
            int opern = random.Next(2, 4);//生成随机运算符
            result = num.ToString();
            for(int i=1;i<opern;i++)
            {
                num = random.Next(0, 101);
                int operation = random.Next(0,4);
                result = result + Operation[operation] + num.ToString();
            }
            return result;
        }

2.计算表达式
想通过转换成后缀表达式用栈来计算,但是失败了,上网检索借鉴了别人的方法,使用DataTable来计算公式。通过while循环检查式子里是否含有除数为0,小数,负数的情况,有则重新生成。

 public static string Calculate(string result)
        {
            DataTable dt = new DataTable();
            string res = dt.Compute(result, "").ToString();//对运算式进行计算
            while (res.Contains("/0") || res.Contains(".") || Convert.ToInt32(res) < 0)//检查运算结果是否有除数为0,有小数,负数
            {
                result = CreateProblem();
                res = dt.Compute(result, "").ToString();
            }
            return res;
        }

3.Main方法运行代码和输出到文件

static void Main(string[] args)
        {
                Console.WriteLine("请输入您需要的算术个数:");
                int n = Convert.ToInt32(Console.ReadLine());
                StreamWriter sw = new StreamWriter(@"C:\Users\hp\Desktop\阿超四则运算\AchaoCalculator\subject.txt");
                for (int i = 0; i < n; i++)
                {
                    string result = CreateProblem();//生成运算式
                    string res = Calculate(result);//计算运算式
                    string final_MathFormula = result + "=" + res;//整个数学等式
                    Console.WriteLine(final_MathFormula);//在屏幕上打印n个四则运算式子
                    sw.WriteLine(final_MathFormula);//将运算式写入TXT文件“subject.txt”中
                }
                sw.Close();//关闭文件
          


        }

三、github克隆项目以及提交代码过程

克隆项目

1.成功登录后,输入班级作业所给的仓库网址 点击右上角的 Fork ,将阿超的四则运算库拷贝到自己的同名仓库中。

2.在自己的电脑上安装 Git 软件(这里下载了好几次老是失败,要不然就是不能在我的电脑上运行,后来是在官网上进行下载的),然后在自己拷贝项目的主页的绿色按钮处可以找到一个可克隆的项目地址,在 阿超四则运算的文件夹里打开 Git 命令行软件输入 git clone 命令。
将仓库内文件克隆到本地
完成从仓库克隆到本地

提交代码

1.配置自己的个人邮箱与 Commit 时的用户名

2.使用git add .和git comit -m""命令将改动推送到本地git库中

3.使用git status命令来检查,出现 nothing to commit 即说明已经可以 push 了。使用 push 命令后,会弹出一个窗口要求登录 Github,此时输入 Github 的 用户名或邮箱 与 密码 即可成功 push。

4.在完成 push 后,向源仓库发起 Pull Request。打开你Fork 后的项目主页点击按钮 New pull request,成功提交代码。

四、单元测试和回归测试

1.首先新建一个测试项目,在项目创建成功后,为单元测试项目 CalculatorUnitTest 增加对原项目的引用,以实现调用原项目函数接口的功能。
添加引用2.在完成单元测试的项目配置后,编写单元测试代码。

using System;
using Calculator;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace CalculatorUnitTest
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            string result = "20+10*5";
            string res = "70";
            string TestRes = Program.Calculate(result);
            Assert.AreEqual(res,TestRes);
        }
    }
}

3.运行单元测试。

五、效能分析

1.点击 IDE 顶部菜单栏中的分析,单击性能探查器,选择测试 CPU 使用率
2.增加循环体,开始效能分析。让程序运行一会儿后停止收集数据得到一份完整的效能分析报告。

3.点击创建详细的报告,生成更加详细的分析报告
在这里插入图片描述
可点进具体方法里 看看,可以看到非常清晰的每行代码占用 CPU 的时间比例

六、个人感想

C#遗忘了很多,基础也不扎实,在写代码的时候很吃力,空有想法不知道如何用代码实现,最后还是通过检索借鉴了一些博客上的算法和方法解决了问题,深刻体会到了编程的不易。学习了Github的一些操作和单元测试、效能分析等工具的使用,收获很多。

posted @ 2019-09-18 16:35  23586  阅读(266)  评论(1编辑  收藏  举报