20165220结对编程四则运算第二阶段总结
一、需求分析
- 我们这门课是讲面向对象的程序设计,以对象为主,以使用者即以人为本是我们数据结构和程序设计的出发点
- 需要一个给测试对象自主选择的对象:难度level、确定concontinue或output等。
- 需要一个针对每个level设计出的计算method,一个循环器
- 需要一个统计accuracy的循环器
- 需要一个针对除法及真分数计算的一个class
- 我们的设计思路不是固定做多少道题,而是让对象随时选择是否继续做题还是更换难度还是查看已有的accuracy
- 他可以随时选择停止做题然后给出accuracy,被给予了较大的freedom
二、设计
- 使用if (else-if) 语句 去实行自主选择level1-level6的难度
- 使用( while(**.equalsIgnoreCase("y")) ) 来给使用者一个自主选择题目难度及数量的method
- 借助循环器记录并统计计算用户的正确率。
代码托管
三、问题以及解决方案
1.因为设计了两个( while(**.equalsIgnoreCase("y")))来达到内层外层的能循环的目的。但是实际操作的时候出现了错误程序竟然没等我输入是否要再选一个难度时就已经结束了程序的运行
解决方案: 我发现两层的循坏在**位置上不能用同一个字符串,得换一个,如此达成目的。
2.在设计实现准确率的过程之中,我在每次的运算中都进行了正确的题和错误的记录,所以我怕在程序的结尾打了一行[tf = t / (t + f);]但是程序并没有朝着我所预期的方向运行,不管用户端的操作者答对了多少题目,最后的准确率依然为0.0。
解决方案:由于我之前定义[t和f]:int t = 0;我就意识到了可能在各个难度循环中得到的[t和f]值并没能出来,所以最后那一段代码只能得到我定义的初始值,于是我在着一行代码前打了t = t;;f = f;如此即可以正常运行了。
四、JUnit测试
UML
五、一些改进的地方
1.由于没有考虑到如果用户输入了Level1-6范围之外的值怎么应对,如果没有采取措施的话,这个程序只能重新运行,所以做了一些处理.
2.没有考虑到如果用户一题都没有回答怎么办,也就是说当程序最后计算正确率的时候变成了0/0,分母出现了0就会出现了问题。于是对程序进行了修改和完善。
六、结对评价
在这周的实验和结对编程过程中,20165231王扬鸿永表现很勤奋,积极思考,有创新意识,这一点很好,让我感到很欣慰。
就是思维模式有些僵硬,如果在思考上再更进一步那就更好了。
PSP:
PSP2.2 | Personal Software Process Stages | 预估耗时(小时) | 实际耗时(小时) | |
---|---|---|---|---|
Planning | 计划 | 1 | 1 | |
· Estimate | · 估计这个任务需要多少时间 | 5 | 10 | |
· Analysis | · 需求分析 (包括学习新技术) | 2 | 2 | |
· Design Spec | · 生成设计文档 | 1 | 1 | |
· Design Review | · 设计复审 (和同事审核设计文档) | 1 | 1 | |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 1 | 1 | |
· Design | · 具体设计 | 2 | 3 | |
· Coding | · 具体编码 | 5 | 6 | |
· Code Review | · 代码复审 | 1 | 1 | |
· Test | · 测试(自我测试,修改代码,提交修改) | 1 | 1 | |
Reporting | 报告 | 1 | 1 | |
· Test Report | · 测试报告 | 2 | 2.5 | |
· Size Measurement | · 计算工作量 | 0.5 | 0.5 | |
· Postmortem & Process | · 事后总结, 并提出过程改进计划 | 3 | 2 |