zoukankan      html  css  js  c++  java
  • 小学生数学题系统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();
        }
    }

      

  • 相关阅读:
    VIJOS-P1340 拯救ice-cream(广搜+优先级队列)
    uva 11754 Code Feat
    uva11426 GCD Extreme(II)
    uvalive 4119 Always an Interger
    POJ 1442 Black Box 优先队列
    2014上海网络赛 HDU 5053 the Sum of Cube
    uvalive 4795 Paperweight
    uvalive 4589 Asteroids
    uvalive 4973 Ardenia
    DP——数字游戏
  • 原文地址:https://www.cnblogs.com/hxtblogs/p/7711399.html
Copyright © 2011-2022 走看看