• 第二次作业-熟悉使用工具


    GIT地址 https://github.com/sunyueqi
    GIT用户名 sunyueqi
    学号后五位 64306
    博客地址 http://www.cnblogs.com/230332663abcd/
    作业链接 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2793

    一.环境配置问题

    问题因为是以前已经下好的,下载完成后,用了一段时间,评估到期不能使用,过了试用期就禁止用了。解决:保留安装包,重新安装,在选择的时候登录用户,要以管理员身份登录,在安装成功后,注册产品中,使用产品密钥解锁,在解压中的文件夹中找到并打开激活码,任意选择序列号,粘贴在产品密钥,点击应用,激活成功后使用。

    这是下载的时间,因为以前学习过C#就装过。

    二.代码设计思路

    读完这道题,我觉得它主要考察的是随机函数的应用。产生n道加减法,n就是要输入的变量。n作为一个变量,先生成n个list,list装的是数字,假如用户输入的是两道题,那么就建两个list,list就存2到3个数字,这样数字准备就完成了。然后根据list,用随机数取四个符号,如果list中有两个参数,就取1个符号;如果有三个参数,就取两个符号。有了list和符号,就可以作运算。从list挨个取,再从符号里取 ,然后计算,打印。在运算的时候,因为题目说避免出现非整数,所以如果取到除号,判断是否整除,如果没有,返回随机数再取。如果是三个数,就要判断抽到除号出现的位置,如果在后面,就要让后面两个数重新取。

    图片演示:

     Random rd = new Random();设置随机函数
    IList<IList<int>> timushu = new List<IList<int>>();存储题目数量
    for (int i = 0; i < strN; i++)
                    {
                        IList<int> num = new List<int>();//每个题目内的数量
                        int numc = rd.Next(2, 4); //获得题目内的数字个数
                        for (int j = 0; j < numc; j++)
                        {
                            num.Add(rd.Next(1, 101));//获得题目数字
                        }
                        timushu.Add(num);
                    }

        根据题目的输入做第一个循环,生成每个题目的数字rd.Next(2,4)从2取到4,不包含4的整数。第二层循环,再次取随机数,表示每个题目中的数字,两个循环,表示整个题目里有几道题,每个题目里有几个数。                            

    private string returnSign(int type)
            {
                switch (type)
                {
                    case 1:
                        return "+";
                    case 2:
                        return "-";
                    case 3:
                        return "*";
                    case 4:
                        return "÷";
                }
                return "";
            }

    定义随机数代表的符号

    int sign1 = rd.Next(1, 5); 
                        int sign2 = rd.Next(1, 5);

    获得运算符

    if (list.Count == 2)
                        {
                           
                            if (sign1 == 4)
                            {
                                while (list[0] % list[1] != 0)
                                {
                                    list[0] = rd.Next(1, 101);
                                    list[1] = rd.Next(1, 101);
                                }
                            }
                            this.label2.Text += list[0] + " " + returnSign(sign1) + " " + list[1] + " = " + result(list[0], list[1], sign1) + "
    ";
                        }

    判断当前有几个数,避免出现小数,判断并处理运算符,如果是除号,需要第一个数是第二个数的倍数并小于100,不能整除则重新取数。

    switch (sign)
                {
                    case 1:
                        return a + b;
                    case 2:
                        return a - b;
                    case 3:
                        return a * b;
                    case 4:
                        return a / b;
                }
                return 0;

    进行运算

     if (sign1 == 4)//如果是 除号 需要第一个数是第二个数的倍数并小于100
                            {
                                while (list[0] % list[1] != 0)//不能整除则重新取数
                                {
                                    list[0] = rd.Next(1, 101);
                                    list[1] = rd.Next(1, 101);
                                }
                                if (sign2 == 4)
                                {
                                    while ((list[0] / list[1]) % list[2] != 0)//不能整除则重新取数
                                    {
                                        list[2] = rd.Next(1, 100);
                                    }
                                }
                            }
                            else if (sign2 == 4)//如果是 除号 需要第一个数是第二个数的倍数并小于100
                            {
                                while (list[1] % list[2] != 0)//不能整除则重新取数
                                {
                                    list[1] = rd.Next(1, 100);
                                    list[2] = rd.Next(1, 100);
                                }
                            }
    
    
                            this.label2.Text += list[0] + " " + returnSign(sign1) + " " + list[1] + " " + returnSign(sign2) + " " + list[2] + " = " + result(list[0], list[1], list[2], sign1, sign2) + "
    ";
                        }

    这是两个数的,三个数同上,判断符号以及进行相关运算。

    三.使用Git克隆及提交代码

    首先是在Git上注册了自己的账号,在官方网站上下载了Git Bash。找到阿超的计算机,点击fork,拷贝到自己的账号下。在我自己的e盘上,右键点击Git Bash。出现一个黑色的对话框,在框里输入了git clone后面去网站阿超的计算机那里复制download的网址,粘贴在Git Bash里。成功后在自己的盘上出现了阿超的计算机这个文件夹,就是成功了,因为这一步指导网站上有动图,我做的比较顺利,没有问题。图片演示:

    (注册账号,登录进去)需要的地址(在推荐官网下载成功)

    (打开git界面)

    (需要的网址)

    (输入克隆地址,出现文档)

    在提交代码上因为是自己写的代码然后上传,我就有点对不上指导上说的步骤。我用VS写好了代码保存起来,然后按照指导上所说,第一次配置了个人的邮箱和姓名。问题:地址的转换问题,文件存放的地址和我上传时的地址不一致,导致上传多次没有结果;其次就是要提交到账号没有办法 解决:通过查资料和问同学,我知道应该在先cd磁盘的位置和文件的名称,确定地址一致,再clone要上传的地址,然后再cd代码的文件名,add .再commit,同时要注意-m自己要备注的东西,然后再push,注意每一步要master才可以进行下一步。要把自己的代码先上传到自己的git账号上,再Push到统一的作业库里,这一步我看的时候有遗漏。

    图片演示:(先确定地址)(将要交的文件拷贝到文件夹)

    (再次输入文件夹的位置,出现master,进行下一步)

    (用git add添加文件)

    (git commit后面要跟名字)

    (上传)

     (上传成功后,在自己账号上出现编写的代码)(点击上传到班级仓库)

    四.单元测试和回归测试

    我首先是点开了我写好的项目,然后在选择的时候遇到了问题就是新建项目的时候,在倒数第二个有一个建立测试代码,点开也可以进去,但是后面引用的时候就没有了,我在这里找了一会。解决:后面重新过了流程,一定是在左边的菜单栏出现的测试,点击测试,再新建测试代码,再引用。但是属性的调试我还是没有找到。测试代码在没有写的时候还是可以先空运行,它可以出现一个测试的结果。最后再将测试代码填入放进界面,再运行就可以。

     (选择测试)(引用里选择要测试的项目)

    (进行测试)(写入测试代码)

    首先是在不同的区域设置断点,然后点击项目为调试项目,进行调试。点击红色按钮,输入条件j==0,可以看到测试结果,这个我没有遇到大的问题都可以解决。

    图片演示:(插入断点)

    (运行调试过程)

    (插入条件断点)

    五.感受

    首先我觉得是对代码的需求增加了,这种可以自动出题的程序是我的第一次尝试,考虑的方面有很多,因为是随机数,所以它的结果不符合提议的情况就很多,就需要在写之前就把程序可能出现的情况都考虑到。其次,就是这次新学的和新接触的git的应用,它可以通过程序控制,把本地的代码上传到网站上去,但因为没有注意它对路径的统一,导致我浪费了很多时间在提交代码上,所以要开始就搞清楚它的要求。我认为最重要的三步是cd一个路径,add.还有commmit后面要写内容,一般是可以成功的。还有提交的位置很关键,最后一步要申请将自己的代码推进班级的库里,这样别人才可以看到你的代码。学习了这块,也清楚了可以通过git来学习其他好的代码,只要可以下载知道路径,就可以放在自己的电脑上。最后的单元测验,分点测试,都可以有效的检查自己的代码,而且可以检查出有些看不出来的问题,回归测试注意的是在每一次更改代码后,要经过单元测试检查一下,确保其他地方没有发生错误。

  • 相关阅读:
    线性表的实现用通用方法实现线性表的初始化、求表长、插入元素、删除元素等
    用c++定义两个坐标点,计算两点间距离;进而计算线段的面积
    Java:学生信息的录入,各种排序,对文件的操作
    数组1 2 3 4 5 6 1(输入-1结束),奇数位的数逆序,偶数位数不变
    按层次遍历二叉树,用队列作为缓冲
    Chapter09"内核模式下的线程同步"之事件内核对象
    Chapter10“I/O设备的同步和异步”之打开和关闭设备
    CSDN博客积分系统
    探秘Java垃圾回收机制
    Chapter09“内核模式下的线程同步”之可等待的计时器内核对象
  • 原文地址:https://www.cnblogs.com/230332663abcd/p/10588777.html
Copyright © 2020-2023  润新知