四则运算三结对开发
博客要求:
要求两人合作分析,上传结对开发的工作照片。
撰写一篇博客要求讲述四则运算3的设计思想,源程序代码、运行结果截图、编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志。
四则运算要求:
1、定义参数控制生成题目的个数。 例如,参数n=10;则将生成10个题目。
2、定义参数控制题目中数值(自然数、真分数和真分数分母)的范围。 例如参数r= 10,将生成10以内(不包括10)的四则运算题目。该参数可以设置为1或其他自然数。 该参数必须给定,否则程序报错并给出帮助信息。
3、生成的题目中计算过程不能产生负数,也就是说算术表达式中如果存在形如e1 − e2的子表达式,那么e1 ≥ e2。
4、生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数。
5. 每道题目中出现的运算符个数不超过3个。
6.程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目 例如,23 + 45 = 和45 + 23 = 是重复的题目,6 × 8 = 和8 × 6 = 也是重复的题目。3+(2+1)和1+2+3这两个题目是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,而3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同一个题目。
7.生成的题目存储到数据库中, 格式如下: 1. 四则运算题目1 2. 四则运算题目2 …… 其中真分数在输入输出时采用如下格式,真分数五分之三表示为3/5,真分数二又八分之三表示为2’3/8。
8. 在生成题目的同时,计算出所有题目的答案,并存入数据库文件。 格式如下: 1. 答案1 2. 答案2 特别的,真分数的运算如下例所示:1/6 + 1/8 = 7/24。
9. 程序应能支持一万道题目的生成。
10. 程序支持对给定的题目文件和答案文件,判定答案中的对错并进行数量统计, 统计结果输出到数据表文件Grade,格式如下: Correct: 5 (1, 3, 5, 7, 9) Wrong: 5 (2, 4, 6, 8, 10) 其中“:”后面的数字5表示对/错的题目的数量,括号内的是对/错题目的编号。为简单起见,假设输入的题目都是按照顺序编号的符合规范的题目。
代码:
package 四则运算; import java.util.Random; import java.sql.Connection; import java.sql.DriverManager; import java.util.Scanner; class Suan1//生成整数计算的类 { public int x,y,c;//定义两个变量,还有一个符号变量 public Random random=new Random();//定义随机数 String m;//生成的计算式储存咋m里面 int wide; public String shengcheng(int wide1)//自动生成数的函数 { wide=wide1; c=random.nextInt(4);//生成符号 String fuhao; x=random.nextInt(wide);//生成100以内的自然数 y=random.nextInt(wide); if(c==0)//0是加法 { fuhao="+"; m=String.valueOf(x)+fuhao+String.valueOf(y); } else if(c==1)//1是减法 { fuhao="-"; if(x>=y) { m=String.valueOf(x)+fuhao+String.valueOf(y); } else { m=String.valueOf(y)+fuhao+String.valueOf(x); } } else if(c==2) { fuhao="*"; m=String.valueOf(x)+fuhao+String.valueOf(y); } else { fuhao="/"; for(int i=0;;i++) { if(y==0) { y=random.nextInt(wide); } else { break; } } m=String.valueOf(x)+fuhao+String.valueOf(y); } return m; } public String shuchu()//定义输出函数 { if(c==0) { System.out.print(m+"="); return (String.valueOf(x+y));//并且返回计算的结果 } else if(c==1) { if(x>=y)//将较大的数放在前面,不能出现负数 { System.out.print(m+"="); return (String.valueOf(x-y)); } else { System.out.print(m+"="); return (String.valueOf(y-x)); } } else if(c==2) { System.out.print(m+"="); return (String.valueOf(x*y)); } else { System.out.print(m+"="); if(x%y==0) { return (String.valueOf(x/y)); } else { if(x>y) { int shang=x/y; int yushu=x-y*shang; return (String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y)); } else { return (String.valueOf(x)+"/"+String.valueOf(y)); } } } } public int fanhuic() { return c; } public String jisuan() { if(c==0) { return (String.valueOf(x+y));//并且返回计算的结果 } else if(c==1) { if(x>=y)//将较大的数放在前面,不能出现负数 { return (String.valueOf(x-y)); } else { return (String.valueOf(y-x)); } } else if(c==2) { return (String.valueOf(x*y)); } else { if(x%y==0) { return (String.valueOf(x/y)); } else { return (String.valueOf(x)+"/"+String.valueOf(y)); } } } public int jianyan(String a[],int s)//检验是否有重复的式子,如果有返回0,没有就返回1 { int flag=1; for(int i=0;i<s;i++) { if(m.equals(a[i]))//数组a里面是生成的式子 { flag=0; break; } } return flag; } } class Suan2//真分数的运算类 { public int m,n,x,y,c;//定义4个变量,还有一个符号变量 public Random random=new Random(); String s;//生成的计算式储存咋m里面 int wide; public String shengcheng(int wide1) { wide=wide1; c=random.nextInt(4); x=random.nextInt(wide); y=random.nextInt(wide); m=random.nextInt(wide); n=random.nextInt(wide);//生成4个随机数在50以内,赋给x,y,m,n String fuhao; for(int i=0;;i++) { if(x==0)//不能生成0 { x=random.nextInt(wide); } else { break; } } for(int i=0;;i++) { if(y==0||y==x)//不能生成0 { y=random.nextInt(wide); } else { break; } } for(int i=0;;i++) { if(m==0)//不能生成0 { m=random.nextInt(wide); } else { break; } } for(int i=0;;i++) { if(n==0||m==n)//不能生成0 { n=random.nextInt(wide); } else { break; } } if(c==0)//通整数一样,0是加法,1减法,2乘法,3除法 { fuhao="+"; } else if(c==1) { fuhao="-"; } else if(c==2) { fuhao="*"; } else { fuhao="/"; } int gongyue=Gongyue(x,y); x=x/gongyue; y=y/gongyue; gongyue=Gongyue(m,n); m=m/gongyue; n=n/gongyue; s=String.valueOf(x)+fuhao+String.valueOf(y);//储存计算式 return s; } public String shuchu()//定义输出函数 { if(c==0) { if(x>y&&m>n)//生成的分母必须大于分子,输出不同的结果 { System.out.print(y+"/"+x+" + "+n+"/"+m+"="); return jisuan(x,y,m,n,c);//返回计算结果 } else if(x>y&&m<n)//生成的分母必须大于分子,输出不同的结果 { System.out.print(y+"/"+x+" + "+m+"/"+n+"="); return jisuan(x,y,n,m,c);//返回计算结果 } else if(x<y&&m>n)//生成的分母必须大于分子,输出不同的结果 { System.out.print(x+"/"+y+" + "+n+"/"+m+"="); return jisuan(y,x,m,n,c);//返回计算结果 } else//生成的分母必须大于分子,输出不同的结果 { System.out.print(x+"/"+y+" + "+m+"/"+n+"="); return jisuan(y,x,n,m,c);//返回计算结果 } } else if(c==1) { double x1=Double.parseDouble(String.valueOf(x)); double y1=Double.parseDouble(String.valueOf(y)); double m1=Double.parseDouble(String.valueOf(m)); double n1=Double.parseDouble(String.valueOf(n)); if(x>y&&m>n)//生成的分母必须大于分子,输出不同的结果 { if((y1/x1)>(n1/m1)) { System.out.print(y+"/"+x+" - "+n+"/"+m+"="); return jisuan(x,y,m,n,c);//返回计算结果 } else { System.out.print(n+"/"+m+" - "+y+"/"+x+"="); return jisuan(m,n,x,y,c);//返回计算结果 } } else if(x>y&&m<n)//生成的分母必须大于分子,输出不同的结果 { if((y1/x1)>(m1/n1))//减数必须大于被减数 { System.out.print(y+"/"+x+" - "+m+"/"+n+"="); return jisuan(x,y,n,m,c);//返回计算结果 } else//减数必须大于被减数 { System.out.print(m+"/"+n+" - "+y+"/"+x+"="); return jisuan(n,m,x,y,c);//返回计算结果 } } else if(x<y&&m>n)//生成的分母必须大于分子,输出不同的结果 { if((x1/y1)>(n1/m1))//减数必须大于被减数 { System.out.print(x+"/"+y+" - "+n+"/"+m+"="); return jisuan(y,x,m,n,c); } else//减数必须大于被减数 { System.out.print(n+"/"+m+" - "+x+"/"+y+"="); return jisuan(m,n,y,x,c);//返回计算结果 } } else { if((x1/y1)>(m1/n1))//生成的分母必须大于分子,输出不同的结果//减数必须大于被减数 { System.out.print(x+"/"+y+" - "+m+"/"+n+"="); return jisuan(y,x,n,m,c);//返回计算结果 } else//减数必须大于被减数 { System.out.print(m+"/"+n+" - "+x+"/"+y+"="); return jisuan(n,m,y,x,c);//返回计算结果 } } } else if(c==2) { if(x>y&&m>n)//生成的分母必须大于分子,输出不同的结果 { System.out.print(y+"/"+x+" * "+n+"/"+m+"="); return jisuan(x,y,m,n,c);//返回计算结果 } else if(x>y&&m<n)//生成的分母必须大于分子,输出不同的结果 { System.out.print(y+"/"+x+" * "+m+"/"+n+"="); return jisuan(x,y,n,m,c);//返回计算结果 } else if(x<y&&m>n)//生成的分母必须大于分子,输出不同的结果 { System.out.print(x+"/"+y+" * "+n+"/"+m+"="); return jisuan(y,x,m,n,c); } else//生成的分母必须大于分子,输出不同的结果 { System.out.print(x+"/"+y+" * "+m+"/"+n+"="); return jisuan(y,x,n,m,c);//返回计算结果 } } else { if(x>y&&m>n)//生成的分母必须大于分子,输出不同的结果 { System.out.print(y+"/"+x+" / "+n+"/"+m+"="); return jisuan(x,y,m,n,c);//返回计算结果 } else if(x>y&&m<n)//生成的分母必须大于分子,输出不同的结果 { System.out.print(y+"/"+x+" / "+m+"/"+n+"="); return jisuan(x,y,n,m,c);//返回计算结果 } else if(x<y&&m>n)//生成的分母必须大于分子,输出不同的结果 { System.out.print(x+"/"+y+" / "+n+"/"+m+"="); return jisuan(y,x,m,n,c);//返回计算结果 } else//生成的分母必须大于分子,输出不同的结果 { System.out.print(x+"/"+y+" / "+m+"/"+n+"="); return jisuan(y,x,n,m,c);//返回计算结果 } } } public String jisuan(int a,int b,int c,int d,int m)//计算结果的函数 { String daan; int gongyue,gongbei; if(m==0)//加法计算的结果算法 { gongbei=Gongbei(a,c);//求两个分母的最小公倍数 int s1,s2,s3; s1=gongbei/a; s2=gongbei/c; s3=b*s1+d*s2; if(s3==gongbei) { return("1"); } else { gongyue=Gongyue(s3,gongbei); int fenzi=s3/gongyue,fenmu=gongbei/gongyue; if(fenzi<fenmu) { daan=String.valueOf(fenzi)+"/"+String.valueOf(fenmu);//通分 return daan; } else { int zhi=fenzi/fenmu; daan=String.valueOf(zhi)+"‘"+String.valueOf(fenzi-fenmu*zhi)+"/"+String.valueOf(fenmu);//通分 return daan; } } } else if(m==1)//减法计算的结果算法 { gongbei=Gongbei(a,c); int s1,s2,s3; s1=gongbei/a; s2=gongbei/c; s3=b*s1-d*s2; if(s3==gongbei) { return("1"); } else { if(s3==0) { daan=String.valueOf("0"); return daan; } else { gongyue=Gongyue(s3,gongbei); int fenzi=s3/gongyue,fenmu=gongbei/gongyue; if(fenzi<fenmu) { daan=String.valueOf(fenzi)+"/"+String.valueOf(fenmu);//通分 return daan; } else { int zhi=fenzi/fenmu; daan=String.valueOf(zhi)+"‘"+String.valueOf(fenzi-fenmu*zhi)+"/"+String.valueOf(fenmu);//通分 return daan; } } } } else if(m==2)//乘法计算的结果算法 { int s1,s2; s1=a*c; s2=b*d; if(s1==s2) { return("1"); } else { gongyue=Gongyue(s1,s2); int fenzi=s2/gongyue,fenmu=s1/gongyue; if(fenzi<fenmu) { daan=String.valueOf(fenzi)+"/"+String.valueOf(fenmu);//通分 return daan; } else { int zhi=fenzi/fenmu; daan=String.valueOf(zhi)+"‘"+String.valueOf(fenzi-fenmu*zhi)+"/"+String.valueOf(fenmu);//通分 return daan; } } } else//除法计算的结果算法 { int s1,s2; s1=a*d; s2=b*c; if(s1==s2) { return("1"); } else { gongyue=Gongyue(s1,s2); int fenzi=s2/gongyue,fenmu=s1/gongyue; if(fenzi<fenmu) { daan=String.valueOf(fenzi)+"/"+String.valueOf(fenmu);//通分 return daan; } else { int zhi=fenzi/fenmu; daan=String.valueOf(zhi)+"‘"+String.valueOf(fenzi-fenmu*zhi)+"/"+String.valueOf(fenmu);//通分 return daan; } } } } public int Gongbei(int a,int c)//求最小公倍数的函数 { int gongbei; if(a>c) { gongbei=a;//公倍数从大的开始 while(gongbei<=a*c) { if(gongbei%a==0&&gongbei%c==0) { break; } gongbei++; } } else { gongbei=c;//公倍数从大的开始 while(gongbei<=a*c) { if(gongbei%a==0&&gongbei%c==0) { break; } gongbei++; } } return gongbei; } public int Gongyue(int gongbei,int s3)//求最大公约数的函数 { int i=1,gongyue=0; if(gongbei>s3)//公约数从1到最小的数 { while(i<=s3) { if(gongbei%i==0&&s3%i==0) { gongyue=i; } i++; } return gongyue; } else { while(i<=gongbei) { if(gongbei%i==0&&s3%i==0) { gongyue=i; } i++; } return gongyue; } } public int jianyan(String a[],int l)//检验是否生成重复计算式的函数 { int flag=1; for(int i=0;i<l;i++) { if(s.equals(a[i])) { flag=0; break; } } return flag; } } class Suan3//有余数的类 { public int x,y;//定义两个变量 public String m; public Random random=new Random(); int wide; public String shengcheng(int wide1)//定义生成函数 { wide=wide1; x=random.nextInt(wide); y=random.nextInt(wide); for(int i=0;;i++) { if(y==0) { y=random.nextInt(wide); } else { break; } } m=String.valueOf(x)+"/"+String.valueOf(y);//返回计算式 return m; } public String shuchu()//生成输出函数 { String daan; int shang,yushu; System.out.println(m+"="); shang=x/y; yushu=x-shang*y; daan=String.valueOf(shang)+"/"+String.valueOf(yushu);//返回计算结果 return daan; } public int jianyan(String a[],int l)//检验是否重复的函数 { int flag=1; for(int i=0;i<l;i++) { if(m.equals(a[i])) { flag=0; break; } } return flag; } } class Suan4 { public String m; public Random random=new Random(); public Suan1 suan=new Suan1(); public String a; public int b,z; public int c; public String a1; public int panduan; public int x,y; public String daan; public int weizhi; public Scanner in=new Scanner(System.in); public double kuohao() { panduan=suan.fanhuic(); if(panduan==3) { weizhi=a.indexOf("/"); if(weizhi==-1) { z=Integer.parseInt(a); return z; } else { x=Integer.parseInt(a.substring(0, weizhi)); y=Integer.parseInt(a.substring(weizhi+1)); return (Double.parseDouble(a.substring(0, weizhi))/Double.parseDouble(a.substring(weizhi+1))); } } else { z=Integer.parseInt(a); return z; } } public String shengcheng(int wide) { a1=suan.shengcheng(wide); a=suan.jisuan(); b=random.nextInt(wide); int c=random.nextInt(4); int daan1; String fuhao; int kuohao=random.nextInt(2); if(c==0)//0是加法 { fuhao="+"; } else if(c==1)//1是减法 { fuhao="-"; } else { fuhao="*"; } double daxiao=kuohao(); if(kuohao==0) { if(c==1&&daxiao<b) { m=String.valueOf(b)+fuhao+"("+a1+")"; if(weizhi!=-1&&panduan==3) { if(c==0) { int x1=b*y; int x2=x+x1; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==1) { int x1=b*y; int x2=x1-x; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==2) { int x2=x*b; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } } else { if(c==0) { daan=String.valueOf(b+z); } else if(c==1) { daan=String.valueOf(b-z); } else { daan=String.valueOf(b*z); } } } else { m="("+a1+")"+fuhao+String.valueOf(b); if(weizhi!=-1&&panduan==3) { if(c==0) { int x1=b*y; int x2=x+x1; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==1) { int x1=b*y; int x2=x-x1; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==2) { int x2=x*b; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } } else { if(c==0) { daan=String.valueOf(z+b); } else if(c==1) { daan=String.valueOf(z-b); } else { daan=String.valueOf(z*b); } } } } else { if(c==1&&daxiao>b) { m="("+a1+")"+fuhao+String.valueOf(b); if(weizhi!=-1&&panduan==3) { if(c==0) { int x1=b*y; int x2=x+x1; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==1) { int x1=b*y; int x2=x-x1; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==2) { int x2=x*b; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } } else { if(c==0) { daan=String.valueOf(z+b); } else if(c==1) { daan=String.valueOf(z-b); } else { daan=String.valueOf(z*b); } } } else { m=String.valueOf(b)+fuhao+"("+a1+")"; if(weizhi!=-1&&panduan==3) { if(c==0) { int x1=b*y; int x2=x+x1; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==1) { int x1=b*y; int x2=x1-x; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } else if(c==2) { int x2=x*b; if(x2%y==0) { daan=String.valueOf(x2/y); } else { if(x2>y) { int shang=x2/y; int yushu=x2-y*shang; daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y); } else { daan=String.valueOf(x2)+"/"+String.valueOf(y); } } } } else { if(c==0) { daan=String.valueOf(b+z); } else if(c==1) { daan=String.valueOf(b-z); } else { daan=String.valueOf(b*z); } } } } m=m+"="; return m; } public int jianyan(String a[],int l)//检验是否重复的函数 { int flag=1; for(int i=0;i<l;i++) { if(m.equals(a[i])) { flag=0; break; } } return flag; } } class Shengcheng { public Random random=new Random(); public Suan1 a=new Suan1();//定义整数运算变量a public Suan2 b=new Suan2();//定义分数运算变量b public Suan3 c=new Suan3();//定义余数运算变量c public Suan4 d=new Suan4(); public Scanner in=new Scanner(System.in); public String shuju[]=new String[1000000];//定义储存计算式的数组 public int flag=0;//定义旗帜看是否有重复 public int m=0,wide; public void caidan() { try { Connection con = null; //定义一个SQL链接对象 //Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433/mydatabase", "sa", "123456"); //链接本地SQLjdbc:mysql://localhost:3306/test", "root", "20153246" String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=小学算术"; String userName="sa"; String userPwd="123456"; java.sql.Statement stmt; //创建声明 stmt = con.createStatement(); for(int i=0;;i++) { System.out.println("1 整数的四则计算"); System.out.println("2 真分数的四则计算"); System.out.println("3 整数与真分数的混合四则运算"); System.out.println("4 有余数的除法");//新添加的带括号的混合四则运算 System.out.println("5 有括号的四则运算"); System.out.println("6 退出"); System.out.print("请选择:"); int t=in.nextInt(); if(t==1) { System.out.print("请选择出题的个数:"); int tishu=in.nextInt(); String zhengque="",cuowu=""; System.out.print("请选择生成的数范围:"); wide=in.nextInt(); int zhengque1=0,cuowu1=0; while(m<tishu)//生成30个计算式 { shuju[m]=a.shengcheng(wide);//将生成的计算式储存咋数组里面 flag=a.jianyan(shuju, m);//返回是否有重复 if(flag==1)//如果没有就是1 { System.out.print(m+1+". "); String daan=a.shuchu();//输出式子,将答案储存在daan里面 String daan1=in.next();//用户输入答案 String sql="INSERT INTO 整数的四则计算 (shizi,result) VALUES ('"+shuju[m]+" = "+"','"+daan+"')"; stmt.executeUpdate(sql); if(daan1.equals("break"))//用户不想做题时输入break跳出 { break; } else if(daan1.equals(daan))//检查答案是否正确 { System.out.println("回答正确!!!"); zhengque=zhengque+String.valueOf(m+1)+","; zhengque1++; } else { System.out.println("回答错误!!!正确答案是:"+daan);//如果不正确输出正确答案 cuowu=cuowu+String.valueOf(m+1)+","; cuowu1++; } m++; flag=0; } } String sql="INSERT INTO Grade (zhengque,cuowu) VALUES ('"+zhengque+"','"+cuowu+"')"; stmt.executeUpdate(sql); System.out.println("正确的数量为:"+zhengque1+"正确的题目是:"+zhengque); System.out.println("错误的数量为:"+cuowu1+"错误的题目是:"+cuowu); m=0; } else if(t==2) { System.out.print("请选择出题的个数:"); int tishu=in.nextInt(); String zhengque="",cuowu=""; System.out.print("请选择生成的数范围:"); wide=in.nextInt(); int zhengque1=0,cuowu1=0; while(m<tishu) { shuju[m]=b.shengcheng(wide);//将生成的计算式储存咋数组里面 flag=b.jianyan(shuju, m);//返回是否有重复 if(flag==1)//如果没有就是1 { System.out.print(m+1+". "); String daan=b.shuchu();//输出式子,将答案储存在daan里面 String daan1=in.next();//用户输入答案 String sql="INSERT INTO 真分数的四则计算 (shizi,result) VALUES ('"+shuju[m]+" = "+"','"+daan+"')"; stmt.executeUpdate(sql); if(daan1.equals("break"))//用户不想做题时输入break跳出 { break; } else if(daan1.equals(daan))//检查答案是否正确 { System.out.println("回答正确!!!"); zhengque=zhengque+String.valueOf(m+1)+","; zhengque1++; } else { System.out.println("回答错误!!!正确答案是:"+daan);//如果不正确输出正确答案 cuowu=cuowu+String.valueOf(m+1)+","; cuowu1++; } m++; flag=0; } } String sql="INSERT INTO Grade (zhengque,cuowu) VALUES ('"+zhengque+"','"+cuowu+"')"; stmt.executeUpdate(sql); System.out.println("正确的数量为:"+zhengque1+"正确的题目是:"+zhengque); System.out.println("错误的数量为:"+cuowu1+"错误的题目是:"+cuowu); m=0; } else if(t==3)//真是整数于分数混合的运算同上 { System.out.print("请选择出题的个数:"); int tishu=in.nextInt(); String zhengque="",cuowu=""; System.out.print("请选择生成的数范围:"); wide=in.nextInt(); int zhengque1=0,cuowu1=0; while(m<tishu) { int suiji=random.nextInt(2); if(suiji==0) { System.out.print(m+1+". "); shuju[m]=b.shengcheng(wide); flag=b.jianyan(shuju, m); String daan=b.shuchu(); String daan1=in.next(); String sql="INSERT INTO 整数与真分数的混合四则运算 (shizi,result) VALUES ('"+shuju[m]+" = "+"','"+daan+"')"; stmt.executeUpdate(sql); if(daan1.equals("break")) { break; } else if(daan1.equals(daan)) { System.out.println("回答正确!!!"); zhengque=zhengque+String.valueOf(m+1)+","; zhengque1++; } else { System.out.println("回答错误!!!正确答案是:"+daan); cuowu=cuowu+String.valueOf(m+1)+","; cuowu1++; } m++; flag=0; } else { System.out.print(m+1+". "); shuju[m]=a.shengcheng(wide); flag=a.jianyan(shuju, m); if(flag==1) { String daan=a.shuchu(); String daan1=in.next(); String sql="INSERT INTO 整数与真分数的混合四则运算 (shizi,result) VALUES ('"+shuju[m]+" = "+"','"+daan+"')"; stmt.executeUpdate(sql); if(daan1.equals("break")) { break; } else if(daan1.equals(daan)) { System.out.println("回答正确!!!"); zhengque=zhengque+String.valueOf(m+1)+","; zhengque1++; } else { System.out.println("回答错误!!!正确答案是:"+daan); cuowu=cuowu+String.valueOf(m+1)+","; cuowu1++; } m++; flag=0; } } } String sql="INSERT INTO Grade (zhengque,cuowu) VALUES ('"+zhengque+"','"+cuowu+"')"; stmt.executeUpdate(sql); System.out.println("正确的数量为:"+zhengque1+"正确的题目是:"+zhengque); System.out.println("错误的数量为:"+cuowu1+"错误的题目是:"+cuowu); m=0; } else if(t==4)//余数的运算 { System.out.print("请选择出题的个数:"); int tishu=in.nextInt(); String zhengque="",cuowu=""; System.out.print("请选择生成的数范围:"); wide=in.nextInt(); int zhengque1=0,cuowu1=0; while(m<tishu) { shuju[m]=c.shengcheng(wide);//将结果储存在数组里面 flag=c.jianyan(shuju, m);//检验是否有重复 if(flag==1) { System.out.print(m+1+". "); String daan=c.shuchu();//输出式子,将答案储存在daan里面 System.out.print("商为:"); String shang=in.next(); System.out.print("余数为:"); String yushu=in.next(); String sql="INSERT INTO 有余数的除法 (shizi,result) VALUES ('"+shuju[m]+" = "+"','"+daan+"')"; stmt.executeUpdate(sql); if(daan.equals("break")) { break; } else if(daan.equals(shang+"/"+yushu)) { System.out.println("回答正确!!!"); zhengque=zhengque+String.valueOf(m+1)+","; zhengque1++; } else { int weizhi=daan.indexOf('/'); shang=daan.substring(0, weizhi); yushu=daan.substring(weizhi+1); System.out.println("回答错误!!!正确答案是商"+shang+"余"+yushu); cuowu=cuowu+String.valueOf(m+1)+","; cuowu1++; } m++; flag=0; } } String sql="INSERT INTO Grade (zhengque,cuowu) VALUES ('"+zhengque+"','"+cuowu+"')"; stmt.executeUpdate(sql); System.out.println("正确的数量为:"+zhengque1+"正确的题目是:"+zhengque); System.out.println("错误的数量为:"+cuowu1+"错误的题目是:"+cuowu); m=0; } else if(t==5) { System.out.print("请选择出题的个数:"); int tishu=in.nextInt(); String zhengque="",cuowu=""; System.out.print("请选择生成的数范围:"); wide=in.nextInt(); int zhengque1=0,cuowu1=0; while(m<tishu)//生成30个计算式 { shuju[m]=d.shengcheng(wide);//将生成的计算式储存咋数组里面 flag=d.jianyan(shuju, m);//返回是否有重复 if(flag==1)//如果没有就是1 { System.out.print(m+1+". ");//用到栈 System.out.print(d.m); String daan=in.next(); String sql="INSERT INTO 有括号的四则运算 (shizi,result) VALUES ('"+shuju[m]+" = "+"','"+daan+"')"; stmt.executeUpdate(sql); if(daan.equals(d.daan)) { System.out.println("回答正确!!!"); zhengque=zhengque+String.valueOf(m+1)+","; zhengque1++; } else if(daan.equals("break")) { break; } else { System.out.println("回答错误!!!正确答案是:"+d.daan); cuowu=cuowu+String.valueOf(m+1)+","; cuowu1++; } m++; flag=0; } } String sql="INSERT INTO Grade (zhengque,cuowu) VALUES ('"+zhengque+"','"+cuowu+"')"; stmt.executeUpdate(sql); System.out.println("正确的数量为:"+zhengque1+"正确的题目是:"+zhengque); System.out.println("错误的数量为:"+cuowu1+"错误的题目是:"+cuowu); m=0; } else { break; } } } catch (Exception e) { System.out.print("SQL ERROR:" + e.getMessage()); } } } public class caculate3 { public static void main(String[] args) { Shengcheng a=new Shengcheng(); a.caidan(); } }