《城市公交运行客流数据分析与可视化大屏监控系统》项目说明书(毕设版)
1. 项目概述
本系统面向"城市公交运行"场景,围绕线路、站点、车辆、驾驶员等基础数据,提供客流数据采集(模拟/Excel导入)、定时清洗与汇总、智能统计分析与可视化大屏展示能力,满足本科软件工程毕设的"可运行、可演示、可答辩"要求。
核心特点:
- 前后端分离:后端提供 RESTful API;前端提供管理端与大屏
- 数据分析逻辑:使用 Java 原生统计计算(不引入大数据框架)
- 定时任务:Quartz 每日凌晨清洗/汇总,生成统计报表表
2. 技术栈
后端(固定):
- Java 17
- SpringBoot 2.7.x + SpringMVC
- MyBatis-Plus
- MySQL 8.0 + Redis
- Quartz(定时清洗/汇总)
- EasyExcel(Excel导入导出)
前端(固定):
- Vue2 + Element UI + Axios
- ECharts(大屏图表)
- Nginx(静态资源部署 + /api 反向代理)
3. 系统功能结构
3.1 功能模块
- 基础数据管理:线路/站点/车辆/驾驶员 CRUD,Excel批量导入
- 客流数据采集:模拟生成、Excel历史数据导入、客流记录查询
- 智能数据分析:
- 分时段客流(早高峰/晚高峰/平峰)
- 线路/站点日均客流热度
- 换乘站聚集度(占比)
- 空载/满载车次统计
- 周/月趋势环比、同比
- 可视化大屏:
- 线路分布(站点坐标折线)
- 站点实时热力 TopN
- 7日客流走势
- 线路峰值客流对比
- 高峰时段占比
- 车辆在线与发车频次看板
- 权限管理:管理员登录、角色/权限分级、操作日志、数据备份导出
3.2 业务流程图(Mermaid)
通过
拒绝
登录
权限校验
基础数据维护
客流采集
模拟生成
Excel导入
原始客流入库
Quartz每日清洗/汇总
统计报表表
分析接口
管理端图表
大屏可视化
4. 数据库设计(ER图)
建表脚本:
ER 图(Mermaid):
start/end
contains
belongs
has
generates
occurs
by
has
runs
status
agg
agg
owns
grants
grants
belongs
writes
BUS_STATION
BUS_LINE
BUS_LINE_STATION
BUS_VEHICLE
PASSENGER_FLOW_RECORD
TRIP_RECORD
VEHICLE_STATUS
FLOW_DAY_LINE_AGG
FLOW_DAY_STATION_AGG
SYS_USER
SYS_USER_ROLE
SYS_ROLE
SYS_ROLE_PERMISSION
SYS_PERMISSION
SYS_OPERATION_LOG
5. 关键实现说明
5.1 统一返回与异常
- Result:统一返回结构(code/message/data)
- BizException:业务异常(带code)
- GlobalExceptionHandler:统一异常处理
对应代码:
5.2 权限与登录
- Spring Security + JWT
- Token 写入 Redis(支持失效/退出)
- Role/Permission 通过多表关联查询
对应代码:
5.3 操作日志
- MVC 拦截器记录接口访问(排除 /api/auth)
对应代码:
5.4 数据分析(Java原生统计)
以"分时段统计"为例:
- 查询指定日期范围内原始客流记录
- 按 occurTime.hour 分桶
- 聚合得到早高峰/晚高峰/平峰总和
对应代码:
5.5 Quartz 每日清洗与汇总
执行内容:
- 清洗:删除 occurTime 为空、board/alight 为负的异常数据
- 汇总:按线路/站点聚合昨日客流,生成日统计表(峰值按"每小时汇总的最大值"计算)
对应代码:
5.6 大屏展示
大屏接口为公开接口 /api/screen/**,主要用于:
- 线路分布:返回线路的站点坐标序列
- 热力:返回站点TopN客流
- 7日:返回城市总客流的日期序列
- 看板:返回车辆在线数与近1小时发车次数
前端静态版入口:
frontend_static/admin.htmlfrontend_static/screen.html
6. 项目目录结构
bus_data
├─ backend 后端 SpringBoot
├─ frontend Vue2 源码版(可用于二次开发)
├─ frontend_static 免构建静态版(Nginx 直接部署)
├─ sql MySQL 脚本
└─ docs 文档(接口/部署/说明书)
7. 演示建议(答辩路线)
- 导入数据库脚本与初始化数据
- 启动后端,管理端登录(admin/admin123)
- 进入"客流采集"一键模拟生成 7 天数据
- 打开大屏:观察 7 日走势、线路峰值、站点热力、车辆看板
- 展示"分析"页:分时段/热度/趋势
- 展示权限与日志:用户管理、操作日志分页查询、数据备份导出 ZIP