计算与软件工程 作业二

作业要求(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<<"="<<"\t";
                            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<<"="<<"\t";
                                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<<"="<<"\t";
                                    cin>>ans;
                                    if(ans==num1-num2)
                                    {
                                        cout<<"正确"<<endl;
                                        right++;
                                    }
                                    else
                                    {
                                        cout<<"答错了!"<<endl;
                                        cout<<"正确答案是:"<<num1-num2<<endl;
                                    }
                                }
                                else
                                {
                                    cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"\t";
                                    cin>>ans;
                                    if(ans==num2-num1)
                                    {
                                        cout<<"正确"<<endl;
                                        right++;
                                    }
                                    else
                                    {
                                        cout<<"答错了!"<<endl;
                                        cout<<"正确答案是:"<<num2-num1<<endl;
                                    }
                                }
                            }
                            break;
                        case 2:
                            cout<<j+1<<":"<<" "<<num1<<"*"<<num2<<"="<<"\t";
                            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<<"="<<"\t";
                                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<<"="<<"\t";
                            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<<"="<<"\t";
                                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<<"="<<"\t";
                                    cin>>ans;
                                    if(ans==num1-num2)
                                    {
                                        cout<<"正确"<<endl;
                                        right++;
                                    }
                                    else
                                    {
                                        cout<<"答错了!"<<endl;
                                        cout<<"正确答案是:"<<num1-num2<<endl;
                                    }
                                    break;
                                }
                                else
                                {
                                    cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"\t";
                                    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;
}
posted @ 2020-03-01 19:10  汤圆元  阅读(175)  评论(3编辑  收藏  举报