多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

基于 Python + Django 的学生宿舍管理系统

基于 Python + Django 的学生宿舍管理系统 温馨提示本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片1. 项目背景随着高校招生规模不断扩大学生宿舍管理的复杂度也在持续上升。传统的人工登记、纸质台账方式存在信息更新不及时、查询效率低、数据易丢失等问题。为了提升宿舍管理效率本文设计并实现一套基于 Python 和 Django 框架的学生宿舍管理系统覆盖宿舍分配、入住登记、退宿管理、报修处理、访客登记等核心业务场景。2. 技术选型本系统采用以下技术栈后端框架Django 4.x基于 MTV 架构自带 ORM、Admin 后台和认证体系。前端界面Bootstrap 5 jQuery保证页面响应式布局和交互体验。数据库MySQL 8.0通过 Django ORM 完成数据建模与迁移。缓存与会话Redis用于会话存储和热点数据缓存。部署环境Nginx Gunicorn运行于 Linux 服务器。3. 系统功能模块系统按角色划分为管理员、宿管员和学生三类用户主要功能模块如下模块功能说明适用角色用户认证登录、注册、密码修改、权限控制全部用户宿舍管理楼栋、房间、床位信息维护管理员、宿管员入住管理学生入住登记、床位分配、调宿申请管理员、宿管员退宿管理退宿登记、物品清点、费用结算管理员、宿管员报修管理在线报修、维修派单、进度跟踪全部用户访客登记访客信息登记、出入记录查询宿管员数据统计入住率、空床位、报修完成率等报表管理员4. 数据库设计系统核心数据表包括用户表、宿舍楼表、房间表、床位表、入住记录表、报修单表和访客记录表。以下为主要表结构说明from django.db import models from django.contrib.auth.models import AbstractUser class User(AbstractUser): ROLE_CHOICES ( (admin, 管理员), (manager, 宿管员), (student, 学生), ) role models.CharField(max_length20, choicesROLE_CHOICES, defaultstudent) student_no models.CharField(max_length20, blankTrue, nullTrue, verbose_name学号) class Building(models.Model): name models.CharField(max_length50, verbose_name楼栋名称) address models.CharField(max_length100, verbose_name楼栋位置) manager models.ForeignKey(User, on_deletemodels.SET_NULL, nullTrue, related_namemanaged_buildings) class Room(models.Model): building models.ForeignKey(Building, on_deletemodels.CASCADE, related_namerooms) room_no models.CharField(max_length20, verbose_name房间号) capacity models.IntegerField(default4, verbose_name可住人数) floor models.IntegerField(verbose_name楼层) class Bed(models.Model): room models.ForeignKey(Room, on_deletemodels.CASCADE, related_namebeds) bed_no models.CharField(max_length10, verbose_name床位号) is_occupied models.BooleanField(defaultFalse, verbose_name是否已入住) class CheckInRecord(models.Model): student models.ForeignKey(User, on_deletemodels.CASCADE, related_namecheckin_records) bed models.ForeignKey(Bed, on_deletemodels.CASCADE) check_in_date models.DateField(auto_now_addTrue, verbose_name入住日期) check_out_date models.DateField(nullTrue, blankTrue, verbose_name退宿日期) class RepairOrder(models.Model): STATUS_CHOICES ( (pending, 待处理), (processing, 处理中), (done, 已完成), ) reporter models.ForeignKey(User, on_deletemodels.CASCADE, related_namerepair_orders) room models.ForeignKey(Room, on_deletemodels.CASCADE) description models.TextField(verbose_name故障描述) status models.CharField(max_length20, choicesSTATUS_CHOICES, defaultpending) created_at models.DateTimeField(auto_now_addTrue)5. 核心功能实现5.1 宿舍分配宿舍分配是系统的核心流程。管理员选择楼栋和房间后系统自动列出空余床位学生入住时更新床位状态并生成入住记录。实现代码如下from django.shortcuts import get_object_or_404 from .models import Room, Bed, CheckInRecord def assign_bed(request, room_id, student_id): room get_object_or_404(Room, idroom_id) bed Bed.objects.filter(roomroom, is_occupiedFalse).first() if not bed: return {success: False, message: 该房间暂无空余床位} bed.is_occupied True bed.save() CheckInRecord.objects.create( student_idstudent_id, bedbed, ) return {success: True, message: 入住登记成功}5.2 报修流程学生提交报修单后宿管员可查看并更新处理状态。系统通过状态字段跟踪整个维修流程from django.views.decorators.http import require_POST from django.http import JsonResponse from .models import RepairOrder require_POST def update_repair_status(request, order_id): order get_object_or_404(RepairOrder, idorder_id) new_status request.POST.get(status) if new_status in dict(RepairOrder.STATUS_CHOICES): order.status new_status order.save() return JsonResponse({success: True}) return JsonResponse({success: False, message: 无效的状态值})6. 页面展示与路由配置系统采用 Django 模板引擎渲染页面路由配置如下from django.urls import path from . import views urlpatterns [ path(, views.index, nameindex), path(login/, views.user_login, namelogin), path(logout/, views.user_logout, namelogout), path(rooms/, views.room_list, nameroom_list), path(rooms/int:room_id/assign/, views.assign_bed, nameassign_bed), path(repairs/, views.repair_list, namerepair_list), path(repairs/int:order_id/update/, views.update_repair_status, nameupdate_repair_status), path(visitors/, views.visitor_list, namevisitor_list), ]7. 系统测试与部署开发完成后建议按以下步骤进行测试与部署编写单元测试覆盖入住、退宿、报修等核心业务逻辑。使用 Django 自带测试客户端模拟管理员和学生的操作流程。在本地环境验证通过后使用 collectstatic 收集静态文件。通过 Gunicorn 启动服务并由 Nginx 反向代理对外提供访问。8. 总结本文基于 Python 和 Django 实现了一套功能完整的学生宿舍管理系统覆盖宿舍分配、入住退宿、报修处理和访客登记等核心场景。系统采用 MTV 架构代码结构清晰便于后续扩展。未来可进一步引入消息通知、移动端适配和数据可视化报表提升管理效率和使用体验。
返回列表