基于Python的校园卡消费行为数据可视化分析系统
项目简介
本项目是基于 Python Django 框架开发的校园卡消费行为数据可视化分析系统,集成了学生信息管理、消费记录分析、门禁记录查询、多维度统计分析、数据可视化展示与消费预测等功能。系统支持管理员与普通用户双角色权限管理,界面美观,交互友好,适合高校财务管理、学生消费行为研究和校园智能化管理等多种场景。
技术栈
- 后端:Django 4.2.16、PyMySQL
- 前端:Bootstrap 5、jQuery、ECharts、ApexCharts、Highcharts
- 数据库:MySQL
- 数据分析/处理:Pandas、scikit-learn、joblib
- 其它:SimpleUI(Django Admin美化)、MetisMenu(导航菜单)、Pace.js(加载动画)
主要功能
- 用户系统:注册、登录、个人中心、修改密码、角色权限管理
- 学生信息管理:学生基本信息的查看、搜索、分页展示
- 消费记录管理:消费记录的查看、搜索、筛选、分页展示
- 门禁记录管理:门禁记录的查看、搜索、筛选、分页展示
- 数据可视化:6种统计图表(按地点消费统计、日期趋势、时段分布、专业分布、性别分布、消费类型统计)
- 消费预测:基于历史数据预测学生下月消费金额
- 行为分析:学生消费行为分类(高消费/中等消费/低消费)
- 词云分析:消费地点词云可视化展示
- 推荐系统:基于协同过滤的消费推荐,展示消费排名
- 权限控制:管理员与普通用户分级,部分功能仅管理员可见
项目目录结构
325-基于Python的校园卡消费行为数据可视化分析系统/djangoProject/
├── djangoProject/ # 项目配置目录
│ ├── settings.py # Django配置文件
│ ├── urls.py # 主URL路由配置
│ ├── wsgi.py # WSGI应用入口
│ └── asgi.py # ASGI应用入口
│
├── myapp/ # 主应用程序
│ ├── models.py # 数据模型(User, Student, Consumption, AccessRecord)
│ ├── views.py # 视图函数(业务逻辑)
│ ├── urls.py # 应用URL路由
│ ├── admin.py # Django后台管理配置
│ ├── context_processors.py # 模板上下文处理器
│ ├── recommendation.py # 推荐系统(协同过滤)
│ └── management/commands/ # 管理命令
│ └── generate_user_data.py
│
├── templates/ # 前端模板
│ ├── base.html # 基础模板(导航栏、侧边栏)
│ ├── index.html # 首页/仪表板
│ ├── signin.html # 登录页
│ ├── register.html # 注册页
│ ├── profile.html # 个人资料页
│ ├── change_password.html # 修改密码页
│ ├── ecommerce-products.html # 学生列表
│ ├── ecommerce-products-details.html # 学生详情
│ ├── ecommerce_comment_list.html # 消费记录列表
│ ├── widgets.html # 门禁记录列表
│ ├── charts-apex-chart.html # 消费数据可视化
│ ├── comment_chart.html # 词云分析
│ ├── sentiment_analysis.html # 行为分析
│ ├── predict.html # 消费预测
│ └── recommendations.html # 推荐列表
│
├── static/ # 静态资源
│ └── assets/
│ ├── css/ # 样式表(Bootstrap、主题、自定义)
│ ├── js/ # JavaScript文件
│ ├── images/ # 图片资源
│ └── plugins/ # 第三方JS库和插件
│
├── data/ # 原始数据文件
│ ├── data1.csv # 学生信息数据
│ ├── data2.csv # 消费记录数据
│ └── data3.csv # 门禁记录数据
│
├── buildmodel/ # 机器学习模型
│ ├── build.py # 模型训练脚本
│ └── result3.csv # 训练数据
│
├── import_data.py # 数据导入脚本
└── manage.py # Django管理脚本
项目演示
325-基于Python的校园卡消费行为数据可视化分析系统






















