基于Python+Django+MySQL的健身房管理系统设计与实现(附核心代码)

随着健身行业的快速发展,中小型健身房数量持续增长,但传统人工管理模式普遍存在会员信息混乱、课程安排低效、器材维护不及时、运营数据不透明等问题。对于计算机专业的同学而言,开发一套完整的健身房管理系统,既是贴合实际业务的毕设选题,也能全面锻炼Web全栈开发能力。
本文将基于Python+Django技术栈,从架构设计到核心模块实现,完整拆解一套功能完善的健身房后台管理系统,附带核心实现代码,可直接作为课程设计、毕业设计的参考方案。
一、项目概览与技术栈
本系统是面向中小型健身房的数字化管理平台,覆盖会员、课程、器材场地、系统管理四大核心业务,集成数据可视化仪表盘,支持运营数据实时展示。整体采用Django的MVT架构开发,技术栈成熟稳定,开发效率高。
|
技术层级 |
技术选型 |
核心作用 |
|---|---|---|
|
开发语言 |
Python 3.9 |
业务逻辑实现、数据处理 |
|
Web框架 |
Django 3.2 |
MVT架构支撑、ORM数据操作、Admin后台 |
|
数据库 |
MySQL 5.7 |
核心业务数据持久化存储 |
|
后台主题 |
SimpleUI |
现代化响应式后台界面定制 |
|
可视化 |
ECharts 5.3.2 |
运营数据图表渲染 |
|
样式框架 |
Bootstrap |
响应式页面布局 |
项目核心优势:
-
功能覆盖全面,包含13张核心数据表,业务逻辑完整
-
基于Django Admin快速构建后台,开发效率高,扩展性强
-
内置数据可视化仪表盘,运营数据直观展示
-
权限分级管理,支持多角色操作控制
二、系统整体架构设计
系统采用经典的三层架构思想,结合Django原生的MVT模式实现分层解耦,各层职责清晰,便于维护与扩展。
-
表现层:由Django Template模板、SimpleUI后台主题、ECharts图表组件和Bootstrap样式组成,负责用户界面渲染与交互,接收操作请求并传递给业务层。
-
业务逻辑层:由Django View视图函数、业务逻辑处理函数和Django Admin配置组成,负责处理核心业务逻辑,完成数据校验、状态联动、统计计算等操作。
-
数据访问层:由Django Model模型和MySQL数据库组成,通过ORM机制实现对象与数据库表的映射,无需编写原生SQL即可完成数据的增删改查。
模块划分上,系统按业务拆分为会员管理(membership)、课程管理(courses)、器材与场地管理(facilities)三个独立应用,通过Django的App机制实现模块化开发,模块间低耦合,可单独扩展。
三、核心功能模块实现
3.1 会员管理模块
会员管理是系统的基础模块,包含会员信息、会员卡、交易记录三个子功能,支持会员全生命周期管理。
核心数据模型实现如下:
from django.db import models
from django.contrib.auth.models import User
class Member(models.Model):
"""会员基本信息模型"""
name = models.CharField(max_length=50, verbose_name="姓名")
gender_choices = ((0, "男"), (1, "女"), (2, "其他"))
gender = models.IntegerField(choices=gender_choices, default=0, verbose_name="性别")
phone = models.CharField(max_length=11, unique=True, verbose_name="手机号码")
id_card = models.CharField(max_length=18, unique=True, verbose_name="身份证号")
member_level_choices = ((0, "普通会员"), (1, "银卡会员"), (2, "金卡会员"), (3, "钻石会员"))
member_level = models.IntegerField(choices=member_level_choices, default=0, verbose_name="会员等级")
status_choices = ((0, "正常"), (1, "暂停"), (2, "过期"), (3, "注销"))
status = models.IntegerField(choices=status_choices, default=0, verbose_name="会员状态")
register_date = models.DateField(auto_now_add=True, verbose_name="注册日期")
register_staff = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, verbose_name="注册员工")
def __str__(self):
return f"{self.name}({self.phone})"
class Meta:
verbose_name = "会员信息"
verbose_name_plural = "会员信息"
ordering = ['-register_date']
通过Django Admin可快速生成后台管理界面,配置搜索、筛选、字段分组等能力:
@admin.register(Member)
class MemberAdmin(admin.ModelAdmin):
"""会员信息管理类"""
list_display = ('name', 'phone', 'gender', 'member_level', 'status', 'register_date', 'register_staff')
search_fields = ('name', 'phone', 'id_card', 'email')
list_filter = ('gender', 'member_level', 'status', 'register_date')
ordering = ('-register_date', 'name')
list_per_page = 20
readonly_fields = ('register_date',)
fieldsets = (
('基本信息', {'fields': ('name', 'gender', 'phone', 'email', 'id_card', 'birthday')}),
('会员状态与等级', {'fields': ('member_level', 'status')}),
('注册信息', {'fields': ('register_date', 'register_staff')}),
('备注信息', {'fields': ('remark',)}),
)
3.2 课程管理模块
课程管理模块支持课程类型、教练、课程安排、课程预约的全流程管理,通过数据库唯一约束实现同一会员不可重复预约同一课程的业务规则。
核心设计亮点:
-
教练与课程类型为多对多关系,支持一个教练教授多门课程
-
课程安排自动统计报名人数,容量满员后无法继续预约
-
出勤状态管理,支持记录会员上课情况
3.3 数据可视化仪表盘
系统首页集成运营数据仪表盘,通过ECharts实现会员增长趋势、收入统计、课程分布等数据的可视化展示,所有统计数据通过Django ORM聚合查询生成。
核心视图实现片段:
from django.db.models import Count, Sum
from django.utils import timezone
from datetime import timedelta
def membership_home(request):
"""首页仪表盘视图,展示运营统计数据"""
# 会员基础统计
total_members = Member.objects.count()
active_members = Member.objects.filter(status=0).count()
new_members_week = Member.objects.filter(register_date__gte=timezone.now().date() - timedelta(days=7)).count()
# 月度收入统计
total_revenue_month = MemberTransaction.objects.filter(
transaction_date__month=timezone.now().month,
transaction_date__year=timezone.now().year,
amount__gt=0
).aggregate(total=Sum('amount'))['total'] or 0
# 会员增长趋势数据(近7天)
member_growth_data = []
for i in range(7):
date = timezone.now().date() - timedelta(days=6 - i)
count = Member.objects.filter(register_date=date).count()
member_growth_data.append({'date': date.strftime('%m-%d'), 'count': count})
# 封装数据传递给模板
context = {
'total_members': total_members,
'active_members': active_members,
'new_members_week': new_members_week,
'total_revenue_month': total_revenue_month,
'member_growth_data': member_growth_data,
}
return render(request, 'dashboard.html', context)
四、系统功能与界面展示
系统后台基于SimpleUI定制,采用响应式布局,左侧为分类导航菜单,右侧为数据操作区域,支持搜索、筛选、分页、批量操作等常用功能。
-
会员管理:支持会员信息录入、查询、修改,会员卡办理与状态管理,交易记录全量追溯
-
课程管理:课程类型配置、教练信息维护、课程排期、会员预约与出勤登记
-
器材场地:器材台账管理、维护记录跟踪、场地状态管控
-
数据仪表盘:首页直观展示会员总数、月度收入、近期课程、待维护器材等核心运营数据
完整的系统功能演示与操作流程,可在B站搜索同名账号兵慌码乱查看动态效果实拍与部署实操视频。
五、本地部署与运行步骤
-
环境准备:安装Python 3.9、MySQL 5.7,创建数据库
db_gym -
安装依赖:在项目目录执行命令安装第三方库
pip install django==3.2 mysqlclient==2.1.0 pillow==9.0.1 django-simpleui==2023.3.10
-
配置数据库:修改
settings.py中的数据库连接信息,填入本地数据库账号密码 -
数据迁移:执行迁移命令生成数据库表
python manage.py makemigrations
python manage.py migrate
-
创建管理员:创建超级用户账号
python manage.py createsuperuser
-
启动服务:运行开发服务器
python manage.py runserver
-
访问
http://127.0.0.1:8000/admin/,输入账号密码即可进入系统后台
六、项目总结与扩展方向
本系统完整覆盖了健身房运营的核心业务流程,技术栈主流成熟,代码结构清晰模块化,既适合作为毕设、课设项目提交,也可在此基础上扩展后投入实际使用。
可扩展的优化方向:
-
开发微信小程序端,支持会员自主预约课程、查询会员卡信息
-
对接微信支付、支付宝,实现在线办卡充值自动化
-
增加短信/消息提醒功能,到期、开课自动通知
-
扩展多门店管理,支持连锁健身房数据隔离与统一统计
更多Web管理系统的开发技巧与项目实战内容,会持续更新分享。配套的完整部署演示与功能讲解视频,可前往B站搜索 兵慌码乱 查看,跟着视频实操更易上手。
更多推荐
所有评论(0)