用Java GUI写一个学生选课管理系统包括增加,删除,修改,查询等功能有管理员界面和学生信息界面
时间: 2024-03-12 13:50:31 浏览: 19
好的,这是一个比较复杂的任务。建议您按照以下步骤进行:
1. 设计数据库表结构,包括学生表、课程表、选课表等。
2. 使用Java GUI框架(如Swing或JavaFX)进行界面设计。可以参考一些开源的学生选课管理系统的界面设计,如GitHub上的"student-course-selection"项目。
3. 在Java代码中实现增加、删除、修改、查询等功能。可以使用JDBC连接数据库进行数据操作。
4. 设计管理员界面和学生信息界面,根据用户类型进行权限控制。
5. 对系统进行测试和调试,确保功能正常。
下面是一个简单的Java GUI代码示例,实现了一个基本的学生信息管理系统:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class StudentManagementSystem extends JFrame implements ActionListener {
private JTextField nameField, idField, majorField;
private JComboBox<String> genderBox;
private JButton addButton, deleteButton, updateButton, queryButton;
private JTable table;
public StudentManagementSystem() {
setTitle("学生信息管理系统");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel inputPanel = new JPanel(new GridLayout(5, 2));
inputPanel.add(new JLabel("姓名:"));
nameField = new JTextField(20);
inputPanel.add(nameField);
inputPanel.add(new JLabel("学号:"));
idField = new JTextField(20);
inputPanel.add(idField);
inputPanel.add(new JLabel("性别:"));
genderBox = new JComboBox<>(new String[]{"男", "女"});
inputPanel.add(genderBox);
inputPanel.add(new JLabel("专业:"));
majorField = new JTextField(20);
inputPanel.add(majorField);
addButton = new JButton("添加");
addButton.addActionListener(this);
inputPanel.add(addButton);
deleteButton = new JButton("删除");
deleteButton.addActionListener(this);
inputPanel.add(deleteButton);
updateButton = new JButton("修改");
updateButton.addActionListener(this);
inputPanel.add(updateButton);
queryButton = new JButton("查询");
queryButton.addActionListener(this);
inputPanel.add(queryButton);
add(inputPanel, BorderLayout.NORTH);
table = new JTable();
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane, BorderLayout.CENTER);
setVisible(true);
}
public static void main(String[] args) {
new StudentManagementSystem();
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == addButton) {
addStudent();
} else if (e.getSource() == deleteButton) {
deleteStudent();
} else if (e.getSource() == updateButton) {
updateStudent();
} else if (e.getSource() == queryButton) {
queryStudent();
}
}
private void addStudent() {
String name = nameField.getText();
String id = idField.getText();
String gender = (String) genderBox.getSelectedItem();
String major = majorField.getText();
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "root");
String sql = "INSERT INTO student (name, id, gender, major) VALUES (?, ?, ?, ?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, name);
stmt.setString(2, id);
stmt.setString(3, gender);
stmt.setString(4, major);
stmt.executeUpdate();
JOptionPane.showMessageDialog(this, "添加成功!");
stmt.close();
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(this, "添加失败!");
}
}
private void deleteStudent() {
int rowIndex = table.getSelectedRow();
if (rowIndex == -1) {
JOptionPane.showMessageDialog(this, "请选择要删除的学生!");
return;
}
String id = (String) table.getValueAt(rowIndex, 1);
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "root");
String sql = "DELETE FROM student WHERE id = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, id);
stmt.executeUpdate();
JOptionPane.showMessageDialog(this, "删除成功!");
stmt.close();
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(this, "删除失败!");
}
}
private void updateStudent() {
int rowIndex = table.getSelectedRow();
if (rowIndex == -1) {
JOptionPane.showMessageDialog(this, "请选择要修改的学生!");
return;
}
String name = nameField.getText();
String id = idField.getText();
String gender = (String) genderBox.getSelectedItem();
String major = majorField.getText();
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "root");
String sql = "UPDATE student SET name = ?, gender = ?, major = ? WHERE id = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, name);
stmt.setString(2, gender);
stmt.setString(3, major);
stmt.setString(4, id);
stmt.executeUpdate();
JOptionPane.showMessageDialog(this, "修改成功!");
stmt.close();
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(this, "修改失败!");
}
}
private void queryStudent() {
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "root");
String sql = "SELECT * FROM student";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();
Object[][] data = new Object[100][columnCount];
int rowIndex = 0;
while (rs.next()) {
for (int i = 1; i <= columnCount; i++) {
data[rowIndex][i - 1] = rs.getObject(i);
}
rowIndex++;
}
Object[] columns = new Object[columnCount];
for (int i = 1; i <= columnCount; i++) {
columns[i - 1] = metaData.getColumnName(i);
}
table.setModel(new DefaultTableModel(data, columns));
rs.close();
stmt.close();
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(this, "查询失败!");
}
}
}
```