安装与部署
环境要求
- Python 3.8+
- MySQL 5.7+
安装步骤
-
克隆项目
bashgit clone <项目地址> cd 325-基于Python的校园卡消费行为数据可视化分析系统/djangoProject -
安装依赖
bashpip install django==4.2.16 pip install pymysql pip install pandas pip install scikit-learn pip install joblib pip install django-simpleui -
配置数据库
-
创建MySQL数据库
design_325_consume -
修改
djangoProject/settings.py中的数据库连接配置:pythonDATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'design_325_consume', 'USER': 'root', 'PASSWORD': '你的密码', 'HOST': 'localhost', 'PORT': '3306', } }
-
-
数据库迁移
bashpython manage.py makemigrations python manage.py migrate -
导入数据
bashpython import_data.py数据导入脚本会自动导入学生信息、消费记录、门禁记录,并创建管理员账户(admin/admin123)。
-
启动系统
bashpython manage.py runserver -
访问系统
- 前台地址: http://localhost:8000
- 后台地址: http://localhost:8000/admin
- 管理员账户: admin / admin123
使用说明
管理员功能
- 登录后可访问完整的数据分析功能
- 可查看所有学生信息、消费记录、门禁记录
- 可查看6种数据可视化图表
- 可使用消费预测功能预测学生消费
- 可查看学生消费行为分析报告
- 通过Django Admin后台管理所有数据
普通用户功能
- 登录后可查看首页仪表板
- 可浏览学生列表和详情
- 可查看消费记录和门禁记录
- 可查看数据可视化图表
- 可使用消费预测功能
数据可视化图表
| 图表编号 | 图表名称 | 说明 |
|---|---|---|
| chart1 | 消费地点统计 | 柱状图展示各消费地点消费金额 |
| chart2 | 日期消费趋势 | 折线图展示每日消费变化 |
| chart3 | 时段消费分布 | 柱状图展示24小时消费分布 |
| chart4 | 专业分布统计 | 饼图展示各专业学生比例 |
| chart5 | 性别分布统计 | 饼图展示男女比例 |
| chart6 | 消费类型统计 | 柱状图展示各类型消费金额 |
消费行为分析体系
系统基于学生历史消费数据进行行为分析,分类标准如下:
消费等级分类
| 等级 | 说明 | 特征 |
|---|---|---|
| 高消费 | 月均消费较高 | 消费频次高、单次金额大 |
| 中等消费 | 月均消费适中 | 消费频次中等、金额适中 |
| 低消费 | 月均消费较低 | 消费频次低、单次金额小 |
分析维度
- 时间维度:按日、按小时分析消费规律
- 地点维度:食堂、超市、图书馆等消费分布
- 类型维度:餐饮、购物、服务等消费类型
- 个人维度:单个学生消费习惯分析
特色亮点
- 多源数据融合:整合校园卡消费数据、门禁记录、学生信息三类数据
- 智能消费预测:基于历史数据预测学生未来消费趋势
- 多维度数据分析:Pandas支持的多维度统计分析
- 可视化大屏:ECharts+ApexCharts双引擎驱动,图表丰富
- 协同过滤推荐:基于用户相似度的消费推荐系统
- 词云分析:直观展示消费地点热度
- 完整用户体系:双角色权限、个人中心,功能完善
- 界面美观:Bootstrap 5 + 现代化UI设计,响应式布局
- 高性能设计:数据库索引优化、批量导入、分页加载
- 易于扩展:Django MVT架构,模块化设计,便于二次开发
数据模型说明
User(用户表)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键 |
| username | String(50) | 登录账号(唯一) |
| password | String(255) | 密码(加密存储) |
| nickname | String(50) | 昵称 |
| String(100) | 邮箱(唯一) | |
| phone | String(20) | 电话 |
| address | String(200) | 地址 |
| user_type | String(20) | 用户类型(normal/admin) |
| avatar | ImageField | 头像图片 |
| addtime | DateTime | 注册时间 |
Student(学生信息表)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键 |
| card_no | String(50) | 校园卡号(唯一) |
| sex | String(10) | 性别 |
| major | String(100) | 专业 |
| access_card_no | String(50) | 门禁卡号 |
Consumption(消费记录表)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键 |
| card_no | String(50) | 校园卡号(索引) |
| peo_no | String(50) | 学号 |
| date | DateTime | 消费时间(索引) |
| money | Decimal | 消费金额 |
| fund_money | Decimal | 补助金额 |
| surplus | Decimal | 余额 |
| card_count | Integer | 刷卡次数 |
| consume_type | String(50) | 消费类型 |
| term_no | String(50) | 终端号 |
| oper_no | String(50) | 操作员号 |
| dept | String(100) | 消费地点(索引) |
AccessRecord(门禁记录表)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | Integer | 主键 |
| access_card_no | String(50) | 门禁卡号(索引) |
| date | DateTime | 刷卡时间(索引) |
| address | String(200) | 地点 |
| access | String(50) | 访问状态 |
| describe | String(500) | 描述 |
API接口说明
| 接口路径 | 方法 | 说明 |
|---|---|---|
/api/consumption_by_dept/ |
GET | 按消费地点统计数据 |
/api/consumption_by_date/ |
GET | 按日期统计消费趋势 |
/api/consumption_by_hour/ |
GET | 按小时统计消费分布 |
/api/student_by_major/ |
GET | 按专业统计学生数量 |
/api/student_by_sex/ |
GET | 按性别统计学生数量 |
系统截图
首页仪表板
- 展示关键指标卡片(学生总数、消费总额、消费次数、门禁记录数)
- 消费地点排行榜
- 最近消费记录
数据可视化
- 多种图表类型:柱状图、折线图、饼图
- 支持交互操作:缩放、筛选、导出
学生详情
- 个人消费统计
- 消费趋势图
- 消费地点分布
- 门禁记录列表
联系信息
如有问题或建议,请联系开发团队。
版本 : v1.0.0
最后更新 : 2025年
开发框架 : Python Django
许可证: MIT