没有大气又可爱的标题
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 510 | 660 |
• Estimate | • 估计这个任务需要多少时间 | 510 | 660 |
Development | 开发 | 480 | 620 |
• Analysis | • 需求分析 (包括学习新技术) | 40 | 60 |
• Design Spec | • 生成设计文档 | 30 | 30 |
• Design Review | • 设计复审 | 10 | 10 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 10 | 20 |
• Design | • 具体设计 | 30 | 45 |
• Coding | • 具体编码 | 310 | 395 |
• Code Review | • 代码复审 | 20 | 20 |
• Test | • 测试(自我测试,修改代码,提交修改) | 30 | 40 |
Reporting | 报告 | 30 | 40 |
• Test Repor | • 测试报告 | 20 | 25 |
• Size Measurement | • 计算工作量 | 5 | 5 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 5 | 10 |
合计 | 660 |
二、需求分析
我通过百度的方式了解到,小学一、二年级数学有如下的几个特点:
-运算范围在100以内
-运算符号只有加减乘数
经过分析,我认为,这个程序应当:
-小学一年级:
-100以内的相加减
-不能有负数
-小学二年级:
-九九乘法表内的乘法
-一百以内的被除数除以一位数的除数
-商不能出现小数
三、设计
1. 设计思路
- 用户输入参数,输入的参数需要进行判断
- 随机数生成
- 判断输入的参数需要生成什么类型的题目
- 题目及答案生成写入文本
2. 实现方案
- 准备工作:先在Github上创建仓库,再用git克隆到本地
- 技术关键点:计算符号的判断
四、编码
- 实现用户输入
- rand.nextInt()的方法随机生成随机数
- if判断生成什么类型的题目(规范格式)
- 最后用IO流写入文本
1. 调试日志
- 进行判断时让字符串args【】与整型进行判断,后改为正则运算
- 设计除法时,忽略了生成随机数时除数会生成0
- 不输入参数或第二个参数没输入都会报错,后增加对args进行长度判断
2. 关键代码
Random rand = new Random();
if (grade==1)) {
//1为一年级,2为二年级
int d = 0;
String x = "";
String y = "";
for (int i = 1; i <= n; i++) {
int c = (rand.nextInt(2));// 0表示加法,1表示减法
if (c == 0) {
int a = (rand.nextInt(100));// 随机生成两个0-99的相加减的数,且之和不大于100
int b = (rand.nextInt(100 - a));
d = a + b;
if (i != 1) {
x = x + "\n";
y = y + "\n";
}
x = x + "(" + i + ")" + " " + a + " " + "+" + " " + b + " " + "=";// 将题目存入x
y = y + "(" + i + ")" + " " + a + " " + "+" + " " + b + " " + "=" + " " + d;// 将题目及答案存入y
} else {
int a = (rand.nextInt(100));// 随机生成两个0-99的相加减的数,且b不大于a
int b = (rand.nextInt(10));
d = a - b;
if (i != 1) {
x = x + "\n";
y = y + "\n";
}
x = x + "(" + i + ")" + " " + a + " " + "-" + " " + b + " " + "=";// 将题目存入x
y = y + "(" + i + ")" + " " + a + " " + "-" + " " + b + " " + "=" + " " + d;// 将题目及答案存入y
}
}
3. 代码规范
请给出本次实验使用的代码规范:
1.左大括号前不换行。
2.左大括号后换行。
3.右大括号前换行。
4.右大括号后还有else等代码则不换行
5.表示终止右大括号后必须换行。
6.if/for/while/switch/do等保留字与括号之间都必须加空格。
五、测试
测试内容 | 输入 | 预期 | 实际) |
---|---|---|---|
第一个参数 | 0 | 输入有误,程序结束1 | 符合预期 |
-5 | 输入有误,程序结束 | 符合预期 | |
100000000 | 输入有误,程序结束 | 符合预期 | |
a | 输入有误,程序结束 | 符合预期 | |
00000000000005 | 输入有误,程序结束 | 符合预期 | |
5.5 | 输入有误,程序结束1 | 符合预期 | |
5 | 生成五道一年级的题目 | 符合预期 | |
第二个参数 | 5 -1 | 输入有误,程序结束 | 符合预期 |
5 100000000000 | 输入有误,程序结束 | 符合预期 | |
5 a | 输入有误,程序结束 | 符合预期 | |
5 5 | 输入有误,程序结束 | 符合预期 | |
5 2 | 生成五道二年级的题目 | 符合预期 |
六、总结
使用了“软件开发的基本策略:分而治之”
从一开始看到题目就头疼,觉得无从下手;再到有了初步构思,询问度娘及同学,到最后完成。我觉得这并不是什么困难的事情即使自己是一个小白,“世上无难事,只怕有心人”。
不知道重构是什么- -!!!