news 2026/6/23 18:48:16

基于Python+django的大学生自习室预约系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于Python+django的大学生自习室预约系统

这是一个基于 Django 开发的大学生自习室预约系统,支持用户注册登录、自习室浏览、座位预约、签到等功能。适合大学生的课程作业/课程设计。

演示效果

http://room.gitapp.cn

源码地址

https://github.com/geeeeeeeek/python_room

功能特性

用户功能

  • ✅ 用户注册与登录(学号、邮箱)
  • ✅ 个人资料管理(昵称、联系方式、头像)
  • ✅ 浏览自习室列表及详情
  • ✅ 查看座位布局和实时状态
  • ✅ 在线预约座位(按日期和时段)
  • ✅ 查看我的预约记录
  • ✅ 取消预约
  • ✅ 预约签到功能
  • ✅ 查看签到记录

管理员功能

  • ✅ 自习室管理(增删改查)
  • ✅ 座位管理(批量操作、状态设置)
  • ✅ 用户管理(封禁、解禁)
  • ✅ 预约管理(审核、查看)
  • ✅ 签到记录查看
  • ✅ 黑名单管理

预约规则

  • 每人每日最多可预约 3 个时段
  • 预约时段:上午(08:00-12:00)、下午(13:00-17:00)、晚上(18:00-22:00)
  • 需在预约时段内签到,否则预约自动过期
  • 可提前取消不需要的预约

技术栈

  • 后端框架: Django 3.2
  • 数据库: MySQL 5.7+
  • 前端: Bootstrap 5 + jQuery
  • Python: 3.8+

项目结构

study_room_booking/ ├── accounts/ # 用户管理应用 │ ├── models.py # 用户模型、黑名单模型 │ ├── views.py # 注册、登录、个人资料视图 │ ├── forms.py # 用户表单 │ └── admin.py # Admin后台配置 ├── rooms/ # 自习室管理应用 │ ├── models.py # 自习室、座位模型 │ ├── views.py # 自习室列表、详情视图 │ └── admin.py # Admin后台配置 ├── bookings/ # 预约管理应用 │ ├── models.py # 预约、签到模型 │ ├── views.py # 预约、签到视图 │ ├── forms.py # 预约表单 │ └── admin.py # Admin后台配置 ├── templates/ # 模板文件 │ ├── base.html # 基础模板 │ ├── home.html # 首页 │ ├── accounts/ # 用户相关模板 │ ├── rooms/ # 自习室相关模板 │ └── bookings/ # 预约相关模板 ├── static/ # 静态文件 │ ├── css/ # 样式文件 │ ├── js/ # JavaScript文件 │ └── images/ # 图片资源 ├── media/ # 媒体文件(用户上传) │ ├── avatars/ # 用户头像 │ └── room_images/ # 自习室图片 └── study_room_booking/ # 项目配置 ├── settings.py # 项目设置 ├── urls.py # URL路由 └── wsgi.py # WSGI配置

安装部署

1. 环境要求

  • Python 3.8+
  • MySQL 5.7+
  • pip

2. 克隆项目

cd/path/to/your/project

3. 安装依赖

pipinstall-r requirements.txt

4. 配置数据库

创建 MySQL 数据库:

CREATEDATABASEstudy_room_bookingCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;

修改study_room_booking/settings.py中的数据库配置:

DATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':'study_room_booking','USER':'your_mysql_user','PASSWORD':'your_mysql_password','HOST':'localhost','PORT':'3306','OPTIONS':{'charset':'utf8mb4','init_command':"SET sql_mode='STRICT_TRANS_TABLES'",}}}

5. 执行数据库迁移

python manage.py makemigrations python manage.py migrate

6. 创建超级管理员

python manage.py createsuperuser

按提示输入用户名、学号、邮箱和密码。

7. 运行开发服务器

python manage.py runserver0.0.0.0:8000

访问http://localhost:8000查看系统。

使用说明

普通用户

  1. 注册账号: 访问首页点击"注册",填写学号、邮箱等信息
  2. 浏览自习室: 登录后可查看所有开放的自习室
  3. 预约座位: 选择自习室 → 查看座位布局 → 点击"预约座位"按钮
  4. 管理预约: 在"我的预约"页面可查看、取消预约
  5. 签到: 到达自习室后,在预约时段内点击"签到"按钮
  6. 查看记录: 在"签到记录"页面查看历史学习记录

