要命的作业

一、预估与实际

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
• Estimate • 估计这个任务需要多少时间 600 926
Development 开发
• Analysis • 需求分析 (包括学习新技术) 100 50
• Design Spec • 生成设计文档 20 25
• Design Review • 设计复审 20 10
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 30 20
• Design • 具体设计 100 100
• Coding • 具体编码 400 500
• Code Review • 代码复审 50 40
• Test • 测试(自我测试,修改代码,提交修改) 100 110
Reporting 报告 20 25
• Test Repor • 测试报告 20 26
• Size Measurement • 计算工作量 10 10
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 10 10
合计

二、需求分析

我通过百度的方式了解到,小学一二年级数学有如下的几个特点:

  • 特点1
  • 一百以内的加减
    -特点2
    -一百以内的乘除

经过分析,我认为,这个程序应当:

  • 使用的数字小于100
  • 小的数不能减大的数
    -没有分数
    -没有小数

三、设计

1. 设计思路

  • 输入两个数第一个是题数第二个是年级数
  • 一年级只有加减,并且这两个数都是一百以内
  • 如果是减法第一个数要大于第二个数
  • 将结果写到txt文件中

2. 实现方案

  • 准备工作:先在Github上创建仓库,并在GitHub上fork亓老师主页的MathExam2018仓库,并clone到本地;
    在本地仓库新建PSP6372文件夹,创建源文件MathExam6372.java
  • 技术关键点:Random,PrintStream的用法

四、编码

-输入两个整数题数和年级
-随机生成要求的题数
-把答案记录到out.txt

1. 调试日志

-若只输入一个参数就无法出现题目,应给grade一个初始值。

2. 关键代码

for (int i=0;i<number;i++){
            number1[i] = random.nextInt(100);
            number2[i] = random.nextInt(100);
            int subScript = (1 == grade) ?  (random.nextInt(2)) : (random.nextInt(4));
            String symbol = ch[subScript];
            so[i] = symbol;
            switch (symbol){
            case "/":
                while (number2[i] == 0) {
                    number2[i] = (int) (Math.random() * 100);
                }
                answer[i] = number1[i] / number2[i];
               break;
                
                case "*":
                    answer[i]=number1[i]*number2[i];
                    break;
                case "-":
                    if(number1[i]<number2[i]){
                        int temp = number1[i];
                        number1[i]=number2[i];
                        number2[i]=temp;
                    }
                    answer[i]=number1[i]-number2[i];
                    break;
                case "+":
                    answer[i]=number1[i]+number2[i];
                    break;
                default:
            }

判断是一年级还是两年级 一年级的随机输出加减法,两年级随机输出加减乘除

3. 代码规范

请给出本次实验使用的代码规范:

  • 第一条...JAVA命名一般应采用小写字母,但类名、接口名以及任何非初始单词的第一个字母要大写。
  • 第二条...获取成员函数 被访问字段名的前面加上前缀 get
    -第三条 package 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应该用 * 来处理。

并人工检查代码是否符合规范

五、测试

test

六、总结

-先大概的有解题思路,想出比较容易出错的地方,着重解决这些地方;
-遇到错误要多次实验修改代码,不能放弃
-要会注释,这样便于自己下次看代码