Java实现学生信息管理系统

import java.awt.BorderLayout;
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 javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class StudentManagementSystem extends JFrame implements ActionListener {
    private static final long serialVersionUID = 1L;
    private JLabel nameLabel, ageLabel, genderLabel, phoneLabel, emailLabel;
    private JTextField nameField, ageField, genderField, phoneField, emailField;
    private JButton addButton, updateButton, deleteButton, clearButton, refreshButton;
    private JPanel inputPanel, buttonPanel;
    private JScrollPane tableScrollPane;
    private JTable table;
    private DefaultTableModel tableModel;

    private Connection conn;

    public StudentManagementSystem() {
        nameLabel = new JLabel("Name:");
        ageLabel = new JLabel("Age:");
        genderLabel = new JLabel("Gender:");
        phoneLabel = new JLabel("Phone:");
        emailLabel = new JLabel("Email:");

        nameField = new JTextField(20);
        ageField = new JTextField(20);
        genderField = new JTextField(20);
        phoneField = new JTextField(20);
        emailField = new JTextField(20);

        addButton = new JButton("Add");
        updateButton = new JButton("Update");
        deleteButton = new JButton("Delete");
        clearButton = new JButton("Clear");
        refreshButton = new JButton("Refresh");

        inputPanel = new JPanel();
        inputPanel.setLayout(new BorderLayout());
        inputPanel.add(nameLabel, BorderLayout.WEST);
        inputPanel.add(nameField, BorderLayout.CENTER);
        inputPanel.add(ageLabel, BorderLayout.WEST);
        inputPanel.add(ageField, BorderLayout.CENTER);
        inputPanel.add(genderLabel, BorderLayout.WEST);
        inputPanel.add(genderField, BorderLayout.CENTER);
        inputPanel.add(phoneLabel, BorderLayout.WEST);
        inputPanel.add(phoneField, BorderLayout.CENTER);
        inputPanel.add(emailLabel, BorderLayout.WEST);
        inputPanel.add(emailField, BorderLayout.CENTER);

        buttonPanel = new JPanel();
        buttonPanel.add(addButton);
        buttonPanel.add(updateButton);
        buttonPanel.add(deleteButton);
        buttonPanel.add(clearButton);
        buttonPanel.add(refreshButton);

        tableModel = new DefaultTableModel(new String[]{"ID", "Name", "Age", "Gender", "Phone", "Email"}, 0);
        table = new JTable(tableModel);
        tableScrollPane = new JScrollPane(table);

        this.setLayout(new BorderLayout());
        this.add(inputPanel, BorderLayout.NORTH);
        this.add(buttonPanel, BorderLayout.CENTER);
        this.add(tableScrollPane, BorderLayout.SOUTH);

        addButton.addActionListener(this);
        updateButton.addActionListener(this);
        deleteButton.addActionListener(this);
        clearButton.addActionListener(this);
        refreshButton.addActionListener(this);

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?serverTimezone=UTC&useSSL=false", "root", "password"); // 连接MySQL数据库
            loadStudents();
        } catch (ClassNotFoundException | SQLException e) {
            JOptionPane.showMessageDialog(null, "Database connection failed!\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            System.exit(-1);
        }

        this.setBounds(100, 100, 800, 600);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == addButton) {
            addStudent();
        } else if (e.getSource() == updateButton) {
            updateStudent();
        } else if (e.getSource() == deleteButton) {
            deleteStudent();
        } else if (e.getSource() == clearButton) {
            clearInputFields();
        } else if (e.getSource() == refreshButton) {
            refreshTable();
        }
    }

    private void loadStudents() throws SQLException {
        tableModel.setRowCount(0);
        PreparedStatement stmt = conn.prepareStatement("SELECT * FROM students");
        ResultSet results = stmt.executeQuery();
        while (results.next()) {
            int id = results.getInt("id");
            String name = results.getString("name");
            int age = results.getInt("age");
            String gender = results.getString("gender");
            String phone = results.getString("phone");
            String email = results.getString("email");
            tableModel.addRow(new Object[]{id, name, age, gender, phone, email});
        }
        stmt.close();
    }

    private void addStudent() {
        try {
            String name = nameField.getText();
            int age = Integer.parseInt(ageField.getText());
            String gender = genderField.getText();
            String phone = phoneField.getText();
            String email = emailField.getText();
            PreparedStatement stmt = conn.prepareStatement("INSERT INTO students (name, age, gender, phone, email) VALUES (?, ?, ?, ?, ?)");
            stmt.setString(1, name);
            stmt.setInt(2, age);
            stmt.setString(3, gender);
            stmt.setString(4, phone);
            stmt.setString(5, email);
            stmt.executeUpdate();
            stmt.close();
            clearInputFields();
            refreshTable();
            JOptionPane.showMessageDialog(null, "Student added successfully!", "Success", JOptionPane.INFORMATION_MESSAGE);
        } catch (NumberFormatException | SQLException e) {
            JOptionPane.showMessageDialog(null, "Invalid input!\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void updateStudent() {
        try {
            int selectedRow = table.getSelectedRow();
            int id = (int) tableModel.getValueAt(selectedRow, 0);
            String name = nameField.getText();
            int age = Integer.parseInt(ageField.getText());
            String gender = genderField.getText();
            String phone = phoneField.getText();
            String email = emailField.getText();
            PreparedStatement stmt = conn.prepareStatement("UPDATE students SET name=?, age=?, gender=?, phone=?, email=? WHERE id=?");
            stmt.setString(1, name);
            stmt.setInt(2, age);
            stmt.setString(3, gender);
            stmt.setString(4, phone);
            stmt.setString(5, email);
            stmt.setInt(6, id);
            stmt.executeUpdate();
            stmt.close();
            clearInputFields();
            refreshTable();
            JOptionPane.showMessageDialog(null, "Student updated successfully!", "Success", JOptionPane.INFORMATION_MESSAGE);
        } catch (NumberFormatException | SQLException | ArrayIndexOutOfBoundsException e) {
            JOptionPane.showMessageDialog(null, "Please select a student from the table to update!\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void deleteStudent() {
        try {
            int selectedRow = table.getSelectedRow();
            int id = (int) tableModel.getValueAt(selectedRow, 0);
            PreparedStatement stmt = conn.prepareStatement("DELETE FROM students WHERE id=?");
            stmt.setInt(1, id);
            stmt.executeUpdate();
            stmt.close();
            clearInputFields();
            refreshTable();
            JOptionPane.showMessageDialog(null, "Student deleted successfully!", "Success", JOptionPane.INFORMATION_MESSAGE);
        } catch (ArrayIndexOutOfBoundsException | SQLException e) {
            JOptionPane.showMessageDialog(null, "Please select a student from the table to delete!\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void clearInputFields() {
        nameField.setText("");
        ageField.setText("");
        genderField.setText("");
        phoneField.setText("");
        emailField.setText("");
    }

    private void refreshTable() {
        try {
            loadStudents();
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "Database connection failed!\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }

    public static void main(String[] args) {
        new StudentManagementSystem();
    }
}

在这个示例代码中,我们创建了一个包含输入面板、按钮面板和学生信息表格的GUI界面。使用MySQL数据库进行数据存储,可以添加、更新、删除和查询学生信息。点击“Add”按钮会将输入框中的学生信息添加到数据库中,在信息表格中显示出来;点击“Update”按钮可以根据选中的学生更新其信息;点击“Delete”按钮可以根据选中的学生从数据库中删除其信息;点击“Clear”按钮可以清空输入框中的信息;点击“Refresh”按钮可以重新载入学生信息表格。

学生信息管理系统作为一种常见的管理信息化需求,也是企业级Java应用的基础。通过以上示例,我们可以看到如何使用Java语言和相关技术库实现一个简单的学生信息管理系统。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

个人练习生xx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值