Skip to content

Latest commit

 

History

87 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

driving-school 驾校报名管理系统

Java Spring Boot License

面向中小型驾校的报名与教务管理 Web 应用,覆盖学员在线报名、报名材料提交、资格审核、系统生成报名表/体检表等 PDF 文档、教练分配、学习进度、考试报名、考试成绩和基础信息管理。

项目采用 Spring Boot 分层单体架构。后台管理端使用 Thymeleaf 服务端渲染,学员和教练通过自助端查看与本人相关的报名、培训、考试数据。

界面预览

页面 截图
登录页 登录页
后台仪表盘 后台仪表盘
报名申请详情 报名申请详情
教练分配 教练分配
学员自助端 学员自助端

功能特性

模块 说明
学员在线报名 支持公开注册、学员建档、创建报名申请、报名草稿和申请状态流转
报名材料 支持材料上传、下载、删除、审核、驳回原因记录和完整性校验
资格审核 支持初审/终审记录、审核通过/拒绝/要求补件,联动申请和学员状态
系统文档生成 审核通过后可生成报名表、体检表、报名回执、档案表等 PDF 文档
教练管理与分配 支持教练档案、准教车型、容量、推荐算法、人工/自动/按学员要求分配、结束分配
学习进度 支持初始化进度、维护科目一至科目四状态、已完成学时和最近培训日期
考试报名 支持创建、查询、取消考试报名,记录考试科目、时间、地点和考试次数
考试成绩 支持录入成绩、缺考/未通过记录、成绩查询,并联动学习进度
基础信息管理 通过字典项维护驾照类型、来源渠道、培训班型、材料类型、文档类型等基础数据
账号与权限 基于 Spring Security 和 RBAC,区分后台岗位、学员、教练,并做行级数据隔离

技术栈

层次 技术
后端 Java 21、Spring Boot 4.0.6、Spring MVC、Spring Security、Spring Data JPA
前端 Thymeleaf、Bootstrap 5、Bootstrap Icons、原生 JavaScript
数据库 MySQL、H2(测试环境)
文档生成 OpenPDF
构建与测试 Maven Wrapper、JUnit 5、Spring Boot Test、Spring Security Test

架构概览

flowchart LR
    Browser["浏览器"]
    Thymeleaf["Thymeleaf 页面"]
    Api["REST API Controller"]
    Security["Spring Security"]
    Service["Service 业务服务"]
    Repository["Repository 数据访问"]
    MySQL[("MySQL")]
    Storage["本地文件存储"]

    Browser --> Thymeleaf
    Browser --> Api
    Thymeleaf --> Api
    Api --> Security
    Security --> Service
    Service --> Repository
    Repository --> MySQL
    Service --> Storage
Loading

代码按 controllerservicerepositoryentityenumssecuritydto 分层,业务规则集中在 Service 层。所有实体继承 Root 基类,统一提供 UUID 主键、创建时间、更新时间和乐观锁版本号。

项目结构

driving-school
├── docs                                  # 架构、流程、接口、设计文档
├── src/main/java/org/yyds/drivingschool
│   ├── controller                        # 页面与 REST API 控制器
│   ├── entity                            # JPA 实体
│   ├── enums                             # 业务状态枚举
│   ├── repository                        # Spring Data JPA 仓库
│   ├── security                          # 认证、授权、登录处理、初始化
│   ├── service                           # 业务服务和 DTO
│   └── util                              # 工具类
├── src/main/resources
│   ├── db/demo-data.sql                  # 可选演示数据
│   ├── static                            # CSS、JS、图片
│   └── templates                         # Thymeleaf 页面
├── src/test                              # Repository、Service、Controller、权限测试
├── pom.xml
└── mvnw / mvnw.cmd

快速开始

获取代码

git clone https://github.com/Steel-Yao/driving-school.git
cd driving-school

环境要求

  • JDK 21
  • MySQL 8.0 或更高版本
  • 项目自带 Maven Wrapper,无需单独安装 Maven

1. 创建数据库

CREATE DATABASE driving_school CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2. 配置环境变量

默认配置位于 src/main/resources/application.yaml,数据库密码、管理员初始化密码等敏感信息通过环境变量提供。

PowerShell:

$env:DB_USERNAME = "root"
$env:DB_PASSWORD = "your-db-password"
$env:ADMIN_USERNAME = "admin"
$env:ADMIN_PASSWORD = "your-admin-password"
.\mvnw.cmd spring-boot:run

