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.
83 lines
2.8 KiB
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();
|
|
}
|
|
}
|