基于java的学生管理系统

简单学生管理系统,与mysql数据库进行交互,实现了基本的查询、添加、更新和删除功能。项目展示,由于篇幅,简单展示两张

在这里插入图片描述
在这里插入图片描述

下面是项目结构
在这里插入图片描述
代码示例

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.List;

/**
 * 管理系统的图形界面类
 */
public class StudentManagementUI extends JFrame {
    private StudentManagementSystem system;
    private DefaultListModel<Student> studentListModel;
    private JList<Student> studentList;
    private JButton addButton;
    private JButton updateButton;
    private JButton deleteButton;

    public StudentManagementUI() {
        system = new StudentManagementSystem();
        studentListModel = new DefaultListModel<>();
        studentList = new JList<>(studentListModel);
        addButton = new JButton("添加");
        updateButton = new JButton("更新");
        deleteButton = new JButton("删除");

        // 添加窗口监听器
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                // 在窗口关闭时执行相应操作,例如关闭数据库连接
                system.closeConnection();
            }
        });
    }


    public void createAndShowGUI() {
        setTitle("学生管理系统");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        setPreferredSize(new Dimension(500, 500));
        initComponents();
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }

    private void initComponents() {
        // 上方查询面板
        JPanel searchPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        JLabel nameLabel = new JLabel("姓名:");
        JTextField nameField = new JTextField(30);
        JButton searchButton = new JButton("查询");

        searchPanel.add(nameLabel);
        searchPanel.add(nameField);
        searchPanel.add(searchButton);

        // 中间学生列表面板
        JPanel listPanel = new JPanel(new BorderLayout());
        listPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
        studentList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        JScrollPane scrollPane = new JScrollPane(studentList);
        listPanel.add(scrollPane, BorderLayout.CENTER);

        // 下方按钮面板
        JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
        buttonPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
        addButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                AddStudentDialog dialog = new AddStudentDialog(StudentManagementUI.this);
                dialog.setVisible(true);
                if (dialog.isConfirmed()) {
                    Student student = dialog.getStudent();
                    system.addStudent(student);
                    refreshStudentList();
                }
            }
        });

        updateButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Student selectedStudent = studentList.getSelectedValue();
                if (selectedStudent != null) {
                    UpdateStudentDialog dialog = new UpdateStudentDialog(StudentManagementUI.this, selectedStudent);
                    dialog.setVisible(true);
                    if (dialog.isConfirmed()) {
                        Student updatedStudent = dialog.getStudent();
                        system.updateStudent(updatedStudent);
                        refreshStudentList();
                    }
                } else {
                    JOptionPane.showMessageDialog(StudentManagementUI.this, "请选择一个学生", "提示", JOptionPane.WARNING_MESSAGE);
                }
            }
        });

        deleteButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Student selectedStudent = studentList.getSelectedValue();
                if (selectedStudent != null) {
                    int option = JOptionPane.showConfirmDialog(StudentManagementUI.this,
                            "确定要删除学生信息吗?", "确认", JOptionPane.YES_NO_OPTION);
                    if (option == JOptionPane.YES_OPTION) {
                        system.deleteStudent(selectedStudent.getId());
                        refreshStudentList();
                    }
                } else {
                    JOptionPane.showMessageDialog(StudentManagementUI.this, "请选择一个学生", "提示", JOptionPane.WARNING_MESSAGE);
                }
            }
        });

        buttonPanel.add(addButton);
        buttonPanel.add(updateButton);
        buttonPanel.add(deleteButton);

        add(searchPanel, BorderLayout.NORTH);
        add(listPanel, BorderLayout.CENTER);
        add(buttonPanel, BorderLayout.SOUTH);

        searchButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String name = nameField.getText();
                List<Student> students = system.getAllStudents();
                studentListModel.clear();
                if (name.isEmpty()) {
                    // 输入为空时,查询全部学生信息
                    for (Student student : students) {
                        studentListModel.addElement(student);
                    }
                } else {
                    // 输入不为空时,进行模糊查询
                    for (Student student : students) {
                        if (student.getName().toLowerCase().contains(name)) {
                            studentListModel.addElement(student);
                        }
                    }
                }
            }

        });

        refreshStudentList();
    }

    private void refreshStudentList() {
        List<Student> students = system.getAllStudents();
        studentListModel.clear();
        for (Student student : students) {
            studentListModel.addElement(student);
        }
    }


}

全部代码私得。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值