You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Math_Learning/src/View/Result_frame.java

83 lines
2.8 KiB

package View;
import Base.Exam_result;
import Service.Exam_service;
import Service.User_service;
import javax.swing.*;
import java.awt.*;
public class Result_frame extends JFrame {
private Exam_service examService;
private Exam_result result;
private User_service userService;
private String email;
public Result_frame(Exam_service ex,Exam_result result, User_service userService, String email) {
this.examService=ex;
this.result = result;
this.userService = userService;
this.email = email;
initializeUI();
}
private void initializeUI() {
setTitle("考试结果");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 400);
setLocationRelativeTo(null);
setResizable(false);
// 主面板
JPanel mainPanel = new JPanel(new BorderLayout(10, 10));
mainPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
// 标题
JLabel titleLabel = new JLabel("考试结果", JLabel.CENTER);
titleLabel.setFont(new Font("微软雅黑", Font.BOLD, 24));
mainPanel.add(titleLabel, BorderLayout.NORTH);
// 结果信息
JPanel resultPanel = new JPanel(new GridLayout(5, 1, 10, 10));
resultPanel.add(new JLabel("考试类型: " + result.getExamType()));
resultPanel.add(new JLabel("题目数量: " + result.getTotalQuestions()));
resultPanel.add(new JLabel("正确题目: " + result.getCorrectAnswers()));
resultPanel.add(new JLabel("得分: " + String.format("%.2f", result.getScore())));
resultPanel.add(new JLabel("用时: " + result.getDuration()));
mainPanel.add(resultPanel, BorderLayout.CENTER);
// 按钮面板
JPanel buttonPanel = new JPanel(new FlowLayout());
JButton reviewButton =new JButton("查看错题");
JButton mainMenuButton = new JButton("返回主菜单");
JButton exitButton = new JButton("退出");
buttonPanel.add(reviewButton);
buttonPanel.add(mainMenuButton);
buttonPanel.add(exitButton);
mainPanel.add(buttonPanel, BorderLayout.SOUTH);
// 添加事件监听器
reviewButton.addActionListener(e->openReviewFrame());
mainMenuButton.addActionListener(e -> openMainFrame());
exitButton.addActionListener(e -> System.exit(0));
add(mainPanel);
}
private void openMainFrame() {
Main_frame mainFrame = new Main_frame(userService, email);
mainFrame.setVisible(true);
this.dispose();
}
private void openReviewFrame(){
examService.set_now_index(0);
Review_frame reviewFrame= new Review_frame(examService,userService, email,result);
reviewFrame.setVisible(true);
this.dispose();
}
}