四则运算继承篇

(1)题目要求
1.定义主界面菜单
参数设置
小学二年级口算题
小学三年级口算题
小学四年级口算题
错题集
2.其中参数设置包括出题个数(缺省值为30)、操作数数值范围。
3.小学二年级口算题操作数为两个、可进行加减乘除运算(除法必须可以整除),操作数范围不超过100.
4.小学三年级口算题操作数不超过4个,可以进行加减乘除,操作数范围不超过1000.(要求采用继承小学二年级出题类的方式,实现小学三年级的出题类)
5.小学四年级口算题操作数不超过5个,可以进行加减乘除,还可以加入括号运算。 (要求采用继承小学三年级出题类的方式,实现小学四年级的出题类)
6.学生实时答题结束后,可以选择是否进行下一套题目答题,如果选择是,则抽取下一套题进行答题,答题结束可以通过查看错题本,查询今日做题正确率。也可以针对错题进行二次答题。

//主方法类
package ceshi;

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("1.参数设置");
		System.out.println("2.小学二年级口算题");
		System.out.println("3.小学三年级口算题");
		System.out.println("4.小学四年级口算题");
		System.out.println("5.退出");
		while(true) {
		System.out.println("请输入你的选择:");
		int a=sc.nextInt();
		switch(a) {
		case 1:{
			break;
		}
		case 2:{
			er e=new er();
			e.chuti();
			System.out.println("请输入:0.退出 1.继续答题 2.查看错题");
			int b=sc.nextInt();
			if(b==0) System.exit(0);
			if(b==2) {e.chongzuo();System.exit(0);}
			break;
		}
		case 3:{
			san s=new san();
			s.chuti();
			System.out.println("请输入:0.退出 1.继续答题 2.查看错题");
			int b=sc.nextInt();
			if(b==0) System.exit(0);
			if(b==2) {s.chongzuo();System.exit(0);}
			break;
		}
		case 4:{
			si s=new si();
			s.chuti();
			System.out.println("请输入:0.退出 1.继续答题 2.查看错题");
			int b=sc.nextInt();
			if(b==0) System.exit(0);
			if(b==2)  {s.chongzuo();System.exit(0);}
			break;
		}
		case 5:System.exit(0);
		}
		}
	}

}

  

//三年级类
package ceshi;

import java.util.Random;

public class san extends er{
	int sumoperate;
	
	public int getSumoperate() {
		return sumoperate;
	}

	public void setSumoperate(int sumoperate) {
		this.sumoperate = sumoperate;
	}
	
	public void problem(int min,int max,int sumoperate,int chengchu) {
    	Random r=new Random();
    	int  a=r.nextInt(max+1)+min;
    	int  b=r.nextInt(max+1)+min;
    	char c=fuHao();
    	String str=""+a+c+b;
    	int  []cunshu = new int[1000];
        char []cunfuhao =new char[1000];
        int shu=0;
        int fuhao=0;
        if(c=='*')
        {
        	cunshu[shu]=a*b;
        }
        else if(c=='/')
        {
        	cunshu[shu]=a/b;
        }
        else
        {
        cunshu[shu]=a;
        shu++;
        cunshu[shu]=b;
        cunfuhao[fuhao]=c;
        }
        for(int i=2;i<sumoperate;i++)
        {
            int zenjiashu=r.nextInt(max+1)+min;
            char zenjiac = fuHao();
            if(zenjiac=='*')
            {
                cunshu[shu]=cunshu[shu]*zenjiashu;
            }
            else if(zenjiac=='/')
            {
                cunshu[shu]=cunshu[shu]/zenjiashu;
            }
            else
            {
                shu++;
                cunshu[shu]=zenjiashu;
                fuhao++;
                cunfuhao[fuhao]=zenjiac;
            }    
            str=str+zenjiac+zenjiashu;
        }
        int zhengquedaan=cunshu[0];
        int cou=0;
        for(int j=0;j<=fuhao;j++)
        {
            if(cunfuhao[cou]=='+')
            {
                zhengquedaan+=cunshu[++cou];
            }
            else
            {
                zhengquedaan-=cunshu[++cou];
            }
        }
        if(chachong(str))
        {
        	
        	zqda[ccount]=zhengquedaan;
        	System.out.println(arr[ccount]+"=");
        	System.out.println(zhengquedaan);
            int daan;
            daan = sc.nextInt();
            if(daan!=zhengquedaan)
            {
                cuoticount++;
                cishu[ccount]=1;
                System.out.println("回答错误");
            }
            else System.out.println("回答正确");
            ccount++;
        }
        else
        {
            problem(min,max,sumoperate,chengchu);
        }
    }
	
