小学生数学题系统02

采用面向对象程序设计的方式,设计小学数学考试系统的有关类

(题目数量,题目类型(四则运算),题目内容都是随机产生),提供答题及自动评分的功能。

  

  思路:将每一道数学题抽象为一个对象,因此可以写出一个类来实现数学题。

      然后再Test中再用随机数来确定题目的数量,至于判分功能,再数学类中定义一个static类型的数据,这个static数据是所有数学类的对象所共享的,所以可以用来做计数器。

  

package pro3;
import java.math.BigDecimal;
import java.util.*;

public class Math01 {
    public static void main(String[] args) {
        Test t1=new Test();
        t1.print();
    }
}
class Test{
    private int key;
    private Math_test m[];
    public Test(){
        key=random(10);
        m=new Math_test[key];
        for(int i=0;i<key;i++){
            m[i]=new Math_test();
        }
    }
    private int random(int n){
        Random random=new Random();
        int i=random.nextInt(n)+1;
        return i;
    }
    public void print(){    
        for(int i=0;i<key;i++){
            m[i].test();
        }
        System.out.println("最终得分"+Math_test.count+"0分");
    }
}
class Math_test{
    public static int count;
    private int num01;
    private int num02;
    double user_ans,ans;
    int key;
    static{
        count=0;
    }
    public Math_test(){
        this.num01=random(100);
        this.num02=random(100);
    }
    private int random(int n){
        Random random=new Random();
        int i=random.nextInt(n)+1;
        return i;
    }
    private char operator(){
        key=random(4);
        switch(key){
        case 1:{return '+';}
        case 2:{return '-';}
        case 3:{return '*';}
        case 4:{return '/';}
        }
        return ' ';
    }
        
    private void user_calcu(){
        Scanner sc=new Scanner(System.in);
        System.out.print("请计算:"+this.num01+operator()+this.num02+"=");
        user_ans=sc.nextDouble();
    }
    public void judge(){
        float div=0;
        float div1=0;
        {//把float型的结果 四舍五入
            div=(float)this.num01/this.num02;
            BigDecimal b=new BigDecimal(div);
            BigDecimal b1=b.setScale(2, 4);
            div1=b1.floatValue();
        }
        if(key==1&&user_ans==(this.num01+this.num02)){
            System.out.println("	正确");
            count++;
        }else if(key==2&&user_ans==(this.num01-this.num02)){
            System.out.println("	正确");
            count++;
        }else if(key==3&&user_ans==(this.num01*this.num02)){
            System.out.println("	正确");
            count++;
        }else if(key==4&&user_ans==div1){
            System.out.println("	正确");
            count++;
        }else{
            System.out.println("	错误");
        }
    }
    public void test(){
        user_calcu();
        judge();
    }
}

  

原文地址:https://www.cnblogs.com/hxtblogs/p/7711399.html