基于java教务系统

一、代码实现
注册界面
package ceshi;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//注册界面
public class AccountApplicationGUI extends JFrame {
    private JPanel roleSelectionPanel;
    private JButton studentButton;
    private JButton teacherButton;

    public AccountApplicationGUI() {
        setTitle("注册界面");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);

        roleSelectionPanel = new JPanel();
       

        JLabel label = new JLabel("请选择注册的角色");
        label.setIcon(new ImageIcon(AccountApplicationGUI.class.getResource("/image/学生信息.png")));
        label.setBounds(57, 35, 147, 31);
        label.setHorizontalAlignment(SwingConstants.CENTER);
        roleSelectionPanel.add(label);

        studentButton = new JButton("学生");
        studentButton.setBounds(57, 93, 147, 31);
        studentButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showStudentRegistration();
            }
        });

        teacherButton = new JButton("教师");
        teacherButton.setBounds(57, 134, 147, 31);
        teacherButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showTeacherRegistration();
            }
        });

        roleSelectionPanel.add(studentButton);
        roleSelectionPanel.add(teacherButton);

        getContentPane().add(roleSelectionPanel, BorderLayout.CENTER);
        pack();
        setLocationRelativeTo(null);
    }

    private void showStudentRegistration() {
        StudentRegistrationGUI studentRegistrationGUI = new StudentRegistrationGUI();
        setVisible(false);
        studentRegistrationGUI.setVisible(true);
    }

    private void showTeacherRegistration() {
        TeacherRegistrationGUI teacherRegistrationGUI = new TeacherRegistrationGUI();
        setVisible(false);
        teacherRegistrationGUI.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                AccountApplicationGUI accountGUI = new AccountApplicationGUI();
                accountGUI.setVisible(true);
            }
        });
    }
}

class StudentRegistrationGUI extends JFrame {
    private JPanel registrationPanel;
    private JLabel snoLabel;
    private JLabel snameLabel;
    private JLabel sageLabel;
    private JLabel ssexLabel;
    private JLabel smajorLabel;
    private JLabel sbirthLabel;
    private JLabel phoneNumLabel;
    private JLabel emailLabel;
    private JLabel sclassLabel;
    private JLabel stuPhotoLabel;
    private JLabel timeEnrollLabel;
    private JLabel dateGraduLabel;
    private JTextField snoField;
    private JTextField snameField;
    private JTextField sageField;
    private JTextField ssexField;
    private JTextField smajorField;
    private JTextField sbirthField;
    private JTextField phoneNumField;
    private JTextField emailField;
    private JTextField sclassField;
    private JTextField stuPhotoField;
    private JTextField timeEnrollField;
    private JTextField dateGraduField;
    private JButton confirmButton;

    public StudentRegistrationGUI() {
        setTitle("学生注册界面");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);

        registrationPanel = new JPanel();
        registrationPanel.setLayout(new GridLayout(7, 2));

        snoLabel = new JLabel("学号:");
        snoField = new JTextField();
        snameLabel = new JLabel("姓名:");
        snameField = new JTextField();
        sageLabel = new JLabel("年龄:");
        sageField = new JTextField();
        ssexLabel = new JLabel("性别:");
        ssexField = new JTextField();
        smajorLabel = new JLabel("专业:");
        smajorField = new JTextField();
        sbirthLabel = new JLabel("出生日期:");
        sbirthField = new JTextField();
        phoneNumLabel = new JLabel("电话号码:");
        phoneNumField = new JTextField();
        emailLabel = new JLabel("邮箱:");
        emailField = new JTextField();
        sclassLabel = new JLabel("班级:");
        sclassField = new JTextField();
        stuPhotoLabel = new JLabel("照片:");
        stuPhotoField = new JTextField();
        timeEnrollLabel = new JLabel("入学时间:");
        timeEnrollField = new JTextField();
        dateGraduLabel = new JLabel("毕业日期:");
        dateGraduField = new JTextField();

        registrationPanel.add(snoLabel);
        registrationPanel.add(snoField);
        registrationPanel.add(snameLabel);
        registrationPanel.add(snameField);
        registrationPanel.add(sageLabel);
        registrationPanel.add(sageField);
        registrationPanel.add(ssexLabel);
        registrationPanel.add(ssexField);
        registrationPanel.add(smajorLabel);
        registrationPanel.add(smajorField);
        registrationPanel.add(sbirthLabel);
        registrationPanel.add(sbirthField);
        registrationPanel.add(phoneNumLabel);
        registrationPanel.add(phoneNumField);
        registrationPanel.add(emailLabel);
        registrationPanel.add(emailField);
        registrationPanel.add(sclassLabel);
        registrationPanel.add(sclassField);
        registrationPanel.add(stuPhotoLabel);
        registrationPanel.add(stuPhotoField);
        registrationPanel.add(timeEnrollLabel);
        registrationPanel.add(timeEnrollField);
        registrationPanel.add(dateGraduLabel);
        registrationPanel.add(dateGraduField);

        confirmButton = new JButton("确认");
        confirmButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 将信息交给管理员审核
            	  // 检查学生注册界面的字段信息是否为空
                if (snoField.getText().isEmpty() ||
                        snameField.getText().isEmpty() ||
                        sageField.getText().isEmpty() ||
                        ssexField.getText().isEmpty() ||
                        smajorField.getText().isEmpty() ||
                        sbirthField.getText().isEmpty() ||
                        phoneNumField.getText().isEmpty() ||
                        emailField.getText().isEmpty() ||
                        sclassField.getText().isEmpty() ||
                        stuPhotoField.getText().isEmpty() ||
                        timeEnrollField.getText().isEmpty() ||
                        dateGraduField.getText().isEmpty()) {
                    // 弹窗提示用户请完善信息
                    JOptionPane.showMessageDialog(null, "请完善您的信息");
                }else  
                	JOptionPane.showMessageDialog(null, "信息已交由管理员审核");

             // 在弹窗提示后再弹出一个确认对话框
             int result = JOptionPane.showConfirmDialog(null, "审核通过", "确认", JOptionPane.YES_NO_OPTION);
             if (result == JOptionPane.YES_OPTION) {
                 // 用户点击了确认按钮
                 // 可以在这里执行相应的操作
             } else {
                 // 用户点击了取消按钮或关闭了对话框
                 // 可以在这里执行相应的操作
             }

            }
        });

        getContentPane().add(registrationPanel, BorderLayout.CENTER);
        getContentPane().add(confirmButton, BorderLayout.SOUTH);
        pack();
        setLocationRelativeTo(null);
    }
}


class TeacherRegistrationGUI extends JFrame {
    private JPanel registrationPanel;
    private JLabel tnoLabel;
    private JLabel tnameLabel;
    private JLabel tsexLabel;
    private JLabel deptLabel;
    private JLabel phoneNumLabel;
    private JLabel emailLabel;
    private JTextField tnoField;
    private JTextField tnameField;
    private JTextField tsexField;
    private JTextField deptField;
    private JTextField phoneNumField;
    private JTextField emailField;
    private JButton confirmButton;

    public TeacherRegistrationGUI() {
        setTitle("教师注册界面");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);

        registrationPanel = new JPanel();
        registrationPanel.setLayout(new GridBagLayout());

        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.insets = new Insets(5, 10, 5, 10);

        tnoLabel = new JLabel("教师编号:");
        registrationPanel.add(tnoLabel, gbc);

        gbc.gridx = 1;
        tnoField = new JTextField(15);
        registrationPanel.add(tnoField, gbc);

        gbc.gridx = 0;
        gbc.gridy = 1;
        tnameLabel = new JLabel("姓名:");
        registrationPanel.add(tnameLabel, gbc);

        gbc.gridx = 1;
        tnameField = new JTextField(15);
        registrationPanel.add(tnameField, gbc);

        gbc.gridx = 0;
        gbc.gridy = 2;
        tsexLabel = new JLabel("性别:");
        registrationPanel.add(tsexLabel, gbc);

