小学生的噩梦
一、估计与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 600 | 720 |
• Estimate | • 估计这个任务需要多少时间 | 600 | 720 |
Development | 开发 | 600 | 900 |
• Analysis | • 需求分析 (包括学习新技术) | 30 | 40 |
• Design Spec | • 生成设计文档 | 30 | 40 |
• Design Review | • 设计复审 | 30 | 40 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 30 | 40 |
• Design | • 具体设计 | 60 | 70 |
• Coding | • 具体编码 | 300 | 400 |
• Code Review | • 代码复审 | 10 | 30 |
• Test | • 测试(自我测试,修改代码,提交修改) | 20 | 40 |
Reporting | 报告 | 10 | 40 |
• Test Repor | • 测试报告 | 30 | 40 |
• Size Measurement | • 计算工作量 | 30 | 40 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 20 | 40 |
合计 | 900 |
二、需求分析
我通过上网查百度和回忆自己的小学经历得到,小学一年级数学有如下特点:
- 学习100以内的加减法
- 100以内的比大小
经过分析,我认为,这个程序应当: - 将输入数据控制在100以内
三、设计
1、设计思路
- 要首先考虑用户输入数据在100以内
- 在其中的判断语句中是否正确
- 在不同的年级需要用什么语句去判断
- 是否可以自己生成TXT文件
- 要进行计算以及输出
2. 实现方案
- 准备工作1:先下一个QQ浏览器(具备整张网页翻译功能)
- 准备工作2:将老师的repository中的Fork项目,将其Clone至本地
- 在本地创建个人文件夹:
文件夹名称:PSP6375
源文件:MathExam6375 - 技术关键点:Random,File,BufferedWriter
四、编码
- 生成随机数Manth.random()
- 语句判断年级,符号,题目规范
- IO流写入
1. 调试日志
- 输入除法是,输出错误
解决方案:在生成数时+1 - 输入减法是,输出有负数
解决方案:判断第一个传入的数是否大于第二个数,如果小于,则符号“-”变为“+” - 输入负数时会报错
解决方案:判断是否大于0且个数不超过9999,否则重新输入
2. 关键代码
for (int i = 0; i < n ; i++) {
x = (int)(Math.random()100);//随机生成0-100的数
y = (int)(Math.random()100);
f = (int)(Math.random()*2);//随机生成0,1。0代表加号1代表减号
// 判断加法和减法 0为加法
if ( f == 0) {
System.out.println("(" + (i+1) + ")" +" " + x + "+" + y + " " + "=" + " ");
str[i] = "(" + (i+1) + ")" +" " + x + "+" + y + " " + "=" + " " + (x+y);//存入数组
}
else{
if (x-y < 0) {//若差为0减数被减数交换位置
System.out.println("(" + (i+1) + ")" +" " + y + "-" + x + " " + "=" + " ");
str[i] = "(" + (i+1) + ")" +" " + y + "-" + x + " " + "=" + " " + (y-x);//存入数组
}
else {
System.out.println("(" + (i+1) + ")" +" " + x + "-" + y + " " + "=" + " ");//若差为0减数被减数交换位置
str[i] = "(" + (i+1) + ")" +" " + x + "-" + y + " " + "=" + " " + (x-y);//存入数组
}
}
}
3. 代码规范
- 常量命名全部大写,单词键用下划线隔开,力求语义表达完整,不要嫌名字长。
- 杜绝完全不规范的缩写,避免忘文不知义。
- 不要使用一个常量类维护所有常量,按常量功能进行归类,分开维护
五、测试
- 输入5 2 预计显示二年级题目
- 输入 5 1 预计显示一年级题目
- 输入10 10 提示“”程序员能力有限,高年级还未完成”
六、总结
- 在写代码的时候要考虑到用户的使用感受以及用户的需求
- 在写代码的过程中再清楚自己现在在写的是哪一步,下一步需要做什么
- 要将“分而治之”的软件工程的思想运用进去,这样会使问题简单化