采用面向对象程序设计的方式,设计小学数学考试系统的有关类
(题目数量,题目类型(四则运算),题目内容都是随机产生),提供答题及自动评分的功能。
思路:将每一道数学题抽象为一个对象,因此可以写出一个类来实现数学题。
然后再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("\t正确"); count++; }else if(key==2&&user_ans==(this.num01-this.num02)){ System.out.println("\t正确"); count++; }else if(key==3&&user_ans==(this.num01*this.num02)){ System.out.println("\t正确"); count++; }else if(key==4&&user_ans==div1){ System.out.println("\t正确"); count++; }else{ System.out.println("\t错误"); } } public void test(){ user_calcu(); judge(); } }