拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
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_length=20, choices=ROLE_CHOICES, default='student') student_no = models.CharField(max_length=20, blank=True, null=True, verbose_name='学号') class Building(models.Model): name = models.CharField(max_length=50, verbose_name='楼栋名称') address = models.CharField(max_length=100, verbose_name='楼栋位置') manager = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='managed_buildings') class Room(models.Model): building = models.ForeignKey(Building, on_delete=models.CASCADE, related_name='rooms') room_no = models.CharField(max_length=20, verbose_name='房间号') capacity = models.IntegerField(default=4, verbose_name='可住人数') floor = models.IntegerField(verbose_name='楼层') class Bed(models.Model): room = models.ForeignKey(Room, on_delete=models.CASCADE, related_name='beds') bed_no = models.CharField(max_length=10, verbose_name='床位号') is_occupied = models.BooleanField(default=False, verbose_name='是否已入住') class CheckInRecord(models.Model): student = models.ForeignKey(User, on_delete=models.CASCADE, related_name='checkin_records') bed = models.ForeignKey(Bed, on_delete=models.CASCADE) check_in_date = models.DateField(auto_now_add=True, verbose_name='入住日期') check_out_date = models.DateField(null=True, blank=True, verbose_name='退宿日期') class RepairOrder(models.Model): STATUS_CHOICES = ( ('pending', '待处理'), ('processing', '处理中'), ('done', '已完成'), ) reporter = models.ForeignKey(User, on_delete=models.CASCADE, related_name='repair_orders') room = models.ForeignKey(Room, on_delete=models.CASCADE) description = models.TextField(verbose_name='故障描述') status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='pending') created_at = models.DateTimeField(auto_now_add=True)

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, id=room_id) bed = Bed.objects.filter(room=room, is_occupied=False).first() if not bed: return {'success': False, 'message': '该房间暂无空余床位'} bed.is_occupied = True bed.save() CheckInRecord.objects.create( student_id=student_id, bed=bed, ) 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, id=order_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, name='index'), path('login/', views.user_login, name='login'), path('logout/', views.user_logout, name='logout'), path('rooms/', views.room_list, name='room_list'), path('rooms/<int:room_id>/assign/', views.assign_bed, name='assign_bed'), path('repairs/', views.repair_list, name='repair_list'), path('repairs/<int:order_id>/update/', views.update_repair_status, name='update_repair_status'), path('visitors/', views.visitor_list, name='visitor_list'), ]

7. 系统测试与部署

开发完成后,建议按以下步骤进行测试与部署:

  1. 编写单元测试覆盖入住、退宿、报修等核心业务逻辑。
  2. 使用 Django 自带测试客户端模拟管理员和学生的操作流程。
  3. 在本地环境验证通过后,使用 collectstatic 收集静态文件。
  4. 通过 Gunicorn 启动服务,并由 Nginx 反向代理对外提供访问。

8. 总结

本文基于 Python 和 Django 实现了一套功能完整的学生宿舍管理系统,覆盖宿舍分配、入住退宿、报修处理和访客登记等核心场景。系统采用 MTV 架构,代码结构清晰,便于后续扩展。未来可进一步引入消息通知、移动端适配和数据可视化报表,提升管理效率和使用体验。

返回列表