首页 > 其他 > 详细

四则运算题目生成程序(基于控制台)

时间:2017-03-08 01:07:15      阅读:342      评论:0      收藏:0      [点我收藏+]

https://coding.net/u/gongxiaoting/p/Demo/git/tree/master/src/pro2

1.需求分析

该程序面向的是小学生、小学教师和学生家长用户,众所周知,市面上并没有针对分数的计算器,而该程序有自动生成题目并提供答案与校对答案的功能,能很好地帮助刚学习分数的小学生来检测自己的水平,小学教师和家长也可以通过该程序自动生成以及校对答案,轻松地不耗费自己时间来让小孩达到练习的目的,了解他们的水平。

2.功能分析

基本功能:

(1)能自动生成整数与分数相结合的题目

(2)能够校对答案

(3)能够累计做对题数

(4)能够根据用户需求设计生成题量

拓展功能:

(1)输入错误答案时会立马显示出正确答案

(2)下一题目会在给出上一题答案后才显示输出

未加入更高级功能,有待继续改善开发。

3.设计实现

(1)main类:设计循环,控制出题量,实现对自动生成数的读取与调用,调用了arithmetic中的计算方法

(2)arithmetic类:运算类里实现了随机生成题目的功能,并且定义了加减乘除四则运算的方法,设计了compute方法实现了对分数中的数字分开提取,这样才能实现计算,设计了arithmetic方法计算结果实现了最简输出。

(3)correct类:实现了对结果的验证,并能够在答案错误时输出正确答案,并累计正确题数。

(4)scan类:对用户输入的信息进行提取和处理,这个类的功能设计得简单,主要是为了优化程序。

  联系:main中调用了arithmetic类、scanner类中的方法,arithmetic类中又调用了correct类与scan类中的方法。

4.代码说明

(1)arithmetic类

public class arithmetic{
int num=(int)(Math.random()*10+1);//随机生成分子
int den=(int)(Math.random()*10+1);//随机生成分母
arithmetic(){
}
int f(int a,int b){// 求a和b的最大公约数
if(a < b){
    int c = a;
    a = b;
    b = c;
    }
int r = a % b;
while(r != 0){
    a = b;
    b = r;;
    r = a % b;
    }
return b;
}
arithmetic add(arithmetic r){// 加法
    int a = r.getnum();
    int b = r.getden();
    int newnum =num * b + den * a;
    int newden = den * b;
    arithmetic result = new arithmetic(newnum,newden);
    return result;
}
if(operator.equals("+")){//加法
    result = r1.add(r2);
    a = result.getnum();
    b = result.getden();
    System.out.printf(data1+" "+operator+" " +data2+" "+ "=");
    if(b==1){data4=String.valueOf(a);}
    else{data4=a+"/"+b;}
    Scan scan1=new Scan();
    String data3=scan1.sc();
    correct x1=new correct();
    correct.compare(data3,data4);//校对答案
}

(2)correct类

public class correct {
    static int count=0;
    static void compare(String ac,String bc){
          if(ac.equals (bc)){
                System.out.println("正确");
                count++;
                System.out.printf("做对题数:%d\n",count);
                } 
          else
                {System.out.printf("错误,正确答案为:%s\n",bc);
          System.out.printf("做对题数%d\n",count);}
          }
    }

(3)main类

for(is=0;is<10;is++){
        arithmetic arithmetic1= new arithmetic();
        arithmetic arithmetic2= new arithmetic();
        String data1 =arithmetic1.num+"/"+arithmetic1.den;
        String data2 =arithmetic2.num+"/"+arithmetic2.den;
        String [] operator={"+","-","×","÷"};
        int i=(int)(Math.random()*4);
        
        arithmetic.compute(data1,operator[i],data2);

5.测试运行

 技术分享

6.psp展示

 

PSP2.1 Personal Software Process Stages Time (m) Senior Student Time (m)
Planning 计划 20 15
· Estimate 估计这个任务需要多少时间 5 5
Development 开发 200 340
· Analysis 需求分析 (包括学习新技术) 20 75
· Design Spec 生成设计文档 10 10
· Design Review 设计复审 20 75
· Coding Standard 代码规范 5 5
· Design 具体设计 60 30
· Coding 具体编码 60 90
· Code Review 代码复审 20 5
· Test 测试(自我测试,修改代码,提交修改) 20 30
Reporting 报告 9 6
· 测试报告 3 2
· 计算工作量 2 1
· 并提出过程改进计划 10 20

7.小结

  刚拿到题目时觉得应该不会难,但是对极少打代码的我来说,真正做完修改完这个程序花费了我三天的时间。虽然这个过程很长,但是收获很大。长时间没练习编程使得我对java语言生疏了许多,在这次写代码时查找了很多资料,包括random的使用方法,调用其它类中的方法的语句等等耗费了很多时间,在设计四种算法的时候,由于化简分数需要求最大公约数,算法不会写所以查阅了许多资料,参考了其它博客上的代码,我又多了解到新的类的定义方式,学会了点新知识。该程序中大部分功能的实现方法都是由我自己认真设计编写完成的,所以最后完成了基本能实现老师要求的程序还是特别有成就感的。但是总体上的不足就是没有很好的优化代码,在四则运算中的重复语句很多,传参方法不熟练,所以代码显得比较冗余,所以还是要多练习,多掌握,写代码才能越来越顺手。

 

四则运算题目生成程序(基于控制台)

原文:http://www.cnblogs.com/gxt-smart/p/6517401.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!