        gbc.gridx = 1;
        tsexField = new JTextField(15);
        registrationPanel.add(tsexField, gbc);

        gbc.gridx = 0;
        gbc.gridy = 3;
        deptLabel = new JLabel("部门:");
        registrationPanel.add(deptLabel, gbc);

        gbc.gridx = 1;
        deptField = new JTextField(15);
        registrationPanel.add(deptField, gbc);

        gbc.gridx = 0;
        gbc.gridy = 4;
        phoneNumLabel = new JLabel("电话号码:");
        registrationPanel.add(phoneNumLabel, gbc);

        gbc.gridx = 1;
        phoneNumField = new JTextField(15);
        registrationPanel.add(phoneNumField, gbc);

        gbc.gridx = 0;
        gbc.gridy = 5;
        emailLabel = new JLabel("邮箱:");
        registrationPanel.add(emailLabel, gbc);

        gbc.gridx = 1;
        emailField = new JTextField(15);
        registrationPanel.add(emailField, gbc);

        confirmButton = new JButton("确认");
        confirmButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 将信息交给管理员审核
                if (tnoField.getText().isEmpty() ||
                        tnameField.getText().isEmpty() ||
                        tsexField.getText().isEmpty() ||
                        deptField.getText().isEmpty() ||
                        phoneNumField.getText().isEmpty() ||
                        emailField.getText().isEmpty()) {
                    JOptionPane.showMessageDialog(null, "请完善您的信息");
                } else {
                    JOptionPane.showMessageDialog(null, "信息已交由管理员审核");
                    int result = JOptionPane.showConfirmDialog(null, "审核通过", "确认", JOptionPane.YES_NO_OPTION);
                    if (result == JOptionPane.YES_OPTION) {
                        // 用户点击了确认按钮
                        // 可以在这里执行相应的操作
                    } else {
                        // 用户点击了取消按钮或关闭了对话框
                        // 可以在这里执行相应的操作
                    }
                }
            }
        });

        getContentPane().add(registrationPanel, BorderLayout.CENTER);
        getContentPane().add(confirmButton, BorderLayout.SOUTH);
        pack();
        setLocationRelativeTo(null);
    }

    public static void main1(String[] args) {
        SwingUtilities.invokeLater(() -> {
            TeacherRegistrationGUI teacherRegistrationGUI = new TeacherRegistrationGUI();
            teacherRegistrationGUI.setVisible(true);
        });
    }







    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new AccountApplicationGUI();
            }
        });
    }
}

新用户注册 
package ceshi;

public class AdminInfoPage {

	public static void openAdminInfoPage() {
		// TODO Auto-generated method stub
		
	}

}
课程管理 
package ceshi;

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;
import java.awt.Font;
import java.awt.Color;
import java.awt.Toolkit;

class Course {
    private String name;
    private List<String> students;
    private Map<String, Integer> ratings;

    public Course(String name) {
        this.name = name;
        this.students = new ArrayList<>();
        this.ratings = new HashMap<>();
    }

    public String getName() {
        return name;
    }

    public void addStudent(String studentName) {
        students.add(studentName);
    }

    public void addRating(String studentName, int rating) {
        ratings.put(studentName, rating);
    }

    public List<String> getStudents() {
        return students;
    }

    public double getAverageRating() {
        if (ratings.isEmpty()) {
            return 0;
        }

        double sum = 0;
        for (int rating : ratings.values()) {
            sum += rating;
        }
        return sum / ratings.size();
    }
}

class CourseInfoApp {
    private Map<String, Course> courses;

    public CourseInfoApp() {
        courses = new HashMap<>();
    }

    public void addCourse(String courseName) {
        courses.put(courseName, new Course(courseName));
    }

    public void enrollStudent(String courseName, String studentName) {
        if (courses.containsKey(courseName)) {
            courses.get(courseName).addStudent(studentName);
        }
    }

    public void rateCourse(String courseName, String studentName, int rating) {
        if (courses.containsKey(courseName)) {
            courses.get(courseName).addRating(studentName, rating);
        }
    }

    public List<String> getCourseStudents(String courseName) {
        if (courses.containsKey(courseName)) {
            return courses.get(courseName).getStudents();
        }
        return new ArrayList<>();
    }

    public double getCourseAverageRating(String courseName) {
        if (courses.containsKey(courseName)) {
            return courses.get(courseName).getAverageRating();
        }
        return 0;
    }
}

public class CourseInfoGUI {
    public static void main(String[] args) {
        CourseInfoApp app = new CourseInfoApp();

        JFrame frame = new JFrame("课程信息系统");
        frame.setIconImage(Toolkit.getDefaultToolkit().getImage(CourseInfoGUI.class.getResource("/image/calendar.png")));
        frame.setBackground(new Color(0, 255, 255));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(534, 317);

        JPanel panel = new JPanel();
        panel.setBackground(new Color(0, 255, 255));
        frame.getContentPane().add(panel);

        JButton addCourseButton = new JButton("添加课程");
        addCourseButton.setBounds(215, 5, 117, 41);
        addCourseButton.setIcon(new ImageIcon(CourseInfoGUI.class.getResource("/image/empty .png")));
        JButton enrollButton = new JButton("添加学生");
        enrollButton.setIcon(new ImageIcon(CourseInfoGUI.class.getResource("/image/empty .png")));
        enrollButton.setFont(new Font("宋体", Font.PLAIN, 12));
        enrollButton.setBounds(212, 56, 120, 31);
        JButton rateButton = new JButton("评价课程");
        rateButton.setIcon(new ImageIcon(CourseInfoGUI.class.getResource("/image/like.png")));
        rateButton.setFont(new Font("宋体", Font.PLAIN, 14));
        rateButton.setBounds(23, 136, 126, 25);
        JButton showStudentsButton = new JButton("显示学生");
        showStudentsButton.setFont(new Font("宋体", Font.PLAIN, 16));
        showStudentsButton.setBounds(23, 230, 96, 28);
        JButton showRatingButton = new JButton("显示课程平均分");
        showRatingButton.setFont(new Font("宋体", Font.PLAIN, 16));
        showRatingButton.setBounds(23, 171, 145, 41);

        JTextField courseNameField = new JTextField(15);
        courseNameField.setBounds(113, 15, 96, 21);
        JTextField studentNameField = new JTextField(15);
        studentNameField.setBounds(113, 53, 96, 21);
        JTextField ratingField = new JTextField(5);
        ratingField.setFont(new Font("宋体", Font.PLAIN, 10));
        ratingField.setBounds(113, 105, 36, 21);
        JTextArea resultArea = new JTextArea(10, 30);
        resultArea.setBounds(266, 96, 244, 184);
        resultArea.setEditable(false);

        addCourseButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String courseName = courseNameField.getText();
                app.addCourse(courseName);
                resultArea.setText("已添加课程:" + courseName);
            }
        });

        enrollButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String courseName = courseNameField.getText();
                String studentName = studentNameField.getText();
                app.enrollStudent(courseName, studentName);
                resultArea.setText(studentName + " 已加入 " + courseName);
            }
        });

        rateButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String courseName = courseNameField.getText();
                String studentName = studentNameField.getText();
                int rating = Integer.parseInt(ratingField.getText());
                app.rateCourse(courseName, studentName, rating);
                resultArea.setText(studentName + " 为 " + courseName + " 打分:" + rating + " 星");
            }
        });

        showStudentsButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String courseName = courseNameField.getText();
                List<String> students = app.getCourseStudents(courseName);
                resultArea.setText(courseName + " 的学生名单:\n" + String.join("\n", students));
            }
        });

        showRatingButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String courseName = courseNameField.getText();
                double averageRating = app.getCourseAverageRating(courseName);
                resultArea.setText(courseName + " 的平均分:" + averageRating);
            }
        });
        panel.setLayout(null);

        JLabel label = new JLabel("课程名:");
        label.setBounds(23, 8, 96, 28);
        label.setFont(new Font("宋体", Font.PLAIN, 24));
        panel.add(label);
        panel.add(courseNameField);
        panel.add(addCourseButton);
        JLabel label_1 = new JLabel("学生名:");
        label_1.setBounds(23, 46, 96, 28);
        label_1.setFont(new Font("宋体", Font.PLAIN, 24));
        panel.add(label_1);
        panel.add(studentNameField);
        panel.add(enrollButton);
        JLabel label_2 = new JLabel("评分 (1-5):");
        label_2.setFont(new Font("宋体", Font.PLAIN, 16));
        label_2.setBounds(7, 78, 112, 58);
        panel.add(label_2);
        panel.add(ratingField);
        panel.add(rateButton);
        panel.add(showStudentsButton);
        panel.add(showRatingButton);
        panel.add(resultArea);

        frame.setVisible(true);
    }
}
录入课程
package ceshi;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;

