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();
}
}