小学生四则运算测试java(UI界面)

import java.awt.Color;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import static java.awt.Color.*;

public class ArithmeticTest7 extends JFrame implements ActionListener,KeyListener {

    private final String[] str1 = {"十以内加减法", "百以内加减法", "百以内加减乘除", "千以内加减乘除","Boss挑战"};
    private final String[] str2 = {"开始"};

    JButton giveAnswer = new JButton("提交");//button for reset
    JButton up[] = new JButton[str2.length];
    JTextField display = new JTextField("");
    JTextField answer = new JTextField("在这里输入答案!");
    JTextField answer2 = new JTextField("");
    JTextField user1 = new JTextField("姓名:");
    JTextField user2 = new JTextField("");
    private String name = user2.getText();
    JTextArea file = new JTextArea("");

    JScrollPane File = new JScrollPane(file);
    JTextField numberOfDigit1 = new JTextField("年级:");

    JComboBox calculate = new JComboBox();
    public Font ziti = new Font("宋体", Font.BOLD, 25);


    public ArithmeticTest7() throws FontFormatException,ArrayIndexOutOfBoundsException {

        super(" 四则运算测试 ");
        Font font = new Font("宋体", Font.BOLD, 30);
        Font dadian = new Font("宋体", Font.BOLD, 75);
        //super.setFont(font);
        JPanel pnlHead = new JPanel(new BorderLayout());
        JPanel pnlHeadUp = new JPanel(new GridLayout(1, 5));
        JPanel pnlBodyEast = new JPanel(new GridLayout(2, 1));
        JPanel displayArea = new JPanel(new GridLayout(1, 5));
        displayArea.setBackground(lightGray);
        displayArea.add(display);
        //display.setBackground(lightGray);
        displayArea.add(answer);
        answer.setFont(font);
        answer.setBackground(yellow);
        answer.addKeyListener(this);

        pnlHeadUp.add(user1);
        pnlHeadUp.setForeground(yellow);
        user1.setFont(font);
        //user1.setBackground(lightGray);
        pnlHeadUp.add(user2);
        user2.setFont(font);

        name = user2.getText();
        pnlHeadUp.add(numberOfDigit1);
        numberOfDigit1.setFont(font);
        //numberOfDigit1.setBackground(lightGray);
        pnlBodyEast.add(giveAnswer);
        pnlHeadUp.add(calculate);
        pnlHead.add(displayArea, BorderLayout.CENTER);
        pnlHead.add(pnlHeadUp, BorderLayout.NORTH);

        for (int i = 0; i < str1.length; i++) {
            calculate.setFont(font);
            calculate.addItem(str1[i]);
        }


        for (int i = 0; i < str2.length; i++) {

            up[i] = new JButton(str2[i]);
            up[i].setFont(font);
            up[i].setBackground(Color.green);
            pnlBodyEast.add(up[i]);
        }


        display.setFont(dadian);
        giveAnswer.setFont(font);
        giveAnswer.setBackground(lightGray);
        //user1.setEnabled(false);
        //display.setEnabled(false);
        //numberOfDigit1.setEnabled(false);
        JPanel pnlBody = new JPanel(new BorderLayout());
        pnlBody.add(File, BorderLayout.CENTER);
        pnlBody.add(pnlBodyEast, BorderLayout.NORTH);
        setLayout(new BorderLayout());
        add(BorderLayout.NORTH, pnlHead);
        add(BorderLayout.CENTER, pnlBody);
        giveAnswer.addActionListener(this);
        display.addActionListener(this);
        calculate.addActionListener(this);

        for (int i = 0; i < str2.length; i++) {
            up[i].addActionListener(this);
        }

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(950, 500);
        Dimension displaySize = Toolkit.getDefaultToolkit().getScreenSize(); // 获得显示器大小对象
        Dimension frameSize = getSize();
        setLocation((displaySize.width - frameSize.width) / 2, (displaySize.height - frameSize.height) / 2);
        setVisible(true);
    }


    int o = 0;
    int score = 0;
    float[] Answer = new float[100];

    int[] b = new int[100];
    int[] n = new int[100];
    int[] m = new int[100];
    int[] k = new int[100];
    String[] c = new String[20];
    String N, M, K;

    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
        name = user2.getText();


        if (source == up[0])
        {

            CalculateE();
            answer.setFont(new Font("宋体", Font.BOLD, 75));
            answer.setText("");

            answer.setCaretPosition(0);
            file.setText("");
            score = 0;
            o = 0;
        }

        if (source == giveAnswer) {
            daan();

        }
    }


public void daan(){
    String q = answer.getText();
    float a = Float.valueOf(q);
    if (Math.abs(a -Answer[o])<0.01)
        score = score + 10;
    String str = null;

    switch (b[o]) {
        case 1:
            str = String.format("%-10s%-10s%-10s%-10s\r\n", n[o] + "+" + m[o] + "=", name + "答案:" + a, "标准答案:" + Answer[o], "目前得分:" + score);
            break;
        case 2:
            if (n[o] < m[o])
                str = String.format("%-10s%-10s%-10s%-10s\r\n", m[o] + "-" + n[o] + "=", name + "答案:" + a, "标准答案:" + Answer[o], "目前得分:" + score);
            if (n[o] >= m[o])
                str = String.format("%-10s%-10s%-10s%-10s\r\n", n[o] + "-" + m[o] + "=", name + "答案:" + a, "标准答案:" + Answer[o], "目前得分:" + score);
            break;
        case 3:
            str = String.format("%-10s%-10s%-10s%-10s\r\n", n[o] + "*" + m[o] + "=", name + "答案:" + a, "标准答案:" + Answer[o], "目前得分:" + score);
            break;
        case 4:
            if (n[o] < m[o]) {
                str = String.format("%-10s%-10s%-10s%-10s\r\n", m[o] + "÷" + n[o] + "=", name + "答案:" + a, "标准答案:" + Answer[o], "目前得分:" + score);

            }
            if (n[o] >= m[o]) {
                str = String.format("%-10s%-10s%-10s%-10s\r\n", n[o] + "÷" + m[o] + "=", name + "答案:" + a, "标准答案:" + Answer[o], "目前得分:" + score);
            }
            break;
        case 5:

            if (n[o] < m[o]) {
                str = String.format("%-10s%-10s%-10s%-10s\r\n", m[o] + "+" + n[o] + "*" + k[o] + "=", name + "答案:" + a, "标准答案:" + Answer[o], "目前得分:" + score);
            }
            if (n[o] > m[o]) {
                str = String.format("%-10s%-10s%-10s%-10s\r\n", n[o] + "÷" + m[o] + "-" + k[o] + "=", name + "答案:" + a, "标准答案:" + Answer[o], "目前得分:" + score);
            }
    }

    file.setFont(ziti);
    file.setText(file.getText() + str);

    if (o < 10) {
        o = o + 1;
        if (o != 10) {
            display.setText(c[o]);
            answer.setText("");
            answer2.setText("");
        }
    }
}






    public void CalculateE() {

        if (calculate.getSelectedItem() == "十以内加减法") {

            for (int i = 0; i < 10; i++) {
                b[i] = (int) (Math.random() * 2) + 1;
                n[i] = (int) (Math.random() * (Math.pow(10, 1))) + 1;
                m[i] = (int) (Math.random() * (Math.pow(10, 1))) + 1;
                if(n[i]+m[i]>=10) i--;
            }
        }
        if (calculate.getSelectedItem() == "百以内加减法") {

            for (int i = 0; i < 10; i++) {
                b[i] = (int) (Math.random() * 2) + 1;
                n[i] = (int) (Math.random() * (Math.pow(10, 2))) + 1;
                m[i] = (int) (Math.random() * (Math.pow(10, 2))) + 1;

            }
        }
        if (calculate.getSelectedItem() == "百以内加减乘除") {

            for (int i = 0; i < 10; i++) {
                b[i] = (int) (Math.random() * 4) + 1;
                n[i] = (int) (Math.random() * (Math.pow(10, 2))) + 1;
                m[i] = (int) (Math.random() * (Math.pow(10, 2))) + 1;


            }
        }

        if (calculate.getSelectedItem() == "千以内加减乘除") {

            for (int i = 0; i < 10; i++) {
                b[i] = (int) (Math.random() * 4) + 1;
                n[i] = (int) (Math.random() * (Math.pow(10, 3))) + 1;
                m[i] = ((int) (Math.random() * (Math.pow(10, 2))) + 1);

            }
        }

        if (calculate.getSelectedItem() == "Boss挑战") {

            for (int i = 0; i < 10; i++) {
                b[i] = 5;
                n[i] = (int) (Math.random() * (Math.pow(10, 3))) + 1;
                m[i] = ((int) (Math.random() * (Math.pow(10, 2))) + 1);
                k[i] = ((int) (Math.random() * (Math.pow(10, 2))) + 1);
            }

        }



        for (int i = 0; i < 10; i++) {
            N = String.valueOf(n[i]);
            M = String.valueOf(m[i]);
            K = String.valueOf(k[i]);
            switch (b[i]) {
                case 1:
                    c[i] = N + "+" + M + "=";
                    Answer[i] = n[i] + m[i];
                    break;
                case 2:
                    if (n[i] < m[i])
                        c[i] = M + "-" + N + "=";
                    if (n[i] >= m[i])
                        c[i] = N + "-" + M + "=";
                    Answer[i] = Math.abs(m[i] - n[i]);
                    break;
                case 3:
                    Answer[i] = n[i] * m[i];
                    c[i] = N + "*" + M + "=";
                    break;
                case 4:
                    if (n[i] < m[i]) {
                        c[i] = M + "÷" + N + "=";
                        Answer[i] = (float)m[i] / n[i];
                    }
                    if (n[i] >= m[i]) {
                        c[i] = N + "÷" + M + "=";
                        Answer[i] =(float)n[i] / m[i];
                    }
                    break;

                case 5:

                        if (n[i] < m[i]) {
                            c[i] = M + "+" + N + "*" +K + "=";
                            Answer[i] = (float)k[i]*n[i]+m[i];
                        }
                        if (n[i] >= m[i])
                        {
                           c[i] = N + "÷" + M + "-" + K + "=";
                           Answer[i] =(float)n[i] / m[i]-k[i];
                        }
                    break;
            }
        }
        display.setText(c[0]);
    }



    @Override
    public void keyTyped(KeyEvent e) {

    }

    public void keyPressed(KeyEvent k) {
        if(k.getKeyChar() == KeyEvent.VK_ENTER){
            daan();
        }

    }

    @Override
    public void keyReleased(KeyEvent e) {

    }

    public static void main(String[] args) throws FontFormatException {

        ArithmeticTest7 test;
        test = new ArithmeticTest7();

    }



}


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、附件为小学生口算练习小程序,为自家宝贝设计的,自用之余拿来大家分享使用,非常适合一、二、三年级的小朋友。 二、程序功能: 1、生成任意数以内的+-*/单一或混合运算的口算卡(excel文件,可打印),每张80道题。 2、任意数以内的+-*/单一或混合运算的练习(练习前选择条件),显示答题总数、正确与错误数、用时及平均时间。 3、表内乘法口算练习(同2可以显示答题信息)。 4、生成表内乘法口诀练习口算卡,格式同1。 5、生成几乘几以上的专项表内乘法口诀练习口算卡,格式同1。 6、表内除法口算练习(同2可以显示答题信息)。 7、每日口算打卡练习,每日出题80道,在程序中答题,显示答题总数、正确与错误数、用时及平均时间。并且会将每次答题信息记录至程序目录中的一个excel文件中,跟踪小朋友的口算情况。 三、程序为exe程序(一个exe文件和一个excel模板文件,要在一个文件夹就可以),下载后无需安装直接可以运行,并且有excel模板,如果生成的excel文件打印出线或打印不全的,可以自行调整一下模板excel文件的列宽和行高,切记:模板文件建议不要插入或删除行或列,以免错乱。 四、附件为压缩文件(使用7Z程序压缩的),可以用winrar、360、好压 等解压,如有问题可以QQ(1064386744)或邮箱、微信联系解决。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值