编写基于javaswing的宿舍管理系统的代码实现寝室长登录成功后进入的寝室长管理界面,界面功能寝室长查看同寝室的室友信息的代码,其中编写从数据库mysql中查找出与寝室长同一栋楼同一宿舍号的为寝室成员
时间: 2024-09-21 09:02:01 浏览: 14
在Java Swing中创建一个宿舍管理系统,我们可以使用Swing Set库来设计用户界面,JFrame作为窗口容器,并通过JTable展示数据。假设我们已经有了连接MySQL数据库的操作类`DBManager`。首先,我们需要设置寝室长登录成功的界面,然后加载室友信息。
```java
import javax.swing.*;
import java.awt.*;
import java.sql.*;
public class DormitoryManager extends JFrame {
private static final String[] COLUMN_HEADERS = {"姓名", "学号", "联系方式"};
private JTable roommatesTable;
private JButton loadRoommatesButton;
public DormitoryManager() {
// 设置窗口属性
setTitle("寝室长管理界面");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建表格
roommatesTable = new JTable(new DefaultTableModel(COLUMN_HEADERS, 0)) {
@Override
protected Class<?> getColumnClass(int column) {
return column == 0 ? String.class : Object.class; // 第一列是String,其他是Object
}
};
JScrollPane scrollPane = new JScrollPane(roommatesTable);
add(scrollPane, BorderLayout.CENTER);
// 创建加载按钮
loadRoommatesButton = new JButton("加载室友信息");
loadRoommatesButton.addActionListener(e -> loadRoommates());
add(loadRoommatesButton, BorderLayout.SOUTH);
setVisible(true);
}
private void loadRoommates() {
if (DBManager.isConnected()) {
try {
Connection conn = DBManager.getConnection();
Statement stmt = conn.createStatement();
String query = "SELECT * FROM roommates WHERE building_id = (SELECT building_id FROM dormity_head WHERE id = ?) AND dormitory_number = (SELECT dormitory_number FROM dormity_head WHERE id = ?)";
PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setInt(1, getCurrentDormityHeadId()); // 获取当前寝室长id
pstmt.setInt(2, getCurrentDormityHeadId()); // 同样为寝室长id,查询同一栋楼同一宿舍的室友
ResultSet rs = pstmt.executeQuery();
roommatesTable.setModel(DbUtils.resultSetToTableModel(rs, COLUMN_HEADERS)); // 将查询结果填充到表格
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "加载室友信息失败: " + ex.getMessage());
} finally {
DBManager.closeConnection(conn);
}
} else {
JOptionPane.showMessageDialog(this, "请先登录!");
}
}
// ... 其他寝室长登录验证和获取当前寝室长id的方法
// 为了简化,这里假设`getCurrentDormityHeadId()`是一个获取寝室长ID的方法,实际应用中需要从登录状态中获取
public static void main(String[] args) {
new DormitoryManager();
}
}
```