Lobooi第二次作业:熟悉使用工具

第二次作业
GIT地址https://github.com/Lobooi
GIT用户名Lobooi
学号后五位24235
博客地址
作业链接

作业内容

1. git与VS2013安装配置

git: 修改了安装路径,其他默认。
VS2013: 以前安装好的,支持C#。

2. GitHub项目克隆

1.首先克隆项目到自己GitHub仓库,结果:Lobooi/AchaoCalculator
2.建立新文件夹,使用Git Bash Here输入:git clone https://github.com/Lobooi/AchaoCalculator.git 将项目克隆到本地。(注意:复制链接到Git Bash Here,使用 insert 键)Git push

3.代码编写与测试:

**1.小五的简单四则运算编写:**主要思路是随机产生规定数量题目和运算数字以及运算符,并组合在一起,同时保留记录答案以便查看。产生题目专门设计出一个SiZeYuanSuan类,这里是代码:

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

//xiaowu 简单四则运算

namespace Calculator
{
    public class SiZeYuanSuan
    {
        int num_g, num_f;
        double[] Result;
        Random rdm = new Random();
        //构造函数,传值
        public SiZeYuanSuan(int num_g, int num_f)
        {
            this.num_g = num_g;
            this.num_f = num_f; 
            Result = new double[num_g];
        }  
       //产出随机运算
        public void YunSuanSC() 
        {
            for (int i = 0; i < num_g; i++) 
            {
                int a = rdm.Next(num_f) + 1;//生成第一个数
                int b = rdm.Next(num_f) + 1;//生成第二个数
                char f = YunSuanFu();//取出运算符
                //打印题目
                //Console.WriteLine("{0}、{1} {2} {3} = ", i + 1, a, f, b);修改前的语句

                if (f == '+') 
                { 
                    Console.WriteLine("{0}、{1} {2} {3} = ", i + 1, a, f, b); 
                    Result[i] = a + b; 
                }
                else if (f == '-') 
                { 
                    if(a<b) {a=a+b;b=a-b;a=a-b; } //交换a-b,保证结果不出现负数
                    Console.WriteLine("{0}、{1} {2} {3} = ", i + 1, a, f, b);
                    Result[i] = a - b; 
                }
                    else if (f == '*')
                    { 
                        Console.WriteLine("{0}、{1} {2} {3} = ", i + 1, a, f, b); 
                        Result[i] = a * b; 
                    }
                           else
                            { 
                                Console.WriteLine("{0}、{1} {2} {3} = ", i + 1, a, f, b); 
                                Result[i] = Math.Round(Convert.ToDouble(a) / b, 3); 
                            }
            }
        }
        //产出随机运算符
        char YunSuanFu()
        {
            int k = rdm.Next(4);
            char fu = '+';
            switch (k) 
            {
                case 0: fu = '+';break;
                case 1: fu = '-';break;
                case 2: fu = '*';break;
                case 3: fu = '/';break;
            }
           // Console.WriteLine(fu);
            return fu;
        }
        //查看答案
        public void SeeResult()
        {
            foreach (double i in Result) 
            {
                Console.WriteLine(i.ToString());
            }
        }
    

然后再通过main来创建SiZeYuanSuan对象调用方法:

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

//xiaowu 简单四则运算

namespace Calculator
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入题目个数:");
            int num_g = int.Parse(Console.ReadLine());//确定题目个数

            Console.WriteLine("请输入运算数字范围:");
            int num_f = int.Parse(Console.ReadLine());//运算范围

            SiZeYuanSuan YS = new SiZeYuanSuan(num_g, num_f);
            YS.YunSuanSC();

            Console.WriteLine("是否查看答案(YorN):");
            char See = char.Parse(Console.ReadLine());
            if (See == 'Y' || See == 'y')
            {
                Console.WriteLine("答案如下");
                YS.SeeResult();
            }
            else
            { 
                Console.WriteLine("感谢使用!");
            }
            string str = Console.ReadLine();
        }
    }
}

实际上,第一次编译未通过,问题在于产出随机运算符时,所定义的char fu; 需要初始化。
2.代码测试: 首先,基于最开始的代码,检查错误之后,我又进行了,逐语句的调试,来检查每个随机产生的值,以及调用情况,并同时进行了代码优化,结果如图:逐语句调试
优化情况主要是,对除法运算的结果进行优化,将范围控制在小数点后三位,对结果的存储IF语句进行优化,以及输出答案的循环for进行了修改。
下面是对功能的单元测试:

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

using Calculator;

namespace CalculatorTest
{
    [TestClass]
    public class YuanSuanTest
    {
        [TestMethod]
        public void TestMethod1()
        {
            int[] a = { 11, 46, 23, 48, 92, };//测试题目数
            int[] b = { 122, 530, 462, 799, 1500};//测试计算数范围

            SiZeYuanSuan YStest;//引用测试对象
            //测试循环
            for (int i = 0; i < 5; i++)
            {
                YStest = new SiZeYuanSuan(a[i],b[i]);
                if (YStest.Result.Length == a[i]) { Console.WriteLine("通过!"); }
                else Console.WriteLine("不通过!");
            }

        }
    }
}

结果是正确的,如图:单元测试
实际上来说,写单元测试的过程并不复杂,但由于采用的代码写法,使得单元测试有些困难,所以,我也有进行手动的测试(比如上面的逐语句调试,之后的,手动输入等)。
下面进行能效分析:
预测一下应该是产生题目的for循环耗时最多,看图:效能分析20
好吧,看样子是在输入输出耗时高,不过也可能出的题太少了,再来一次:效能分析5000
这下就明显了,上一次测试为20题1-200数范围,这一次是50000(五万)题1-999999(一百万)数范围,效果明显,还挺好玩……

4.GIT项目上传:

在之前克隆的文件夹下,右键打开Git Bash Here,输入一系列命令(参考:CKTim的博客-Git使用git命令
然后会有登陆框(没弹出就注意看下面任务栏),然后登陆,就OK了。

总结感悟:

总的来说,从一头雾水,到大概知道,到了解使用,再到理解。只想说一句:我太难了~
自学是真的麻烦和难以理解,没有人带领的话,就会就更小心翼翼,但好在,现在网络给力,有问题只要耐心查询总能解决,这里感谢各位大佬的博客。
结论:基本掌握了项目从GitHub到本地再到GitHub的过程,和一些代码的的测试能力,over~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值