作业

作业

一、预估与实际

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

二、需求分析

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

  • 特点1.100以内的加减法。
  • 特点2.都是整数计算

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

  • 使用的数字小于100
  • 计算的数字都是整数
  • 计算简单
  • 不能出现负数

三、设计

1. 设计思路

  • 输入的数据要合理
  • 随机生成两个100以内的数
  • 随机生成加减法
  • 结果的题目和答案并放入文件中
  • 算法的关键的关键是检验输入的参数是否合理

2. 实现方案

  • 准备工作:先在Github上创建仓库,克隆到本地...
  • 建立PSP6340文件夹
  • 技术关键点:
  • 数字要合理不能超出100
  • 所有的题目都要随机生成
  • 导入.txt

四、编码

  • 在编写完运算以后,要将题目和答案都存入文件
  • 运用判别法判定加减法(乘除法)
  • 如果直接使用生成的随机数进行运算,减法时会出现负数,要加一个判断,确保第一个数比第二个数大。

1. 调试日志

  • 二年级除法中要判断除数是否为零
  • 不知道如何写入文件,百度后才知道

2. 关键代码

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

判断加减乘除的情况

3. 代码规范

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

  • 类名首字母应该大写。每个单词的首字母大写。
  • 尽量使用if{}else,不要一直if去判断.
  • 方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵循驼峰形式。
  • 静态变量(static)前面加上小写s;
  • 静态常量(static final)全大写
  • 任何二目、三木运算符的左右两边都需要加一个空格。 说明:运算符包括赋值运算符=、逻辑运算符&&、加减乘除符号等。

五、测试

  • 输入 java MathExam 100000000000000 1 出现故障
  • 输入java MathExam 10 1 正确
  • 输入java MathExam a b 出现错误

六、总结

  • 需要阅读很多资料才能勉强完成
  • 代码打得不够多,知识不够全面
posted @ 2018-09-11 22:40  途中6789  阅读(126)  评论(2编辑  收藏  举报