求一个能够 自动生成小学生数学练习题目 的Java程序。

小学生数学练习题目自动生成系统设计一个程序,能够根据用户的选择生成“10以内加法”、“10以内减法”、“20以内加法”、“20以内减法”、“100以内加法”、“100以内... 小学生数学练习题目自动生成系统
设计一个程序,能够根据用户的选择生成“10以内加法”、“10以内减法”、“20以内加法”、“20以内减法”、“100以内加法”、“100以内减法”、“100以内乘法”、“100以内除法”8种类型的题目,要求每个题目能够随机生成,并符合以下要求:
1) 10以内加法的得数在不大于10的范围内;
2) 20以内加法的得数在不大于20的范围内;
3) 100以内加法的得数在不大于100的范围内;
4) 10以内减法的两个运算数在不大于10的范围内并且差为非负数;
5) 20以内减法的两个运算数在不大于20的范围内并且差为非负数;
6) 100以内减法的两个运算数在不大于100的范围内并且差为非负数;
7) 100以内乘法的得数在不大于100的范围内;
8) 100以内除法的两个运算数在不大于100的范围内并且被除数应该是除数的整数倍;
要求程序具备以下功能:根据用户对“题目类型”的选择,在按下“出题”按钮之后,每次显示20个相应类型的题目,用户可以在界面上填写计算结果;答题完成之后,当用户按下“评卷”按钮时,根据用户的答题结果,在界面上可以显示红色的“√”或“╳”符号,以作为对用户的答题结果的评判。当用户按下“答案”按钮时,在界面上显示正确的运算结果。
【输入/输出要求】
输入要求:用户能够在界面上输入题目的计算结果;
输出要求:程序可以在界面上显示20个用户所需的类型的题目,以红色的“√”或“╳”
符号显示对用户计算结果的评判结果,以及所给出的题目的正确答案。
展开
 我来答
紫薇参星
科技发烧友

推荐于2018-02-27 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3627万
展开全部