public class CourseManagement extends JFrame {
    private JPanel roleSelectionPanel;
    private JButton teacherButton;
    private JButton studentButton;
    private JButton adminButton;
    private JComboBox<String> teacherComboBox;
    private JComboBox<String> studentComboBox;
    private JComboBox<String> courseComboBox;
    private HashMap<String, Teacher> teacherMap = new HashMap<>();
    private HashMap<String, Student> studentMap = new HashMap<>();
    private HashMap<String, Course> courseMap = new HashMap<>();

 // 在CourseManagement类中添加calculateNewAttendanceRate方法
    private double calculateNewAttendanceRate(int leaveStudentCount) {
        // 在这里根据请假学生的数量和总学生人数计算新的出勤率
        // 这里你可以使用适当的算法来计算出勤率
        // 假设总学生人数为100,你可以这样计算出勤率:(100 - leaveStudentCount) / 100.0 * 100
        return (100 - leaveStudentCount) / 100.0 * 100;
    }

    
    public CourseManagement() {
        setTitle("Course Management");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);

        roleSelectionPanel = new JPanel();
        roleSelectionPanel.setLayout(new GridLayout(4, 1));

        JLabel label = new JLabel("请选择角色");
        label.setHorizontalAlignment(SwingConstants.CENTER);
        roleSelectionPanel.add(label);

        teacherButton = new JButton("教师");
        teacherButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showTeacherAttendance();
            }
        });
        roleSelectionPanel.add(teacherButton);

        studentButton = new JButton("学生");
        studentButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showStudentLeaveApplication();
            }
        });
        roleSelectionPanel.add(studentButton);

        adminButton = new JButton("管理员");
        adminButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showAdminManageCourse();
            }
        });
        roleSelectionPanel.add(adminButton);

        getContentPane().add(roleSelectionPanel, BorderLayout.CENTER);
        pack();
        setLocationRelativeTo(null);
    }

    private void showTeacherAttendance() {
        JFrame teacherFrame = new JFrame("教师 - 考勤结果");
        teacherFrame.setSize(300, 200);
        teacherFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        JPanel teacherPanel = new JPanel();
        teacherPanel.setLayout(new GridLayout(3, 1)); // Reduced the number of rows

        JLabel courseLabel = new JLabel("选择课程:");
        courseComboBox = new JComboBox<>(courseMap.keySet().toArray(new String[0]));
        JButton queryButton = new JButton("查询");

        queryButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String selectedCourse = (String) courseComboBox.getSelectedItem();

                // 模拟从数据库或数据源中获取考勤信息,假设有三个学生请假
                ArrayList<String> leaveStudents = new ArrayList<>();
                leaveStudents.add("学生1 - 学号1 - 请假理由1");
                leaveStudents.add("学生2 - 学号2 - 请假理由2");
                leaveStudents.add("学生3 - 学号3 - 请假理由3");

                if (!leaveStudents.isEmpty()) {
                    // 构建弹出的消息
                    StringBuilder messageBuilder = new StringBuilder("考勤结果:出勤率80%\n\n请假学生信息:\n");
                    for (String leaveStudent : leaveStudents) {
                        messageBuilder.append(leaveStudent).append("\n");
                    }

                    // 弹出消息框显示请假学生信息
                    JOptionPane.showMessageDialog(teacherFrame, messageBuilder.toString(), "考勤结果", JOptionPane.INFORMATION_MESSAGE);
                    
                    // 根据请假学生人数调整出勤率,这里你需要根据实际需求修改
                    double attendanceRate = calculateNewAttendanceRate(leaveStudents.size());
                    System.out.println("新的出勤率:" + attendanceRate); // 在控制台打印出勤率
                } else {
                    // 如果没有学生请假
                    JOptionPane.showMessageDialog(teacherFrame, "考勤结果:出勤率100%", "考勤结果", JOptionPane.INFORMATION_MESSAGE);
                }
            }
        });


        teacherPanel.add(courseLabel);
        teacherPanel.add(courseComboBox);
        teacherPanel.add(queryButton);

        teacherFrame.add(teacherPanel);
        teacherFrame.setVisible(true);
    }

   

    // 定义一个类来表示学生请假信息
    private class StudentLeaveInfo {
        private String name;
        private String studentID;
        private String reason;

        public StudentLeaveInfo(String name, String studentID, String reason) {
            this.name = name;
            this.studentID = studentID;
            this.reason = reason;
        }

        public String getName() {
            return name;
        }

        public String getStudentID() {
            return studentID;
        }

        public String getReason() {
            return reason;
        }
    }
        

   
    private void showStudentLeaveApplication() {
        JFrame studentFrame = new JFrame("学生 - 请假申请");
        studentFrame.setSize(400, 300);
        studentFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        JPanel studentPanel = new JPanel();
        studentPanel.setLayout(new GridLayout(5, 2));

        JLabel courseLabel = new JLabel("选择课程:");
        JComboBox<String> courseComboBox = new JComboBox<>(courseMap.keySet().toArray(new String[0]));
        JLabel nameLabel = new JLabel("姓名:");
        JTextField nameField = new JTextField();
        JLabel studentIDLabel = new JLabel("学号:");
        JTextField studentIDField = new JTextField();
        JLabel reasonLabel = new JLabel("请假理由:");
        JTextArea reasonArea = new JTextArea();
        JButton applyButton = new JButton("确认请假");

        applyButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String selectedCourse = (String) courseComboBox.getSelectedItem();
                String name = nameField.getText();
                String studentID = studentIDField.getText();
                String reason = reasonArea.getText();

                // 在这里处理请假申请,可以将请假信息存储到数据库或显示在界面上
                // 例如:将请假信息显示在对话框中
                String message = "请假申请成功\n\n" +
                                 "课程: " + selectedCourse + "\n" +
                                 "姓名: " + name + "\n" +
                                 "学号: " + studentID + "\n" +
                                 "请假理由:\n" + reason;

                JOptionPane.showMessageDialog(studentFrame, message, "请假申请成功", JOptionPane.INFORMATION_MESSAGE);
            }
        });

        studentPanel.add(courseLabel);
        studentPanel.add(courseComboBox);
        studentPanel.add(nameLabel);
        studentPanel.add(nameField);
        studentPanel.add(studentIDLabel);
        studentPanel.add(studentIDField);
        studentPanel.add(reasonLabel);
        studentPanel.add(new JScrollPane(reasonArea)); // 使用滚动窗格以便显示多行文本
        studentPanel.add(applyButton);

        studentFrame.add(studentPanel);
        studentFrame.setVisible(true);
    }


    private void showAdminManageCourse() {
        JFrame adminFrame = new JFrame("管理员页面");
        adminFrame.setSize(300, 200);
        adminFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        JPanel adminPanel = new JPanel();
        adminPanel.setLayout(new GridLayout(6, 2)); // 增加了行数和列数

        JLabel nameLabel = new JLabel("教师姓名:");
        JTextField teacherNameField = new JTextField(); // 添加了一个文本输入框
        JLabel classroomLabel = new JLabel("授课教室:");
        JTextField classroomField = new JTextField();
        JLabel courseNameLabel = new JLabel("课程名:");
        JTextField courseNameField = new JTextField();
        JLabel timeLabel = new JLabel("授课时间:");
        JTextField timeField = new JTextField();
        JButton confirmButton = new JButton("确认");

        confirmButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String teacherName = teacherNameField.getText(); // 获取教师姓名输入
                String classroom = classroomField.getText();
                String courseName = courseNameField.getText();
                String time = timeField.getText();
                
                // 在此处验证和处理输入数据
                
                // 将新的课程添加到courseMap
                courseMap.put(courseName, new Course()); // 在此,我仅仅用了一个空的Course对象,你可能需要为其提供详细的参数

                // 显示成功对话框
                JOptionPane.showMessageDialog(adminFrame, "录入成功", "成功", JOptionPane.INFORMATION_MESSAGE);
            }
        });


        adminPanel.add(nameLabel);
        adminPanel.add(teacherNameField);
        adminPanel.add(classroomLabel);
        adminPanel.add(classroomField);
        adminPanel.add(courseNameLabel);
        adminPanel.add(courseNameField);
        adminPanel.add(timeLabel);
        adminPanel.add(timeField);
        adminPanel.add(confirmButton);

        adminFrame.add(adminPanel);
        adminFrame.setVisible(true);
    }


    
  

    private class Teacher {
        // 教师信息类的定义
        // ...
    }

    private class Student {
        // 学生信息类的定义
        // ...
    }

    private class Course {
        // 课程信息类的定义
        // ...
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new CourseManagement().setVisible(true);
            }
        });
    }
}
 学生选课
package ceshi;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

//学生选课
public class CourseSelectionSystem extends JFrame {
    private JPanel roleSelectionPanel;
    private JButton studentButton;
    private JButton adminButton;
    private ArrayList<String> courses = new ArrayList<>();

    public CourseSelectionSystem() {
        setTitle("Course Selection System");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);

        roleSelectionPanel = new JPanel();
        roleSelectionPanel.setLayout(new GridLayout(3, 1));

        JLabel label = new JLabel("请选择角色");
        label.setHorizontalAlignment(SwingConstants.CENTER);
        roleSelectionPanel.add(label);

        studentButton = new JButton("学生");
        studentButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showStudentCourseSelection();
            }
        });

        adminButton = new JButton("管理员");
        adminButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showAdminCourseEntry();
            }
        });

        roleSelectionPanel.add(studentButton);
        roleSelectionPanel.add(adminButton);

        getContentPane().add(roleSelectionPanel, BorderLayout.CENTER);
        pack();
        setLocationRelativeTo(null);
    }

    private void showStudentCourseSelection() {
        JComboBox<String> courseComboBox = new JComboBox<>(courses.toArray(new String[0]));
        JTextField nameField = new JTextField(15);
        JTextField idField = new JTextField(15);

        JPanel studentPanel = new JPanel();
        studentPanel.setLayout(new GridLayout(4, 2));
        studentPanel.add(new JLabel("选择课程:"));
        studentPanel.add(courseComboBox);
        studentPanel.add(new JLabel("学生姓名:"));
        studentPanel.add(nameField);
        studentPanel.add(new JLabel("学生学号:"));
        studentPanel.add(idField);

        int result = JOptionPane.showConfirmDialog(null, studentPanel, "学生选课", JOptionPane.OK_CANCEL_OPTION);

        if (result == JOptionPane.OK_OPTION) {
            String selectedCourse = (String) courseComboBox.getSelectedItem();
            String studentName = nameField.getText();
            String studentId = idField.getText();

            // 在实际应用中,可以在这里处理选课逻辑,添加选课记录等操作
            JOptionPane.showMessageDialog(null, "选课成功!");
        }
    }

    private void showAdminCourseEntry() {
        JTextField courseNameField = new JTextField(20);
        JTextField courseNumberField = new JTextField(10);

        JPanel adminPanel = new JPanel();
        adminPanel.setLayout(new GridLayout(3, 2));
        adminPanel.add(new JLabel("课程名:"));
        adminPanel.add(courseNameField);
        adminPanel.add(new JLabel("课程号:"));
        adminPanel.add(courseNumberField);

        int result = JOptionPane.showConfirmDialog(null, adminPanel, "管理员录入课程", JOptionPane.OK_CANCEL_OPTION);

        if (result == JOptionPane.OK_OPTION) {
            String courseName = courseNameField.getText();
            String courseNumber = courseNumberField.getText();
            courses.add(courseName + " (" + courseNumber + ")");
            JOptionPane.showMessageDialog(null, "课程已录入!");
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                CourseSelectionSystem courseSelectionSystem = new CourseSelectionSystem();
                courseSelectionSystem.setVisible(true);
            }
        });
    }
}

论坛 
package ceshi;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

//论坛
public class ForumGUI extends JFrame {
    private JTextArea messageTextArea;
    private JButton postButton;
    private JComboBox<String> userTypeComboBox;
    private JButton stickyButton;
    private JTextField inputTextField;
    private boolean isAdmin = false; // Track the admin status

    private ArrayList<Message> messages;

    public ForumGUI() {
    	setBackground(new Color(192, 192, 192));
    	setIconImage(Toolkit.getDefaultToolkit().getImage(ff.class.getResource("/image/论坛.png")));
        setTitle("论坛界面");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new BorderLayout());

        messages = new ArrayList<>();

        messageTextArea = new JTextArea(10, 30);
        messageTextArea.setBackground(new Color(255, 250, 240));
        JScrollPane scrollPane = new JScrollPane(messageTextArea);
        getContentPane().add(scrollPane, BorderLayout.CENTER);

        JPanel inputPanel = new JPanel();
        inputPanel.setBackground(new Color(245, 255, 250));
        inputPanel.setLayout(new FlowLayout());

        inputTextField = new JTextField(20);
        JLabel label = new JLabel("留言输入框");
        label.setBackground(new Color(255, 215, 0));
        inputPanel.add(label);
        inputPanel.add(inputTextField);

        userTypeComboBox = new JComboBox<>(new String[]{"教师", "学生", "管理员"});
        inputPanel.add(userTypeComboBox);

        postButton = new JButton("发言");
        postButton.setBackground(new Color(255, 215, 0));
        postButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                postMessage();
            }
        });
        inputPanel.add(postButton);

        getContentPane().add(inputPanel, BorderLayout.NORTH);

        JPanel bottomPanel = new JPanel();
        bottomPanel.setBackground(new Color(245, 255, 250));
        bottomPanel.setLayout(new FlowLayout());

        stickyButton = new JButton("置顶消息");
        stickyButton.setFont(new Font("宋体", Font.PLAIN, 14));
        stickyButton.setIcon(new ImageIcon(ff.class.getResource("/image/speaker.png")));
        stickyButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                toggleAdmin(); // Toggle admin status
            }
        });
        bottomPanel.add(stickyButton);

        getContentPane().add(bottomPanel, BorderLayout.SOUTH);

        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }

    private void toggleAdmin() {
        isAdmin = !isAdmin;
        userTypeComboBox.setEnabled(!isAdmin);
    }

    private void postMessage() {
        String userType = (String) userTypeComboBox.getSelectedItem();
        String messageText = inputTextField.getText();

        if (!messageText.isEmpty()) {
            if (isAdmin) {
                // Admin's messages are sticky
                String stickyMessage = "[管理员] " + messageText;
                Message message = new Message("管理员", stickyMessage);
                messages.add(0, message);
            } else {
                Message message = new Message(userType, messageText);
                messages.add(message);
            }

            refreshMessageTextArea();
            inputTextField.setText("");
        }
    }

    private void refreshMessageTextArea() {
        messageTextArea.setText("");

        for (int i = messages.size() - 1; i >= 0; i--) {
            Message message = messages.get(i);
            messageTextArea.append(message.getFormattedMessage() + "\n");
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new ForumGUI();
            }
        });
    }

    private static class Message {
        private String userType;
        private String messageText;

        public Message(String userType, String messageText) {
            this.userType = userType;
            this.messageText = messageText;
        }

        public String getFormattedMessage() {
            return "[" + userType + "] " + messageText;
        }
    }
}
其他 
package ceshi;

