作业
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 60 |
• Estimate | • 估计这个任务需要多少时间 | 580 | 680 |
Development | 开发 | 530 | 630 |
• Analysis | • 需求分析 (包括学习新技术) | 40 | 40 |
• Design Spec | • 生成设计文档 | 30 | 30 |
• Design Review | • 设计复审 | 40 | 45 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 40 | 55 |
• Design | • 具体设计 | 60 | 70 |
• Coding | • 具体编码 | 240 | 300 |
• Code Review | • 代码复审 | 50 | 60 |
• Test | • 测试(自我测试,修改代码,提交修改) | 30 | 30 |
Reporting | 报告 | 50 | 50 |
• Test Repor | • 测试报告 | 20 | 20 |
• Size Measurement | • 计算工作量 | 10 | 10 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 20 | 20 |
合计 | 680 |
二、需求分析
我通过网上和自身感觉的方式了解到,小学一年级数学有如下的几个特点:
- 特点1 小学加减法一般在0-20之间
- 特点2 没有负数
经过分析,我认为,这个程序应当:
- 使用的数字小于20
- 减法的减数大于被减数
三、设计
1. 设计思路
- 先设置输入,并且进行判断
- 随机参数的生成
- 计算
- 输出
2. 实现方案
写出具体实现的步骤
比如:
- 准备工作:先在Github上创建仓库,克隆到本地...
- 技术关键点:Random,File,BufferedWriter的使用
四、编码
- 用户的输入
- 用Random设置随机生成数
- 用判断语句
- 输出
1. 调试日志
- 第一个BUG,是无法用命令行输入参数
- 第二个BUG,是代码错误
- 打三个BUG,是越界问题
2. 关键代码
System.out.println("小学一年级数学加减计算题");
System.out.println("请输入题目数量:");
int n = input.nextInt();
for (int i = 1; i <= n; i++) {
//生成两个随机数
int a = (int)(Math.random()20+1);
int b = (int)(Math.random()20+1);
//生成题序和题目
if(a>b) {
System.out.println("("+ i +") " + a +" - "+ b + " =");
String str = ("("+ i +") " + a +" - "+ b + " = " + (a-b));
out.writeUTF(str);
}//生成减法
else {
System.out.println("("+ i +") " + a +" + "+ b+ " =");
String str = ("("+ i +") " + a +" + "+ b + " = " + (a+b));
out.writeUTF(str);
}
}//生成加法.
3. 代码规范
- 第一条大括号的使用约定。如果是大括号内为空,则简介地写成{}即可,不需要换行;如果是非空代码块则:
- 左大括号前不换行
- 左大括号后换行
- 右大括号前换行
- 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行
- if/for/while/switch/do等保留字与括号之间都必须加空格
并人工检查代码是否符合规范
五、测试
测试输入: 5 3 测试结果:输入有误,请重新输入 预期结果:符合
测试输入: 5测试结果:输出正常 预期结果:符合
测试输入: a 测试结果:输入有误,请重新输入 预期结果:符合
测试输入: -5 测试结果:输入有误,请重新输入 预期结果:符合
六、总结
- 不知道怎样把“分而治之”等软件工程的思想运用进去