这个作业属于哪个课程 | 网工1934-软件工程 |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | 学会团队合作 ,实现一个自动生成小学四则运算题目的命令行程序 |
项目成员
吴嘉辉 3119005344
卢乔斌 3119005334
一、PSP表格
PSP2.1 | Personal Software Process tages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
· Estimate | ·估计这个任务需要多少时间 | 10 | 10 |
Development | 开发 | 240 | 200 |
· Analysis | · 需求分析 (包括学习新技术) | 300 | 300 |
· Design Spec | · 生成设计文档 | 20 | 60 |
· Design Review | · 设计复审 | 30 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 10 |
· Design | · 具体设计 | 100 | 60 |
· Coding | · 具体编码 | 240 | 200 |
· Code Review | · 代码复审 | 60 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 60 | 90 |
Reporting | 报告 | 60 | 90 |
· Test Repor | · 测试报告 | 30 | 30 |
· Size Measurement | · 计算工作量 | 10 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 110 | 50 |
· 合计 | 1345 | 1150 |
二、性能分析
由图可知,String[] 、StringBuffer 类型用得最多。String.nextLine()获取用户答案时,占用了绝大部分的资源。
三、设计与实现过程
1.设计思路
-
生成计算表达式
根据要求随机生成数字和符号,再在生成的表达式上生成括号,删去不规范的括号,得到初步的表达式。
-
筛选不符合规则表达式
判断子表达式是否为负数和是否有除数为0的列为粗略筛选,再根据子答案是否相同、长度是否相同、运算符优先级别是否相同、层次遍历是否相同作为精细筛选,筛选出不符合规则的表示式。
-
用户输入答案
通过控制台输出表达式,用户在控制台输入答案,从而获取用户答案。
-
答案校对
用递归表达式,根据符号优先级一步一步算子表达式,最后得出答案,再通过比较正确答案和用户答案两个数组内容得出答案是否正确,从而得到成绩。
2.项目结构
关键类和方法:
- CreateExpression类:用于生成表达式
- CorrectAnswer类:用于得到表达式的正确答案
- AccuracyUtil工具类:将正确率输出到文件中
- FIleUtil工具类:读写文档工具
- InputUtil工具类:输入基本信息,输出控制台引导信息
- RepeatUtil工具类:查重表达式
- ScreenUtil工具类:筛选表达式,筛选出不符合的表达式
3.实现过程
四、代码说明、
五、测试运行
生成10000道题
题目
答案
得到成绩
六、项目小结
卢乔斌:这次结对遇到的问题有由于前期没有和队友很好的规划好架构,同时也缺少了一些必要的交流,导致后期项目的开发受阻,难度加大。在开发过程中,没有对项目有较好和清晰的分包,所以造成了业务层没有完全抽离出来,代码和功能的组织结构性做的不够好。因为没有比较好的前期规划,所以在后期的开发测试的调试中,遇到BUG并着手解决 BUG 时会比较困难。经过这次的结对项目,我们不再局限于是个人编程,而是作为一个小团队来进行开发,可以充分发挥出各自的长处。首先在做结对编程项目的时候,先要一起讨论题目以及整个项目的需求,再综合两个人的想法,得到最后的执行方案。编码过程中,各自完成属于自己的部分并且进行测试,这大大提高了我们的效率。并且在开发过程中应及时沟通双方工作进程,当遇到推进困难问题可以双方一起解决,这样就不会落下进度。总之,通过本次的结对项目体验到了小团队开发的经历,学会相互合作,共同进步。
吴嘉辉: