前言感谢
感谢老师能够带给我们结对编程这一机会,我相信两个人的智慧互相交织会产生不可思议的成果的,我也相信我们的程序将会越做越好。
需求分析
首先用户是我将要测试的对象,我认为这个程序的最终版本需要达到:
1·要让测试者知晓用户的水平,层次。
2·同时也要让测试者知道自己的水平高度,进行自我的认知然后不断提升自己。
设计思路
本周我设定了Level1-Level6,可供用户自行选择难度。(if语句)
不仅如此,还提供给了用户可以重复做同一难度题目的机会,即如果用户觉得Level3所提供的加减乘法混合运算十分有趣,想多做几道题,这是允许的
( while(**.equalsIgnoreCase("y")) )
当用户退出了某一难度,仍然被赋予重新选择难度的机会,只要用户想要不断地做题,就能给他提供无穷的题目。( while(**.equalsIgnoreCase("y")) )
正确率是不可缺少的,本程序将记录下每一次做测试题的结果,当用户选择要退出程序时,将会告诉他们他们的准确率。
阶段性成果
设计了6个Levels:
Level1:两个个位整数的加法运算
Level2:三个十位整数的加减法混合运算
Level3:三个个位帧数的加减乘混合运算
Level4:两个分式相加
Level5:四个分式的加法和乘法混合运算
Level6:六个分式加减乘除混合运算
成果展示
遇到的问题
第一个遇到的问题是:
因为设计了两个( while(**.equalsIgnoreCase("y")))来达到内层外层的能循环的目的。但是实际操作的时候出现了错误程序竟然没等我输入是否要再选一个难度时就已经结束了程序的运行
解决方案: 我发现两层的循坏在**位置上不能用同一个字符串,得换一个,如此达成目的。
第二个遇到的问题是:
在设计实现准确率的过程之中,我在每次的运算中都进行了正确的题和错误的记录,所以我怕在程序的结尾打了一行[tf = t / (t + f);]但是程序并没有朝着我所预期的方向运行,不管用户端的操作者答对了多少题目,最后的准确率依然为0.0。
解决方案:由于我之前定义[t和f]:int t = 0;我就意识到了可能在各个难度循环中得到的[t和f]值并没能出来,所以最后那一段代码只能得到我定义的初始值,于是我在着一行代码前打了t = t;;f = f;如此即可以正常运行了。
拓展需求
我想,计算这种活,之所以锻炼人的脑力,就是在一个快字,我将引入限时答题的程序,使得用户必须在规定时间内回答出来,否则以错误记录
结对评价
20162314王译潇同学在本周的结对任务中表现出色,与我一起设计程序框架,帮助我查阅一些方法的使用,以及帮助了我寻找程序之中的漏洞。
PSP2.1
PSP2.1 | 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 |