小学数学计算题随机出题软件

        做这个软件的时候 ,我应该从用户的角度考虑问题,而不是简单实现了老师交代的功能。 于是我把功能的选择变成了年级的选择 ,

选择哪一个年级的,然后填写出题的数量,按下出题按钮,然后在下面的文本框中就会出现对应年级的难度的题目,这样简化的用户的选择。

      开始的时候我将数字生成单独写在一个类里边的,但是后来做界面的时候,本想调用实例化对象,但是出现了线程的问题,尝试了解决方法但是没有奏效

  于是我又将生成数字的方法直接写在一个类里边直接就是利用这一个形成了出题的界面和处理。

       当然本软件是为小学生准备的 于是我去百度了小学各个年级数学题出题范围 ,于是发现自己写的方法没有调用上,是因为小学难度还没有达到那个水平 ,但是

方法我已经写出了,如果要用的话,到时候可以调用就可以了。

     源代码如下:

 

import java.awt.Dimension;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import java.util.Random;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Jiemian extends JFrame{
      public JPanel Panel1;
      public JLabel graselect;//年纪选择
      public JLabel questnum;//题目数量
      public ButtonGroup buttonGroup;
      public JTextField textnum;//添加题目数量
      public JButton  chuti;
      public JButton   chongzhi;
      public  JTextArea  quest;//出题的地方
      public JRadioButton gradetwo;
      public JRadioButton gradethree;
      public JRadioButton gradefour;
      public JRadioButton gradefive;

     public static void main(String[] args) {
         try{
            Jiemian jm=new Jiemian();
              jm.setVisible(true);
             }
        catch(Exception e){
          e.printStackTrace();
  }
 }
  public Jiemian(){
  super();
  setTitle("随机出题系统");
  setBounds(0,0,400,500);
  getContentPane().setLayout(null);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 //年级选择
  graselect=new JLabel();
  graselect.setBounds(0, 30, 50, 30);
  graselect.setText("年级:");
  getContentPane().add(graselect);
  //二年级
     buttonGroup=new ButtonGroup();
     gradetwo =new JRadioButton();
     buttonGroup.add(gradetwo);
     gradetwo.setText("二年级");
     gradetwo.setBounds(60, 30, 80, 30);
     gradetwo.setSelected(true);
     getContentPane().add(gradetwo);
     //三年级
     gradethree =new JRadioButton();
     buttonGroup.add(gradethree);
     gradethree.setText("三年级");
     gradethree.setBounds(140, 30, 80, 30);
     //gradetwo.setSelected(false);
     getContentPane().add(gradethree);
     //四年级
     gradefour =new JRadioButton();
     buttonGroup.add(gradefour);
     gradefour.setText("四年级");
     gradefour.setBounds(220, 30, 80, 30);
     //gradetwo.setSelected(false);
     getContentPane().add(gradefour);
     //五年级
     gradefive =new JRadioButton();
     buttonGroup.add(gradefive);
     gradefive.setText("五年级");
     gradefive.setBounds(300, 30, 80, 30);
     //gradetwo.setSelected(false);
     getContentPane().add(gradefive);

questnum=new JLabel();
     questnum.setText("题目数量:");
     questnum.setBounds(0, 80, 80, 40);
     getContentPane().add(questnum);
 
     //题目数量
     textnum=new JTextField();
     textnum.setBounds(90,90, 80, 20);
     getContentPane().add(textnum);
      //出题的按钮
     chuti= new JButton();
     chuti.setText("出题");
     chuti.setBounds(60, 150, 60, 30);
   
  
  chuti.addActionListener( new chutiListener());
     getContentPane().add(chuti);
     //重置的按钮
     chongzhi =new JButton();
     chongzhi.setText("重置");
     chongzhi.setBounds(240, 150, 60, 30);
     chongzhi.addActionListener(new chongzhiListener());
     getContentPane().add(chongzhi);
    //出题的方框
      quest=new JTextArea();
      quest.setColumns(15);
      quest.setRows(3);
      quest.setLineWrap(true);
      JScrollPane scrollPane=new JScrollPane();
      scrollPane.setViewportView(quest);
      Dimension dime=quest.getPreferredSize();
      scrollPane.setBounds(0, 200, 400, 200);
      getContentPane().add(scrollPane);
     }
 //生成数的方法
 public  int shenchengnum(int a){
     Random rand=new Random();
     int k=0;
     int j=0;
     for(int i=0;i<a;i++)
     {
      j=rand.nextInt(9)+1;
      k=k*10+j;
     }
     return k;
    }
 public char shengchenchar(boolean zhfu){
     Random rand=new Random();
     char c=' ';
     if(zhfu){
      int j=rand.nextInt()%2;
       if(j==0)
       {
        c='-';
       }
      
     }
        return c;
     }
    public void fenshunum(int a,int b,int c){   
     a=shenchengnum(c);
     b=shenchengnum(c);
    }
    public String xiaoshusc(){
     Random rand=new Random();
     DecimalFormat dcmFmt = new DecimalFormat("0.00");
     float a=rand.nextFloat()*100;
        String b=dcmFmt.format(a);
        return b;    
       
    }
    public char yunsuanchar(boolean szyf){
     Random rand=new Random();
     int j=0;
     char c=' ';
     if(szyf){
      j=rand.nextInt(2);
       if(j==0){
        c='/';
       } else if(j==1){
           c='*';
          }
       }

else{
      j=rand.nextInt()%2;
      if(j==0){
       c='+';
      }
      else {
       c='-';
      }
     }
     return c;
    }
//生成数的方法

public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  String num=textnum.getText();
  int qtnum=Integer.parseInt(num);
   if(gradetwo.isSelected()){
    for(int i=0;i<qtnum;i++){
     Random rand=new Random();
     int k=rand.nextInt()%2;
     if(k==0){

        String fnum=String.valueOf(shenchengnum(4));
        String snum=String.valueOf(shenchengnum(4));
        String ch=String.valueOf(yunsuanchar(false));
              quest.append(fnum+" "+" "+ch+" "+snum+"=");
              quest.append("\n");
              }else{
              String fnum=String.valueOf(shenchengnum(2));
        String snum=String.valueOf(shenchengnum(1));
        String ch=String.valueOf(yunsuanchar(true));
              quest.append(fnum+" "+" "+ch+" "+snum+"=");
              quest.append("\n");
          }

     }
    }
   else if(gradethree.isSelected()){
    for(int i=0;i<qtnum;i++){
     Random rand=new Random();
     int k=rand.nextInt()%2;
     if(k==0){
        String fnum=String.valueOf(shenchengnum(4));
        String snum=String.valueOf(shenchengnum(4));
        String ch=String.valueOf(yunsuanchar(false));
              quest.append(fnum+" "+" "+ch+" "+snum+"=");
              quest.append("\n");
              }else{
              String fnum=String.valueOf(shenchengnum(4));
        String snum=String.valueOf(shenchengnum(1));
        String ch=String.valueOf(yunsuanchar(true));
              quest.append(fnum+" "+" "+ch+" "+snum+"=");
              quest.append("\n");
          }
      }

}else if(gradefour.isSelected()){
    for(int i=0;i<qtnum;i++){
     String fnum=String.valueOf(shenchengnum(3));
        String snum=String.valueOf(shenchengnum(2));
        String ch=String.valueOf(yunsuanchar(true));
              quest.append(fnum+" "+" "+ch+" "+snum+"=");
              quest.append("\n");
    }
   }
   else if (gradefive.isSelected()){
    for(int i=0;i<qtnum;i++){
     String fnum=xiaoshusc();
        String snum=xiaoshusc();
        String ch=String.valueOf(yunsuanchar(true));
              quest.append(fnum+" "+" "+ch+" "+snum+"=");
              quest.append("\n");
    

  }

   }

}  

  }     public class chongzhiListener implements ActionListener{

          @Override  public void actionPerformed(ActionEvent e) {

             // TODO Auto-generated method stub  

              textnum.setText(null);

                quest.setText(null);

    }    

   }

}


    
  

