小学一二年级随机四则运算

小学一二年级随机四则运算

一、预估与实际

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

二、需求分析

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

  • 特点
  • 一年级数学要求掌握10以内的加减法,结果不大于20,不小于0.
  • 被减数不能大于减数
    经过分析,我认为,这个程序应当:

  • 使用的数字小于10
  • 数字定义类型应为整数类型
  • 需要能按要求生成n道题目,并且其题目随机生成

三、设计

1. 设计思路

  • 由于对象为一二年级的小学生,所以需要有一段语句判断是一年级还是二年级
  • 由于对象为一二年级的小学生,所以生成的随机数不能太大,需随机生成数所以需要用到random()的方法
  • 一年级学生中只有加减法,在二年级学生中需要加入乘除法
  • 由于要求标准答案和题目分开,所以要将随机数存入数组,然后再输出

    2. 实现方案

  • 准备工作:先在Github上创建仓库,克隆到本地..
  • 先想办法利用random()生成随机数生成加减法,然后逐步考虑生成乘除法
  • 要将生成的随机数存入数组,为了标准答案和题目分开

四、编码

  • 先思考一年级的加减法运算,将随机生成的数字存入数组,然后打印
  • 然后再考虑二年级的加减乘除运算

1. 调试日志

  • 在二年级的运算中,一开始没考虑到除数是0的情况,导致程序报错!

2. 关键代码

public static void two() {
    System.out.println("题目的数量:");
    Scanner n=new Scanner(System.in);
    int x=n.nextInt();
    int f[]=new int[x];
    int v[]=new int[x];
    int s[]=new int[x];
    int l=0;
    for(int m=0;m<x;m++) {
        int a=(int)(0+Math.random()*10);
        int b=(int)(0+Math.random()*10);
        int c=(int)(0+Math.random()*4);
        f[m]=a;
        v[m]=b;
        s[m]=c;
        l++;
        if(c==0) {
            System.out.println(" ("+l+") " + a + " + " + b + " = ");
        }
        if(c==1 && b>a){
            System.out.println(" ("+l+") " + b + " - " + a+" = ");
        }
        if(c==1 && a>b) {
            System.out.println(" ("+l+") " + a + " - " + b + " = ");
        }
        if(c==2 || b==0) {
            System.out.println(" ("+l+") " + a + " * " + b + " = ");
        }
        if(c==3 && b!=0) {
            System.out.println(" ("+l+") " + a + " / " + b + " = ");
        }
    }
    System.out.println("---------------标准答案---------------");       
int t=0;
for(int h=0;h<x;h++) {
    t++;
    if(s[h]==0) {
        System.out.println(" ("+t+") " + f[h] + " + " + v[h] + " = "+(f[h]+v[h]));
    }
    if(s[h]==1 && f[h]>v[h]){
        System.out.println(" ("+t+") " + f[h] + " - " + v[h]+" = "+(f[h]-v[h]));
    }
    if(s[h]==1 && f[h]<v[h]) {
        System.out.println(" ("+t+") " + v[h] + " - " + f[h]+" = "+(v[h]-f[h]));
    }
    if(s[h]==2 ||v[h]==0) {
        System.out.println(" ("+t+") " + f[h] + " * " + v[h]+" = "+(f[h]*v[h]));
    }
    if(s[h]==3 && v[h]!=0) {
        System.out.println(" ("+t+") " + f[h] + " / " + v[h]+" = "+(f[h]/v[h]));
    }

3. 代码规范

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

  • 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
  • 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
  • 接口类中的方法和属性不要加任何修饰符号(public 也不要加) ,保持代码的简洁性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。

五、测试

测试序号 输入年级 输入题量 测试结果
1 1 5 符合预期结果
2 1 4 符合预期结果
3 2 10 符合预期结果
4 2 3 符合预期结果

六、总结

  • 由于之前基础不牢固,花了很多时间在编程上
  • 还有很多小问题还没解决,还需要大量的时间来解决这些问题
  • 思路在前期需要思考清楚,编码时才能事半功倍
  • 花时间在一件有意义的事情上,你总会觉得时间过的很快,但最后收获很大

猜你喜欢

转载自www.cnblogs.com/lzq3721/p/9630124.html
今日推荐