Bash:

export DB_USERNAME=root
export DB_PASSWORD=your-db-password
export ADMIN_USERNAME=admin
export ADMIN_PASSWORD=your-admin-password
./mvnw spring-boot:run

3. 访问应用

启动成功后访问:

http://localhost:8088

默认端口为 8088,如需修改可在 application.yaml 中调整 server.port。管理员登录名为 ADMIN_USERNAME 所配置的用户名,密码为 ADMIN_PASSWORD 所配置的初始密码。

可选演示数据

项目提供 src/main/resources/db/demo-data.sql,包含角色、字典、学员、教练、报名申请、材料、审核记录、文档、进度、考试报名和成绩等演示数据。

建议先启动一次应用生成表结构,再导入演示数据:

mysql -u root -p driving_school < src/main/resources/db/demo-data.sql

演示账号统一密码为 Demo@123456

账号 角色
demo_admin 系统管理员
demo_enroll 报名专员
demo_reviewer 审核专员
demo_operation 教务/运营专员
demo_examiner 考务/成绩录入员
stu_demo_001 学员
coach_demo_chen 教练

配置项

配置 默认值 说明
DB_USERNAME root MySQL 用户名
DB_PASSWORD MySQL 密码
ADMIN_USERNAME admin 启动时初始化的管理员用户名
ADMIN_PASSWORD 管理员初始密码,为空时不创建管理员账号
SECURITY_BOOTSTRAP_ENABLED true 是否在启动时初始化基础角色和管理员
MATERIAL_STORAGE_DIR ./storage/materials 报名材料存储目录
DRIVING_SCHOOL_DOCUMENT_STORAGE_DIR ./storage/documents 生成文档存储目录

测试与构建

./mvnw test
./mvnw clean package

运行单个测试:

./mvnw test -Dtest=ClassName#methodName

测试环境使用 H2 数据库,不依赖本地 MySQL。

API 概览

REST 接口统一挂载在 /api。完整请求与响应示例见 docs/api-example.md,统一错误响应格式为:

{
  "message": "错误说明"
}

常用接口:

场景 接口
学员公开注册 POST /api/register/student
创建报名申请 POST /api/enrollment-applications
创建资格审核记录 POST /api/enrollment-applications/{id}/reviews
上传报名材料 POST /api/enrollment-applications/{id}/materials/upload
生成系统文档 POST /api/enrollment-applications/{id}/documents/generate
获取教练推荐 GET /api/students/{studentId}/coach-assignments/recommendations
分配教练 POST /api/students/{studentId}/coach-assignments
初始化学习进度 POST /api/students/{studentId}/training-progress
创建考试报名 POST /api/students/{studentId}/exam-registrations
录入考试成绩 POST /api/exam-registrations/{registrationId}/result

角色与权限

角色 主要职责
ROLE_ADMIN 账号管理、角色分配、字典配置、全量业务查看和系统维护
ROLE_ENROLLMENT_CLERK 学员建档、创建报名申请、材料录入/补件、文档生成
ROLE_REVIEWER 查看待审申请、创建资格审核记录、审核通过/拒绝/要求补件
ROLE_OPERATION 教练档案维护、教练分配/结束分配、学习进度维护、考试报名安排
ROLE_EXAMINER 考试成绩录入、缺考/未通过记录、成绩查询
ROLE_COACH 查看本人带教学员和训练进度,在授权范围内维护进度
ROLE_STUDENT 查看本人报名进度、材料状态、教练分配、学习进度、考试安排和成绩

项目文档

当前边界

  • 报名材料和生成文档当前保存元数据和本地文件路径,尚未接入对象存储。
  • 文档生成使用内置模板版本 v1,已覆盖报名表、体检表、报名回执、档案表等基础 PDF 输出。
  • ddl-auto: update 适合开发与演示环境,生产环境建议引入 Flyway 或 Liquibase 管理数据库变更。
  • 生产化部署前建议启用 HTTPS、CSRF 防护、操作审计、数据备份和安全密钥管理。

开源协议

本项目采用 MIT License

Copyright (c) 2026 Steel-Yao

About

基于 Java 21 和 Spring Boot 的驾校报名管理系统,覆盖在线报名、材料审核、文档生成、教练分配、学习进度与考试管理

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages