用sql语句和python语句做出一个简易的高校宿舍管理系统
时间: 2023-07-07 07:46:30 浏览: 97
高校宿舍管理系统需要设计数据库模型,包括宿舍楼信息、房间信息、学生信息等。以下是一个简单的数据库模型设计:
- 宿舍楼表 dormitory_building:id、name、address、manager
- 房间表 room:id、building_id、room_number、number_of_beds、available_beds
- 学生表 student:id、name、gender、birthday、major、room_id
其中,dormitory_building 的 id 为主键,room 的 id 为主键,student 的 id 为主键,room 的 building_id 为外键,student 的 room_id 为外键。
接下来,我们可以使用 SQL 语句创建上述表格,并插入测试数据。
```sql
-- 创建宿舍楼表
CREATE TABLE dormitory_building (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
address VARCHAR(50) NOT NULL,
manager VARCHAR(50) NOT NULL
);
-- 创建房间表
CREATE TABLE room (
id INT PRIMARY KEY,
building_id INT NOT NULL,
room_number INT NOT NULL,
number_of_beds INT NOT NULL,
available_beds INT NOT NULL,
FOREIGN KEY (building_id) REFERENCES dormitory_building(id)
);
-- 创建学生表
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
gender VARCHAR(10) NOT NULL,
birthday DATE NOT NULL,
major VARCHAR(50) NOT NULL,
room_id INT NOT NULL,
FOREIGN KEY (room_id) REFERENCES room(id)
);
-- 插入测试数据
INSERT INTO dormitory_building VALUES (1, '1号宿舍楼', 'XX路XX号', '张三');
INSERT INTO dormitory_building VALUES (2, '2号宿舍楼', 'XX路XX号', '李四');
INSERT INTO room VALUES (1, 1, 101, 4, 4);
INSERT INTO room VALUES (2, 1, 102, 4, 3);
INSERT INTO room VALUES (3, 2, 201, 4, 4);
INSERT INTO student VALUES (1, '小明', '男', '1999-01-01', '计算机科学', 1);
INSERT INTO student VALUES (2, '小红', '女', '1999-02-02', '数学', 1);
INSERT INTO student VALUES (3, '小张', '男', '1999-03-03', '物理', 2);
INSERT INTO student VALUES (4, '小李', '女', '1999-04-04', '化学', 3);
```
接下来,我们可以使用 Python 语句连接数据库,实现宿舍管理系统的基本功能,例如查询宿舍楼、查询房间、查询学生、分配房间等。
```python
import sqlite3
# 连接数据库
conn = sqlite3.connect('dormitory.db')
# 查询宿舍楼
def get_dormitory_building():
cursor = conn.execute('SELECT * FROM dormitory_building;')
for row in cursor:
print(row)
# 查询某个宿舍楼的房间
def get_room(building_id):
cursor = conn.execute('SELECT * FROM room WHERE building_id=?;', (building_id,))
for row in cursor:
print(row)
# 查询某个房间的学生
def get_student(room_id):
cursor = conn.execute('SELECT * FROM student WHERE room_id=?;', (room_id,))
for row in cursor:
print(row)
# 分配房间
def assign_room(student_id, room_id):
cursor = conn.execute('UPDATE student SET room_id=? WHERE id=?;', (room_id, student_id))
conn.commit()
print('分配成功!')
# 查询某个学生所在的房间
def get_student_room(student_id):
cursor = conn.execute('SELECT room.* FROM student JOIN room ON student.room_id=room.id WHERE student.id=?;', (student_id,))
for row in cursor:
print(row)
# 测试代码
get_dormitory_building()
get_room(1)
get_student(1)
assign_room(4, 1)
get_student_room(4)
# 关闭数据库连接
conn.close()
```
以上代码实现了查询宿舍楼、查询房间、查询学生、分配房间、查询学生所在的房间等功能,可以根据实际需求进行扩展和优化。
阅读全文