小学算数出题软件
程序执行过程
第一步:输入条件 生成题目
第二部: 开始答题 并判断正误
(程序功能并不是太全面 一些功能因为水平原因没法实现 但大部分都已实现)
以下是程序代码(用的语言是java)
import javax.script.*;
import java.util.*;
import java.util.Scanner;
class Demo
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请选择要生成多少道题目");
int shul=sc.nextInt();
System.out.println("请选择是否有乘除法,没有输入2,有输入4");
int has=sc.nextInt();
System.out.println("请输入生成式有几个参数");
int numb=sc.nextInt();
System.out.println("请输入随机数的范围a,b(保证a<=b)");
int edg1=sc.nextInt();
int edg2=sc.nextInt();
System.out.println("请输入每一行题目的数量");
int geshi=sc.nextInt();
System.out.println("题目正在生成");
int cout=0;
produce[] po=new produce[30];
int geshinum=0;
for(int i=0;i<shul;i++)
{
po[i]=new produce();
po[i].pro(numb,has,edg1,edg2);
po[i].Sum();
if(geshinum==geshi)
{
System.out.println();
geshinum=0;
}
po[i].show();
geshinum++;
}
System.out.println();
System.out.println("开始答题");
for(int i=0;i<shul;i++)
{
int daan=sc.nextInt();
cout=cout+po[i].Compara(daan);
}
System.out.println("答题结束 您的答题情况是:");
System.out.println("您共答对"+cout+"题");
for(int i=0;i<shul;i++)
{
if(po[i].pand==false)
{
System.out.println("第"+(i+1)+"题错误");
}
}
}
}
class produce//此类用于操纵一个运算式
{
ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");
StringBuilder str=new StringBuilder();
int sum;
char pre;
int prenum;
char []list={'+','-','*','/'};
boolean pand;
produce()//构造函数
{
this.pre='#';
}
public void pro(int numb,int has,int edg1,int edg2)//此方法随机生成一个运算式 numb为参数数量 has为是否有乘除
{ //edg1,edg2是随机数范围
Random r=new Random();
for(int cout=0;cout<numb;cout++)
{
if(pre=='#')
{
int num=edg1+r.nextInt(edg2-edg1+1);
int num2=r.nextInt(has);
char fu=list[num2];
str.append(num);
str.append(fu);
pre=fu;
prenum=num;
}
else
{
int num3=edg1+r.nextInt(edg2-edg1+1);
if(pre=='/')
{
while(!(prenum>=num3&&prenum%num3==0))
{
num3=edg1+r.nextInt(edg2-edg1+1);
}
}
str=str.append(num3);
cout++;
prenum=num3;
if(!(cout==numb))
{
int num4=r.nextInt(has);
char fu2=list[num4];
str.append(fu2);
pre=fu2;
}
cout--;
}
}
}
public void Sum() //生成的式子求值
{
String str2=new String();
try{str2=jse.eval(str.toString()).toString();}
catch(Exception e){};
this.sum=(int)Double.parseDouble(str2);
}
public int Compara(int i)// 判断是否正确
{
pand=(sum==i);
if(pand)
return 1;
else
return 0;
}
public void show()//打印
{
System.out.print(str.toString()+"sum"+" ");
}
}