需求分析
实现一个命令行程序,要求:
- 自动生成小学四则运算题目(加、减、乘、除)
- 生成题目去重
- 支持多运算符(比如生成包含100个运算符的题目)
- 支持真分数
- 统计正确率
- 处理生成题目并输出到文件,生成题目后从文件读入并判题
- 多语言支持
我们需要实现以下几个功能:
- 可通过输入设置语言
- 随机生成四则运算题目,通过循环使得生成的题目的计算过程不含负数且不重复,并可通过输入控制生成的题目数目以及数值的范围
- 能将生成的题目输出到文件,并从文件中获取题目实现自动计算从而判断回答是否正确
- 能将计算的结果转化为分数(如真分数五分之三表示为3/5,真分数二又八分之三表示为2’3/8。)
- 能计算通过统计正确的题数来计算正确率
设计思路
上周中我们已经实现了中缀表达式的计算以及分数的转换()。
根据需求,程序还需要新定义方法来实现随机生成运算题目、多种语言的支持。并且需要在主类中实现文件操作、生成题目的合法性检验、判断用户的回答是否正确以及调用其他的类的功能。于是我们新定义了生成题目的Produce类和支持多语言的Language类,并重写了MyDCTester类的方法。UML类图
运行过程截图
遇到的困难及解决方法
- 问题一:测试时IDEA自带的junit3无法正常使用
- 问题一解决办法:本地下载JUnitGenerator.jar包,在Intellij中依次选择File->Setings->Plugins,在Install plugin from disk导入JUnitGenerator.jar包即可
代码托管地址
对结对的小伙伴做出评价
我的结对搭档是龚仕杰,在本周的编程过程中,我遇到了许多的问题,通过与搭档的讨论成功得到了解决,在这过程中他不遗余力地帮助我,希望下次还有合作的机会。
PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) | |
---|---|---|---|---|
Planning | 计划 | 15 | 30 | |
Development | 开发 | |||
Analysis | 需求分析 (包括学习新技术) | 35 | 60 | |
Design Spec | 生成设计文档 | 45 | 45 | |
Design Review | 设计复审 (和同事审核设计文档) | 30 | 25 | |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 35 | |
Design | 具体设计 | 130 | 150 | |
Coding | 具体编码 | 230 | 300 | |
Test | 测试(自我测试,修改代码,提交修改) | 30 | 35 | |
Reporting | 报告 | 60 | 80 | |
Size Measurement | 计算工作量 | 15 | 25 | |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 25 | 25 | |
合计 | 680 | 855 |