
如何用java+swing+mysql开发一个学生管理系统模块
使用Swing设计学生管理系统模块的界面,包括学生信息管理界面、课程信息管理界面、选课信息管理界面等。这里以学生信息管理界面为例,包含学生的基本信息,如学号、姓名、性别、出生日期等。在Java代码中实现对数据库的增删改查操作,包括添加学生信息、删除学生信息、修改学生信息、查询学生信息等。总体而言,学生管理系统模块的开发需要数据库设计、Java连接MySQL数据库、Swing界面设计、Java代码实
开发一个学生管理系统模块需要以下几个步骤:
数据库设计
首先需要设计数据库,包括学生信息表、课程信息表、选课信息表等。可以使用MySQL Workbench等工具进行设计,也可以手写SQL语句创建表。
Java连接MySQL数据库
使用Java语言连接MySQL数据库,可以使用JDBC或者ORM框架,如Hibernate、MyBatis等。其中JDBC是Java连接数据库的基础API,需要手写SQL语句操作数据库,而ORM框架可以通过对象映射来实现数据库操作。
Swing界面设计
使用Java Swing框架设计界面,包括学生信息管理界面、课程信息管理界面、选课信息管理界面等。可以使用NetBeans等工具进行界面设计,也可以手写代码实现。
Java代码实现
在Java代码中实现对数据库的增删改查操作,包括添加学生信息、删除学生信息、修改学生信息、查询学生信息等。同时也需要实现选课操作、退课操作等功能。
测试和调试
在开发过程中需要进行测试和调试,确保功能的正确性和稳定性。可以使用JUnit等测试框架进行单元测试,也可以手动测试。
发布和部署
完成开发后需要将程序发布和部署。可以使用Java打包工具将程序打包成jar文件,也可以使用Java Web开发框架如Spring、Struts等将程序部署到Web服务器中。
总体而言,学生管理系统模块的开发需要数据库设计、Java连接MySQL数据库、Swing界面设计、Java代码实现、测试和调试、发布和部署等步骤。
下面是一个简单的学生管理系统模块的案例,使用Java Swing作为界面,MySQL作为数据库。
数据库设计
本案例需要创建两个表:students和courses。其中students表包含学生的基本信息,如学号、姓名、性别、出生日期等;courses表包含课程的基本信息,如课程号、课程名称、学分等。另外,还需要创建一个中间表stu_course,记录学生选修的课程信息。
CREATE TABLE students (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
gender VARCHAR(10) NOT NULL,
birth DATE NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE courses (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
credit INT NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE stu_course (
id INT NOT NULL AUTO_INCREMENT,
student_id INT NOT NULL,
course_id INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (student_id) REFERENCES students(id),
FOREIGN KEY (course_id) REFERENCES courses(id)
);
Java连接MySQL数据库
使用JDBC连接MySQL数据库,首先需要下载MySQL Connector/J驱动,然后在Java代码中使用Class.forName方法加载驱动程序,创建Connection对象并连接数据库,最后使用Statement或PreparedStatement执行SQL语句。
import java.sql.*;
public class DBUtil {
private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/student_management_system?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456";
public static Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName(DRIVER);
Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
return conn;
}
public static void close(Connection conn, Statement stmt, ResultSet rs) {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Swing界面设计
使用Swing设计学生管理系统模块的界面,包括学生信息管理界面、课程信息管理界面、选课信息管理界面等。这里以学生信息管理界面为例,包含学生的基本信息,如学号、姓名、性别、出生日期等。可以使用Swing组件如JFrame、JPanel、JLabel、JTextField、JButton等来实现界面设计。
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
public class StudentInfoPanel extends JPanel {
private JLabel lblId, lblName, lblGender, lblBirth;
private JTextField txtId, txtName, txtGender, txtBirth;
private JButton btnAdd, btnUpdate, btnDelete, btnClear;
private JTable tblStudents;
private DefaultTableModel tblModel;
private Connection conn;
public StudentInfoPanel() {
initUI();
initDB();
loadData();
}
private void initUI() {
private void initDB() {
try {
conn = DBUtil.getConnection();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
private void loadData() {
try {
String sql = "SELECT * FROM students";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
String id = rs.getString("id");
String name = rs.getString("name");
String gender = rs.getString("gender");
String birth = rs.getString("birth");
Object[] row = {id, name, gender, birth};
tblModel.addRow(row);
}
rs.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
private void clearFields() {
txtId.setText("");
txtName.setText("");
txtGender.setText("");
txtBirth.setText("");
}
private void addStudent() {
String id = txtId.getText().trim();
String name = txtName.getText().trim();
String gender = txtGender.getText().trim();
String birth = txtBirth.getText().trim();
try {
String sql = "INSERT INTO students(id, name, gender, birth) VALUES (?, ?, ?, ?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, id);
stmt.setString(2, name);
stmt.setString(3, gender);
stmt.setString(4, birth);
int result = stmt.executeUpdate();
if (result == 1) {
Object[] row = {id, name, gender, birth};
tblModel.addRow(row);
JOptionPane.showMessageDialog(this, "添加成功");
}
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
private void updateStudent() {
int row = tblStudents.getSelectedRow();
if (row == -1) {
JOptionPane.showMessageDialog(this, "请先选择一行记录");
return;
}
String id = txtId.getText().trim();
String name = txtName.getText().trim();
String gender = txtGender.getText().trim();
String birth = txtBirth.getText().trim();
try {
String sql = "UPDATE students SET name=?, gender=?, birth=? WHERE id=?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, name);
stmt.setString(2, gender);
stmt.setString(3, birth);
stmt.setString(4, id);
int result = stmt.executeUpdate();
if (result == 1) {
tblModel.setValueAt(name, row, 1);
tblModel.setValueAt(gender, row, 2);
tblModel.setValueAt(birth, row, 3);
JOptionPane.showMessageDialog(this, "修改成功");
}
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
private void deleteStudent() {
int row = tblStudents.getSelectedRow();
if (row == -1) {
JOptionPane.showMessageDialog(this, "请先选择一行记录");
return;
}
String id = txtId.getText().trim();
int option = JOptionPane.showConfirmDialog(this, "确定删除该记录吗?");
if (option == JOptionPane.YES_OPTION) {
try {
String sql = "DELETE FROM students WHERE id=?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, id);
int result = stmt.executeUpdate();
if (result == 1) {
tblModel.removeRow(row);
clearFields();
JOptionPane.showMessageDialog(this, "删除成功");
}
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
private void addStudent() {
String id = txtId.getText().trim();
String name = txtName.getText().trim();
String gender = txtGender.getText().trim();
String birth = txtBirth.getText().trim();
if (id.isEmpty() || name.isEmpty() || gender.isEmpty() || birth.isEmpty()) {
JOptionPane.showMessageDialog(this, "请填写所有字段!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
String sql = "INSERT INTO students (id, name, gender, birth) VALUES (?, ?, ?, ?)";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, id);
pstmt.setString(2, name);
pstmt.setString(3, gender);
pstmt.setString(4, birth);
pstmt.executeUpdate();
JOptionPane.showMessageDialog(this, "添加成功!", "成功", JOptionPane.INFORMATION_MESSAGE);
loadData();
} catch (SQLException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(this, "添加失败!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
private void updateStudent() {
int row = tblStudents.getSelectedRow();
if (row < 0) {
JOptionPane.showMessageDialog(this, "请先选择要修改的学生!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
String id = txtId.getText().trim();
String name = txtName.getText().trim();
String gender = txtGender.getText().trim();
String birth = txtBirth.getText().trim();
if (id.isEmpty() || name.isEmpty() || gender.isEmpty() || birth.isEmpty()) {
JOptionPane.showMessageDialog(this, "请填写所有字段!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
String oldId = tblStudents.getValueAt(row, 0).toString();
String sql = "UPDATE students SET id=?, name=?, gender=?, birth=? WHERE id=?";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, id);
pstmt.setString(2, name);
pstmt.setString(3, gender);
pstmt.setString(4, birth);
pstmt.setString(5, oldId);
pstmt.executeUpdate();
JOptionPane.showMessageDialog(this, "修改成功!", "成功", JOptionPane.INFORMATION_MESSAGE);
loadData();
} catch (SQLException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(this, "修改失败!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
private void deleteStudent() {
int row = tblStudents.getSelectedRow();
if (row < 0) {
JOptionPane.showMessageDialog(this, "请先选择要删除的学生!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
int choice = JOptionPane.showConfirmDialog(this, "确定要删除选中的学生吗?", "确认删除", JOptionPane.YES_NO_OPTION);
if (choice != JOptionPane.YES_OPTION) {
return;
}
String id = tblStudents.getValueAt(row, 0).toString();
String sql = "DELETE FROM students WHERE id=?";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, id);
pstmt.executeUpdate();
JOptionPane.showMessageDialog(this, "删除成功!", "成功", JOptionPane.INFORMATION_MESSAGE);
loadData();
} catch (SQLException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(this, "删除失败!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
private void clearInput() {
txtId.setText("");
txtName.setText("");
txtGender.setText("");
txtBirth.setText("");
tblStudents.clearSelection();
}
}
上面的代码实现了一个简单的学生管理模块,可以对学生信息进行添加、修改、删除和查询等操作。
更多推荐
所有评论(0)