#一、需求分析
为了方便小学生算数练习,为了方便家长们出题,利用程序出题可以很快速,很准确。
#二、功能设计
1、基本功能
(1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
(2)剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式
(3)题目数量可定制
(4)相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(5)生成的运算题存储到外部文件result.txt中
2、拓展功能
(1)可选择是否生成答案
#三、设计实现
+使用C语言及函数库
+用哈希表对操作数相同的算式去重
+用random()函数实现给定范围内的随机数取值,用2*random()-取值范围来表示可以为操作可为负数的情况
#四、测试运行
#五、代码片段
(1)判断算式是否重复,剔除重复式
1 for(j=0;j<i;j++) .
2 if(b1[i][0]==b1[j][0]&&b1[i][1]==b1[j][1]&&b1[i][2]==b1[j][2]){
3 flag=1;
4 break;
5 }
6 if(flag==1||(e==2&&c==0)){
7 i--;
8 continue;
9 }
(2)是否生成带答案的算式
1 if(t4==1)
2 fprintf(fp,"%5.0f%5.c%5.0f =%5.0f\n", a,b[e],c,sum);
3 else
4 fprintf(fp,"%5.0f%5.c%5.0f =\n", a,b[e],c);
(3)运算结果在100以内
1 if(result>100||result<-100)
2 {
3 i--;
4 continue;
5 }
#六、总结
改进思路:可把每段关键算法写成单独的函数,这样每次进行修改时可直接修改函数部分不需要到程序中进行修改,把可变的参数全部用变量代替,这样可实现更多功能,使程序更加人性化。
七、PSP
psp2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 60 | 60 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 60 | 60 |
Development | 开发 | 120 | 120 |
Analysis | 需求分析 (包括学习新技术) | 30 | 30 |
Design Spec | 生成设计文档 | 30 | 30 |
Design Review | 设计复审 (和同事审核设计文档) | 30 | 30 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
Design | 具体设计 | 20 | 20 |
Coding | 具体编码 | 120 | 120 |
Code Review | 代码复审 | 10 | 10 |
Test | 测试(自我测试,修改代码,提交修改) | 10 | 10 |
Reporting | 报告 | 30 | 30 |
Test Report | 测试报告 | 10 | 10 |
Size Measurement | 计算工作量 | 20 | 20 |
Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 10 | 10 |