这个作业的要求来自于: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/
八、总结
在刚开始做实验时,由于没与结对子对象沟通交流好,导致了一些没必要的麻烦,好在及时沟通,这个项目也能够完成了!