第五次作业-结对项目四则运算 “软件”之升级版

这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2232

我的的GitHub远程仓库地址为:https://github.com/sheep5250/zy

一、题目要求

  从个人项目出发,将程序改装成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:

  生成题目,单个题目最多不能超过4个运算符,操作数小于100。
  用户可以输入答案
  若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
二、扩展发现

  程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
  可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
  用户答题结束以后,程序可以显示用户答题所用的时间
  用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
  用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名
  程序可以出单个整数阶乘的题目:如:4!=24
  程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
  程序可以设置皮肤功能,可以改变界面的颜色即可。
三、详细设计

开发环境:VC++6.0
编程语言:c语言
实现的扩展发现:       
可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
程序可以出单个整数阶乘的题目:如:4!=24
程序可以设置皮肤功能,可以改变界面的颜色即可。
四、项目的时间规划

PSP2.1 Personal Software Process Stages Time Senior Student Time
Planning 计划 30(minute) 60(minute)
· Estimate 估计这个任务需要多少时间 120(minute) 150(minute)
Development 开发 30(minute) 45(minute)
· Analysis 需求分析 (包括学习新技术) 30(minute) 20(minute)
· Design Spec 生成设计文档 10(minute) 10(minute)
· Design Review 设计复审 4(minute) 6(minute)
· Coding Standard 代码规范 3(minute) 5(minute)
· Design 具体设计 10(minute) 12(minute)
· Coding 具体编码 60(minute) 60(minute)
· Code Review 代码复审 10(minute) 10(minute)
· Test 测试(自我测试,修改代码,提交修改) 30(minute) 30(minute)
Reporting 报告 5(minute) 8(minute)
· 测试报告 15(minute) 15(minute)
· 计算工作量 2(minute) 1(minute)
· 并提出过程改进计划 3(minute) 3(minute)


五、部分主要代码:

阶乘的计算:

int calculate2(int num4){
    int i,B;
    B=1;
    for(i=1;i<=num4;i++){
    B=B*i;
    }
    return B;
}
void title1(int n1){
    int num4,a,i,B;
    int rnum=0;
    float z=0.0;
    int b;
    printf("		请输入阶乘数的最大值:");
    scanf("%d",&a);
    for(i=0;i<n1;i++){
        srand(time(NULL));
        num4=rand()%a+1;
        B=calculate2(num4);
        printf("		%d!=",num4);
        scanf("%d",&b);
        if(b==B){
            printf("		回答正确
");
            rnum++;
          }
        else{
            printf("		回答错误,正确答案为:%d
",B);
        }

    }
    z=(float)rnum/(float)n1*100;
    printf("		本次答题数目为%d,准确率为%.2f%!
",n1,z);


}

背景颜色的改变

    printf("		请输入你想显示的颜色:(1-蓝色、2-绿色、3-湖蓝色、4-红色):");
                scanf("%d",&i);
                switch(i){
                case 1:
                    system("color 1f"); 
                    break;
                case 2:
                    system("color 2f");
                    break;
                case 3:
                    system("color 3f");
                    break;
                case 4:
                    system("color 4f");
                    break;

 负数括号的实现:

       if(num2<0){
               if(num3<0){
                    printf("		%d%c(%d)%c(%d)=",num1,op1,num2,op2,num3);
               }
               else
                    printf("		%d%c(%d)%c%d=",num1,op1,num2,op2,num3);
           }
           else if(num3<0){
                    printf("		%d%c%d%c(%d)=",num1,op1,num2,op2,num3);
           }
           else{
                    printf("		%d%c%d%c%d=",num1,op1,num2,op2,num3);
           }

六、项目截图

 

七、结对对象:

姓名:彭煜彬

他的博客地址:https://www.cnblogs.com/pybblog/

 

八、总结

在刚开始做实验时,由于没与结对子对象沟通交流好,导致了一些没必要的麻烦,好在及时沟通,这个项目也能够完成了!

原文地址:https://www.cnblogs.com/zy5250/p/9870263.html