package kousuanti; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class GUI extends JFrame { private JTextField[] answerFields; private JLabel[] questionLabels; private JButton resetButton; private JButton submitButton; private JButton exportButton; private JButton importButton; private JComboBox<String> importComboBox; public GUI() { setTitle("口算题"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); JPanel questionPanel = new JPanel(new GridLayout(10, 2)); questionLabels = new JLabel[10]; answerFields = new JTextField[10]; for (int i = 0; i < 10; i++) { questionLabels[i] = new JLabel(); answerFields[i] = new JTextField(); questionPanel.add(questionLabels[i]); questionPanel.add(answerFields[i]); } add(questionPanel, BorderLayout.CENTER); JPanel buttonPanel = new JPanel(new FlowLayout()); resetButton = new JButton("重置"); submitButton = new JButton("提交"); exportButton = new JButton("导出"); importButton = new JButton("导入"); resetButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { generateQuestions(); } }); submitButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { checkAnswers(); } }); exportButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { exportQuestions(getQuestionString()); } }); importButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { showImportDialog(); } }); buttonPanel.add(resetButton); buttonPanel.add(submitButton); buttonPanel.add(exportButton); buttonPanel.add(importButton); add(buttonPanel, BorderLayout.SOUTH); pack(); setVisible(true); generateQuestions(); } private void generateQuestions() { for (int i = 0; i < 10; i++) { int a = (int) (Math.random() * 100); int b = (int) (Math.random() * Math.min(100, 100 - a)); boolean isAddition = Math.random() < 0.5; String operator; int answer; if (isAddition) { operator = " + "; answer = a + b; } else { operator = " - "; answer = a - b; } questionLabels[i].setText(a + operator + b + " = "); answerFields[i].setText(""); answerFields[i].setEditable(true); answerFields[i].setBackground(Color.WHITE); } } private void checkAnswers() { for (int i = 0; i < 10; i++) { int a = Integer.parseInt(questionLabels[i].getText().split(" ")[0]); int b = Integer.parseInt(questionLabels[i].getText().split(" ")[2]); boolean isAddition = questionLabels[i].getText().contains("+"); int answer = isAddition ? a + b : a - b; try { int userAnswer = Integer.parseInt(answerFields[i].getText()); if (userAnswer == answer) { answerFields[i].setBackground(Color.GREEN); } else { answerFields[i].setBackground(Color.RED); } answerFields[i].setEditable(false); } catch (NumberFormatException e) { answerFields[i].setBackground(Color.YELLOW); } } } private String getQuestionString() { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 10; i++) { sb.append(questionLabels[i].getText()); sb.append(answerFields[i].getText()); sb.append(","); } return sb.toString(); } private void showImportDialog() { JFrame dialogFrame = new JFrame(); dialogFrame.setLayout(new FlowLayout()); JLabel label = new JLabel("选择题目序号:"); int num = 1; try { Thesql thesql = new Thesql(); num = thesql.GetNum(); } catch (Exception e) { e.printStackTrace(); } String[] options = new String[num]; for (int i = 0; i < num; i++) { options[i]=(i+1)+""; } importComboBox = new JComboBox<>(options); JButton confirmButton = new JButton("确定"); JButton cancelButton = new JButton("取消"); confirmButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { importQuestions(Integer.parseInt(importComboBox.getSelectedItem().toString())); dialogFrame.dispose(); } }); cancelButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dialogFrame.dispose(); } }); dialogFrame.add(label); dialogFrame.add(importComboBox); dialogFrame.add(confirmButton); dialogFrame.add(cancelButton); dialogFrame.pack(); dialogFrame.setVisible(true); } private void importQuestions(int questionNumber) { String importedQuestions = ""; try { Thesql thesql = new Thesql(); importedQuestions=thesql.daoru_timu(questionNumber+""); } catch (Exception e) { e.printStackTrace(); } String[] questions = importedQuestions.split(","); if (questions.length == 10) { for (int i = 0; i < 10; i++) { questionLabels[i].setText(questions[i].split("=")[0] + " = "); answerFields[i].setText(""); answerFields[i].setEditable(true); answerFields[i].setBackground(Color.WHITE); } } else { JOptionPane.showMessageDialog(null, "导入题目数量不正确", "错误", JOptionPane.ERROR_MESSAGE); } } private void exportQuestions(String string) { try { Thesql thesql = new Thesql(); thesql.add(string); } catch (Exception e) { e.printStackTrace(); } JOptionPane.showMessageDialog(null, "导出成功", "提示", JOptionPane.INFORMATION_MESSAGE); System.out.println(string); } public static void main(String[] args) { GUI gui = new GUI(); } }