用java和数据库编写一个宿舍管理系统
时间: 2023-09-04 07:08:41 浏览: 44
好的,下面是一个使用 Java 和 MySQL 数据库编写的宿舍管理系统的代码示例:
首先,我们需要创建一个 MySQL 数据库并创建以下表格:
- dormitories(宿舍表):id(主键,自增)、number(宿舍号)、capacity(容纳人数)
- students(学生表):id(主键,自增)、name(姓名)、student_id(学号)、dormitory_id(外键,关联宿舍表)
接下来,我们可以使用 Java 连接 MySQL 数据库,创建以下 Java 类:
Student.java:
```java
public class Student {
private int id;
private String name;
private String studentId;
private int dormitoryId;
public Student(int id, String name, String studentId, int dormitoryId) {
this.id = id;
this.name = name;
this.studentId = studentId;
this.dormitoryId = dormitoryId;
}
// getter and setter methods
}
```
Dormitory.java:
```java
import java.util.List;
public class Dormitory {
private int id;
private String number;
private int capacity;
private List<Student> students;
public Dormitory(int id, String number, int capacity, List<Student> students) {
this.id = id;
this.number = number;
this.capacity = capacity;
this.students = students;
}
// getter and setter methods
}
```
DormitoryManagementSystem.java:
```java
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class DormitoryManagementSystem {
private Connection connection;
public DormitoryManagementSystem(String url, String username, String password) throws SQLException {
connection = DriverManager.getConnection(url, username, password);
}
public void addDormitory(String number, int capacity) throws SQLException {
String sql = "INSERT INTO dormitories (number, capacity) VALUES (?, ?)";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
statement.setString(1, number);
statement.setInt(2, capacity);
statement.executeUpdate();
}
}
public void removeDormitory(int id) throws SQLException {
String sql = "DELETE FROM dormitories WHERE id = ?";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
statement.setInt(1, id);
statement.executeUpdate();
}
}
public List<Dormitory> getAllDormitories() throws SQLException {
String sql = "SELECT * FROM dormitories";
try (PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery()) {
List<Dormitory> dormitories = new ArrayList<>();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String number = resultSet.getString("number");
int capacity = resultSet.getInt("capacity");
List<Student> students = getStudentsByDormitoryId(id);
Dormitory dormitory = new Dormitory(id, number, capacity, students);
dormitories.add(dormitory);
}
return dormitories;
}
}
public void addStudent(String name, String studentId, int dormitoryId) throws SQLException {
String sql = "INSERT INTO students (name, student_id, dormitory_id) VALUES (?, ?, ?)";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
statement.setString(1, name);
statement.setString(2, studentId);
statement.setInt(3, dormitoryId);
statement.executeUpdate();
}
}
public void removeStudent(int id) throws SQLException {
String sql = "DELETE FROM students WHERE id = ?";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
statement.setInt(1, id);
statement.executeUpdate();
}
}
public List<Student> getStudentsByDormitoryId(int dormitoryId) throws SQLException {
String sql = "SELECT * FROM students WHERE dormitory_id = ?";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
statement.setInt(1, dormitoryId);
try (ResultSet resultSet = statement.executeQuery()) {
List<Student> students = new ArrayList<>();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String studentId = resultSet.getString("student_id");
Student student = new Student(id, name, studentId, dormitoryId);
students.add(student);
}
return students;
}
}
}
public static void main(String[] args) throws SQLException {
DormitoryManagementSystem system = new DormitoryManagementSystem("jdbc:mysql://localhost:3306/dormitory", "root", "password");
system.addDormitory("A1", 4);
system.addDormitory("A2", 6);
List<Dormitory> dormitories = system.getAllDormitories();
for (Dormitory dormitory : dormitories) {
System.out.println(dormitory.getNumber() + " (" + dormitory.getCapacity() + ")");
List<Student> students = dormitory.getStudents();
for (Student student : students) {
System.out.println(" - " + student.getName() + " (" + student.getStudentId() + ")");
}
}
}
}
```
这个系统包含三个类:`Student`(学生)、`Dormitory`(宿舍)和 `DormitoryManagementSystem`(宿舍管理系统)。`Student` 类包含 ID、姓名、学号和宿舍 ID;`Dormitory` 类包含 ID、宿舍号、容量和学生列表;`DormitoryManagementSystem` 类包含数据库连接和对数据库进行增删改查的方法。
在 `main` 方法中,我们创建了一个 `DormitoryManagementSystem` 对象并向数据库中添加了两个宿舍。然后,我们获取所有宿舍和它们的学生,并将它们打印到控制台上。
请注意,在实际项目中,我们需要更多的异常处理和安全措施来保护数据库和用户数据。