zoukankan      html  css  js  c++  java
  • 软件工程结对作业01

    一.设计思路

    1.输入一个数控制题目个数

    2.输入一个数控制取值范围(小于100

    3.输入一个数控制是否有正负数

    4.输入一个数控制是否有余数

    5.输入一个数控制是否有乘除法

    6.输入一个数控制是否有括号

    7.生成一个随机数,控制每道题的参数个数

    8.在一个for循环里,生成随机数,如果生成的随机数大于输入的取值,则重新输入,否则进行下一步

    9.用if语句分模块,分别判断是否有正负号,余数,乘除法,括号的情况

    10.If是有负数的情况,要考虑生成的运算符是减号的情况,这种情况下,要变成加号,同时负号去掉

    11.生成随机数(0-3),用于控制运算符,当运算符是除号时,要考虑除法有无余数,并记录除号的位置

    12.If语句执行有乘除法的情况,并计算

    13.If语句执行只有有加减法的情况,并计算

    14.有括号的情况,如果只生成两个数,自动不加括号,若多个参数,则对符号位置设置随机数,进行括号位置的确定

    15.计算时,有括号先计算括号里面的*/,在计算+-,然后计算括号外面的,还是先*/,在+-

    16.计算式输出后,输入结果,精确到整数,不足1不进位

    17.输入的结果与计算机储存的结果比较,如果相等,则正确,正确计数器+1,若错误,则错误计数器+1

    18.For循环用户输入的次数

    .源代码:

    #include<iostream>
    #include<ctime>
    #include<cstdlib>
    using namespace std;
    void main()
    {
        int num;  //输入题目个数
        int rnum;  //输入取值范围
        int zfnum;  //输入是否有正负数
        int ys;  //输入是否有余数
        int fhn;  //输入是否有乘除法
        int kh;   //输入是否有括号
        cout<<"请输入题目个数:"<<endl;  //输入提示
        cin>>num;      //输入题目个数
        cout<<"请输入取值范围:(小于100)"<<endl;  //输入提示
        cin>>rnum;  //输入取值范围
        cout<<"请输入是否有正负数:(1.有 2.没有)"<<endl;  //输入提示
        cin>>zfnum;  //输入是否有正负数
        cout<<"除法是否有余数:(3.有 4.没有)"<<endl;  //输入提示
        cin>>ys;  //输入是否有余数
        cout<<"请输入是否有乘除法:(5.有 6.没有)"<<endl;  //输入提示
        cin>>fhn;  //输入是否有乘除法
        cout<<"请输入是否有括号:(7.有 8.没有)"<<endl;  //输入提示
        cin>>kh;  //输入是否有括号
        int sz[10];
        int jg,zhjg;
        int n1=0;
        int n2=0;
        int f=0;    //正负数的数字表示
        int fhnum=0;    //运算符号的数字表示
        char zf[10]={'+'};    //正负数的符号表示
        char fh[10];    //运算符号的符号表示
        int jl;   //记录除法的位置
        int kh1;   //记录括号的位置
        srand(time(0));
        for(int l=0;l<num;l++)
        {
            int sznum=rand()%9+2;   //每道题的数字个数 2-10
            for(int i=0;i<=sznum;i++)   //生成数字
            {
                sz[i]=rand()%100+1;    
                for(;;)      //控制数的范围
                {
                    if(sz[i]>rnum)
                        sz[i]=rand()%100+1;
                    else
                        break;
                }
                if(zfnum==1)  //计算有负数
                    f=rand()%2;
                if(f==1)     //负数
                    zf[i]='-';
                if(zf[i]=='-')
                    sz[i]=sz[i]*(-1);
            }
            for(int i=0;i<sznum;i++)    //生成运算符号
            {
                if(fhn==5)   //计算有乘除法
                {
                    fhnum=rand()%4;
                    if(fhnum==0)
                        fh[i]='+';
                    if(fhnum==1)
                        fh[i]='-';
                    if(fhnum==2)
                        fh[i]='*';
                    if(fhnum==3)
                    {
                        fh[i]='/';
                        if(ys==3)   //计算除法时有余数
                        {
                            jl=i;   //确定除法符号的位置
                            for(;;)
                            {
                                if(sz[i]%sz[i+1]!=0)
                                    break;
                                else 
                                {
                                    sz[i]=rand()%100+1;
                                    sz[i+1]=rand()%100+1;
                                }
                            }
                        }
                        if(ys==4)     //计算除法时没有余数
                        {
                            jl=i;   //确定除法符号的位置
                            for(;;)
                            {
                                if(sz[i]%sz[i+1]!=0)
                                {
                                    sz[i]=rand()%100+1;
                                    sz[i+1]=rand()%100+1;
                                }
                                else 
                                    break;
                            }
                        }
                    }
                }
                if(fhn==6)   //计算无乘除法
                {
                    fhnum=rand()%2;
                    if(fhnum==0)
                        fh[i]='+';
                    if(fhnum==1)
                        fh[i]='-';
                }
            }
            cout<<l+1<<": "<<sz[0];
            if(sznum==2)   //如果一个题只有2个数字时不加括号
                kh=8;
            if(kh==7)  //有括号时
            {
                kh1=rand()%(sznum-2)+1;    //对符号位置设置随机数,进行括号位置的确定
                for(int i=0;i<kh1-1;i++)
                {
                    cout<<fh[i]<<sz[i+1];
                }
                cout<<fh[kh1-1]<<"("<<sz[kh1]<<fh[kh1]<<sz[kh1+1]<<")";
                for(int i=kh1+1;i<sznum;i++)
                {
                    cout<<fh[i]<<sz[i+1];
                }
                jg=sz[0];
                //计算括号里的结果
                if(fh[kh1]=='+')
                {
                    sz[kh1]=sz[kh1]+sz[kh1+1];
                    sz[kh1+1]=0;
                }
                if(fh[kh1]=='-')
                {
                    sz[kh1]=sz[kh1]-sz[kh1+1];
                    sz[kh1+1]=0;
                }
                if(fh[kh1]=='*')
                {
                    sz[kh1]=sz[kh1]*sz[kh1+1];
                    sz[kh1+1]=1;
                }
                if(fh[kh1]=='/')
                {
                    sz[kh1]=sz[kh1]/sz[kh1+1];
                    sz[kh1+1]=1;
                }
                //先算*/
                for(int i=0;i<sznum;i++)
                {
                    if(fh[i]=='*')
                    {
                        sz[i]=sz[i]*sz[i+1];
                        sz[i+1]=1;
                    }
                    if(fh[i]=='/')
                    {
                        sz[i]=sz[i]/sz[i+1];
                        sz[i+1]=1;
                    }
                }
                //最后+ -
                for(int i=0;i<sznum;i++)
                {
                    if(fh[i]=='+')
                        jg=jg+sz[i+1];
                    if(fh[i]=='-')
                        jg=jg-sz[i+1];
                    if(fh[i]=='*')
                        jg=jg*sz[i+1];
                    if(fh[i]=='/')
                        jg=jg/sz[i+1];
                }
            }
            if(kh==8)    //没有括号时
            {
                for(int i=1;i<sznum;i++)
                {
                    cout<<fh[i]<<sz[i+1];
                }
                jg=sz[0];
                for(int i=0;i<sznum;i++)
                {
                    if(fh[i]=='*')
                    {
                        sz[i]=sz[i]*sz[i+1];
                        sz[i+1]=1;
                    }
                    if(fh[i]=='/')
                    {
                        sz[i]=sz[i]/sz[i+1];
                        sz[i+1]=1;
                    }
                }
                for(int i=0;i<sznum;i++)
                {
                    if(fh[i]=='+')
                        jg=jg+sz[i+1];
                    if(fh[i]=='-')
                        jg=jg-sz[i+1];
                    if(fh[i]=='*')
                        jg=jg*sz[i+1];
                    if(fh[i]=='/')
                        jg=jg/sz[i+1];
                }
            }
            cout<<"="<<endl;
            cout<<"请输入结果,精确到整数,不足1不进位:"<<endl;
            cin>>zhjg;
            if(zhjg-jg<0.001)
            {
                n1++;
                cout<<"正确!"<<endl;
            }
            else
            {
                n2++;
                cout<<"错误!"<<endl;
            }
        }
        cout<<"正确的个数:"<<n1<<",错误的个数:"<<n2<<endl;
    }

    .运行结果截图

     

     

    四.按照PSP0级的要求记录开发过程中的项目计划日志、时间记录日志、缺陷记录日志

                                    周活动总结表

    姓名:牛俊燕                                                      日期:2016.3.26

     日期任务

          听课

        编写程序

        阅读课本

        日总计

    周日

    周一

    100分钟

    120分钟

    220分钟

    周二

    120分钟

    120分钟

    240分钟

    周三

    140分钟

    110分钟

    250分钟

    周四

    周五

    100分钟

    100分钟

    周六

    90分钟

    60分钟

    150分钟

    周总计

    100分钟

    570分钟

    290分钟

    960分钟

    学生:牛俊燕                                                  日期:3/26/2016

    教师:王建民                                                  课程:软件工程概论             

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    3/21

    800

    950

    10分钟

    100分钟

    听课

    上课

    1300

    1500

    120分钟

    编程序

    作业4

    3/22

    1530

    1650

    80分钟

    讨论

    作业5

    1650

    1730

    40分钟

    编程序

    作业5

    1800

    2000

    120分钟

    看书

    构建之法

    3/23

    1400

    1630

    10分钟

    140分钟

    编程序

    作业5

    1630

    1910

    110分钟

    写精读

    阅读笔记

    3/25

    1730

    1910

    100分钟

    编程序

    作业5

    3/26

    900

    1130

    180分钟

    写总结

    精读,进度条等

    缺陷记录日志示例

    学生:牛俊燕

    日期:3/26/2016

    教员:王建民老师

    程序号:45         

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

    3/21

    1

    7

    编码

    编译

    2min

    描述:MAX没有初始化

    2

    23

    编码

    编译

    5min

    描述:创建数组有错误,通过new创建数组

    3

    40

    编码

    编译

    20min

    描述:try......catch......finally语句的处理

    3/22

    4

    54

    编码

    编译

    30min

    描述:当随机生成数是负数时,且运算符是减号,要将运算符变成加号,且随机生成数不带负号,运行时出不来想要的结果

    3/23

    5

    72

    设计

    编译

    50min

    描述:有乘除时,在除法有余数时,没有考虑记录除法符号的位置

    6

    114

    编码

    编译

    20min

    描述:对符号位置设置随机数,进行括号位置的确定有错误

    3/25

    7

    208

    编码

    编译

    15min

    描述:cin输入的名称有问题

    .一起合作的照片

  • 相关阅读:
    [SoapUI] 在执行某个TestSuite之前先执行login或者其他什么前置步骤
    [Groovy] How to check if element in groovy array/hash/collection/list?
    [Groovy] List和Map用法搜集
    [Groovy] 实战 Groovy, for each 剖析
    Groovy基本语法
    [BAT] xcopy拷贝远程服务器共享文件到本地
    [BAT] Access Denied in XCopy
    [BAT] 执行xcopy命令后出现Invalid num of parameters错误的解决办法
    [Automation] 自动化测试度量标准
    jsp页面直接编写csss
  • 原文地址:https://www.cnblogs.com/niujunyan/p/5322660.html
Copyright © 2011-2022 走看看