作业
自己取一个大气又可爱的标题
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 800 | 980 |
• Estimate | • 估计这个任务需要多少时间 | 800 | 980 |
Development | 开发 | 800 | 980 |
• Analysis | • 需求分析 (包括学习新技术) | 140 | 150 |
• Design Spec | • 生成设计文档 | 20 | 30 |
• Design Review | • 设计复审 | 30 | 30 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 120 | 140 |
• Design | • 具体设计 | 90 | 120 |
• Coding | • 具体编码 | 200 | 220 |
• Code Review | • 代码复审 | 4040 | |
• Test | • 测试(自我测试,修改代码,提交修改) | 60 | 90 |
Reporting | 报告 | 60 | 90 |
• Test Repor | • 测试报告 | 40 | 40 |
• Size Measurement | • 计算工作量 | 40 | 40 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 40 | 40 |
合计 | 980 |
二、需求分析
我通过询问朋友的方式了解到,小学一年级数学有如下的几个特点:
- 特点
一年级只有一百以内加减法
一年级没有负数且都是正整数
二年级加法是两位数加减两位数
经过分析,我认为,这个程序应当:
-
使用的数字小于100
-
要注意不能出现负数
三、设计
1. 设计思路
三个方面的考虑:
保证参数的合法性
随机生成两个100以内的正整数
结果的题目和答案放入入文件中
2. 实现方案
写出具体实现的步骤
比如:
- 准备工作:先在Github上创建仓库,克隆到本地
- 技术关键点:对于一年级的题目要判断输入数字的合法性,对于二年级的要考虑除法中的陷阱
四、编码
通过scanner函数接收用户的输入,判断的参数是否全为数字和检验数字的位数。
用Math.random生成随机数
确保答案符合题目要求
最后生成文件存入结果
1. 调试日志
记录编码调试的日志,请记录下开发过程中的 debug 历程
在二年级判断除法的除数的地方要判断0的情况
2. 关键代码
StringBuffer top = new StringBuffer();
StringBuffer answer = new StringBuffer();
for (int i = 1; i <= leng; i++) {
int n1 = (int) (Math.random() * 101);
int n2 = (int) (Math.random() * 101);
if (n1 < n2) {
int t = n1;
n1 = n2;
n2 = t;
}
int index = (1 == Grade) ? ((int) (Math.random() * 10)) % 2 : ((int) (Math.random() * 10)) % 4;
String sym = Operator[index];
int r = 0;
int remainder = 0;
switch (sym) {
case " + ":
r = n1 + n2;
break;
case " * ":
r = n1 * n2;
break;
case " - ":
r = n1 - n2;
break;
case " / ":
while(0 == n2) {
n2 = (int) (Math.random() * 101);
}
r = n1 / n2;
remainder = n1 % n2;
break;
default:
break;
}
3. 代码规范
请给出本次实验使用的代码规范:
- 第一条避免出现相同的名字
- 第二条左大括号前不换行,左大括号后换行,右大括号前换行,右大括号后还有 else 等代码则不换行,表示终止的右大括号后必须换行。
并人工检查代码是否符合规范
五、测试
输入10 5 输入的第二个数不是1或2 输入的第二个参数不是1或2,请重新运行
输入20 sadas 输入的第二个数不是1或2 输入的第二个参数不是1或2,请重新运行
六、总结
很难理清楚写代码的先后顺序,遇到一些错误很难去找到并纠正,需要更加的加强自身的基础动手能力。