	public void chuti() {
		System.out.println("请输入操作数:");
        sumoperate=sc.nextInt();
		System.out.println("请输入题目个数:");
        sumtitle = sc.nextInt();
        System.out.println("请输入操作数范围:");
        min = sc.nextInt();
        max = sc.nextInt();
        tishusum=sumtitle;
        for (int i=0; i<sumtitle;i++) {
        	problem();
		}
	}
}

  

//四年级类
package ceshi;

public class si extends san{
	public void chuti() {
		System.out.println("请输入操作数:");
        sumoperate=sc.nextInt();
		System.out.println("请输入题目个数:");
        sumtitle = sc.nextInt();
        System.out.println("请输入操作数范围:");
        min = sc.nextInt();
        max = sc.nextInt();
        for (int i=0; i<sumtitle;i++) {
        	problem();
		}
	}
}

  

package ceshi; import java.util.Random; import java.util.Scanner; public class er { static int count=0; static int ccount=0; static int cuoticount=0; static int congzuosum=1; static int tishusum=0; static String []arr = new String[100000]; static int []zqda = new int[100000]; static int []cishu = new int[100000]; static Scanner sc = new Scanner(System.in); int sumtitle; int min; int max; public int getSumtitle() { return sumtitle; } public void setSumtitle(int sumtitle) { this.sumtitle = sumtitle; } public int getMin() { return min; } public void setMin(int min) { this.min = min; } public int getMax() { return max; } public void setMax(int max) { this.max = max; } public char fuHao() { Random random=new Random(); int a; a=random.nextInt(4)+1; if(a==1) return '+'; if(a==2) return '-'; if(a==3) return '*'; if(a==4) return '/'; return ' '; } public void problem() { Random random=new Random(); String s=""; int a=random.nextInt(max+1)+min; s+=a; char b=fuHao(); s+=b; int c; if(b=='/') { c=random.nextInt(max+1)+min; while(a%c!=0) c=random.nextInt(max+1)+min; s+=c; } else { c=random.nextInt(max+1)+min; s+=c; } int zhengquedaan=0; if(b=='*') { zhengquedaan=a*c; } if(b=='/') { zhengquedaan=a/c; } if(b=='+') { zhengquedaan=a+c; } if(b=='-') { zhengquedaan=a-c; } if(chachong(s)) { zqda[ccount]=zhengquedaan; System.out.println(arr[ccount]+"="); int daan; daan = sc.nextInt(); if(daan!=zhengquedaan) { cuoticount++; cishu[ccount]=1; System.out.println("回答错误"); } else System.out.println("回答正确"); ccount++; } else { problem(); } } public boolean chachong(String str) { if(count==0) { arr[0]=str; count++; return true; } else { for(int i=0;i<count;i++) if(str.equals(arr[i])) return false; arr[count]=str; count++; } return true; } public static int shifouchongzuo() { System.out.println("是否需要错题重做:(1.是 2.否)"); int chongzuoma; chongzuoma = sc.nextInt(); return chongzuoma; } public void chongzuo() { System.out.println("错误率:"+cuoticount*100/tishusum+"%"); while(true) { if(shifouchongzuo()==1) { int n=cuoticount; cuoticount=0; lop:for(int i=0;i<n;i++) { for(int j=0;i<tishusum;j++) { if(cishu[j]==congzuosum) { System.out.println(arr[j]+"="); int da; da = sc.nextInt(); if(da!=zqda[j]) { System.out.println("正确答案:"+zqda[j]); cishu[j]+=1; cuoticount++; break lop; } } } } congzuosum++; System.out.println("错误率:"+cuoticount*100/n+"%"); } else { jielun(); break; } } } public void jielun() { for(int j=0;j<tishusum;j++) { if(cishu[j]!=0) { System.out.println(arr[j]+"="+zqda[j]+" 你错了"+cishu[j]+"次"); } } } public void chuti() { System.out.println("请输入题目个数:"); sumtitle = sc.nextInt(); System.out.println("请输入操作数范围:"); min = sc.nextInt(); max = sc.nextInt(); tishusum=sumtitle; for (int i=0; i<sumtitle;i++) { problem(); } } }

  

posted @ 2022-10-30 23:27  一统天下。  阅读(22)  评论(0编辑  收藏  举报