一、需求分析
1、通过参数控制生成题目的个数;
2、通过参数控制生成该题目的数值的最大值;
3、题目运行一次生成的题目不能重复,生成的题目存到项目目录里的Exercise.txt中;
5、计算题目答案存在项目目录下的Answer.txt中;
6、程序支持10000道题目生成;
统计结果输出到文件Grade.txt,格式如下:
Correct: 5 (1, 3, 5, 7, 9)
Wrong: 5 (2, 4, 6, 8, 10)
Repeat:2
RepeatDetail:
(1) 2,45+32 Repeat 3,32+45
(2) 5,3+(2+1) Repeat 7,1+2+3
解释:
Correct: 5 ----5道题目正确,正确的题号 1,3,5,7,9
Wrong:5 -----5道题目错误,错误的题号 2,4,6,8,10
Repeat:2 2---组题目重复
(1) 第一组 题号2,题目 45+32 与题号3的题目重复,题号3为 32+45
(2)第二组 题号5,题目 3+(2+1) 与题号7的题目重复,题号7为 1+2+3
二、功能实现
1、运算式的生成:1)通过用户输入来控制生成式子个数和进行运算的数值最大值来生成随机个数的随机运算符;
2)根据生成的运算符个数来确定所需的操作数个数并生成随机的操作数;
3)将生成的运算符和操作数进行随机的组合并在组合后生成的操作数中随机加入括号;
2、运算式的计算:通过逆波兰式把中序表达式转为右序表达式最后通过栈来计算
3、对表达式查重:暂时的思路是通过对比运算式的有序表达式是否相同
三、代码实现
四、功能演示
1、生成10000道运算式
2、对运算式进行计算(没有将小数替换成分数)
五、PSP表格
PSP2.1 | Personal Software Process Stages | Time Senior Student | Time | |
Planning | 计划 | 10 | 6 | |
· Estimate | 估计这个任务需要多少时间 | 10 | 6 | |
Development | 开发 | 635 | 88 | |
· Analysis | 需求分析 (包括学习新技术) | 10 | 10 | |
· Design Spec | 生成设计文档 | 15 | 20 | |
· Design Review | 设计复审 | 10 | 10 | |
· Coding Standard | 代码规范 | 30 | 50 | |
· Design | 具体设计 | 30 | 40 | |
· Coding | 具体编码 | 480 | 800 | |
· Code Review | 代码复审 | 20 | 20 | |
· Test | 测试(自我测试,修改代码,提交修改) | 40 | 30 | |
Reporting | 报告 | 60 | 90 | |
· | 测试报告 | 30 | 60 | |
· | 计算工作量 | 5 | 10 | |
· | 并提出过程改进计划 | 25 | 20 |
六、总结
一开始因为对编译原理的掌握不是很好所以逆波兰式并不是很熟悉,所以花费了大量的时间先研究逆波兰式,然后用的又是自己不熟悉的C语言进行编码,对文件的操作也不熟悉,在文件读写也踩了非常多的坑,查重的功能还没来得及实现