自习室座位管理系统
项目介绍
自习室座位管理系统是一个基于Python Flask框架开发的Web应用,旨在提供高效、便捷的自习室座位预约和管理功能。该系统适用于学校图书馆、自习室等场所,帮助管理员有效管理座位资源,同时为学生提供便捷的座位预约服务。
功能特点
1、 用户认证模块
- 用户注册:学生可以注册账号,填写个人信息
- 用户登录:支持学生和管理员登录
- 找回密码:通过邮箱验证重置密码
2、 座位管理模块
- 座位预约:学生可以查看并预约可用座位
- 暂时离开:学生可以临时离开座位但保留预约
- 回到座位:学生可以在暂时离开后返回座位
- 离开座位:学生可以结束使用并释放座位
- 取消预约:学生可以取消已经预约的座位
3、 学生管理模块
- 个人信息管理:学生可以查看和修改个人信息
- 预约历史查询:学生可以查看自己的预约历史
- 管理员功能:管理员可以查看、修改和删除学生信息
- 预约管理:管理员可以查看所有预约记录,并可以取消学生预约
4、 信息管理模块
- 通知公告发布:管理员可以发布通知公告
- 通知公告编辑:管理员可以编辑已发布的通知
- 通知公告删除:管理员可以删除不需要的通知
技术架构
前端
- Bootstrap 5:提供响应式布局和UI组件
- Bootstrap Icons:提供丰富的图标库
- HTML/CSS/JavaScript:构建用户界面和交互功能
后端
- Python Flask:轻量级Web框架
- PyMySQL:Python的MySQL客户端库
- Session管理:用户认证和权限控制
- 密码哈希:使用SHA-256保护用户密码
数据库
- MySQL:关系型数据库存储系统数据
- 表结构:
users
:用户账号信息student_info
:学生个人信息seats
:座位信息seat_reservations
:座位预约记录notices
:通知公告
安装与部署
环境要求
- Python 3、6+
- MySQL 5、7+
- 必要的Python库:Flask, PyMySQL
安装步骤
1、 下载项目到本地
2、 安装依赖
pip install flask pyhtml" title=mysql>mysql
3、 创建数据库
CREATE DATABASE IF NOT EXISTS zxxzw;
USE zxxzw;-- 用户表
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(255) NOT NULL,email VARCHAR(100) NOT NULL UNIQUE,role ENUM('student', 'admin') NOT NULL DEFAULT 'student',created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);-- 学生信息表
CREATE TABLE student_info (id INT AUTO_INCREMENT PRIMARY KEY,user_id INT NOT NULL,student_id VARCHAR(20) NOT NULL UNIQUE,name VARCHAR(50) NOT NULL,gender ENUM('male', 'female', 'other') NOT NULL,department VARCHAR(100),phone VARCHAR(20),FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);-- 座位表
CREATE TABLE seats (id INT AUTO_INCREMENT PRIMARY KEY,seat_number VARCHAR(20) NOT NULL UNIQUE,location VARCHAR(100) NOT NULL,status ENUM('available', 'occupied', 'temporarily_left', 'reserved') NOT NULL DEFAULT 'available'
);-- 座位预约表
CREATE TABLE seat_reservations (id INT AUTO_INCREMENT PRIMARY KEY,user_id INT NOT NULL,seat_id INT NOT NULL,start_time DATETIME NOT NULL,end_time DATETIME,status ENUM('active', 'completed', 'cancelled', 'temporarily_left') NOT NULL DEFAULT 'active',created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,FOREIGN KEY (seat_id) REFERENCES seats(id) ON DELETE CASCADE
);-- 通知公告表
CREATE TABLE notices (id INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(100) NOT NULL,content TEXT NOT NULL,created_by INT NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE CASCADE
);-- 添加一些初始座位数据
INSERT INTO seats (seat_number, location) VALUES
('A1', '一楼阅览室'),
('A2', '一楼阅览室'),
('A3', '一楼阅览室'),
('B1', '二楼自习室'),
('B2', '二楼自习室'),
('B3', '二楼自习室'),
('C1', '三楼研讨室'),
('C2', '三楼研讨室'),
('C3', '三楼研讨室');-- 创建一个管理员账号
INSERT INTO users (username, password, email, role) VALUES
('admin', '8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918', 'admin@example、com', 'admin');
-- 密码是 'admin' 的SHA-256哈希值
4、 配置数据库连接
修改 db、py
中的数据库配置:
html" title=python>python"># 数据库配置
db_config = {'host': 'localhost','user': 'root','password': 'your_password', # 修改为您的MySQL密码'database': 'zxxzw','port': 3306,'charset': 'utf8mb4'
}
5、 启动应用
html" title=python>python app、py
6、 访问系统
打开浏览器,访问 http://127、0、0、1:5000 或 http://localhost:5000
使用指南
管理员账号
- 用户名:admin
- 密码:admin
学生使用流程
1、 注册账号并登录
2、 在座位管理页面查看可用座位
3、 选择座位进行预约
4、 使用座位期间可以选择"暂时离开"
5、 使用完毕后选择"离开座位"
6、 在个人信息页面可以查看预约历史
管理员使用流程
1、 使用管理员账号登录
2、 在学生管理页面可以查看、编辑和删除学生信息
3、 在预约管理页面可以查看所有预约记录
4、 在通知管理页面可以发布、编辑和删除通知
系统安全性
1、 密码加密存储:使用SHA-256哈希算法保护用户密码
2、 会话管理:防止未授权访问
3、 权限控制:区分普通用户和管理员权限
4、 输入验证:前后端都进行数据验证
项目结构
自习室座位管理系统/
├── app、py # 主应用文件,包含路由和业务逻辑
├── db、py # 数据库操作函数
├── static/ # 静态资源
│ └── css/
│ └── style、css # 自定义样式
└── templates/ # HTML模板├── login、html # 登录页面├── register、html # 注册页面├── reset_password、html # 重置密码页面├── dashboard、html # 仪表盘/首页├── seat_management、html # 座位管理页面├── profile、html # 个人信息页面├── my_reservations、html # 我的预约历史├── admin_students、html # 管理员-学生管理├── admin_edit_student、html # 管理员-编辑学生├── admin_reservations、html # 管理员-预约管理├── admin_student_reservations、html # 管理员-学生预约详情├── admin_notices、html # 管理员-通知管理├── admin_create_notice、html # 管理员-创建通知└── admin_edit_notice、html # 管理员-编辑通知
需要源码的,三连关注后私信