✨作者主页:IT研究室✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目
一、前言
随着信息科技的发展,移动互联网已经深入到人们生活的各个领域。特别是在高等教育环境中,学生的日常生活和学习都与移动设备息息相关。在这个背景下,一款专门针对学生宿舍管理的移动应用显得尤为重要。通过这个应用,学生可以方便地处理与宿舍生活相关的各种事务,如报修、缴费、申请等。此外,宿舍管理人员也可以通过该应用进行宿舍管理,包括学生信息管理、宿舍设备维护等。因此,开发一款基于移动技术的学生宿舍管理解决方案是当前高等教育信息化建设的必要任务。
当前,很多高校对于学生宿舍管理仍然采用传统的手工方式,或者使用一些较为初级的宿舍管理软件。这些解决方案存在很多问题,例如:操作复杂、信息更新不及时、缺乏互动性等。这些问题导致了宿舍管理效率低下,同时也给学生带来诸多不便。因此,开发一款针对学生宿舍管理的微信小程序/安卓APP,解决现有解决方案的问题,是十分必要的。
本课题的研究目的是开发一款基于移动技术的学生宿舍管理解决方案,包括微信小程序和安卓APP两个版本。这个解决方案将能够实现以下功能:
学生可以随时随地进行宿舍报修、查询宿舍设备状态、在线缴纳宿舍费用等操作;
宿舍管理人员可以及时了解学生信息、宿舍设备状况,进行宿舍管理;
能够实现信息的实时更新和共享,让学生和宿舍管理人员都能及时获取信息;
提供在线咨询和投诉建议渠道,方便学生和宿舍管理人员进行互动交流。
本课题的研究意义在于:一方面,通过开发基于移动技术的学生宿舍管理解决方案,可以提高宿舍管理的效率和精度,更好地满足学生的需求;另一方面,通过这个解决方案,可以提高学生和宿舍管理人员之间的互动性,加强双方的沟通和交流,有助于构建和谐的宿舍环境。此外,本课题的研究成果还可以为其他高校提供一种可借鉴的、基于移动技术的宿舍管理解决方案,推动高等教育信息化的进程。
二、开发环境
- 开发语言:Java
- 数据库:MySQL
- 系统架构:移动端端
- 后端:SpringBoot
- 前端:Vue
三、系统界面展示
- 学生宿舍管理微信小程序/安卓APP界面展示:
四、代码参考
- 微信小程序/安卓APP项目实战代码参考:
public class DormitoryManagementSystem extends JFrame {
private Connection connection;
private Statement statement;
private ResultSet resultSet;
private DefaultTableModel suSheModel = new DefaultTableModel(new String[]{"主键", "楼号", "房号", "入住人数","状态"}, 0);
private DefaultTableModel stuModel = new DefaultTableModel(new String[]{"主键", "学号", "姓名", "性别","年龄","毕业"}, 0);
private DefaultTableModel accidentModel = new DefaultTableModel(new String[]{"主键", "楼号", "房号", "事故描述"}, 0);
private DefaultTableModel goodModel = new DefaultTableModel(new String[]{"主键", "楼号", "物品名称", "数量"}, 0);
private JTable suSheTable;
private JTable stuTable;
private JTable accidentTable;
private JTable goodTable;
private JTextField suShebuildingField ;
private JTextField suSheRoomField;
private JTextField stuNoField = new JTextField(10);
private JTextField stuNameField = new JTextField(10);
private JTextField accidentBuildingField = new JTextField(10);
private JTextField accidentRoomField = new JTextField(10);
private JTextField goodBuildingField = new JTextField(10);
private JTextField goodNameField = new JTextField(10);
public DormitoryManagementSystem() {
JFrame frame = new JFrame("宿舍基本信息管理系统");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
JTabbedPane tabbedPane = createTabbedPane();
frame.getContentPane().add(tabbedPane);
frame.setVisible(true);
}
private JTabbedPane createTabbedPane() {
JTabbedPane tabbedPane = new JTabbedPane();
JPanel residentInfoPanel = createSuShePanel();
tabbedPane.addTab("宿舍基本信息", residentInfoPanel);
JPanel studentPanel = createStudentPanel();
tabbedPane.addTab("学生基本信息", studentPanel);
JPanel accidentPanel = createAccidentPanel();
tabbedPane.addTab("宿舍事故信息", accidentPanel);
JPanel goodPanel = createGoodPanel();
tabbedPane.addTab("宿舍楼物品信息", goodPanel);
return tabbedPane;
}
private JPanel createGoodPanel() {
// 创建界面
JPanel searchPanel = new JPanel();
goodBuildingField = new JTextField(10);
goodNameField = new JTextField(10);
JButton searchButton = new JButton("搜索");
searchButton.addActionListener(new GoodSearchButtonListener());
searchPanel.add(new JLabel("楼号:"));
searchPanel.add(goodBuildingField);
searchPanel.add(new JLabel("物品名称:"));
searchPanel.add(goodNameField);
searchPanel.add(searchButton);
JPanel tablePanel = new JPanel();
goodTable = new JTable(goodModel);
JScrollPane scrollPane = new JScrollPane(goodTable);
JButton printButton = new JButton("打印");
printButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取导出文件保存路径
String filePath = "宿舍物品信息导出.xlsx";
try {
// 创建Excel数据列表
java.util.List<java.util.List<Object>> dataList = new ArrayList<>();
// 添加表格列名
java.util.List<Object> columnNameList = new ArrayList<>();
for (int i = 0; i < goodModel.getColumnCount(); i++) {
columnNameList.add(goodModel.getColumnName(i));
}
dataList.add(columnNameList);
// 添加表格数据
for (int i = 0; i < goodModel.getRowCount(); i++) {
java.util.List<Object> rowDataList = new ArrayList<>();
for (int j = 0; j < goodModel.getColumnCount(); j++) {
rowDataList.add(goodModel.getValueAt(i, j));
}
dataList.add(rowDataList);
}
// 使用EasyExcel导出数据到Excel文件
EasyExcel.write(new FileOutputStream(new File(filePath))).sheet("Sheet1").doWrite(dataList);
JOptionPane.showMessageDialog(DormitoryManagementSystem.this, "导出成功!");
} catch (IOException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(DormitoryManagementSystem.this, "导出失败!");
}
}
});
searchPanel.add(printButton);
JPanel buttonPanel = new JPanel();
JButton modifyButton = new JButton("修改");
JButton deleteButton = new JButton("删除");
modifyButton.addActionListener(new GoodModifyButtonListener());
deleteButton.addActionListener(new GoodDeleteButtonListener());
buttonPanel.add(modifyButton);
buttonPanel.add(deleteButton);
tablePanel.setLayout(new BorderLayout());
tablePanel.add(searchPanel, BorderLayout.NORTH);
tablePanel.add(scrollPane, BorderLayout.CENTER);
tablePanel.add(buttonPanel, BorderLayout.SOUTH);
// 获取数据库连接
connection = JdbcConnection.getConnection();
// 查询所有记录并显示在表格中
executeQuery("SELECT * FROM accidents",accidentModel);
return tablePanel;
}
private class GoodModifyButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int selectedRow = goodTable.getSelectedRow();
if (selectedRow >= 0) {
// 获取选中行的id
long id = (Long)goodModel.getValueAt(selectedRow, 0) ;
String no = (String) goodModel.getValueAt(selectedRow, 1);
String name = (String) goodModel.getValueAt(selectedRow, 2);
int goodCount = (int) goodModel.getValueAt(selectedRow, 3);
// 创建修改窗口
JFrame modifyFrame = new JFrame("修改宿舍物品信息");
modifyFrame.setLayout(new FlowLayout());
modifyFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
modifyFrame.setSize(300, 200);
// 添加修改窗口的组件
JTextField noField = new JTextField(no, 15);
JTextField nameField = new JTextField(name, 15);
JTextField goodCountField = new JTextField(String.valueOf(goodCount), 10);
JButton confirmButton = new JButton("确认");
confirmButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
// 更新数据库中的记录
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE goods SET building_no=?, goods_name=?, goods_count=? WHERE id=?");
preparedStatement.setString(1, noField.getText());
preparedStatement.setString(2, nameField.getText());
preparedStatement.setString(3, goodCountField.getText());
preparedStatement.setLong(4, id);
preparedStatement.executeUpdate();
// 更新表格显示
executeQuery("SELECT * FROM goods",stuModel);
// 关闭修改窗口
modifyFrame.dispose();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
});
modifyFrame.add(new JLabel("楼号:"));
modifyFrame.add(noField);
modifyFrame.add(new JLabel("物品名称:"));
modifyFrame.add(nameField);
modifyFrame.add(new JLabel("物品数量:"));
modifyFrame.add(goodCountField);
modifyFrame.add(confirmButton);
modifyFrame.setVisible(true);
}
}
}
private JPanel createAccidentPanel() {
// 创建界面
JPanel searchPanel = new JPanel();
accidentBuildingField = new JTextField(10);
accidentRoomField = new JTextField(10);
JButton searchButton = new JButton("搜索");
searchButton.addActionListener(new AccidentSearchButtonListener());
searchPanel.add(new JLabel("楼号:"));
searchPanel.add(accidentBuildingField);
searchPanel.add(new JLabel("房号:"));
searchPanel.add(accidentRoomField);
searchPanel.add(searchButton);
JPanel tablePanel = new JPanel();
accidentTable = new JTable(accidentModel);
JScrollPane scrollPane = new JScrollPane(accidentTable);
JButton printButton = new JButton("打印");
printButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取导出文件保存路径
String filePath = "宿舍事故信息导出.xlsx";
try {
// 创建Excel数据列表
java.util.List<java.util.List<Object>> dataList = new ArrayList<>();
// 添加表格列名
java.util.List<Object> columnNameList = new ArrayList<>();
for (int i = 0; i < accidentModel.getColumnCount(); i++) {
columnNameList.add(accidentModel.getColumnName(i));
}
dataList.add(columnNameList);
// 添加表格数据
for (int i = 0; i < accidentModel.getRowCount(); i++) {
java.util.List<Object> rowDataList = new ArrayList<>();
for (int j = 0; j < accidentModel.getColumnCount(); j++) {
rowDataList.add(accidentModel.getValueAt(i, j));
}
dataList.add(rowDataList);
}
// 使用EasyExcel导出数据到Excel文件
EasyExcel.write(new FileOutputStream(new File(filePath))).sheet("Sheet1").doWrite(dataList);
JOptionPane.showMessageDialog(DormitoryManagementSystem.this, "导出成功!");
} catch (IOException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(DormitoryManagementSystem.this, "导出失败!");
}
}
});
searchPanel.add(printButton);
JPanel buttonPanel = new JPanel();
JButton modifyButton = new JButton("修改");
JButton deleteButton = new JButton("删除");
modifyButton.addActionListener(new AccidentModifyButtonListener());
deleteButton.addActionListener(new AccidentDeleteButtonListener());
buttonPanel.add(modifyButton);
buttonPanel.add(deleteButton);
tablePanel.setLayout(new BorderLayout());
tablePanel.add(searchPanel, BorderLayout.NORTH);
tablePanel.add(scrollPane, BorderLayout.CENTER);
tablePanel.add(buttonPanel, BorderLayout.SOUTH);
// 获取数据库连接
connection = JdbcConnection.getConnection();
// 查询所有记录并显示在表格中
executeQuery("SELECT * FROM accidents",accidentModel);
return tablePanel;
}
private JPanel createStudentPanel() {
// 创建界面
JPanel searchPanel = new JPanel();
stuNoField = new JTextField(10);
stuNameField = new JTextField(10);
JButton searchButton = new JButton("搜索");
searchButton.addActionListener(new StudentSearchButtonListener());
searchPanel.add(new JLabel("学号:"));
searchPanel.add(stuNoField);
searchPanel.add(new JLabel("姓名:"));
searchPanel.add(stuNameField);
searchPanel.add(searchButton);
JPanel tablePanel = new JPanel();
stuTable = new JTable(stuModel);
JScrollPane scrollPane = new JScrollPane(stuTable);
JButton printButton = new JButton("打印");
printButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取导出文件保存路径
String filePath = "学生基本信息导出.xlsx";
try {
// 创建Excel数据列表
java.util.List<java.util.List<Object>> dataList = new ArrayList<>();
// 添加表格列名
java.util.List<Object> columnNameList = new ArrayList<>();
for (int i = 0; i < stuModel.getColumnCount(); i++) {
columnNameList.add(stuModel.getColumnName(i));
}
dataList.add(columnNameList);
// 添加表格数据
for (int i = 0; i < stuModel.getRowCount(); i++) {
java.util.List<Object> rowDataList = new ArrayList<>();
for (int j = 0; j < stuModel.getColumnCount(); j++) {
rowDataList.add(stuModel.getValueAt(i, j));
}
dataList.add(rowDataList);
}
// 使用EasyExcel导出数据到Excel文件
EasyExcel.write(new FileOutputStream(new File(filePath))).sheet("Sheet1").doWrite(dataList);
JOptionPane.showMessageDialog(DormitoryManagementSystem.this, "导出成功!");
} catch (IOException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(DormitoryManagementSystem.this, "导出失败!");
}
}
});
searchPanel.add(printButton);
JPanel buttonPanel = new JPanel();
JButton modifyButton = new JButton("修改");
JButton deleteButton = new JButton("删除");
JButton addButton = new JButton("增加");
addButton.addActionListener(new StudentAddButtonListener());
modifyButton.addActionListener(new StuModifyButtonListener());
deleteButton.addActionListener(new StuDeleteButtonListener());
buttonPanel.add(addButton);
buttonPanel.add(modifyButton);
buttonPanel.add(deleteButton);
tablePanel.setLayout(new BorderLayout());
tablePanel.add(searchPanel, BorderLayout.NORTH);
tablePanel.add(scrollPane, BorderLayout.CENTER);
tablePanel.add(buttonPanel, BorderLayout.SOUTH);
// 获取数据库连接
connection = JdbcConnection.getConnection();
// 查询所有记录并显示在表格中
executeQuery("SELECT * FROM students",stuModel);
return tablePanel;
}
private JPanel createSuShePanel() {
JPanel searchPanel, tablePanel, buttonPanel;
JButton searchButton, modifyButton, deleteButton;
// 创建界面
searchPanel = new JPanel();
suShebuildingField = new JTextField(10);
suSheRoomField = new JTextField(10);
searchButton = new JButton("搜索");
searchButton.addActionListener(new SuSheSearchButtonListener());
searchPanel.add(new JLabel("楼号:"));
searchPanel.add(suShebuildingField);
searchPanel.add(new JLabel("房间号:"));
searchPanel.add(suSheRoomField);
searchPanel.add(searchButton);
//不可查询触发器维护
JButton printButton = new JButton("打印");
printButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取导出文件保存路径
String filePath = "学生宿舍基本信息.xlsx";
try {
// 创建Excel数据列表
java.util.List<java.util.List<Object>> dataList = new ArrayList<>();
// 添加表格列名
java.util.List<Object> columnNameList = new ArrayList<>();
for (int i = 0; i < suSheModel.getColumnCount(); i++) {
columnNameList.add(suSheModel.getColumnName(i));
}
dataList.add(columnNameList);
// 添加表格数据
for (int i = 0; i < suSheModel.getRowCount(); i++) {
java.util.List<Object> rowDataList = new ArrayList<>();
for (int j = 0; j < suSheModel.getColumnCount(); j++) {
rowDataList.add(suSheModel.getValueAt(i, j));
}
dataList.add(rowDataList);
}
// 使用EasyExcel导出数据到Excel文件
EasyExcel.write(new FileOutputStream(new File(filePath))).sheet("Sheet1").doWrite(dataList);
JOptionPane.showMessageDialog(DormitoryManagementSystem.this, "导出成功!");
} catch (IOException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(DormitoryManagementSystem.this, "导出失败!");
}
}
});
searchPanel.add(printButton);
tablePanel = new JPanel();
suSheTable = new JTable(suSheModel);
JScrollPane scrollPane = new JScrollPane(suSheTable);
buttonPanel = new JPanel();
modifyButton = new JButton("修改");
JButton addButton = new JButton("增加");
deleteButton = new JButton("删除");
modifyButton.addActionListener(new SuSheModifyButtonListener());
deleteButton.addActionListener(new SuSheDeleteButtonListener());
addButton.addActionListener(new SuSheAddButtonListener());
buttonPanel.add(addButton);
buttonPanel.add(modifyButton);
buttonPanel.add(deleteButton);
tablePanel.setLayout(new BorderLayout());
tablePanel.add(searchPanel, BorderLayout.NORTH);
tablePanel.add(scrollPane, BorderLayout.CENTER);
tablePanel.add(buttonPanel, BorderLayout.SOUTH);
// 获取数据库连接
connection = JdbcConnection.getConnection();
// 查询所有记录并显示在表格中
executeQuery("SELECT * FROM dormitories",suSheModel);
return tablePanel;
}
private boolean isTriggerEnabled() throws SQLException {
// 查询触发器状态
String sql = "SELECT TRIGGER_SCHEMA, TRIGGER_NAME, ACTION_TIMING, EVENT_MANIPULATION FROM INFORMATION_SCHEMA.TRIGGERS WHERE EVENT_OBJECT_TABLE = 'dormitories'";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
boolean result = false;
// 执行查询,并找到enable_trigger触发器是否存在
result = statement.executeQuery().next();
return result;
}
}
private void toggleTriggerState() throws SQLException {
// 根据当前触发器状态执行相应的动作
if (isTriggerEnabled()) {
disableTrigger();
} else {
enableTrigger();
}
}
private void enableTrigger() throws SQLException {
Connection connection = JdbcConnection.getConnection();
PreparedStatement statement = connection.prepareStatement("DROP TRIGGER IF EXISTS my_trigger;");
statement.executeUpdate();
statement.close();
connection.close();
}
private void disableTrigger() throws SQLException {
Connection connection = JdbcConnection.getConnection();
PreparedStatement statement = connection.prepareStatement("delimiter //\n" +
"CREATE TRIGGER my_trigger\n" +
"AFTER INSERT ON dormitories\n" +
"FOR EACH ROW\n" +
"BEGIN\n" +
" SET SESSION sql_select_limit = DEFAULT;\n" +
"END //\n" +
"delimiter ;\n");
statement.executeUpdate();
statement.close();
connection.close();
}
// 执行查询语句并更新表格显示
private void executeQuery(String query,DefaultTableModel defaultTableModel) {
try {
statement = connection.createStatement();
resultSet = statement.executeQuery(query);
// 清空表格模型的数据
defaultTableModel.setRowCount(0);
// // 获取结果集的元数据
ResultSetMetaData metaData = resultSet.getMetaData();
int columnCount = metaData.getColumnCount();
//
// // 添加表格的表头
// Vector<String> columnNames = new Vector<>();
// for (int i = 1; i <= columnCount; i++) {
// columnNames.add(metaData.getColumnName(i));
// }
// defaultTableModel.setColumnIdentifiers(columnNames);
// 添加结果集中的数据到表格模型
while (resultSet.next()) {
Vector<Object> rowData = new Vector<>();
for (int i = 1; i <= columnCount; i++) {
rowData.add(resultSet.getObject(i));
}
defaultTableModel.addRow(rowData);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// 搜索按钮的监听器
private class SuSheSearchButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String building = suShebuildingField.getText();
String room = suSheRoomField.getText();
String query = "SELECT * FROM dormitories WHERE 1=1";
// 根据楼号和房间号拼接查询语句
if(building != null && !building.equals("")){
query = query + " AND building_no='" + building + "'";
}
if(room != null && !room.equals("")){
query = query + " AND room_no='" + room + "'";
}
executeQuery(query,suSheModel);
}
}
private class StudentSearchButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String building = stuNoField.getText();
String room = stuNameField.getText();
String query = "SELECT * FROM students WHERE 1=1";
// 根据楼号和房间号拼接查询语句
if(building != null && !building.equals("")){
query = query + " AND no='" + building + "'";
}
if(room != null && !room.equals("")){
query = query + " AND name='" + room + "'";
}
executeQuery(query,stuModel);
}
}
private class GoodSearchButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String building = goodBuildingField.getText();
String room = goodNameField.getText();
String query = "SELECT * FROM goods WHERE 1=1";
// 根据楼号和房间号拼接查询语句
if(building != null && !building.equals("")){
query = query + " AND building_no='" + building + "'";
}
if(room != null && !room.equals("")){
query = query + " AND goods_name='" + room + "'";
}
executeQuery(query,goodModel);
}
}
private class AccidentSearchButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String building = accidentBuildingField.getText();
String room = accidentRoomField.getText();
String query = "SELECT * FROM accidents WHERE 1=1";
// 根据楼号和房间号拼接查询语句
if(building != null && !building.equals("")){
query = query + " AND building_no='" + building + "'";
}
if(room != null && !room.equals("")){
query = query + " AND room_no='" + room + "'";
}
executeQuery(query,accidentModel);
}
}
// 修改按钮的监听器
private class SuSheModifyButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int selectedRow = suSheTable.getSelectedRow();
if (selectedRow >= 0) {
// 获取选中行的id
int id = (int) suSheModel.getValueAt(selectedRow, 0);
String building = (String) suSheModel.getValueAt(selectedRow, 1);
String room = (String) suSheModel.getValueAt(selectedRow, 2);
int personCount = (int) suSheModel.getValueAt(selectedRow, 3);
// 创建修改窗口
JFrame modifyFrame = new JFrame("修改宿舍信息");
modifyFrame.setLayout(new FlowLayout());
modifyFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
modifyFrame.setSize(300, 200);
modifyFrame.setLayout(new GridLayout(4,2));
// 添加修改窗口的组件
JTextField buildingField = new JTextField(building, 15);
JTextField roomField = new JTextField(room, 15);
JTextField personCountField = new JTextField(String.valueOf(personCount), 10);
JButton confirmButton = new JButton("确认");
confirmButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
// 更新数据库中的记录
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE dormitories SET building_no=?, room_no=?, person_count=? WHERE id=?");
preparedStatement.setString(1, buildingField.getText());
preparedStatement.setString(2, roomField.getText());
preparedStatement.setInt(3, Integer.parseInt(personCountField.getText()));
preparedStatement.setInt(4, id);
preparedStatement.executeUpdate();
// 更新表格显示
executeQuery("SELECT * FROM dormitories",suSheModel);
// 关闭修改窗口
modifyFrame.dispose();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
});
modifyFrame.add(new JLabel("楼号:"));
modifyFrame.add(buildingField);
modifyFrame.add(new JLabel("房间号:"));
modifyFrame.add(roomField);
modifyFrame.add(new JLabel("入住人数:"));
modifyFrame.add(personCountField);
modifyFrame.add(confirmButton);
modifyFrame.setVisible(true);
}
}
}
// 增加按钮的监听器
private class SuSheAddButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// 创建修改窗口
JFrame modifyFrame = new JFrame("增加宿舍信息");
modifyFrame.setLayout(new FlowLayout());
modifyFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
modifyFrame.setSize(300, 200);
modifyFrame.setLayout(new GridLayout(4,2));
// 添加修改窗口的组件
JTextField buildingField = new JTextField("", 15);
JTextField roomField = new JTextField("", 15);
JTextField personCountField = new JTextField("", 10);
JButton confirmButton = new JButton("确认");
confirmButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
// 更新数据库中的记录
PreparedStatement preparedStatement = connection.prepareStatement("insert into dormitories values(null,?,?,?,'空置')");
preparedStatement.setString(1, buildingField.getText());
preparedStatement.setString(2, roomField.getText());
preparedStatement.setInt(3, Integer.parseInt(personCountField.getText()));
preparedStatement.executeUpdate();
// 更新表格显示
executeQuery("SELECT * FROM dormitories",suSheModel);
// 关闭修改窗口
modifyFrame.dispose();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
});
modifyFrame.add(new JLabel("楼号:"));
modifyFrame.add(buildingField);
modifyFrame.add(new JLabel("房间号:"));
modifyFrame.add(roomField);
modifyFrame.add(new JLabel("入住人数:"));
modifyFrame.add(personCountField);
modifyFrame.add(confirmButton);
modifyFrame.setVisible(true);
}
}
// 增加按钮的监听器
private class StudentAddButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// 创建修改窗口
JFrame modifyFrame = new JFrame("增加学生信息");
modifyFrame.setLayout(new FlowLayout());
modifyFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
modifyFrame.setSize(300, 200);
modifyFrame.setLayout(new GridLayout(6,2));
// 添加修改窗口的组件
JTextField noField = new JTextField("", 15);
JTextField nameField = new JTextField("", 15);
JTextField sexField = new JTextField("", 10);
JTextField ageField = new JTextField("", 10);
JTextField graduateField = new JTextField("", 10);
JButton confirmButton = new JButton("确认");
confirmButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
// 更新数据库中的记录
PreparedStatement preparedStatement = connection.prepareStatement("insert into students values(null,?,?,?,?,?)");
preparedStatement.setString(1, noField.getText());
preparedStatement.setString(2, nameField.getText());
preparedStatement.setString(3, sexField.getText());
preparedStatement.setInt(4, Integer.parseInt(ageField.getText()));
preparedStatement.setString(5, graduateField.getText());
preparedStatement.executeUpdate();
// 更新表格显示
executeQuery("SELECT * FROM students",stuModel);
// 关闭修改窗口
modifyFrame.dispose();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
});
modifyFrame.add(new JLabel("学号:"));
modifyFrame.add(noField);
modifyFrame.add(new JLabel("姓名:"));
modifyFrame.add(nameField);
modifyFrame.add(new JLabel("性别:"));
modifyFrame.add(sexField);
modifyFrame.add(new JLabel("年龄:"));
modifyFrame.add(ageField);
modifyFrame.add(new JLabel("是否毕业:"));
modifyFrame.add(graduateField);
modifyFrame.add(confirmButton);
modifyFrame.setVisible(true);
}
}
// 修改按钮的监听器
private class StuModifyButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int selectedRow = stuTable.getSelectedRow();
if (selectedRow >= 0) {
// 获取选中行的id
int id = (int) stuModel.getValueAt(selectedRow, 0);
String no = (String) stuModel.getValueAt(selectedRow, 1);
String name = (String) stuModel.getValueAt(selectedRow, 2);
String sex = (String) stuModel.getValueAt(selectedRow, 3);
int age = (int)stuModel.getValueAt(selectedRow,4);
String graduate = (String)stuModel.getValueAt(selectedRow,5);
// 创建修改窗口
JFrame modifyFrame = new JFrame("修改学生信息");
modifyFrame.setLayout(new FlowLayout());
modifyFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
modifyFrame.setSize(300, 200);
modifyFrame.setLayout(new GridLayout(6,2));
// 添加修改窗口的组件
JTextField noField = new JTextField(no, 15);
JTextField nameField = new JTextField(name, 15);
JTextField sexField = new JTextField(sex, 10);
JTextField ageField = new JTextField(String.valueOf(age),15);
JTextField graduateField = new JTextField(String.valueOf(graduate),15);
JButton confirmButton = new JButton("确认");
confirmButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
// 更新数据库中的记录
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE students SET no=?, name=?, sex=?,age=?,graduate=? WHERE id=?");
preparedStatement.setString(1, noField.getText());
preparedStatement.setString(2, nameField.getText());
preparedStatement.setString(3, sexField.getText());
preparedStatement.setInt(4, Integer.parseInt(ageField.getText()));
preparedStatement.setString(5, graduateField.getText());
preparedStatement.setInt(6, id);
preparedStatement.executeUpdate();
// 更新表格显示
executeQuery("SELECT * FROM students",stuModel);
// 关闭修改窗口
modifyFrame.dispose();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
});
modifyFrame.add(new JLabel("学号:"));
modifyFrame.add(noField);
modifyFrame.add(new JLabel("姓名:"));
modifyFrame.add(nameField);
modifyFrame.add(new JLabel("性别:"));
modifyFrame.add(sexField);
modifyFrame.add(new JLabel("年龄:"));
modifyFrame.add(ageField);
modifyFrame.add(new JLabel("毕业:"));
modifyFrame.add(graduateField);
modifyFrame.add(confirmButton);
modifyFrame.setVisible(true);
}
}
}
private class AccidentModifyButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int selectedRow = accidentTable.getSelectedRow();
if (selectedRow >= 0) {
// 获取选中行的id
int id = (int) accidentModel.getValueAt(selectedRow, 0);
String no = (String) accidentModel.getValueAt(selectedRow, 1);
String name = (String) accidentModel.getValueAt(selectedRow, 2);
String sex = (String) accidentModel.getValueAt(selectedRow, 3);
// 创建修改窗口
JFrame modifyFrame = new JFrame("修改事故信息");
modifyFrame.setLayout(new FlowLayout());
modifyFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
modifyFrame.setSize(300, 200);
modifyFrame.setLayout(new GridLayout(4,2));
// 添加修改窗口的组件
JTextField noField = new JTextField(no, 15);
JTextField nameField = new JTextField(name, 15);
JTextField sexField = new JTextField(sex, 10);
JButton confirmButton = new JButton("确认");
confirmButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
// 更新数据库中的记录
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE accidents SET building_no=?, room_no=?, reason=? WHERE id=?");
preparedStatement.setString(1, noField.getText());
preparedStatement.setString(2, nameField.getText());
preparedStatement.setString(3, sexField.getText());
preparedStatement.setInt(4, id);
preparedStatement.executeUpdate();
// 更新表格显示
executeQuery("SELECT * FROM students",stuModel);
// 关闭修改窗口
modifyFrame.dispose();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
});
modifyFrame.add(new JLabel("楼号:"));
modifyFrame.add(noField);
modifyFrame.add(new JLabel("房号:"));
modifyFrame.add(nameField);
modifyFrame.add(new JLabel("事故原因:"));
modifyFrame.add(sexField);
modifyFrame.add(confirmButton);
modifyFrame.setVisible(true);
}
}
}
// 删除按钮的监听器
private class SuSheDeleteButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int selectedRow = suSheTable.getSelectedRow();
if (selectedRow >= 0) {
int id = (int) suSheModel.getValueAt(selectedRow, 0);
int confirmResult = JOptionPane.showConfirmDialog(DormitoryManagementSystem.this, "确定要删除该记录吗?", "确认删除", JOptionPane.YES_NO_OPTION);
if (confirmResult == JOptionPane.YES_OPTION) {
try {
// 删除数据库中的记录
statement.executeUpdate("DELETE FROM dormitories WHERE id=" + id);
// 更新表格显示
executeQuery("SELECT * FROM dormitories",suSheModel);
// 弹窗显示删除成功字段
JOptionPane.showMessageDialog(DormitoryManagementSystem.this, "删除成功");
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
}
// 删除按钮的监听器
private class StuDeleteButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int selectedRow = stuTable.getSelectedRow();
if (selectedRow >= 0) {
int id = (int) stuModel.getValueAt(selectedRow, 0);
int confirmResult = JOptionPane.showConfirmDialog(DormitoryManagementSystem.this, "确定要删除该记录吗?", "确认删除", JOptionPane.YES_NO_OPTION);
if (confirmResult == JOptionPane.YES_OPTION) {
try {
// 删除数据库中的记录
statement.executeUpdate("DELETE FROM students WHERE id=" + id);
// 更新表格显示
executeQuery("SELECT * FROM students",stuModel);
// 弹窗显示删除成功字段
JOptionPane.showMessageDialog(DormitoryManagementSystem.this, "删除成功");
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
}
// 删除按钮的监听器
private class AccidentDeleteButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int selectedRow = accidentTable.getSelectedRow();
if (selectedRow >= 0) {
int id = (int) accidentModel.getValueAt(selectedRow, 0);
int confirmResult = JOptionPane.showConfirmDialog(DormitoryManagementSystem.this, "确定要删除该记录吗?", "确认删除", JOptionPane.YES_NO_OPTION);
if (confirmResult == JOptionPane.YES_OPTION) {
try {
// 删除数据库中的记录
statement.executeUpdate("DELETE FROM accidents WHERE id=" + id);
// 更新表格显示
executeQuery("SELECT * FROM accidents",accidentModel);
// 弹窗显示删除成功字段
JOptionPane.showMessageDialog(DormitoryManagementSystem.this, "删除成功");
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
}
// 删除按钮的监听器
private class GoodDeleteButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int selectedRow = goodTable.getSelectedRow();
if (selectedRow >= 0) {
long id = (long) goodModel.getValueAt(selectedRow, 0);
int confirmResult = JOptionPane.showConfirmDialog(DormitoryManagementSystem.this, "确定要删除该记录吗?", "确认删除", JOptionPane.YES_NO_OPTION);
if (confirmResult == JOptionPane.YES_OPTION) {
try {
// 删除数据库中的记录
statement.executeUpdate("DELETE FROM goods WHERE id=" + id);
// 更新表格显示
executeQuery("SELECT * FROM goods",goodModel);
// 弹窗显示删除成功字段
JOptionPane.showMessageDialog(DormitoryManagementSystem.this, "删除成功");
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
DormitoryManagementSystem system = new DormitoryManagementSystem();
}
});
}
}
public class LoginFrame extends JFrame {
private JTextField usernameField;
private JPasswordField passwordField;
private JButton loginButton;
public LoginFrame() {
// 设置布局
this.setSize(400,200);
int windowWidth = this.getWidth(); //获得窗口宽
int windowHeight = this.getHeight(); //获得窗口高
Toolkit kit = Toolkit.getDefaultToolkit(); //定义工具包
Dimension screenSize = kit.getScreenSize(); //获取屏幕的尺寸
int screenWidth = screenSize.width; //获取屏幕的宽
int screenHeight = screenSize.height; //获取屏幕的高
this.setLocation(screenWidth/2-windowWidth/2, screenHeight/2-windowHeight/2);//设置窗口居中显示
setLayout(new GridLayout(3,2));
// 创建用户名和密码输入框
JLabel usernameLabel = new JLabel("用户名:");
usernameField = new JTextField();
JLabel passwordLabel = new JLabel("密码:");
passwordField = new JPasswordField();
// 创建登录按钮
loginButton = new JButton("登录");
// 添加控件到界面
add(usernameLabel);
add(usernameField);
add(passwordLabel);
add(passwordField);
add(new JLabel());
add(loginButton);
// 绑定登录按钮的点击事件
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String username = usernameField.getText();
String password = new String(passwordField.getPassword());
if (checkRedisLogin(username)) {
// Redis中已登录,直接跳转到DormitoryManagementSystem界面
openDormitoryManagementSystem(username);
} else {
// 查询数据库进行登录验证
if (checkDatabaseLogin(username, password)) {
// 登录成功,显示登录成功提示,并将登录状态存储到Redis
JOptionPane.showMessageDialog(LoginFrame.this, "登录成功");
setRedisLogin(username);
openDormitoryManagementSystem(username);
} else {
// 登录失败,显示错误提示
JOptionPane.showMessageDialog(LoginFrame.this, "用户名或密码错误");
}
}
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
private boolean checkRedisLogin(String username) {
// 连接到 Redis
Jedis jedis = new Jedis("localhost", 6379);
// 查询 Redis 中指定用户名的登录状态
String value = jedis.get(username);
// 关闭 Redis 连接
jedis.close();
return value != null && value.equals("1");
}
private void setRedisLogin(String username) {
// 连接到 Redis
Jedis jedis = new Jedis("localhost", 6379);
// 设置指定用户名的登录状态为 1
jedis.set(username, "1");
// 关闭 Redis 连接
jedis.close();
}
private boolean checkDatabaseLogin(String username, String password) {
// 使用 JDBC 连接数据库
Connection connection = JdbcConnection.getConnection();
if (connection == null) {
return false;
}
try {
// 执行 SQL 查询
PreparedStatement statement = connection.prepareStatement("SELECT * FROM users WHERE username = ? AND passwd = ?");
statement.setString(1, username);
statement.setString(2, password);
ResultSet resultSet = statement.executeQuery();
// 如果查询结果有数据,则登录验证通过
if (resultSet.next()) {
resultSet.close();
statement.close();
connection.close();
return true;
}
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
private void openDormitoryManagementSystem(String username) {
DormitoryManagementSystem dormManagementSystem = new DormitoryManagementSystem();
dispose();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new LoginFrame();
}
});
}
}
五、论文参考
- 计算机毕业设计选题推荐-学生宿舍管理微信小程序/安卓APP论文参考:
六、系统视频
学生宿舍管理微信小程序/安卓APP项目视频:
计算机毕业设计选题推荐-学生宿舍管理微信小程序/安卓APP
结语
计算机毕业设计选题推荐-学生宿舍管理微信小程序/安卓APP
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我