public class Student {
    private Integer sno;
    private String sname;
    private Integer sage;
    private String ssex;
    private String smajor;
    private String sclass;
 
    public Integer getSno() {
        return sno;
    }
 
    public String getSname() {
        return sname;
    }
 
    public Integer getSage() {
        return sage;
    }
 
    public String getSsex() {
        return ssex;
    }
 
   
 
    public String getSmajor() {
        return smajor;
    }
 
    public String getSclass() {
        return sclass;
    }
 
 
    public void setSno(Integer sno) {
        this.sno = sno;
    }
 
    public void setSname(String sname) {
        this.sname = sname;
    }
 
    public void setSage(Integer sage) {
        this.sage = sage;
    }
 
    public void setSsex(String ssex) {
        this.ssex = ssex;
    }
 
 
    public void setSmajor(String smajor) {
        this.smajor = smajor;
    }
 
    public void setSclass(String sclass) {
        this.sclass = sclass;
    }
 

    public Student(Integer sno, String sname, Integer sage, String ssex,  String smajor, String sclass) {
        this.sno = sno;
        this.sname = sname;
        this.sage = sage;
        this.ssex = ssex;
        this.smajor = smajor;
        this.sclass = sclass;
    }
 
    public Student() {
        super();
    }
 
    @Override
    public String toString() {
        return "Student{" +
                "sno=" + sno +
                ", sname='" + sname + '\'' +
                ", sage=" + sage +
                ", ssex='" + ssex + '\'' +
                ", smajor='" + smajor + '\'' +
                ", sclass='" + sclass + '\'' +
                "}";
    }
}
数据库连接测试类 
package ceshi;


import ceshi.Student;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
 
/**
 *  操作数据库的类
 */
public class StudentDb {
    //写一个获取mysql数据库连接的函数
    /**
     *  函数功能:获取数据库连接对象
     * @return 返回数据库连接对象
     *  使用说明:提前知道获取数据库连接对象时所需要的四大参数
     *  1、驱动类的名称(数据库不同,驱动类的名称不同)
     *  2、数据库的URL
     *  3、使用数据库时的用户名
     *  4、用户名对应的密码
     *  一定要导入相对应的jar包
     */
    private static Connection getConn(){
        //第一步:加载驱动类(如果有异常,则抛出异常或者使用try..catch..语句块处理)
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.out.println("驱动类加载失败。");
            /**
             *  这里可能报错:ClassNotFoundException
             *  错误原因:可能是驱动类的名称拼写错误,也可能是所需要的jar包没有导入
             */
        }
        //第二步:获取连接对象
        String url = "jdbc:mysql://localhost:3307/xsgl324";
        String  username = "root";
        String  password = "1234";
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(url,username,password);
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("连接对象获取失败。");
        }
        //返回一个连接对象
        return conn;
    }
 
    /**
     *  函数功能:通过查询语句来获取数据库中的表格信息
     * @param sql
     * @return 返回一个List对象
     * @throws SQLException
     */
    public List<Student> getStudent(String sql) throws SQLException {
        //查询语句的执行结果为一个表格,即多个学生对象的集合,所有可以创建数组列表对象来存储
        List<Student> lst = new ArrayList<Student>();
        //获取连接对象
        Connection conn = getConn();
        try {
            //连接对象conn调用createStatement()方法,创建一个执行SQL语句的对象st
            Statement st = conn.createStatement();
            //执行SQL语句的对象st调用executeQuery()方法,执行查询语句,将查询到的结果返回到一个结果集中
            ResultSet rs = st.executeQuery(sql);
            //遍历结果集对象
            while(rs.next()){
                Student stu = new Student();
                stu.setSno(rs.getInt("sno"));
                stu.setSname(rs.getString("sname"));
                stu.setSage(rs.getInt("sage"));
                stu.setSsex(rs.getString("ssex"));
                
                stu.setSmajor(rs.getString("smajor"));
                stu.setSclass(rs.getString("sclass"));
                
                lst.add(stu);
            }
        }catch (Exception e){
            System.out.println(e.getMessage());
        }finally {
            //资源使用完之后,如果没有关闭,则需要关闭
            if (conn!=null){
                conn.close();
            }
        }
        return lst;
    }
 
    /**
     *  函数功能:对表中数据进行增删改操作
     * @param sql
     * @return true或者false
     * @throws SQLException
     */
    public boolean studentUpdate(String sql) throws SQLException {
        //获取数据库连接对象
        Connection conn = getConn();
        try {
            //连接对象调用createStatement()方法,创建一个执行SQL语句的对象
            Statement st = conn.createStatement();
            //执行SQL语句的对象st,调用executeUpdate()方法执行SQL语句,执行结果为int类型,表示受到影响的记录条数
            //executeUpdate( )方法可以执行增删改DML语句和创建表、删除表等DDL语句
            int cnt = st.executeUpdate(sql);
            return cnt>0; //如果有记录受到影响,则表示更新操作成功
        }catch (Exception e){
            System.out.println(e.getMessage());
            return false;
        }finally {
            if (conn!=null)
                conn.close();
        }
    }
 
    //测试一下
    public static void main(String[] args) throws SQLException {
        List<Student> lst = new ArrayList<Student>();
        lst=(new StudentDb()).getStudent("select * from student");
        for (Student stu: lst) {
            //调用Student实体类中的toString()方法,将Student对象转换成字符串输出
            System.out.println(stu.toString());
        }
        boolean tf =(new StudentDb()).studentUpdate("update student set sage=24 where sno = 10002");
        lst=(new StudentDb()).getStudent("select * from student");
        for (Student stu: lst) {
            //调用Student实体类中的toString()方法,将Student对象转换成字符串输出
            System.out.println(stu.toString());
        }
    }
}
学生信息界面 
package ceshi;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;

public class StudentInfoManagement extends JFrame {
    private JPanel roleSelectionPanel;
    private JButton adminButton;
    private JButton studentButton;
    private HashMap<String, Student> studentMap = new HashMap<>();

    public StudentInfoManagement() {
        setTitle("Student Info Management");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);

        roleSelectionPanel = new JPanel();
        roleSelectionPanel.setLayout(new GridLayout(3, 1));

        JLabel label = new JLabel("请选择角色");
        label.setHorizontalAlignment(SwingConstants.CENTER);
        roleSelectionPanel.add(label);