按照你的要求编写的小学数学练习题目自动生成系统的Java程序如下

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class B extends JFrame implements ActionListener{
 int max=20;
 int MAX=10;
 int TYPE=1;
 JLabel jlTitle=new JLabel();
 JLabel jl=new JLabel("");
 JLabel jlAnswer=new JLabel("");
 JLabel jlTotal=new JLabel("共"+max+"题");
 JLabel jlcorrect=new JLabel();
 JTextField jtf=new JTextField(3);
 JMenuBar jmb=new JMenuBar();
 JMenu jm=new JMenu("类型 ");
 JMenuItem jmi1=new JMenuItem("10以内加法");
 JMenuItem jmi2=new JMenuItem("10以内减法");
 JMenuItem jmi3=new JMenuItem("20以内加法");
 JMenuItem jmi4=new JMenuItem("20以内减法");
 JMenuItem jmi5=new JMenuItem("100以内加法");
 JMenuItem jmi6=new JMenuItem("100以内减法");
 JMenuItem jmi7=new JMenuItem("100以内乘法");
 JMenuItem jmi8=new JMenuItem("100以内除法");
 JButton jb1=new JButton("上一题");
 JButton jb2=new JButton("下一题");
 JButton jb3=new JButton("评卷");
 JButton jb4=new JButton("答案");
 JPanel jp1=new JPanel();
 JPanel jp2=new JPanel();
 JPanel jp3=new JPanel();
 String[] question=new String[max];
 int[] answer=new int[max];
 String[] studentAnswer=new String[max];
 boolean[]correct=new boolean[max];
 int count=1;
 boolean submitFlag=false;
 B(){
  super("小学数学测试");
  jlTitle.setFont(new Font(null,Font.PLAIN,20));
  jlTotal.setFont(new Font(null,Font.PLAIN,20));
  jlAnswer.setFont(new Font(null,Font.PLAIN,20));
  jl.setFont(new Font(null,Font.PLAIN,20));
  jlcorrect.setFont(new Font(null,Font.PLAIN,20));
  jlcorrect.setForeground(Color.RED);
  jtf.setFont(new Font(null,Font.PLAIN,20));
  fillQuestion();
  jb1.addActionListener(this);
  jb2.addActionListener(this);
  jb3.addActionListener(this);
  jb4.addActionListener(this);
  jmi1.addActionListener(this);
  jmi2.addActionListener(this);
  jmi3.addActionListener(this);
  jmi4.addActionListener(this);
  jmi5.addActionListener(this);
  jmi6.addActionListener(this);
  jmi7.addActionListener(this);
  jmi8.addActionListener(this);
  jm.add(jmi1);jm.add(jmi2);jm.add(jmi3);jm.add(jmi4);jm.add(jmi5);jm.add(jmi6);jm.add(jmi7);jm.add(jmi8);
  jmb.add(jm);
  setJMenuBar(jmb);
  jp1.add(jlTitle);jp1.add(jlTotal);jp1.add(jb3);jp1.add(jb4);
  jp2.add(jl);jp2.add(jtf);jp2.add(jlcorrect);jp2.add(jlAnswer);
  jp3.add(jb1);jp3.add(jb2);
  add(jp1,BorderLayout.NORTH);
  add(jp2,BorderLayout.CENTER);
  add(jp3,BorderLayout.SOUTH);
  setSize(300, 200);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setLocationRelativeTo(null);
  setVisible(true);
 }
 @Override
 public void actionPerformed(ActionEvent ae) {
  if(ae.getSource()==jb1){
   if(submitFlag==false){
    try{
     int tempanswer=Integer.parseInt(jtf.getText().trim());
     studentAnswer[count-1]=jtf.getText().trim();
     if(count==1)count=max;
     else count--;
     jlTitle.setText("第"+count+"题");
     jl.setText(question[count-1]);
     jtf.setText("");
     if(studentAnswer[count-1]==null||studentAnswer[count-1].equals("")){
     }else{
      jtf.setText(studentAnswer[count-1]);
     }
    }catch(NumberFormatException nfe){
     JOptionPane.showMessageDialog(this, "请输入正整数!");
     jtf.requestFocus();
    }
   }else{
    if(count==1)count=max;
    else count--;
    jlTitle.setText("第"+count+"题");
    jl.setText(question[count-1]);
    jlAnswer.setText("");
    jtf.setEnabled(false);
    jtf.setText(studentAnswer[count-1]);
    jb4.setEnabled(true);
    if(correct[count-1]==true){
     jlcorrect.setText("√");
    }else{
     jlcorrect.setText("×");
    }
   }
  }
  if(ae.getSource()==jb2){
   if(submitFlag==false){
    try{
     int tempanswer=Integer.parseInt(jtf.getText().trim());
     studentAnswer[count-1]=jtf.getText().trim();
     if(count==max)count=1;
     else count++;
     jlTitle.setText("第"+count+"题");
     jl.setText(question[count-1]);
     jtf.setText("");
     if(studentAnswer[count-1]==null||studentAnswer[count-1].equals("")){
     }else{
      jtf.setText(studentAnswer[count-1]);
     }
    }catch(NumberFormatException nfe){
     JOptionPane.showMessageDialog(this, "请输入正整数!");
     jtf.requestFocus();
    }
   }else{
    if(count==max)count=1;
    else count++;
    jlTitle.setText("第"+count+"题");
    jl.setText(question[count-1]);
    jlAnswer.setText("");
    jtf.setEnabled(false);
    jtf.setText(studentAnswer[count-1]);
    jb4.setEnabled(true);
    if(correct[count-1]==true){
     jlcorrect.setText("√");
    }else{
     jlcorrect.setText("×");
    }
   }
  }
  if(ae.getSource()==jb3){
   try{
    int tempanswer=Integer.parseInt(jtf.getText().trim());
    studentAnswer[count-1]=jtf.getText().trim();
    for(int i=0;i<max;i++){
     if(studentAnswer[i]==null||studentAnswer[i].equals("")){
      correct[i]=false;
     }else if(Integer.parseInt(studentAnswer[i])==answer[i]){
      correct[i]=true;
     }else{
      correct[i]=false;
     }
    }
    int correctAnswer=0;
    for(int i=0;i<max;i++){
     if(correct[i]==true){
      correctAnswer++;
     }
    }
    String s="共"+max+"道题\n";
    s=s+"答对"+correctAnswer+"道题\n";
    s=s+"答错"+(max-correctAnswer)+"道题\n";
    s=s+"成绩"+String.format("%.2f",(100*(float)correctAnswer/max))+"分\n";
    JOptionPane.showMessageDialog(this, s);
    submitFlag=true;
    jb4.setEnabled(true);
    jtf.setEnabled(false);
    jtf.setText(studentAnswer[count-1]);
    if(correct[count-1]==true){
     jlcorrect.setText("√");
    }else{
     jlcorrect.setText("×");
    }
   }catch(NumberFormatException nfe){
    JOptionPane.showMessageDialog(this, "请输入正整数!");
    jtf.requestFocus();
   }
  }
  if(ae.getSource()==jb4){
   jlAnswer.setText(String.valueOf(answer[count-1]));
  }
  if(ae.getSource()==jmi1){
   MAX=10;TYPE=1;fillQuestion();
  }
  if(ae.getSource()==jmi2){
   MAX=10;TYPE=2;fillQuestion();
  }
  if(ae.getSource()==jmi3){
   MAX=20;TYPE=1;fillQuestion();
  }
  if(ae.getSource()==jmi4){
   MAX=20;TYPE=2;fillQuestion();
  }
  if(ae.getSource()==jmi5){
   MAX=100;TYPE=1;fillQuestion();
  }
  if(ae.getSource()==jmi6){
   MAX=100;TYPE=2;fillQuestion();
  }
  if(ae.getSource()==jmi7){
   MAX=100;TYPE=3;fillQuestion();
  }
  if(ae.getSource()==jmi8){
   MAX=100;TYPE=4;fillQuestion();
  }
 }
 public static void main(String[] args) {
  new B();
 }
 public void fillQuestion(){
  count=1;
  for(int i=0;i<max;i++){
   String s=randomQuestion(MAX,TYPE);
   question[i]=s.substring(0,s.indexOf("=")+1);
   answer[i]=Integer.parseInt(s.substring(s.indexOf("=")+1));
  }
  studentAnswer=new String[max];
  correct=new boolean[max];
  jl.setText(question[0]);
  jlTitle.setText("第"+count+"题");
  jlcorrect.setText("");
  jlAnswer.setText("");
  submitFlag=false;
  jtf.setEnabled(true);
  jtf.setText("");
  jb4.setEnabled(false);
 }
 public String randomQuestion(int MAX,int TYPE) {
  String s="";
  int answer=MAX+1;
  while(answer>MAX||answer<0){
   int a=(int)(Math.random()*MAX+1);
   int b=(int)(Math.random()*MAX+1);
   switch(TYPE){
    case 1:answer=a+b;break;
    case 2:answer=a-b;break;
    case 3:answer=a*b;break;
    case 4:
     if(a%b==0){
      answer=a/b;
     }
     break;
   }
   if(answer<=MAX&&answer>=0){
    s=s+a;
    switch(TYPE){
     case 1:s=s+"+";break;
     case 2:s=s+"-";break;
     case 3:s=s+"*";break;
     case 4:s=s+"/";break;
    }
    s=s+b+"="+answer;
   }
  }
  return s;
 }
}

