1、预估与实际
Planning |
计划 |
|
|
• Estimate |
• 估计这个任务须要多少时间 |
180 |
200 |
Development |
开发 |
|
|
• Analysis |
• 需求分析 (包括学习新技术) |
10 |
10 |
• Design Spec |
• 生成设计文档 |
5 |
5 |
• Design Review |
• 设计复审 |
5 |
5 |
• Coding Standard |
• 代码规范 (为目前的开发制定合适的规范) |
10 |
10 |
• Design |
• 具体设计 |
10 |
10 |
• Coding |
• 具体编码 |
60 |
60 |
• Code Review |
• 代码复审 |
5 |
5 |
• Test |
• 测试(自我测试,修改代码,提交修改) |
30 |
30 |
Reporting |
报告 |
30 |
30 |
• Test Repor |
• 测试报告 |
30 |
30 |
• Size Measurement |
• 计算工做量 |
|
|
• Postmortem & Process Improvement Plan |
• 过后总结, 并提出过程改进计划 |
5 |
5 |
|
|
合计 |
200 |
2、需求分析
- 特色1
- 通过分析,我认为,这个程序应当:
- 一年级使用20之内的数字进行加减法,而且结果须要小于等于20大于等于0。
- 二年级使用乘法表上的乘法做为题目,除法则是100之内的数除以一个个位数,而且答案也应该为个位数。
3、设计
1. 设计思路
说明你如何设计这个程序算法
- 这个程序须要有三个函数,一个一年级函数,一个二年级函数,一个输出文件函数。
- 使用主函数调用一年级函数或二年级函数,函数计算完成以后调用输出文件函数进行输出
- 算法的关键是
- 1.使用数组保存随机出的数值,符号,答案
- 2.一年级函数中,须要判断两数相加或相减是否小于等于20大于等于0,若是不是使用 i--并使用continue结束当前循环,使当前数值做废。
- 3.二年级函数中,除法须要将答案做为被除的数,第一个随机数值或第二个随机数值做为除数,以保证符合需求,并减小时间浪费。
2. 实现方案
- 准备工做:先在Github上建立仓库,克隆到本地...
- 技术关键点:输入数值验证,使用while无限循环,若是数值正确使用break脱离循环。 使用二维数组保存随机出的数值。
4、编码
- 首先随机三个数值,a,b,m,m为符号限制随机数只能为1,2,1表明加法2表明减法,在二年级则是乘除。
- 一年级先随机abm,而后根据m的数决定加减,计算出ans答案,而后验证ans是否小于而是,若是不小于20则continue,将这次数据做废,而后将a b m ans存入一个二维数组,二维数组第一个数表明题目,第第二个数0 2表明运算的两个数,1表明符合,3表明答案。
- 二年级先随机abm,若是m为1,使用乘法,将a m b ans依次存入二维数组中,若是m为2,则是除法此时将ans 与 a做为运算数值,b做为答案。
- 输出的时候先将二维数组的0 1 2 输出出去,做为题目,而后将0 1 2 3 输出,做为答案。
1. 调试日志
- 第一次调试,发现全部结果都是0,发现是放在for循环数组的第一个数写成n了。
- 第二次调试,发现一年级ans不符合标准,使用if,剔除不符合标准的数值
- 第三次调试,发现二年级ans不符合标准,除法使用ans 与 a做为运算数值
- 第四次调试,发现没有处理异常的能力,是用while循环,检测输入数值是否在规定数值内,若是符合使用break跳出循环,若是不符合则继续循环。
2. 关键代码
for(int i = 0; i < n; i++) {
int a = (int) (Math.random()*20);
int b = (int) (Math.random()*20);
int ans = 0;
int mark = (int) (Math.random()*2+1);
String strMark = null;
if(mark == 1) {
ans = a+b;
strMark = "+";
}else {
ans = a-b;
strMark = "-";
}
if(ans >= 20 || ans < 0) {
i--;
continue;
}
str[i][0] = String.valueOf(a);
str[i][1] = strMark;
str[i][2] = String.valueOf(b);
str[i][3] = String.valueOf(ans);
}
- 将答案大于20的数值剔除掉,将符合需求的数值存入二维数组中
3. 代码规范
- 第一条:不容许任何魔法值(即未经预先定义的常量)直接出如今代码中。
- 第二条:大括号的使用约定。若是是大括号内为空,则简介地写成{}便可,不须要换行;若是是非空代码块则:左大括号前不换行。左大括号后换行。右大括号前换行。右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。
- 第三条:左小括号和字符之间不出现空格;一样的,有小括号和字符之间也不出现空格。
- 第四条:在 if/else/for/while/do 语句中必须使用大括号。
- 第五条:任何二目、三木运算符的左右两边都须要加一个空格。
- 第六条:单行字符数限制不超过120个,超出须要换行,换行时遵循以下原则:第二行相对第一行缩进 4 个空格,从第三行开始,再也不继续缩进,参考示例。运算符与下文一块儿换行。方法调用的点符号与下文一块儿换行。方法调用时,多个参数,须要换行时,在逗号后进行。
5、测试
6、总结
- 本次做业先将问题简化,先在主函数里写出随机一个加减法的函数,而后写出一个二维数组进行储存,而后写出一个输出函数。而后将一年级函数与输出函数从主函数中分开,分为单独的函数,而后再写一个二年级函数,将一年级函数复制过去,在判断符号处进行修改。而后测试程序是否可以正常运行。测试成功后,在处理异常输入数据。