第二次作业

GIT地址 https://github.com/pbnbpb
GIT用户名 pbnbpb
学号后五位 62609
博客地址 https://www.cnblogs.com/XiaoPB/
作业链接 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2795

 

 

 

 

 

 

 

 

1:配置环境

   vs是以前就在官网下载并配置好了。

2:进行拷贝以及git相关操作

 

对要求的四则运算库进行拷贝。

将已经拷贝的文件克隆到本地。

 

代码:   

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

namespace ConsoleApp1
{
   public  class Program
    {
        static int GetRandomSeed()
        {
            byte[] bytes = new byte[4];
            System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
            rng.GetBytes(bytes);
            return BitConverter.ToInt32(bytes, 0);
        }
        static void Main(string[] args)
        {
            string newTxtPath = "E:/作业二/AchaoCalculator/subject.txt";
            StreamWriter sw = new StreamWriter(newTxtPath, false, Encoding.Default);
            Console.WriteLine("需要多少运算题");
            int n = int.Parse(Console.ReadLine());
            int i, j, m, q, ans, temp;
            string formula;
            for (i = 0; i < n; i++)
            {

                Random ro = new Random(GetRandomSeed());
                int up, down;
                up = 100;
                down = 1;
                j = ro.Next(down, up);
                m = ro.Next(down, up);
                q = ro.Next(1, 4);
                switch (q)
                {
                    case 1:
                        ans = result(j, m);
                        formula = j + "+" + m + "=" + ans;
                        sw.WriteLine(formula);
                        Console.WriteLine(formula);
                        break;
                    case 2:
                        if (j < m)
                        {
                            temp = j;
                            j = m;
                            m = temp;
                        }
                        ans = result1(j, m);
                        formula = j + "-" + m + "=" + ans;
                        sw.WriteLine(formula);
                        Console.WriteLine(formula);
                        break;
                    case 3:
                        ans = result2(j, m);
                        formula = j + "*" + m + "=" + ans;
                        sw.WriteLine(formula);
                        Console.WriteLine(formula);
                        break;
                    case 4:
                        if (j % m != 0) ans = result2(j, m);
                        else ans = result3(j, m);
                        formula = j + "/" + m + "=" + ans;
                        sw.WriteLine(formula);
                        Console.WriteLine(formula);
                        break;
                    default:
                        break;
                }
               
            }

            sw.Flush();
            sw.Close();
            Console.ReadKey();

        }

        static  public  int result(int a, int b)
           {
                return a + b;
            }
            static public  int result1(int a, int b)
            {
                return a - b;
            }
            static public  int result2(int a, int b)
            {
                return a * b;
            }
            static public  int result3(int a, int b)
            {
                return a / b;
            }

        
    }

}

 

代码部分我在for循环内利用random 随机生成随机的100以内的数字,然后才随机生成1~4之间的数字然后通过switch函数判断是进行什么运算。其中如果两个数相减,而被减数小于减数,则将两个数进行交换后再相减,而如果两个数相除,不能产生整数,则这两个数采取乘运算。而在将算式输出的同时,将其输出到文件中。

 

在在运行程序后我发现产生的式子都是一样的,我不明白其原理,上网查阅了资料后才知道:在Random生成随机数的时候,如果短时间内连续生成随机数,就会导致生成的随机数相同。而后通过浏览了他人的博客找到了解决方法——获取随机种子。

//static int GetRandomSeed( )
{
byte[] bytes = new byte[4];
System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider( );
rng.GetBytes( bytes );
return BitConverter.ToInt32( bytes , 0 );
}

Random random = new Random( GetRandomSeed( ) );//  

 参考资料:https://blog.csdn.net/shuai_wy/article/details/78606175

 

 运行结果:

 

 

单元测试:

测试成功。(测试过程中之前新建了一个项目,但是它属于.NET core,可是我开始创建时并没有用它建立单元测试项目,我不清楚是怎么回事。因为框架不对,导致后来一直无法添加引用,浪费了我许多时间。)

性能分析:

设置断点:

 

 

 

回归测试:

 

 

 

成功。

 提交代码:

 

在使用git提交代码的时候我是先用 git add .将所有文件放入暂存区,而后使用git commit -m‘’ 将文件存入本地仓库,然后在输入 git status查看是否已经全部存入本地仓库,最后使用git push远程提交代码。

完全不清楚如何提交代码,这些全是我在网上查阅资料时弄的,一开始输入git add .的时候出现了问题,后来输入git status之后,我再次输入git add .就成功将文件放入暂存区了,我并不知道其中是什么问题。

 

体会:

这次作业过程中,我明显感受到自己在C#程序编写方面能力不足,仍需要去学习和练习实践。其次就是刚刚使用Git,有许多方面都不清楚,很多操作指令都不了解,作业过程中并不知道如何提交代码,后来全是上网查阅资料才迷迷糊糊地成功提交了代码。这次作业后,我应该花时间去了解和练习和GitHub相关的操作,让我在以后可以熟练地运用git。

 

 

 

 

   

posted @ 2019-03-27 18:06  PBnbpb  阅读(160)  评论(1编辑  收藏  举报