当前位置: 首页 > news >正文

python+MySQL+HTML实现自习室座位管理系统

自习室座位管理系统

在这里插入图片描述

项目介绍

自习室座位管理系统是一个基于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 pymysql

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 中的数据库配置:

# 数据库配置
db_config = {
    'host': 'localhost',
    'user': 'root',
    'password': 'your_password',  # 修改为您的MySQL密码
    'database': 'zxxzw',
    'port': 3306,
    'charset': 'utf8mb4'
}

5、 启动应用

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 # 管理员-编辑通知

需要源码的,三连关注后私信

相关文章:

  • 大模型微调01-使用transforms进行lora微调
  • 关于离子滤波小记
  • 34个适合机械工程及自动化专业【论文选题】
  • 【计算机网络】2物理层
  • Day26 洛谷真题讲解(递推)(背包问题)
  • 【算法】 区间合并(附蓝桥杯真题) python
  • 如何解决:[/robot_state_publisher] Reason: new node registered with same name]
  • 群体智能优化算法-金豺优化算法(Golden Jackal Optimization, GJO,含Matlab源代码)
  • Go语言进化之旅:从1.18到1.24的语法变革
  • Spring 中的 bean 作用域
  • [AI] 从Trellis AI 模型生成本地化部署到投入Pinokio怀抱
  • K8S学习之基础二十九:K8S中的secret
  • 数据结构------线性表
  • 使用VisualStdio制作上位机(一)
  • Java 多线程编程:提升系统并发处理能力!
  • 常见限流算法及实现
  • python练习2
  • Java集合 - HashMap
  • 基于银河麒麟系统ARM架构安装达梦数据库并配置主从模式
  • 编程语言的几种常见的分类方法
  • 中国神鹰网站建设/app推广拉新一手渠道
  • 网络开发公司/优化服务公司
  • 建筑公司网站应该则么做/个人如何做网络推广
  • 做外贸企业网站要注意哪些/徐州seo排名公司
  • 局域网网站建设教程/东莞优化网站关键词优化
  • 网站域名解析后多久能生效/百度手机端排名如何优化