20162301 阶段编程四则运算(挑战出题)
需求分析
- 能指定生成题目的数量
- 能指定题目包含的运算符数量
- 每次生成的题目不能有重复
- 通过命令行参数形式指定题目要求
- 输出题目到文件,一行一个题目
- 操作数为个位整数,即选择范围只能是:1,2,3,4,5,6,7,8,9这9个数字
- 操作符选择范围只能是:+,-,*,/, 还有括号
设计思路
- 通过命令行参数形式来指定生成题目数量以及运算符数量。即通过
java ExpressionGenerator <number-of-expressions> <number-of-operator> <output-file-path>
来传达要求。 - 操作数的选择只需修改之前的代码,将整数表达式中的数取值范围改为1-9。
- 生成题目去重:生成题目去重一开始的设计思路是删除所有结果相同的题目,但是在通过测试工具测试的时候发现100道以上就没有办法继续生成下去,重复的题目太多。后来改变思路,将产生的整数表达式转换为后缀表达式,并进行排序,将排序后的结果存入一个数列中。若后生成的表达式排序后的结果与数列中的某个结果一样,则排除掉这个表达式。但是这个想法依旧存在重复,最后结对伙伴马平川同学的思路是:IntegerExpression类用来生成整数表达式并分别生成整数以及符号对应的数组,数组各个数初始为0。若自动生成某个数,那么在整数数列对应位置的数加上1。符号亦然。最后将两个数列的数字排列成新的式子,主函数中每次出题都判断是否已含有这样的式子,若不含有则将其加入到文本中。
UML图
实现过程中的关键代码解释
测试方法
-
编译命令:
javac -d bin src/*.java
cd bin
java ExpressionGenerator <number-of-expressions> <number-of-operator> <output-file-path> - 运用老师给出的测试工具测试
结果如下:
运行过程截图
代码托管地址
遇到的困难及解决方法
- 问题1:去重问题
- 解决方案:在设计思路中已提到,这周的代码重写了有三遍,最后一遍较好的代码是下午才完成的。
- 问题2:由于电脑刚刚重装系统,所以无Java配置环境,命令行无法运行程序。
- 解决方案:如何安装java环境
- 问题3:使用老师给出的测试工具时命令行里提醒“...错误:找不到或无法加载主类ExpressionGenerator"
- 解决方案:询问老师后,删除自己额外添加的package即可。
对结对伙伴的评价
- 马平川同学总是很及时的回答我的一些问题,在编写代码的时候给予我清晰的思路,在他身上能学到很多知识。
- 为自己的队友打分:65。前两周大部分的代码基础都是他编写的,我负责剩下比较好思考的代码还有bug的修复、总结等等。虽然我花的精力也挺多的,但写代码的部分应该更加重要一点。这周的拓展,队友给了我机会,让我在之前的基础上试着多写代码,但是我独立完成的代码出现的问题比较多:比如说思路比较混乱(也可以说是没有头绪),同样的事情反复做,代码不简洁等等,最后依旧去重问题解决的不够好(第一二次已废的代码链接留作纪念)。后来不得不让结对伙伴进行优化,将代码又一次改头换面了。确实,代码更应该值钱一点。
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(小时) | 实际耗时(小时) | |
---|---|---|---|---|
Planning | 计划 | 0.5 | 1 | |
Estimate | · 估计这个任务需要多少时间 | 0.5 | 1 | |
Development | 开发 | 11 | 11.5 | |
· Analysis | ·需求分析 (包括学习新技术) | 1.5 | 1 | |
· Design Spec | ·生成设计文档 | 0.5 | 0.5 | |
Design Review | ·设计复审 (和同事审核设计文档) | 1 | 0.5 | |
· Coding Standard | ·代码规范 (为目前的开发制定合适的规范) | 1 | 0.5 | |
· Design | · 具体设计 | 2 | 1.5 | |
· Coding | · 具体编码 | 2 | 4 | |
· Code Review | · 代码复审 | 1 | 1 | |
· Test | · 测试(自我测试,修改代码,提交修改) | 2 | 2.5 | |
Reporting | 报告 | 2 | 2 | |
· Test Report | · 测试报告 | 0.5 | 0.5 | |
· Size Measurement | · 计算工作量 | 0.5 | 0.5 | |
· Postmortem & Process Improvement Plan | ·事后总结, 并提出过程改进计划 | 1 | 1 | |
合计 | 13.5 | 14.5 |