2023-11-29

发布时间 2023-11-29 20:52:17作者: 超爱彬宝同学
package rjgz.suanTi;

import rjgz.BinaryOperation;
import rjgz.Exercise;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import static rjgz.suanTi.JDBC.add;
import static rjgz.suanTi.JDBC.selectByTiKu;


public class testFile {
    public static void main(String[] args) {

        // 创建一个顶层容器 JFrame
        JFrame frame = new JFrame("Swing Example");

        // 设置窗口的大小和位置
        frame.setBounds(100, 100, 900, 600);

        // 设置窗口关闭时的行为
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 创建一个面板 JPanel,并设置 BoxLayout 布局管理器
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        Exercise exercise=shenChen();
        int len=exercise.list.size()/5;
        // 添加文本框和输入框
        JTextField[][] textFields = new JTextField[exercise.list.size()][5];
        JLabel[][] labels=new JLabel[exercise.list.size()][5];
        for (int i = 0; i < len; i++) {
            JPanel rowPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
            for (int j = 0; j < 5; j++) {
                if (j != 4) {
                    BinaryOperation b = exercise.list.get(i * 5 + j);
                    String equation = b.getLeft_operand() + " " + b.getOperator() + " " + b.getRight_operand()
                            + " " + b.getOperator2() + " " + b.getThird_operand() + "=";
                    JLabel label = new JLabel(equation);
                    rowPanel.add(label);
                    labels[i][j]=label;

                    JTextField textField = new JTextField(10);
                    rowPanel.add(textField);
                    textFields[i][j] = textField;
                } else {
                    JLabel label = new JLabel("" + (i + 1) + "行:");
                    rowPanel.add(label);
                }
            }
            panel.add(rowPanel);
        }
        JPanel rowPanel3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        JLabel jLabel=new JLabel("正确率为"+""+"%");
        rowPanel3.add(jLabel);
        JLabel TiKu=new JLabel("输入题库名");
        rowPanel3.add(TiKu);
        JTextField ShuRu=new JTextField();
        ShuRu.setColumns(10);
        rowPanel3.add(ShuRu);
        JButton extract= new JButton("刷题库");
        rowPanel3.add(extract);
        panel.add(rowPanel3);

        // 创建一个按钮 JButton,用于刷新数据
        JPanel rowPanel2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        JButton refreshButton = new JButton("刷新");
        rowPanel2.add(refreshButton);
        JButton submitButton= new JButton("提交");
        rowPanel2.add(submitButton);
        JButton deposit= new JButton("存入题库");
        rowPanel2.add(deposit);

        panel.add(rowPanel2);
        // 为按钮添加事件监听器
        refreshButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Exercise exercise=shenChen();
                // 修改文本框中的内容
                for (int i = 0; i < len; i++) {
                    for (int j = 0; j < 5; j++) {
                        if (j != 4) {
                            JTextField inputField = textFields[i][j];
                            inputField.setText("");

                            BinaryOperation b = exercise.list.get(i * 5 + j);
                            String equation = b.getLeft_operand() + " " + b.getOperator() + " " + b.getRight_operand()
                                    + " " + b.getOperator2() + " " + b.getThird_operand() + "=";
                            labels[i][j].setText(equation);
                        }
                    }
                }
            }
        });

        submitButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                for (int i = 0; i < len; i++) {
                    for (int j = 0; j < 5; j++) {
                        if (j != 4) {
                            JTextField inputField = textFields[i][j];
                            int UserInput= Integer.parseInt(inputField.getText());
                            exercise.list.get(i*5+j).setUserValue(UserInput);

                        }
                    }
                }
                jLabel.setText("正确率为: "+exercise.ReturnAccuracy()*100+"%");
            }
        });

        deposit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                for (BinaryOperation b:
                     exercise.list) {
                    add(b);
                }
            }
        });
        extract.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int UserTiKu= Integer.parseInt(ShuRu.getText());
                exercise.list=selectByTiKu(UserTiKu);
                // 修改文本框中的内容
                for (int i = 0; i < len; i++) {
                    for (int j = 0; j < 5; j++) {
                        if (j != 4) {
                            JTextField inputField = textFields[i][j];
                            inputField.setText("");

                            BinaryOperation b = exercise.list.get(i * 5 + j);
                            String equation = b.getLeft_operand() + " " + b.getOperator() + " " + b.getRight_operand()
                                    + " " + b.getOperator2() + " " + b.getThird_operand() + "=";
                            labels[i][j].setText(equation);
                        }
                    }
                }
            }
        });
        // 将面板添加到窗口中
        frame.getContentPane().add(panel);

        // 显示窗口
        frame.setVisible(true);
    }
    public static Exercise shenChen(){
        int fanWei=1;
        int fanWei2=5;
        Exercise exercise=new Exercise();
        for (int i = 0; i < 10; i++) {
            BinaryOperation b=new BinaryOperation(fanWei2,fanWei);
            while (!exercise.Check(b)&&b.getValue()<0&&b.getValue()>100){
                b=new BinaryOperation(fanWei2,fanWei);
            }
            exercise.list.add(b);
        }
        return exercise;
    }
}