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

基于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. 安装依赖

pip install -r requirements.txt

4. 配置数据库

创建 MySQL 数据库:

CREATE DATABASE study_room_booking CHARACTER SET utf8mb4 COLLATE utf8mb4_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 runserver 0.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。

http://www.gsyq.cn/news/115143.html

相关文章:

  • 腾讯Agentic AI合规实践:提示工程架构师能学到什么?
  • 12、汇编语言中的符号常量与实地址模式编程
  • EmotiVoice能否实现多人对话自动分角色播报?
  • 零基础:100个小案例玩转Python游戏开发!第三节:对对碰游戏(上)
  • 从文本到情感语音:EmotiVoice的工作原理详解
  • 编程新人别硬卷!网安:起薪高20%,3年就能当骨干
  • 国产代码托管平台崛起:Gitee如何赋能企业级开发协作
  • 双锥混合机2025最新厂家推荐排行榜,专业实力与客户满意度深
  • 国产DevOps平台Gitee如何破解企业研发管理痛点?
  • 2025代码托管平台深度评测:本土化与全球化如何抉择?
  • 国产DevOps平台崛起:Gitee如何重塑企业数字化转型安全防线
  • 【不会被发现】微信留言人工点赞教程?公众号评论点赞别人知道是谁点的吗? - 速递信息
  • 《60天AI学习计划启动 | Day 41: LangChain 复杂 Chain(Router / Parallel / Map-Reduce)》
  • 基于java+ vue动物园管理系统(源码+数据库+文档)
  • 251216不是没写,是熬夜到了四点
  • 开源协议兼容性检查:EmotiVoice可否集成至闭源系统?
  • 2025年加药箱搅拌罐订做厂家权威推荐榜单:大锥底水塔/锥底桶/50吨大锥底源头厂家精选 - 品牌推荐官
  • 2025年重庆三角洲陪玩公司权威推荐榜单:三角洲高KD陪玩/三角洲行动陪玩/三角洲升级陪玩专业服务机构精选 - 品牌推荐官
  • 2025 十大厨余处理器实力 PK:研磨精度与排水能力,这些机型值得关注 - 速递信息
  • 2025年12月桥梁圆柱模,定制圆柱模,调节式圆柱模厂家品牌推荐榜,彰显国产技术实力 - 品牌鉴赏师
  • 上海旧房翻新找专业公司!2025年12月权威榜单出炉,十家实力企业上榜 - 速递信息
  • 软件测试心得-压测
  • jQuery EasyUI 数据网格 - 动态改变列
  • jQuery EasyUI 布局 - 创建 XP 风格左侧面板
  • 2025 年 12 月工业自动化设备厂家权威推荐榜:上料机/工业机器人/自动化设备,智能高效与稳定可靠的技术先锋深度解析 - 品牌企业推荐师(官方)
  • 唤醒沉睡脑力,轻松高效记忆
  • 提示工程架构师进阶:Agentic AI创新应用的高级案例分析
  • EmotiVoice项目GitHub爆火背后的原因分析
  • 语音合成个性化推荐系统:基于用户偏好选择音色
  • 2026毕设ssm+vue基于框架的宿舍管理系统论文+程序