驾校学员与练车预约小程序
面向驾校的学员练车预约全栈系统:学员端微信小程序预约练车、购买学时、考试报名与评价;管理员通过 Vue3 后台维护校区/教练/车辆/学员、审核预约与考试、发布公告,后端为 Express + MySQL。
项目封面

项目说明
驾校学员与练车预约小程序
技术栈:微信原生小程序(学员端)+ Vue3 / Element Plus(管理端)+ Node.js Express + MySQL
一、各端功能介绍
1. 微信小程序(min/)— 学员端
面向报名学员,完成学车过程中的预约、学时、考试与信息查询。底部 Tab:首页 / 预约 / 公告 / 我的。
| 模块 | 功能说明 |
|---|---|
| 登录认证 | 微信一键授权登录;未登录可浏览首页/校区/公告等公开内容;需登录操作时跳转登录页,登录态本地持久化 |
| 首页 | 轮播图、快捷入口(预约练车 / 购买学时 / 考试报名)、训练校区列表、学时套餐推荐 |
| 校区详情 | 校区封面、地址电话、开放时段、教练团队、训练车辆;底部跳转预约 |
| 预约练车 | 步骤:场地 → 科目(科二/科三)→ 日期/时段 → 教练(仅展示该时段空闲教练)→ 车辆可选;切换时 loading 防闪屏;确认页默认可编辑姓名/手机号,提交扣学时 |
| 我的预约 | 按状态筛选;待确认/已确认可取消(开始前≥2 小时退学时,临近取消不退);进入预约详情 |
| 预约详情 | 状态与练车信息;已完成且未评价时五星评分 + 评语,评分回写教练均分 |
| 学时账户 | 剩余学时、近 14 日练车消耗示意、学时流水(购买入账 / 预约扣减 / 取消退回 / 后台调整) |
| 购买学时 | 选择学时套餐,购买后学时即时到账(从确认页跳转购买返回后会同步最新学时) |
| 考试报名 | 仅可报当前阶段科目;填写期望日期与备注;查看进度(待审核/已通过/已拒绝/考试通过/考试未通过);未通过后可同科目重新报名 |
| 驾校公告 | Tab 公告列表;详情富文本阅读 |
| 个人信息 | 头像、姓名、昵称、手机号、身份证、性别等维护 |
| 意见反馈 | 提交反馈;查看历史与后台回复 |
2. 管理后台(admin-vue3/)— 运营端
面向驾校管理员与工作人员,基于 RBAC 动态菜单。默认开发地址:http://localhost:5173。
| 菜单 | 功能说明 |
|---|---|
| 登录 / 权限 | 账号密码登录(MD5);JWT;按角色加载菜单与路由;角色含管理员 / 教练工作人员 / 普通用户 |
| 工作台 | 学员、教练、车辆、今日预约等指标;近 7 日预约趋势、状态分布、科目占比、学员阶段、校区预约量、教练 TOP、套餐销量、完成学时等图表;待办入口 |
| 校区管理 | 校区增改查;封面、地址、电话、开放时段、备注;启用/停用 与物理删除 |
| 教练管理 | 教练档案;绑定校区;准驾车型、可带科目、教龄、评分、头像与简介;在职/离职 |
| 车辆管理 | 教练车档案;车牌、品牌型号、准驾车型、所属校区、封面;状态(可用/维修/停用) |
| 学员管理 | 学员检索;报名校区、绑定教练、科目阶段;学时增减(写流水);查看学时流水 |
| 学时套餐 | 套餐上下架;学时数、价格、适用科目、封面与说明 |
| 练车预约 | 预约列表与状态流转(待确认→已确认→进行中→已完成 / 取消 / 爽约);状态 Tag 配色区分;代客预约;时段占用查询 |
| 考试报名 | 待审核:通过 / 拒绝;已通过:登记 考试通过(升下一科目)或 考试未通过(不升阶段,学员可重报);安排/登记考试日期与回复 |
| 轮播管理 | 首页 Banner、排序、跳转类型、启停 |
| 公告管理 | 标题、封面、富文本、所属校区(空=全校区)、发布状态 |
| 意见反馈 | 查看学员反馈并回复 |
| 个人中心 | 当前登录账号资料与改密 |
| 用户管理 | 后台账号 CRUD、角色分配、启停等 |
| 角色管理 | 角色 CRUD、分配菜单权限 |
| 菜单管理 | 菜单树维护(标题/路径/组件/图标/排序) |
3. 后端 API(express/)— 服务端
Express + MySQL,默认端口 4923。启动时自动检测数据库:不存在或未初始化则导入 driving_school.sql,已有业务表则跳过。
| 模块 | 功能说明 |
|---|---|
| 鉴权 | 管理端 JWT(sys_user);学员端 JWT(ds_student,userType 区分);接口按端隔离 |
系统管理 /api/sys/* | 登录、用户/角色/菜单 CRUD 与授权 |
业务管理 /api/biz/* | 校区、教练、车辆、学员、套餐、预约、考试审核(含通过/未通过)、轮播、公告、反馈等 |
小程序 /api/web/* | 公开首页数据;微信登录;预约下单/取消/评价;学时购买与流水;考试申请(支持未通过后重报);个人资料;反馈 |
工作台 /api/dashboard/stats | 聚合统计与图表数据 |
上传 /api/upload/file | 图片等上传至 public/images/,返回可访问 URL |
| 预约规则 | 至少提前 1 小时;校区时段/空闲教练;教练·车辆·学员冲突检测;学时预扣与取消退回;评价更新教练均分 |
二、文件目录说明
二、文件目录说明
node-driving-school-min/
├── 项目说明.md # 本文件:功能与目录说明
├── 运行手册.md # 本地启动步骤
├── SQL自动导入.md # 数据库自动建库/导入说明
├── driving_school.sql # 全量库表 + 种子数据
│
├── express/ # ========== 后端 Express(:4923)==========
│ ├── app.js # 应用入口:中间件、静态资源、路由挂载
│ ├── package.json # 依赖与脚本(dev/start/db)
│ ├── bin/
│ │ └── www # HTTP 服务启动;先 ensureDatabase 再监听端口
│ ├── config/
│ │ ├── dbConfig.js # MySQL 连接参数(host/user/password/库名)
│ │ ├── db.js # mysql2 连接池(utf8mb4)
│ │ ├── initDb.js # 启动时建库/导入 SQL / 已存在则跳过
│ │ ├── security.js # JWT 密钥等安全相关配置
│ │ └── index.js # 配置聚合导出
│ ├── routes/ # 全部挂载在 /api 下(见下方「路由明细」)
│ │ ├── index.js # 路由总入口:CORS、挂载 sys/biz/web/upload/dashboard
│ │ ├── upload.js # POST /api/upload/file 文件上传(需登录)
│ │ ├── dashboard.js # GET /api/dashboard/stats 工作台统计(管理端)
│ │ ├── sys/ # ----- 系统管理(管理端 JWT)-----
│ │ │ ├── user.js # /api/sys/user/* 登录、用户 CRUD、个人中心、审批准入
│ │ │ ├── role.js # /api/sys/role/* 角色 CRUD、分配菜单
│ │ │ └── menu.js # /api/sys/menu/* 菜单 CRUD、按角色取菜单树
│ │ ├── biz/ # ----- 驾校业务(管理端 JWT)-----
│ │ │ ├── campus.js # /api/biz/campus/* 校区列表/详情/增改删
│ │ │ ├── coach.js # /api/biz/coach/* 教练列表/详情/增改删
│ │ │ ├── vehicle.js # /api/biz/vehicle/* 车辆列表/全部/增改删
│ │ │ ├── student.js # /api/biz/student/* 学员列表、改资料、调学时、流水
│ │ │ ├── package.js # /api/biz/package/* 套餐 CRUD、学时购买订单列表
│ │ │ ├── booking.js # /api/biz/booking/* 预约列表/详情/时段/代约/改状态
│ │ │ ├── exam.js # /api/biz/exam/* 考试报名列表、审核
│ │ │ ├── banner.js # /api/biz/banner/* 轮播增改删查
│ │ │ ├── notice.js # /api/biz/notice/* 公告增改删查
│ │ │ └── feedback.js # /api/biz/feedback/* 反馈列表、回复
│ │ └── web/ # ----- 小程序学员端 -----
│ │ └── index.js # /api/web/* 登录、公开数据、预约/学时/考试/反馈(见明细)
│ ├── controllers/
│ │ ├── dashboardController.js # 看板指标与多图表数据
│ │ ├── sys/ # 系统管理控制器
│ │ │ ├── userController.js
│ │ │ ├── roleController.js
│ │ │ └── menuController.js
│ │ ├── biz/ # 管理端业务控制器
│ │ │ ├── campusController.js # 校区
│ │ │ ├── coachController.js # 教练
│ │ │ ├── vehicleController.js # 车辆
│ │ │ ├── studentController.js # 学员与学时调整
│ │ │ ├── packageController.js # 学时套餐
│ │ │ ├── bookingController.js # 预约管理与状态流转
│ │ │ ├── examController.js # 考试审核
│ │ │ ├── bannerController.js # 轮播
│ │ │ ├── noticeController.js # 公告
│ │ │ └── feedbackController.js# 反馈回复
│ │ └── web/ # 小程序控制器
│ │ ├── authController.js # 微信/手机号登录、资料
│ │ ├── homeController.js # 轮播/校区/教练/套餐/公告公开接口
│ │ ├── bookingController.js # 学员预约、取消、评价
│ │ └── studentBizController.js # 学时购买、流水、考试申请、反馈
│ ├── util/
│ │ ├── auth.js # JWT 签发/校验、学员/管理员鉴权中间件
│ │ ├── bookingHelper.js # 时段冲突、开放时段、可约校验
│ │ ├── crypto.js # 密码 MD5 等
│ │ ├── role.js # 角色相关辅助
│ │ ├── wechat.js # 微信 code 换 openid
│ │ └── index.js
│ ├── scripts/
│ │ └── init_db.js # 手动触发库初始化
│ ├── public/
│ │ └── images/
│ │ ├── seed/ # 业务种子图片(轮播/校区/教练头像/车辆/套餐等)
│ │ ├── file/ # 上传文件目录
│ │ └── default/ # 默认静态资源目录
│ └── services/ # 预留业务服务层
│
├── admin-vue3/ # ========== 管理端 Vue3 ==========
│ ├── index.html # HTML 入口
│ ├── vite.config.js # Vite 开发/代理配置
│ ├── package.json
│ ├── public/
│ │ ├── favicon.ico
│ │ └── default-avatar.jpg # 后台默认头像
│ └── src/
│ ├── main.js # 应用启动、Element Plus 注册
│ ├── App.vue
│ ├── api/
│ │ ├── request.js # Axios 实例、Token、基地址
│ │ ├── sys.js # 系统管理 API
│ │ ├── biz.js # 驾校业务 API
│ │ └── index.js # API 统一导出
│ ├── router/
│ │ ├── index.js # 基础路由、登录守卫、标题
│ │ └── dynamicRoutes.js# 按菜单动态挂载业务页
│ ├── stores/
│ │ ├── user.js # 登录用户状态
│ │ └── role.js # 角色/菜单状态
│ ├── layouts/
│ │ └── MainLayout.vue # 侧栏 + 顶栏主布局
│ ├── components/
│ │ ├── UploadFile.vue # 图片上传组件
│ │ ├── Editor.vue # 富文本编辑
│ │ └── markedHtml.vue # Markdown/HTML 展示
│ ├── hooks/
│ │ └── useRole.js # 角色能力钩子
│ ├── utils/
│ │ ├── constants.js # 状态/科目等枚举文案
│ │ ├── crypto.js # 前端 MD5
│ │ ├── formatters.js # 展示格式化
│ │ └── media.js # 相对图片路径补全
│ ├── assets/
│ │ ├── login.jpg # 登录页背景
│ │ ├── base.css
│ │ └── main.css
│ └── views/
│ ├── Login.vue # 登录页
│ ├── Dashboard.vue # 工作台看板
│ ├── 404.vue # 404 页面
│ ├── biz/ # 驾校业务页面
│ │ ├── Campus.vue # 校区管理
│ │ ├── Coach.vue # 教练管理
│ │ ├── Vehicle.vue # 车辆管理
│ │ ├── Student.vue # 学员管理
│ │ ├── Package.vue # 学时套餐
│ │ ├── Booking.vue # 练车预约
│ │ ├── Exam.vue # 考试报名审核
│ │ ├── Banner.vue # 轮播管理
│ │ ├── Notice.vue # 公告管理
│ │ └── Feedback.vue # 意见反馈
│ └── system/ # 系统管理页面
│ ├── UserManage.vue # 用户管理
│ ├── RoleManage.vue # 角色管理
│ ├── MenuManage.vue # 菜单管理
│ └── userCenterMange.vue # 个人中心
│
└── min/ # ========== 微信小程序学员端 ==========
├── app.js # 小程序入口
├── app.json # 页面路由、窗口、TabBar 配置
├── app.wxss # 全局主题变量与基础样式
├── project.config.json # 微信开发者工具项目配置
├── project.private.config.json
├── sitemap.json
├── images/
│ ├── tabbar/ # Tab 图标(未选中/选中)
│ ├── banner.jpg # 本地默认封面图
│ └── avatar-default.jpg # 本地默认头像
├── utils/
│ ├── request.js # wx.request 封装、baseUrl、401 处理
│ ├── api.js # 各业务接口方法
│ ├── media.js # 媒体 URL 补全/相对化
│ ├── md5.js # 密码 MD5
│ ├── util.js # 时间格式化、取消/退学时判断、流水文案等
│ ├── date.js # 日期辅助
│ ├── feedback.js # Toast / Confirm 封装
│ └── markdown.js # Markdown 辅助(如有)
├── components/
│ ├── weekCalendar/ # 预约页周历选择组件
│ └── wxParse/ # 旧富文本组件(公告详情已改用 rich-text)
└── pages/
├── index/ # 首页
├── trend/ # 预约练车(Tab)
├── newsList/ # 公告列表(Tab)
├── newsDetail/ # 公告详情
├── my/ # 我的(Tab)
├── auth/ # 登录
├── detail/ # 校区详情
├── comfirm/ # 确认预约
├── orderList/ # 我的预约列表
├── orderDetail/ # 预约详情 / 评价
├── wallet/ # 学时记录
├── walletAdd/ # 购买学时
├── exam/ # 考试报名
├── userInfo/ # 个人信息
└── question/ # 意见反馈
获取完整源码
技术分类
包含内容
适用人群
学习参考与二次开发
关于 AI源码
AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
相关推荐
查看全部 →
体育场馆预约小程序
这是一个完整的体育场馆预约服务平台,包含微信小程序端和PC管理后台。系统实现了场馆浏览、场地预约、器材租借、订单管理、钱包充值、会员管理等核心功能,采用前后端分离架构,适合作为微信小程序全栈开发学习项目或计算机设计参考。项目附带完整文章资料。

自习室预约小程序
这是一个完整的自习室预约管理平台,包含微信小程序端和PC管理后台。系统实现了自习室展示、座位预约、器材租赁、订单管理、钱包充值、会员管理等核心功能,采用前后端分离架构,适合作为微信小程序全栈开发学习项目或计算机设计参考。

宿舍洗衣房自助预约小程序
面向高校宿舍的洗衣房自助预约全栈系统:学生端微信小程序按时段预约洗衣机/烘干机、加购耗材、钱包支付;管理员通过 Vue3 后台维护洗衣房与设备、处理订单、发布公告并查看运营数据,后端为 Express + MySQL。

静心瑜伽 · 瑜伽课预约小程序
面向瑜伽馆的约课全栈系统:学员端微信小程序浏览门店与课程、按日期时段预约、加购辅具、会员钱包支付;管理员通过 Vue3 后台维护门店/课程、核销订单、发布公告并查看运营数据,后端为 Express + MySQL。

光影约拍 · 摄影约拍预约小程序
面向摄影工作室的约拍全栈系统:用户端微信小程序浏览套餐与样片、选择摄影师与档期、加购项报价、会员钱包支付;管理员通过 Vue3 后台维护分类/套餐/摄影师/样片、确认订单改档期、发布公告并查看运营数据,后端为 Express + MySQL。