管理员

  1. 登录后台: 访问http://localhost:8000/admin
  2. 管理自习室: 添加/编辑自习室信息、设置开放时间
  3. 管理座位: 批量添加座位、设置座位状态和配置
  4. 用户管理: 查看用户信息、封禁违规用户
  5. 预约管理: 查看所有预约记录、处理异常预约
  6. 数据统计: 查看座位利用率、活跃用户等数据

数据库设计

主要数据表

  • accounts_user: 用户表(扩展自Django User)
  • accounts_blacklist: 黑名单表
  • rooms_studyroom: 自习室表
  • rooms_seat: 座位表
  • bookings_booking: 预约表
  • bookings_checkin: 签到表

关系说明

  • 一个自习室有多个座位(一对多)
  • 一个用户可以有多个预约(一对多)
  • 一个座位可以有多个预约(一对多)
  • 一个预约对应一个签到记录(一对一)

开发说明

添加新功能

  1. 在对应的 app 中创建模型
  2. 生成并执行迁移文件
  3. 创建视图函数和表单
  4. 配置 URL 路由
  5. 创建模板页面
  6. 注册到 Admin 后台

代码规范

  • 遵循 PEP 8 Python 编码规范
  • 模型、视图、表单分离
  • 使用 Django 的类视图(可选)
  • 添加必要的注释和文档字符串

常见问题

1. 数据库连接错误

检查 MySQL 服务是否启动,数据库配置是否正确。

2. 静态文件无法加载

确保执行了collectstatic命令,并检查STATIC_ROOT配置。

3. 图片上传失败

检查MEDIA_ROOT目录权限,确保 Django 有写入权限。

4. 时区问题

系统默认使用 Asia/Shanghai 时区,可在 settings.py 中修改TIME_ZONE配置。

许可证

本项目仅供学习交流使用。不得商用。

联系方式

如有问题或建议,欢迎提交 Issue。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 19:49:00

如何快速掌握Obsidian标题自动编号:笔记爱好者的完整指南

如何快速掌握Obsidian标题自动编号:笔记爱好者的完整指南 【免费下载链接】number-headings-obsidian Automatically number headings in a document in Obsidian 项目地址: https://gitcode.com/gh_mirrors/nu/number-headings-obsidian 还在为Obsidian笔记…

作者头像 李华
网站建设 2026/6/21 20:58:52

VSCode端口映射避坑指南(99%新手都会忽略的关键细节)

第一章:VSCode端口映射的核心概念与常见误区VSCode的端口映射功能是远程开发(Remote Development)中的关键特性,尤其在使用SSH、Docker或WSL时,允许开发者将运行在远程或容器内的服务暴露到本地浏览器访问。其核心原理…

作者头像 李华
网站建设 2026/6/23 5:29:18

终极越狱教程:iPhone 7完美解锁iOS 15+系统权限

palera1n是一款专为arm64设备设计的iOS越狱工具,支持iOS 15.0及以上系统版本。本教程将详细介绍如何为iPhone 7设备实现安全可靠的越狱操作。 【免费下载链接】palera1n Jailbreak for arm64 devices on iOS 15.0 项目地址: https://gitcode.com/GitHub_Trending/…

作者头像 李华
网站建设 2026/6/23 11:15:53

26、UNIX与Linux系统的安全、卸载及其他实用知识

UNIX与Linux系统的安全、卸载及其他实用知识 1. 系统安全保障 要确保计算机完全免受安全漏洞的威胁,最保险的方法是断开与互联网的连接,并且不加载任何支持宏的程序或文档。但这显然不切实际,因此我们需要采取一些措施来增加网络计算机遭受安全攻击的难度,以下是一些可行…

作者头像 李华
网站建设 2026/6/23 1:49:46

终极指南:5步构建企业级Next.js仪表板认证系统

终极指南:5步构建企业级Next.js仪表板认证系统 【免费下载链接】next-shadcn-dashboard-starter Admin Dashboard Starter with Nextjs14 and shadcn ui 项目地址: https://gitcode.com/gh_mirrors/ne/next-shadcn-dashboard-starter 在当今快速发展的数字化…

作者头像 李华
网站建设 2026/6/22 9:41:44

rclone云存储配置全攻略:从零基础到高效数据同步专家

还在为多平台文件管理而头疼吗?数据分散在Google Drive、OneDrive、Dropbox等不同云存储中,手动复制粘贴既耗时又容易出错。今天,让我们一起来掌握rclone这款云存储同步神器的配置技巧,让数据管理变得轻松高效! 【免费…

作者头像 李华