        adminButton = new JButton("管理员");
        adminButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showAdminStudentEntry();
            }
        });

        studentButton = new JButton("学生");
        studentButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showStudentInfoUpdate();
            }
        });

        roleSelectionPanel.add(adminButton);
        roleSelectionPanel.add(studentButton);

        getContentPane().add(roleSelectionPanel, BorderLayout.CENTER);
        pack();
        setLocationRelativeTo(null);
    }

    private void showAdminStudentEntry() {
        JTextField studentNameField = new JTextField(20);
        JTextField studentIdField = new JTextField(10);
        JTextField studentMajorField = new JTextField(20);
        JTextField studentPhoneNumberField = new JTextField(15);

        JPanel adminPanel = new JPanel();
        adminPanel.setLayout(new GridLayout(4, 2));
        adminPanel.add(new JLabel("学生姓名:"));
        adminPanel.add(studentNameField);
        adminPanel.add(new JLabel("学生学号:"));
        adminPanel.add(studentIdField);
        adminPanel.add(new JLabel("学生专业:"));
        adminPanel.add(studentMajorField);
        adminPanel.add(new JLabel("电话号码:"));
        adminPanel.add(studentPhoneNumberField);

        int result = JOptionPane.showConfirmDialog(null, adminPanel, "管理员录入学生信息", JOptionPane.OK_CANCEL_OPTION);

        if (result == JOptionPane.OK_OPTION) {
            String name = studentNameField.getText();
            String id = studentIdField.getText();
            String major = studentMajorField.getText();
            String phoneNumber = studentPhoneNumberField.getText();

            Student student = new Student(name, id, major, phoneNumber);
            studentMap.put(id, student);
            JOptionPane.showMessageDialog(null, "录入成功!");
        }
    }

    private void showStudentInfoUpdate() {
        JComboBox<String> studentComboBox = new JComboBox<>(studentMap.keySet().toArray(new String[0]));
        JTextField phoneNumberField = new JTextField(15);

        JPanel studentPanel = new JPanel();
        studentPanel.setLayout(new GridLayout(2, 2));
        studentPanel.add(new JLabel("选择学生:"));
        studentPanel.add(studentComboBox);
        studentPanel.add(new JLabel("新电话号码:"));
        studentPanel.add(phoneNumberField);

        int result = JOptionPane.showConfirmDialog(null, studentPanel, "学生信息修改", JOptionPane.OK_CANCEL_OPTION);

        if (result == JOptionPane.OK_OPTION) {
            String selectedStudentId = (String) studentComboBox.getSelectedItem();
            Student student = studentMap.get(selectedStudentId);

            String newPhoneNumber = phoneNumberField.getText();

            student.setPhoneNumber(newPhoneNumber);

            JOptionPane.showMessageDialog(null, "修改成功!");
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                StudentInfoManagement studentInfoManagement = new StudentInfoManagement();
                studentInfoManagement.setVisible(true);
            }
        });
    }

    private class Student {
        private String name;
        private String id;
        private String major;
        private String phoneNumber;

        public Student(String name, String id, String major, String phoneNumber) {
            this.name = name;
            this.id = id;
            this.major = major;
            this.phoneNumber = phoneNumber;
        }

        public void setPhoneNumber(String phoneNumber) {
            this.phoneNumber = phoneNumber;
        }
    }
}

package ceshi;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class StudentInfoPage {
    // 定义文本字段和按钮
    private JTextField nameField;
    private JTextField contactField;
    private JPasswordField passwordField;
    private JButton saveButton;

    public static void openStudentInfoPage() {
        // 创建JFrame窗口
        JFrame studentFrame = new JFrame("学生信息页面");
        studentFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        studentFrame.setSize(400, 300);

        // 创建面板
        JPanel panel = new JPanel();
        studentFrame.getContentPane().add(panel);

        // 设置布局为网格布局
        panel.setLayout(new GridLayout(4, 2));

        // 添加标签和文本字段
        JLabel nameLabel = new JLabel("姓名:");
        panel.add(nameLabel);
        JTextField nameField = new JTextField();
        panel.add(nameField);

        JLabel contactLabel = new JLabel("联系信息:");
        panel.add(contactLabel);
        JTextField contactField = new JTextField();
        panel.add(contactField);

        JLabel passwordLabel = new JLabel("登录密码:");
        panel.add(passwordLabel);
        JPasswordField passwordField = new JPasswordField();
        panel.add(passwordField);

        // 添加保存按钮并注册事件监听器
        JButton saveButton = new JButton("保存");
        panel.add(saveButton);
        saveButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 在这里处理保存按钮的点击事件
                String name = nameField.getText();
                String contact = contactField.getText();
                String password = new String(passwordField.getPassword());

                // 执行保存操作,可以调用适当的方法进行数据存储等操作

                // 提示保存成功或失败信息
                JOptionPane.showMessageDialog(null, "个人信息保存成功!");
            }
        });

        // 显示窗口
        studentFrame.setVisible(true);
    }
}
登录界面 
package ceshi;

import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import ceshi.AccountApplicationGUI;
import ceshi.zhujiemian;

import javax.swing.AbstractButton;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import ceshi.AdminInfoPage;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
//登录界面
public class StudentManagementSystem {
    protected static final String DB_URL = "jdbc:mysql://localhost:3307/xsgl324";
    protected static final String DB_USER = "root";
    protected static final String DB_PASSWORD = "1234";
    
    public static void main(String[] args) {
    	// 创建JFrame窗口
        JFrame frame = new JFrame("学生管理系统");
        frame.setIconImage(Toolkit.getDefaultToolkit().getImage(StudentManagementSystem.class.getResource("/image/key.png")));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(381, 311);

     // 创建用户名标签和文本字段
        JLabel usernameLabel = new JLabel("用户名:");
        usernameLabel.setBounds(21, 5, 78, 32);
        usernameLabel.setIcon(new ImageIcon(StudentManagementSystem.class.getResource("/image/学生信息.png")));
        JTextField usernameField = new JTextField(20);
        usernameField.setBounds(104, 10, 126, 21);
        frame.getContentPane().setLayout(null);
        frame.getContentPane().add(usernameLabel);
        frame.getContentPane().add(usernameField);

     // 创建密码标签和密码字段
        JLabel passwordLabel = new JLabel("密码:");
        passwordLabel.setIcon(new ImageIcon(StudentManagementSystem.class.getResource("/image/key.png")));
        passwordLabel.setBounds(21, 57, 78, 32);
        frame.getContentPane().add(passwordLabel);

        
        
        
        JPasswordField passwordField_1 = new JPasswordField();
        passwordField_1.setBounds(104, 63, 126, 26);
        frame.getContentPane().add(passwordField_1);
        
        String[] roles = { "学生", "教师", "管理员" };
        JComboBox<String> comboBox = new JComboBox<>(roles);
        comboBox.setEditable(true);
        comboBox.setBounds(104, 123, 109, 27);
        frame.getContentPane().add(comboBox);



        

     // 创建登录按钮
        JButton loginButton = new JButton("登录");
        loginButton.setBounds(41, 188, 91, 32);
        loginButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String username = usernameField.getText();
                String password = new String(passwordField_1.getPassword());
                String role = (String) comboBox.getSelectedItem();
                handleLogin(username, password, role);
                zhujiemian.createAndShowGUI();
            }
        });
        frame.getContentPane().add(loginButton);

     // 创建取消按钮
        JButton cancelButton = new JButton("取消");
        cancelButton.setBounds(225, 188, 91, 32);
        cancelButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                handleCancel();
            }
        });
        frame.getContentPane().add(cancelButton);

     // 创建注册按钮
        JButton registerButton = new JButton("注册");
        registerButton.setBounds(135, 232, 78, 32);
        registerButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                handleRegister();
            }
        });
        frame.getContentPane().add(registerButton);
        
        JLabel lblNewLabel = new JLabel("角色:\r\n");
        lblNewLabel.setIcon(new ImageIcon(ww.class.getResource("/image/学生信息.png")));
        lblNewLabel.setBounds(21, 118, 78, 32);
        frame.getContentPane().add(lblNewLabel);
        
        
        
        
        // 显示窗口
        frame.setVisible(true);
    }

  

    
    




	public static void handleLogin(String username, String password, String role) {
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;

        try {
            // 连接数据库
            connection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
            System.out.println("成功连接数据库");

            // 查询数据库中的用户表,验证用户名、密码和角色是否匹配
            String sql = "SELECT * FROM user WHERE username = ? AND password = ? AND role = ?";
            statement = connection.prepareStatement(sql);
            statement.setString(1, username);
            statement.setString(2, password);
            statement.setString(3, role);

            
            
            resultSet = statement.executeQuery();
            if (resultSet.next()) {
                System.out.println(role + "登录成功");
             // 根据角色进行跳转
                switch (role) {
                case "学生":
                	 zhujiemian.createAndShowGUI();  // 跳转到学生主界面
                    break;
                case "教师":
                	 zhujiemian.createAndShowGUI();  // 跳转到教师主界面
                    break;

                case "管理员":
                	 zhujiemian.createAndShowGUI(); 
                        break;
                }
            } else {
                System.out.println("用户名、密码或角色不正确");
            }
        } catch (SQLException ex) {
            System.out.println("登录时发生数据库错误: " + ex.getMessage());
            ex.printStackTrace();
        } finally {
            // 关闭数据库连接等资源
            try {
                if (resultSet != null) {
                    resultSet.close();
                }

                if (statement != null) {
                    statement.close();
                }

                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException ex) {
                System.out.println("关闭数据库连接时发生错误: " + ex.getMessage());
                ex.printStackTrace();
            }
        }
    }


	public static void createAndShowGUI() {
		System.out.println("跳转到主界面");
	    zhujiemian Zhujiemian = new zhujiemian();
	    Zhujiemian.setVisible(true);
	}

	
	public static void handleCancel() {
        System.out.println("已取消操作");
    }

	public static void handleRegister() {
	    System.out.println("跳转到注册界面");
	    // 创建 AccountApplicationGUI 实例并显示界面
	    AccountApplicationGUI accountApplicationGUI = new AccountApplicationGUI();
	    accountApplicationGUI.setVisible(true);
	}


    public static void performRegistration(String newUsername, String newPassword, String newRole) {
        Connection connection = null;
        PreparedStatement statement = null;

        try {
            // 连接数据库
            connection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
            System.out.println("成功连接数据库");

            // 插入新用户信息到user表
            String sql = "INSERT INTO user (username, password, role) VALUES (?, ?, ?)";
            statement = connection.prepareStatement(sql);
            statement.setString(1, newUsername);
            statement.setString(2, newPassword);
            statement.setString(3, newRole);

            int rowsAffected = statement.executeUpdate();
            if (rowsAffected > 0) {
                System.out.println("注册成功");
            } else {
                System.out.println("注册失败");
            }
        } catch (SQLException ex) {
            System.out.println("注册时发生数据库错误: " + ex.getMessage());
            ex.printStackTrace();
        } finally {
            // 关闭数据库连接等资源
            try {
                if (statement != null) {
                    statement.close();
                }

                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException ex) {
                System.out.println("关闭数据库连接时发生错误: " + ex.getMessage());
                ex.printStackTrace();
            }
        }
    }
    }

    