转载于:https://www.cnblogs.com/qerror404/p/4348740.html

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些关于小学数学测试软件的编写分析和C语言课程设计的建议。 首先,小学数学测试软件需要具备以下功能: 1. 随机出题:能够随机生成符合小学数学知识点的目,以确保每次测试的目不重复,增加趣味性和挑战性。 2. 多种型支持:包括但不限于加减乘除、分数、百分数、小数等型,且支持不同难度等级的设置。 3. 答案自动判定:对于学生所填答案进行自动判定,并给出相应的答案和解析。 4. 统计分析功能:能够对学生的测试成绩进行统计分析,包括总分、平均分、最高分、最低分等。 5. 界面友好:采用直观、简洁的界面设计,易于操作和使用。 在编写小学数学测试软件时,可以考虑使用C语言进行开发。以下是一个简单的C语言课程设计思路: 1. 设计数据结构:定义目、答案、难度等相关数据结构。 2. 随机出题:通过随机数生成算法,实现随机出题功能。 3. 多种型支持:根据不同的型,设计对应的算法,如加减乘除算法、分数化简算法等。 4. 答案自动判定:将学生输入的答案与正确答案进行比对,判断是否正确,并给出相应的反馈。 5. 统计分析功能:通过统计学生成绩数据,计算总分、平均分、最高分、最低分等数据,并输出分析报告。 6. 界面友好:采用C语言图形界面库(如GTK、Qt等)进行设计,实现直观、简洁的界面。 以上是一个简单的小学数学测试软件的C语言课程设计思路。当然,具体的实现还需要根据具体需求进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值