zoukankan      html  css  js  c++  java
  • 计算与软件工程 作业二

    作业要求(https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10402)

    作业1

    预习

    1.PSP(Personal Software Process)
    特点:
    • 不局限于某一种软件技术 (如编程语言), 而是着眼于软件开发的流程, 这样不同应用的工程师可以互相比较。

    • 不依赖于考试, 而主要靠工程师自己收集数据, 然后统计提高。

    • 在小型,初创的团队中, 高质量的项目需求很难找到,这意味着给程序员的输入质量不高,在这种情况下, 程序员的输出 (程序/软件) 往往质量不高, 然而这并不能全部由程序员负责。

    • PSP 依赖于数据

    • 需要工程师输入数据, 记录工程师的各项活动, 这本身就需要不小的代价。

    • 如果数据不准确或有遗失, 怎么办? 让工程师编造一些?

    • 如果一些数据不利于工程师本人 (例如: 花很多时间修改缺陷), 我们怎么能保证工程师能如实地记录这些数据呢?

    • PSP的目的是记录工程师如何实现需求的效率, 而不是记录顾客对产品的满意度。

    2.程序效能分析
    分析方法:
    (1)抽样(Sampling)
    抽样就是当程序运行时,Visual Studio时不时看一看这个程序运行在哪一个函数内,并记录下来,程序结束后,Visual Studio就会得出一个关于程序运行时间分布的大致的印象。这种方法的优点是不需要改动程序,运行较快,可以很快地找到瓶颈。但是不能得出精确的数据,代码中的调用关系(CallTree)也不能准确表示。
    (2)代码注入(Instrumentation)
    代码注入就是将检测的代码加入到每一个函数中,这样程序的一举一动都被记录在案,程序的各个效能数据都可以被精准地测量。这一方法的缺点是程序的运行时间会大大加长,还会产生很大的数据文件,数据分析的时间也相应增加。同时,注入的代码也影响了程序真实的运行情况。

    3.单元测试
    创建的主要步骤
    (1)设置数据(一个假想的正确的E-mail地址);
    (2)使用被测试类型的功能(用E-mail地址来创建一个User类的实体);
    (3)比较实际结果和预期的结果(Assert.IsTrue(target!= null);)。
    好的单元测试的标准
    (1)单元测试应该在最低的功能/参数上验证程序的正确性。
    (2)单元测试必须由最熟悉代码的人(程序的作者)来写。
    (3)单元测试过后,机器状态保持不变。
    (4)单元测试要快(一个测试运行时间是几秒钟,而不是几分钟)。
    (5)单元测试应该产生可重复、一致的结果。
    (6)独立性,单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。
    (7)单元测试应该覆盖所有代码路径,包括错误处理路径,为了保证单元测试的代码覆盖率,单元测试必须测试公开的和私有的函数/方法。
    (8)单元测试应该集成到自动测试的框架中。
    (9)单元测试必须和产品代码一起保存和维护。

    个人程序运行截图


    作业二

    1.使用 Gitee(码云)代码托管仓库(https://www.jianshu.com/p/2a03c225ea93)

    配置本地的 Git 用户信息

    本机生成SSH公钥

    托管代码遇到一些困难,操作生疏,废了很长时间
    git add . 将当前目录所有文件添加到git暂存区
    git clone 把仓库克隆到本地会建一个文件夹(若是自己建立了文件夹就不必再clone)
    git commit -m "initial commit" #提交并备注提交信息
    (若出现错误:fatal: Not a git repository (or any of the parent directories): .git ,则输入git init)
    git push origin master #将本地提交推送到远程仓库

    2.gitee链接(https://gitee.com/tang_yuan-yuan/git-tang/blob/master/5.cpp)

    3.代码

    #include<iostream>
    #include<time.h>
    #include<math.h>
    using namespace std;
    int main()
    {
        cout<<"********************欢 迎 进 入 四 则 运 算 系 统*********************"<<endl;
    Again:
        double Ques1=1;
        int Ques01;
        int Ques2=1;
        int Ques3=100;
        char Ques4='y';
        int Ques5=1;
        char Ques6='n';
        char Ques7='n';
        double ans=0;
        int right=0;
    	double alltime;
    	clock_t start, finish;
        cout<<"                      一.请输入题目数量:";
        cin>>Ques1;
        Ques01=floor(Ques1);
        cout<<"                      二.行间距(正整数):";
        cin>>Ques5;
        cout<<"                      三.请输入算式中数值的最大值:";
        cin>>Ques3;
        while(1)
        {
            cout<<"                      四.运算中需要乘除法吗?y:需要;n:不需要";
            cin>>Ques4;
            cout<<"                      五.减法中需要有负数吗?y:需要;n:不需要";
            cin>>Ques7;
            cout<<"`````````````````````````````````````````````````````````````````````````"<<endl;
            cout<<"开始答题:"<<endl;
            srand(time(NULL));
            if(Ques4=='y')
            {
                while(1)
                {
                    if(Ques1<1)
                    {
                        cout<<"输入有误,请重新输入题目数量:";
                        cin>>Ques1;
                        Ques01=floor(Ques1);
                    }
                    else
                    {
    					start = clock();
                        for(int j=0;j<Ques01;j++)
                        {
                            if(j!=0&&j%Ques2==0)
                            {
                                for(int i=0;i<Ques5;i++)
                                {
                                    cout<<endl;
                                }        
                            }
                            int num1=rand()%Ques3;
                            int num2=rand()%Ques3;
                            int sign=rand()%4;
                            switch(sign)
                            {
                            case 0:
                                cout<<j+1<<":"<<" "<<num1<<"+"<<num2<<"="<<"	";
                                cin>>ans;
                                if(ans==num1+num2)
                                {
                                    cout<<"正确"<<endl;
                                    right++;
                                }
                                else
                                {
                                    cout<<"答错了!"<<endl;
                                    cout<<"正确答案是:"<<num1+num2<<endl;
                                }
                                break;
                            case 1:
                                if(Ques7=='y')
                                {
                                    cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"	";
                                    cin>>ans;
                                    if(ans==num1-num2)
                                    {
                                        cout<<"正确"<<endl;
                                        right++;
                                    }
                                    else
                                    {
                                        cout<<"答错了!"<<endl;
                                        cout<<"正确答案是:"<<num1-num2<<endl;
                                    }
                                }
                                else
                                {
                                    if(num1>num2)
                                    {
                                        cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"	";
                                        cin>>ans;
                                        if(ans==num1-num2)
                                        {
                                            cout<<"正确"<<endl;
                                            right++;
                                        }
                                        else
                                        {
                                            cout<<"答错了!"<<endl;
                                            cout<<"正确答案是:"<<num1-num2<<endl;
                                        }
                                    }
                                    else
                                    {
                                        cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"	";
                                        cin>>ans;
                                        if(ans==num2-num1)
                                        {
                                            cout<<"正确"<<endl;
                                            right++;
                                        }
                                        else
                                        {
                                            cout<<"答错了!"<<endl;
                                            cout<<"正确答案是:"<<num2-num1<<endl;
                                        }
                                    }
                                }
                                break;
                            case 2:
                                cout<<j+1<<":"<<" "<<num1<<"*"<<num2<<"="<<"	";
                                cin>>ans;
                                if(ans==num1*num2)
                                {
                                    cout<<"正确"<<endl;
                                    right++;
                                }
                                else
                                {
                                    cout<<"答错了!"<<endl;
                                    cout<<"正确答案是:"<<num1*num2<<endl;
                                }
                                break;
                            case 3:
                                if(num2!=0)
                                {
                                    cout<<j+1<<":"<<" "<<num1<<"/"<<num2<<"="<<"	";
                                    cin>>ans;
                                    if(ans==num1/num2)
                                    {
                                        cout<<"正确"<<endl;
                                        right++;
                                    }
                                    else
                                    {
                                        cout<<"答错了!"<<endl;
                                        cout<<"正确答案是:"<<num1/num2<<endl;
                                    }
                                }
                                else
                                {
                                    j--;
                                }
                                break;
                            }
                        }
                        break;
                    }
                }
    			finish = clock();
                alltime = (double)(finish - start) / CLOCKS_PER_SEC; 
                cout<<"共答对"<<right<<"道题;"<<"答错"<<Ques01-right<<"道题。"<<"用时(秒):"<<alltime<<endl;
                cout<<"继续努力!"<<endl;
                break;
            }
            if(Ques4=='n')
            {
                while(1)
                {
                    if(Ques01<1)
                    {
                        cout<<"输入有误,请重新输入题目数量:";
                        cin>>Ques1;
                        Ques01=floor(Ques1);
                    }
                    else
                    {
    					start = clock();
                        for(int j=0;j<Ques01;j++)
                        {
                            if(j!=0&&j%Ques2==0)
                            {
                                for(int i=0;i<=Ques5;i++)
                                {
                                    cout<<endl;
                                }
                            }
                            int num1=rand()%Ques3;
                            int num2=rand()%Ques3;
                            int sign=rand()%2;
                            switch(sign)
                            {
                            case 0:
                                cout<<j+1<<":"<<" "<<num1<<"+"<<num2<<"="<<"	";
                                cin>>ans;
                                if(ans==num1+num2)
                                {
                                    cout<<"正确"<<endl;
                                    right++;
                                }
                                else
                                {
                                    cout<<"答错了!"<<endl;
                                    cout<<"正确答案是:"<<num1+num2<<endl;
                                }
                                break;
                            case 1:
                                if(Ques7=='y')
                                {
                                    cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"	";
                                    cin>>ans;
                                    if(ans==num1-num2)
                                    {
                                        cout<<"正确"<<endl;
                                        right++;
                                    }
                                    else
                                    {
                                        cout<<"答错了!"<<endl;
                                        cout<<"正确答案是:"<<num1-num2<<endl;
                                    }
                                    break;
                                }
                                else
                                {
                                    if(num1>num2)
                                    {
                                        cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"	";
                                        cin>>ans;
                                        if(ans==num1-num2)
                                        {
                                            cout<<"正确"<<endl;
                                            right++;
                                        }
                                        else
                                        {
                                            cout<<"答错了!"<<endl;
                                            cout<<"正确答案是:"<<num1-num2<<endl;
                                        }
                                        break;
                                    }
                                    else
                                    {
                                        cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"	";
                                        cin>>ans;
                                        if(ans==num2-num1)
                                        {
                                            cout<<"正确";
                                        }
                                        else
                                        {
                                            cout<<"答错了!"<<endl;
                                            cout<<"正确答案是:"<<num2-num1<<endl;
                                        }
                                        break;
                                    }
                                }
                                break;
                            }
                        }
                    }
                    break;
                }
    			finish = clock();
                alltime = (double)(finish - start) / CLOCKS_PER_SEC; 
                cout<<"共答对"<<right<<"道题;"<<"答错"<<Ques01-right<<"道题。"<<"用时(秒):"<<alltime<<endl;
                cout<<"继续努力!"<<endl;
                break;
            }
    
            else
            {
                cout<<"输入有误,请按要求输入!"<<endl;
            }
        }
        cout<<endl;
        while(1)
        {
            cout<<"还需要继续出题还是退出?(y:继续出题;n:退出)";
            cin>>Ques6;
            if(Ques6=='y')
            {
                goto Again;
            }
            if(Ques6=='n')
            {
                goto Exit;
            }
            else
            {
                cout<<"输入有误,请重新输入:";
            }
        }
    Exit:
        return 0;
    }
    
  • 相关阅读:
    说说毕业两年多的经历
    egret: if判断语句不能写在addEventListener监听事件外面吗?
    egret wing exml文件突然在设计和预览模式下不可见!
    egret:设置滚动视图、隐藏滚动条以及层级的问题
    egret:list网格布局
    egret 自动播放音乐问题:ios 自动播放音乐失效
    private static和public static的意义
    setTimeout()的第三个参数
    egret 学习之once()与addEventListener()
    egret 入门学习笔记之问题解决
  • 原文地址:https://www.cnblogs.com/tang-yuan-yuan/p/12390256.html
Copyright © 2011-2022 走看看