其他 
package ceshi;

public class teacher {
	private Integer tno;
    private String tname;
    private String tsex;
    private String dept;
    
 
    public Integer getTno() {
        return tno;
    }
 
    public String getTname() {
        return tname;
    }
 
    public String getTsex() {
        return tsex;
    }
 
    public String getDept() {
        return dept;
    }
 
 
    public void setTno(Integer tno) {
        this.tno = tno;
    }
 
    public void setSname(String tname) {
        this.tname = tname;
    }
 
    public void setTsex(String tsex) {
        this.tsex = tsex;
    }
 
 
    public void setDept(String dept) {
        this.dept = dept;
    }
 

 

    public teacher(Integer tno, String tname, String tsex,  String dept) {
        this.tno = tno;
        this.tname = tname;
        this.tsex = tsex;
        this.dept = dept;
    }
 
    public teacher() {
        super();
    }
 
    @Override
    public String toString() {
        return "teacher{" +
                "tno=" + tno +
                ", tname='" + tname + '\'' +
                ", tsex='" + tsex + '\'' +
                ",dept='" + dept + '\'' +
                "}";
    }
}
教师信息界面 
package ceshi;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;

public class TeacherInfoManagement extends JFrame {
    private JPanel roleSelectionPanel;
    private JButton adminButton;
    private JButton teacherButton;
    private HashMap<String, Teacher> teacherMap = new HashMap<>();

    public TeacherInfoManagement() {
        setTitle("Teacher Info Management");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);

        roleSelectionPanel = new JPanel();
        roleSelectionPanel.setLayout(new GridLayout(3, 1));

        JLabel label = new JLabel("请选择角色");
        label.setHorizontalAlignment(SwingConstants.CENTER);
        roleSelectionPanel.add(label);

        adminButton = new JButton("管理员");
        adminButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showAdminTeacherEntry();
            }
        });

        teacherButton = new JButton("教师");
        teacherButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showTeacherInfoUpdate();
            }
        });

        roleSelectionPanel.add(adminButton);
        roleSelectionPanel.add(teacherButton);

        getContentPane().add(roleSelectionPanel, BorderLayout.CENTER);
        pack();
        setLocationRelativeTo(null);
    }

    private void showAdminTeacherEntry() {
        JTextField teacherNameField = new JTextField(20);
        JTextField teacherIdField = new JTextField(10);
        JTextField teacherEmailField = new JTextField(20);
        JTextField teacherDepartmentField = new JTextField(20);
        JTextField teacherPhoneNumberField = new JTextField(15);

        JPanel adminPanel = new JPanel();
        adminPanel.setLayout(new GridLayout(5, 2));
        adminPanel.add(new JLabel("教师姓名:"));
        adminPanel.add(teacherNameField);
        adminPanel.add(new JLabel("教师工号:"));
        adminPanel.add(teacherIdField);
        adminPanel.add(new JLabel("教师邮箱:"));
        adminPanel.add(teacherEmailField);
        adminPanel.add(new JLabel("教师部门:"));
        adminPanel.add(teacherDepartmentField);
        adminPanel.add(new JLabel("电话号码:"));
        adminPanel.add(teacherPhoneNumberField);

        int result = JOptionPane.showConfirmDialog(null, adminPanel, "管理员录入教师信息", JOptionPane.OK_CANCEL_OPTION);

        if (result == JOptionPane.OK_OPTION) {
            String name = teacherNameField.getText();
            String id = teacherIdField.getText();
            String email = teacherEmailField.getText();
            String department = teacherDepartmentField.getText();
            String phoneNumber = teacherPhoneNumberField.getText();

            Teacher teacher = new Teacher(name, id, email, department, phoneNumber);
            teacherMap.put(id, teacher);
            JOptionPane.showMessageDialog(null, "录入成功!");
        }
    }

    private void showTeacherInfoUpdate() {
        JComboBox<String> teacherComboBox = new JComboBox<>(teacherMap.keySet().toArray(new String[0]));
        JTextField emailField = new JTextField(20);
        JTextField phoneNumberField = new JTextField(15);

        JPanel teacherPanel = new JPanel();
        teacherPanel.setLayout(new GridLayout(3, 2));
        teacherPanel.add(new JLabel("选择教师:"));
        teacherPanel.add(teacherComboBox);
        teacherPanel.add(new JLabel("新邮箱:"));
        teacherPanel.add(emailField);
        teacherPanel.add(new JLabel("新电话号码:"));
        teacherPanel.add(phoneNumberField);

        int result = JOptionPane.showConfirmDialog(null, teacherPanel, "教师信息修改", JOptionPane.OK_CANCEL_OPTION);

        if (result == JOptionPane.OK_OPTION) {
            String selectedTeacherId = (String) teacherComboBox.getSelectedItem();
            Teacher teacher = teacherMap.get(selectedTeacherId);

            String newEmail = emailField.getText();
            String newPhoneNumber = phoneNumberField.getText();

            teacher.setEmail(newEmail);
            teacher.setPhoneNumber(newPhoneNumber);

            JOptionPane.showMessageDialog(null, "修改成功!");
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                TeacherInfoManagement teacherInfoManagement = new TeacherInfoManagement();
                teacherInfoManagement.setVisible(true);
            }
        });
    }

    private class Teacher {
        private String name;
        private String id;
        private String email;
        private String department;
        private String phoneNumber;

        public Teacher(String name, String id, String email, String department, String phoneNumber) {
            this.name = name;
            this.id = id;
            this.email = email;
            this.department = department;
            this.phoneNumber = phoneNumber;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public void setPhoneNumber(String phoneNumber) {
            this.phoneNumber = phoneNumber;
        }
    }
}