运行结果

百度网友0fed0e623a
2016-12-19 · 超过19用户采纳过TA的回答
知道答主
回答量:187
采纳率:0%
帮助的人:25.6万
展开全部
去淘宝上搜索脚本制作,就有了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GGROG
2018-06-26
知道答主
回答量:1
采纳率:0%
帮助的人:861
引用紫薇参星的回答:
按照你的要求编写的小学数学练习题目自动生成系统的Java程序如下
import java.awt.BorderLayout;import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;public class B extends JFrame implements ActionListener{ int max=20; int MAX=10; int TYPE=1; JLabel jlTitle=new JLabel(); JLabel jl=new JLabel(""); JLabel jlAnswer=new JLabel(""); JLabel jlTotal=new JLabel("共"+max+"题"); JLabel jlcorrect=new JLabel(); JTextField jtf=new JTextField(3); JMenuBar jmb=new JMenuBar(); JMenu jm=new JMenu("类型 "); JMenuItem jmi1=new JMenuItem("10以内加法"); JMenuItem jmi2=new JMenuItem("10以内减法"); JMenuItem jmi3=new JMenuItem("20以内加法"); JMenuItem jmi4=new JMenuItem("20以内减法"); JMenuItem jmi5=new JMenuItem("100以内加法"); JMenuItem jmi6=new JMenuItem("100以内减法"); JMenuItem jmi7=new JMenuItem("100以内乘法"); JMenuItem jmi8=new JMenuItem("100以内除法"); JButton jb1=new JButton("上一题"); JButton jb2=new JButton("下一题"); JButton jb3=new JButton("评卷"); JButton jb4=new JButton("答案"); JPanel jp1=new JPanel(); JPanel jp2=new JPanel(); JPanel jp3=new JPanel(); String[] question=new String[max]; int[] answer=new int[max]; String[] studentAnswer=new String[max]; boolean[]correct=new boolean[max]; int count=1; boolean submitFlag=false; B(){ super("小学数学测试"); jlTitle.setFont(new Font(null,Font.PLAIN,20)); jlTotal.setFont(new Font(null,Font.PLAIN,20)); jlAnswer.setFont(new Font(null,Font.PLAIN,20)); jl.setFont(new Font(null,Font.PLAIN,20)); jlcorrect.setFont(new Font(null,Font.PLAIN,20)); jlcorrect.setForeground(Color.RED); jtf.setFont(new Font(null,Font.PLAIN,20)); fillQuestion(); jb1.addActionListener(this); jb2.addActionListener(this); jb3.addActionListener(this); jb4.addActionListener(this); jmi1.addActionListener(this); jmi2.addActionListener(this); jmi3.addActionListener(this); jmi4.addActionListener(this); jmi5.addActionListener(this); jmi6.addActionListener(this); jmi7.addActionListener(this); jmi8.addActionListener(this); jm.add(jmi1);jm.add(jmi2);jm.add(jmi3);jm.add(jmi4);jm.add(jmi5);jm.add(jmi6);jm.add(jmi7);jm.add(jmi8); jmb.add(jm); setJMenuBar(jmb); jp1.add(jlTitle);jp1.add(jlTotal);jp1.add(jb3);jp1.add(jb4); jp2.add(jl);jp2.add(jtf);jp2.add(jlcorrect);jp2.add(jlAnswer); jp3.add(jb1);jp3.add(jb2); add(jp1,BorderLayout.NORTH); add(jp2,BorderLayout.CENTER); add(jp3,BorderLayout.SOUTH); setSize(300, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } @Override public void actionPerformed(ActionEvent ae) { if(ae.getSource()==jb1){ if(submitFlag==false){ try{ int tempanswer=Integer.parseInt(jtf.getText().trim()); studentAnswer[count-1]=jtf.getText().trim(); if(count==1)count=max; else count--; jlTitle.setText("第"+count+"题"); jl.setText(question[count-1]); jtf.setText(""); if(studentAnswer[count-1]==null||studentAnswer[count-1].equals("")){ }else{ jtf.setText(studentAnswer[count-1]); } }catch(NumberFormatException nfe){ JOptionPane.showMessageDialog(this, "请输入正整数!"); jtf.requestFocus(); } }else{ if(count==1)count=max; else count--; jlTitle.setText("第"+count+"题"); jl.setText(question[count-1]); jlAnswer.setText(""); jtf.setEnabled(false); jtf.setText(studentAnswer[count-1]); jb4.setEnabled(true); if(correct[count-1]==true){ jlcorrect.setText("√"); }else{ jlcorrect.setText("×"); } } } if(ae.getSource()==jb2){ if(submitFlag==false){ try{ int tempanswer=Integer.parseInt(jtf.getText().trim()); studentAnswer[count-1]=jtf.getText().trim(); if(count==max)count=1; else count++; jlTitle.setText("第"+count+"题"); jl.setText(question[count-1]); jtf.setText(""); if(studentAnswer[count-1]==null||studentAnswer[count-1].equals("")){ }else{ jtf.setText(studentAnswer[count-1]); } }catch(NumberFormatException nfe){ JOptionPane.showMessageDialog(this, "请输入正整数!"); jtf.requestFocus(); } }else{ if(count==max)count=1; else count++; jlTitle.setText("第"+count+"题"); jl.setText(question[count-1]); jlAnswer.setText(""); jtf.setEnabled(false); jtf.setText(studentAnswer[count-1]); jb4.setEnabled(true); if(correct[count-1]==true){ jlcorrect.setText("√"); }else{ jlcorrect.setText("×"); } } } if(ae.getSource()==jb3){ try{ int tempanswer=Integer.parseInt(jtf.getText().trim()); studentAnswer[count-1]=jtf.getText().trim(); for(int i=0;i<max;i++){ if(studentAnswer[i]==null||studentAnswer[i].equals("")){ correct[i]=false; }else if(Integer.parseInt(studentAnswer[i])==answer[i]){ correct[i]=true; }else{ correct[i]=false; } } int correctAnswer=0; for(int i=0;i<max;i++){ if(correct[i]==true){ correctAnswer++; } } String s="共"+max+"道题\n"; s=s+"答对"+correctAnswer+"道题\n"; s=s+"答错"+(max-correctAnswer)+"道题\n"; s=s+"成绩"+String.format("%.2f",(100*(float)correctAnswer/max))+"分\n"; JOptionPane.showMessageDialog(this, s); submitFlag=true; jb4.setEnabled(true); jtf.setEnabled(false); jtf.setText(studentAnswer[count-1]); if(correct[count-1]==true){ jlcorrect.setText("√"); }else{ jlcorrect.setText("×"); } }catch(NumberFormatException nfe){ JOptionPane.showMessageDialog(this, "请输入正整数!"); jtf.requestFocus(); } } if(ae.getSource()==jb4){ jlAnswer.setText(String.valueOf(answer[count-1])); } if(ae.getSource()==jmi1){ MAX=10;TYPE=1;fillQuestion(); } if(ae.getSource()==jmi2){ MAX=10;TYPE=2;fillQuestion(); } if(ae.getSource()==jmi3){ MAX=20;TYPE=1;fillQuestion(); } if(ae.getSource()==jmi4){ MAX=20;TYPE=2;fillQuestion(); } if(ae.getSource()==jmi5){ MAX=100;TYPE=1;fillQuestion(); } if(ae.getSource()==jmi6){ MAX=100;TYPE=2;fillQuestion(); } if(ae.getSource()==jmi7){ MAX=100;TYPE=3;fillQuestion(); } if(ae.getSource()==jmi8){ MAX=100;TYPE=4;fillQuestion(); } } public static void main(String[] args) { new B(); } public void fillQuestion(){ count=1; for(int i=0;i<max;i++){ String s=randomQuestion(MAX,TYPE); question[i]=s.substring(0,s.indexOf("=")+1); answer[i]=Integer.parseInt(s.substring(s.indexOf("=")+1)); } studentAnswer=new String[max]; correct=new boolean[max]; jl.setText(question[0]); jlTitle.setText("第"+count+"题"); jlcorrect.setText(""); jlAnswer.setText(""); submitFlag=false; jtf.setEnabled(true); jtf.setText(""); jb4.setEnabled(false); } public String randomQuestion(int MAX,int TYPE) { String s=""; int answer=MAX+1; while(answer>MAX||answer<0){ int a=(int)(Math.random()*MAX+1); int b=(int)(Math.random()*MAX+1); switch(TYPE){ case 1:answer=a+b;break; case 2:answer=a-b;break; case 3:answer=a*b;break; case 4: if(a%b==0){ answer=a/b; } break; } if(answer<=MAX&&answer>=0){ s=s+a; switch(TYPE){ case 1:s=s+"+";break; case 2:s=s+"-";break; case 3:s=s+"*";break; case 4:s=s+"/";break; } s=s+b+"="+answer; } } return s; }}运行结果

展开全部
没法选择题目类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式