代码共分为四个模块,其中实现了管理员登陆以及学生登陆,管理员和用户账号密码可以自己设置。
第一个模块是login界面,代码如下:
package 学生成绩管理; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; // 登录界面 public class LoginFrame extends JFrame { private JTextField usernameField; private JPasswordField passwordField; private JButton loginButton; public LoginFrame() { setTitle("学生成绩管理系统"); setSize(300, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); JPanel panel = new JPanel(); add(panel); placeComponents(panel); setVisible(true); } private void placeComponents(JPanel panel) { panel.setLayout(null); JLabel userLabel = new JLabel("用户名:"); userLabel.setBounds(10, 20, 80, 25); panel.add(userLabel); usernameField = new JTextField(20); usernameField.setBounds(100, 20, 160, 25); panel.add(usernameField); JLabel passwordLabel = new JLabel("密码:"); passwordLabel.setBounds(10, 50, 80, 25); panel.add(passwordLabel); passwordField = new JPasswordField(20); passwordField.setBounds(100, 50, 160, 25); panel.add(passwordField); loginButton = new JButton("登录"); loginButton.setBounds(100, 100, 80, 25); panel.add(loginButton); // 登录按钮事件处理 loginButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String username = usernameField.getText(); String password = new String(passwordField.getPassword()); // 验证用户名和密码,这里仅作示例 if (username.equals("teacher") && password.equals("123")) { dispose(); // 关闭登录界面 TeacherFrame teacherFrame = new TeacherFrame(); teacherFrame.setTeacher(username); // 传递教师姓名 } else if (username.equals("student") && password.equals("123")) { dispose(); // 关闭登录界面 StudentFrame studentFrame = new StudentFrame(); studentFrame.setTeacher(username); // 传递教师姓名 } else { JOptionPane.showMessageDialog(null, "用户名或密码错误"); } } }); } public static void main(String[] args) { new LoginFrame(); } }
第二个模块为studentframe,代码如下:
package 学生成绩管理; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; // 学生界面 class StudentFrame extends JFrame { private JButton viewButton; private String teacher; // 教师姓名 public StudentFrame() { setTitle("学生界面"); setSize(300, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); JPanel panel = new JPanel(); add(panel); placeComponents(panel); setVisible(true); } public void setTeacher(String teacher) { this.teacher = teacher; } private void placeComponents(JPanel panel) { panel.setLayout(null); viewButton = new JButton("查看成绩"); viewButton.setBounds(50, 80, 200, 25); panel.add(viewButton); // 查看成绩按钮事件处理 viewButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 执行查看成绩操作 List<String> grades = GradeManager.getGrades(teacher); StringBuilder message = new StringBuilder(); if (!grades.isEmpty()) { for (String grade : grades) { message.append(grade).append("\n"); } } else { message.append("暂无成绩"); } JOptionPane.showMessageDialog(null, message.toString()); } }); } }
第三个模块为teacherframe
package 学生成绩管理; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; // 教师界面 class TeacherFrame extends JFrame { private JButton inputButton; private JButton modifyButton; private JButton queryButton; private JButton deleteButton; private JButton studentButton; private String teacher; // 教师姓名 public TeacherFrame() { setTitle("教师界面"); setSize(300, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); JPanel panel = new JPanel(); add(panel); placeComponents(panel); setVisible(true); } public void setTeacher(String teacher) { this.teacher = teacher; } private void placeComponents(JPanel panel) { panel.setLayout(null); inputButton = new JButton("成绩录入"); inputButton.setBounds(50, 30, 200, 25); panel.add(inputButton); modifyButton = new JButton("成绩修改"); modifyButton.setBounds(50, 60, 200, 25); panel.add(modifyButton); queryButton = new JButton("成绩查询"); queryButton.setBounds(50, 90, 200, 25); panel.add(queryButton); deleteButton = new JButton("成绩删除"); deleteButton.setBounds(50, 120, 200, 25); panel.add(deleteButton); studentButton = new JButton("登录学生界面"); studentButton.setBounds(50, 150, 200, 25); panel.add(studentButton); // 成绩录入按钮事件处理 inputButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String name = JOptionPane.showInputDialog("请输入学生姓名:"); if (name != null && !name.isEmpty()) { String grade = JOptionPane.showInputDialog("请输入学生成绩:"); if (grade != null && !grade.isEmpty()) { // 执行成绩录入操作 GradeManager.addGrade(name, grade, teacher); JOptionPane.showMessageDialog(null, "成绩录入成功"); } else { JOptionPane.showMessageDialog(null, "请输入有效的成绩"); } } else { JOptionPane.showMessageDialog(null, "请输入有效的学生姓名"); } } }); // 成绩修改按钮事件处理 modifyButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String name = JOptionPane.showInputDialog("请输入要修改成绩的学生姓名:"); if (name != null && !name.isEmpty()) { String grade = JOptionPane.showInputDialog("请输入新的成绩:"); if (grade != null && !grade.isEmpty()) { // 执行成绩修改操作 GradeManager.modifyGrade(name, grade, teacher); JOptionPane.showMessageDialog(null, "成绩修改成功"); } else { JOptionPane.showMessageDialog(null, "请输入有效的成绩"); } } else { JOptionPane.showMessageDialog(null, "请输入有效的学生姓名"); } } }); // 成绩查询按钮事件处理 queryButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String name = JOptionPane.showInputDialog("请输入要查询成绩的学生姓名:"); if (name != null && !name.isEmpty()) { // 执行成绩查询操作 List<String> grades = GradeManager.getGrades(name, teacher); StringBuilder message = new StringBuilder(); if (!grades.isEmpty()) { for (String grade : grades) { message.append(grade).append("\n"); } } else { message.append("暂无成绩"); } JOptionPane.showMessageDialog(null, message.toString()); } else { JOptionPane.showMessageDialog(null, "请输入有效的学生姓名"); } } }); // 成绩删除按钮事件处理 deleteButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String name = JOptionPane.showInputDialog("请输入要删除成绩的学生姓名:"); if (name != null && !name.isEmpty()) { // 执行成绩删除操作 GradeManager.deleteGrade(name, teacher); JOptionPane.showMessageDialog(null, "成绩删除成功"); } else { JOptionPane.showMessageDialog(null, "请输入有效的学生姓名"); } } }); // 登录学生界面按钮事件处理 studentButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); // 关闭教师界面 StudentFrame studentFrame = new StudentFrame(); studentFrame.setTeacher(teacher); // 传递教师姓名 } }); } }
第四个模块为grademanager,代码如下:
package 学生成绩管理; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; // 成绩管理类 class GradeManager { private static Map<String, Map<String, String>> gradeMap = new HashMap<>(); public static void addGrade(String name, String grade, String teacher) { Map<String, String> grades = gradeMap.getOrDefault(teacher, new HashMap<>()); grades.put(name, grade); gradeMap.put(teacher, grades); } public static void modifyGrade(String name, String grade, String teacher) { Map<String, String> grades = gradeMap.getOrDefault(teacher, new HashMap<>()); grades.put(name, grade); gradeMap.put(teacher, grades); } public static void deleteGrade(String name, String teacher) { Map<String, String> grades = gradeMap.getOrDefault(teacher, new HashMap<>()); grades.remove(name); gradeMap.put(teacher, grades); } public static List<String> getGrades(String teacher) { Map<String, String> grades = gradeMap.getOrDefault(teacher, new HashMap<>()); List<String> gradeList = new ArrayList<>(); for (Map.Entry<String, String> entry : grades.entrySet()) { String name = entry.getKey(); String grade = entry.getValue(); gradeList.add(name + ": " + grade); } return gradeList; } public static List<String> getGrades(String name, String teacher) { Map<String, String> grades = gradeMap.getOrDefault(teacher, new HashMap<>()); List<String> gradeList = new ArrayList<>(); if (grades.containsKey(name)) { String grade = grades.get(name); gradeList.add(name + ": " + grade); } return gradeList; } }