package ceshi;

public class TeacherInfoPage {

	public static void openTeacherInfoPage() {
		// TODO Auto-generated method stub
		
	}

}
数据库用户登录账号密码 
package ceshi;

public class User {
	
    private String username;
    private Integer password;
    private String role;
    
    
    public String userSname() {
        return username;
    }
 
    public Integer getPassword() {
        return password;
    }
 
    public String getRole() {
        return role;
    }
    
    
    public void setUsername(String username) {
        this.username = username;
    }
 
    public void setPassword(Integer password) {
        this.password = password;
    }
 
    public void setRole(String role) {
        this.role=role;
    }
        
        public User(String username, Integer password, String role) {
            
            this.username = username;
            
            this.password = password;
            
            this.role = role;
        }
     
        public User() {
            super();
        }
     
        @Override
        public String toString() {
            return "User{" +
                    "username=" + username +
                    ",password='" + password + '\'' +
                    ", role='" + role + '\'' +
                    "}";
        }

		public String getUsername() {
			// TODO Auto-generated method stub
			return null;
		}
}
package ceshi;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.SystemColor;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.SwingUtilities;


public class ww {
    /**
     * @wbp.parser.entryPoint
     */
    

    /**
     * @wbp.parser.entryPoint
     */
    public static void createAndShowGUI() {
        JFrame frame = new JFrame();
        frame.setBackground(new Color(128, 255, 255));
        frame.setIconImage(Toolkit.getDefaultToolkit().getImage(ww.class.getResource("/image/学生信息.png")));
        frame.getContentPane().setEnabled(false);
        frame.setTitle("学生信息管理系统");
        frame.getContentPane().setBackground(SystemColor.inactiveCaption);
        frame.getContentPane().setLayout(new BorderLayout(0, 0));

        JPanel optionsPanel = new JPanel();
        optionsPanel.setBackground(new Color(240, 240, 240));
        frame.getContentPane().add(optionsPanel, BorderLayout.WEST);
        optionsPanel.setLayout(new GridLayout(7, 1, 0, 10));

        JButton btnNewButton = new JButton("学生信息");
        btnNewButton.setFont(new Font("宋体", Font.PLAIN, 24));
        btnNewButton.setIcon(new ImageIcon(ww.class.getResource("/image/学生信息.png")));
        optionsPanel.add(btnNewButton);

        JButton btnNewButton_1 = new JButton("教师信息");
        btnNewButton_1.setIcon(new ImageIcon(ww.class.getResource("/image/教师信息.png")));
        btnNewButton_1.setFont(new Font("宋体", Font.PLAIN, 24));
        optionsPanel.add(btnNewButton_1);

        JButton btnNewButton_2 = new JButton("论坛");
        btnNewButton_2.setIcon(new ImageIcon(ww.class.getResource("/image/论坛.png")));
        btnNewButton_2.setFont(new Font("宋体", Font.PLAIN, 24));
        optionsPanel.add(btnNewButton_2);

        JButton btnNewButton_3 = new JButton("评价");
        btnNewButton_3.setIcon(new ImageIcon(ww.class.getResource("/image/calendar.png")));
        btnNewButton_3.setFont(new Font("宋体", Font.PLAIN, 24));
        optionsPanel.add(btnNewButton_3);

        JButton btnNewButton_4 = new JButton("课程信息");
        btnNewButton_4.setFont(new Font("宋体", Font.PLAIN, 24));
        btnNewButton_4.setIcon(new ImageIcon(ww.class.getResource("/image/calendar.png")));
        optionsPanel.add(btnNewButton_4);

        JButton btnNewButton_5 = new JButton("选课系统");
        btnNewButton_5.setFont(new Font("宋体", Font.PLAIN, 24));
        btnNewButton_5.setIcon(new ImageIcon(ww.class.getResource("/image/cart.png")));
        optionsPanel.add(btnNewButton_5);

        JButton btnNewButton_6 = new JButton("授课系统");
        btnNewButton_6.setFont(new Font("宋体", Font.PLAIN, 24));
        btnNewButton_6.setIcon(new ImageIcon(ww.class.getResource("/image/bell.png")));
        optionsPanel.add(btnNewButton_6);

        JPanel contentPanel = new JPanel();
        contentPanel.setBackground(Color.WHITE);
        frame.getContentPane().add(contentPanel, BorderLayout.CENTER);
        contentPanel.setLayout(new BorderLayout(0, 0));

        frame.setBounds(100, 100, 784, 531);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
    }

教务系统主界面 
package ceshi;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class zhujiemian {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> createAndShowGUI());
    }

    public static void createAndShowGUI() {
    	JFrame frame = new JFrame();
    	frame.setBackground(new Color(128, 255, 255));
        frame.setIconImage(Toolkit.getDefaultToolkit().getImage(ww.class.getResource("/image/学生信息.png")));
        frame.getContentPane().setEnabled(false);
        frame.setTitle("学生信息管理系统");
        frame.getContentPane().setBackground(SystemColor.inactiveCaption);
        frame.getContentPane().setLayout(new BorderLayout(0, 0));

        JPanel optionsPanel = new JPanel();
        optionsPanel.setBackground(new Color(240, 240, 240));
        frame.getContentPane().add(optionsPanel, BorderLayout.WEST);
        optionsPanel.setLayout(new GridLayout(7, 1, 0, 10));

        JButton btnNewButton = new JButton("学生信息");
        btnNewButton.setFont(new Font("宋体", Font.PLAIN, 24));
        btnNewButton.setIcon(new ImageIcon(ww.class.getResource("/image/学生信息.png")));
        optionsPanel.add(btnNewButton);
        
        JButton btnNewButton_1 = new JButton("教师信息");
        btnNewButton_1.setIcon(new ImageIcon(ww.class.getResource("/image/教师信息.png")));
        btnNewButton_1.setFont(new Font("宋体", Font.PLAIN, 24));
        optionsPanel.add(btnNewButton_1);

        JButton btnNewButton_2 = new JButton("论坛");
        btnNewButton_2.setIcon(new ImageIcon(ww.class.getResource("/image/论坛.png")));
        btnNewButton_2.setFont(new Font("宋体", Font.PLAIN, 24));
        optionsPanel.add(btnNewButton_2);

        JButton btnNewButton_3 = new JButton("评价");
        btnNewButton_3.setIcon(new ImageIcon(ww.class.getResource("/image/calendar.png")));
        btnNewButton_3.setFont(new Font("宋体", Font.PLAIN, 24));
        optionsPanel.add(btnNewButton_3);

        JButton btnNewButton_4 = new JButton("课程信息");
        btnNewButton_4.setFont(new Font("宋体", Font.PLAIN, 24));
        btnNewButton_4.setIcon(new ImageIcon(ww.class.getResource("/image/calendar.png")));
        optionsPanel.add(btnNewButton_4);

        JButton btnNewButton_5 = new JButton("选课系统");
        btnNewButton_5.setFont(new Font("宋体", Font.PLAIN, 24));
        btnNewButton_5.setIcon(new ImageIcon(ww.class.getResource("/image/cart.png")));
        optionsPanel.add(btnNewButton_5);

        JButton btnNewButton_6 = new JButton("授课系统");
        btnNewButton_6.setFont(new Font("宋体", Font.PLAIN, 24));
        btnNewButton_6.setIcon(new ImageIcon(ww.class.getResource("/image/bell.png")));
        optionsPanel.add(btnNewButton_6);

        JPanel contentPanel = new JPanel();
        contentPanel.setBackground(Color.WHITE);
        frame.getContentPane().add(contentPanel, BorderLayout.CENTER);
        contentPanel.setLayout(new BorderLayout(0, 0));

        frame.setBounds(100, 100, 784, 531);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

	

	public void setVisible(boolean b) {
		// TODO Auto-generated method stub
		
	}

    
}
二、图片资源

三、使用工具
eclipse,MySQL,navicat,eclipse插件Windows builder 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值