6.7 KiB
6.7 KiB
体系结构设计报告
项目名称:基于SpringBoot框架的高考志愿辅助填报系统设计与实现
学生姓名:向黎华
学号:229970427
学院/班级:软件学院 / 22软工8班
指导教师:彭娟
1. 引言
1.1 编写目的
本文档详细描述了基于SpringBoot框架的高考志愿辅助填报系统的软件架构。文档内容严格遵循《本科毕业设计(论文)开题报告》中确定的技术路线与设计要求,为系统的编码实现与部署提供核心技术指导。
1.2 参考文献
- [1] 温创新,谢莎,何雅婷. 基于微服务架构的新高考志愿填报推荐系统设计[J].科技创新与应用,2025.
- [2] 王宇轩. 融合大数据分析的高考志愿推荐系统设计与实现[D].西安工业大学,2024.
- [3] 张磊. 基于 SpringBoot 的高考志愿智能填报系统设计与实现[D].山东师范大学,2023.
2. 系统架构设计
2.1 总体架构模式
本系统采用标准的 B/S (Browser/Server) 架构,遵循 前后端分离 的开发模式。
- 前端架构:MVVM 模式,通过 View-ViewModel-Model 实现通过数据双向绑定。
- 后端架构:经典的 MVC 三层架构 (Controller - Service - DAO)。
2.2 技术栈选型 (Standard)
依据任务书要求,项目采用以下技术栈:
| 分层 | 技术组件 | 版本/说明 |
|---|---|---|
| 前端框架 | Vue 3.0 | 采用 Composition API 风格开发 |
| UI 组件库 | Ant Design Vue | 企业级 UI 设计语言 |
| 状态管理 | Pinia | 替代 Vuex 的新一代状态管理库 |
| 数据可视化 | ECharts | 用于展示录取趋势图、就业率报表 |
| 后端框架 | Spring Boot 2.7+ | 核心容器,简化配置 |
| 持久层 | MyBatis-Plus | 简化 SQL 操作,提供 ActiveRecord 模式支持 |
| 安全框架 | Spring Security | 实现用户认证与基于角色的权限控制 (RBAC) |
| 缓存 | Redis | 缓存热点院校数据与 Token,提升性能 |
| 数据库 | MySQL 8.0 | 存储所有业务数据,InnoDB 引擎 |
2.3 逻辑架构图
graph TD
User((用户/考生)) --> |HTTP/JSON| Nginx[Web服务器/反向代理]
Nginx --> |Static| Vue[Vue3 前端应用]
Nginx --> |API| Gateway[Spring Boot 后端服务]
subgraph "前端层 (Vue 3 + Ant Design)"
Vue --> Module1[院校专业查询]
Vue --> Module2[智能志愿推荐]
Vue --> Module3[模拟填报]
Vue --> Store[Pinia 状态管理]
Vue --> Chart[ECharts 图表]
end
subgraph "后端业务层 (Spring Boot)"
Gateway --> Security[Spring Security 认证授权]
Security --> Controller[Web控制层]
Controller --> Svc1[院校专业管理服务]
Controller --> Svc2[分数位次管理服务]
Controller --> Svc3[志愿算法推荐服务]
Controller --> Svc4[考生档案管理服务]
Controller --> Svc5[统计分析服务]
Svc1 & Svc2 & Svc3 & Svc4 & Svc5 --> MP[MyBatis-Plus]
end
subgraph "数据存储层"
MP --> MySQL[(MySQL 数据库)]
Svc1 -.-> Redis[(Redis 缓存)]
end
2.4 核心业务时序图 (智能推荐)
sequenceDiagram
participant U as 考生 (User)
participant C as 推荐控制器 (Controller)
participant S as 推荐算法服务 (Service)
participant DB as 数据库 (MySQL)
participant R as 缓存 (Redis)
U->>C: 发起推荐请求 (分/位/偏好)
C->>S: 调用 recommend()
S->>R: 查询院校缓存
alt 缓存未命中
S->>DB: 读取 zr_school 基础信息
DB-->>S: 返回列表
S->>R: 更新缓存
end
S->>S: 策略过滤 (Filter Strategy)
note right of S: 过滤非偏好批次/地域
loop 核心计算
S->>DB: 查询历年同位次录取分
S->>S: 计算线差 (Score Diff)
S->>S: 判定 冲/稳/保 概率
end
S-->>C: 返回结果集 (List<Plan>)
C-->>U: 展示推荐方案
3. 功能模块划分
依据开题报告,系统后端划分为六大核心模块:
3.1 院校专业管理模块
- 负责
zr_school,zr_major,zr_school_major表的维护。 - 实现院校基础信息录入、专业详情更新、特色专业标记。
3.2 分数位次管理模块
- 核心功能:历年高考分数线录入、位次换算(查询
zr_one_minute)。 - 关联历年录取数据 (
zr_school_major_score),提供同分考生去向查询。
3.3 志愿填报管理模块 (核心)
- 智能推荐:基于“位次法”和“线差法”计算录取概率(冲、稳、保)。
- 模拟填报:考生创建志愿表,系统校验梯度合理性。
- 风险评估:分析是否存在滑档风险。
3.4 考生信息管理模块
- 建立考生电子档案(包含高考分、选科、体检信息)。
- 记录志愿填报历史版本,支持回溯修改。
3.5 数据统计分析模块
- 生成院校录取趋势报表 (Line Chart)。
- 统计热门专业排行 (Bar Chart)。
- 分析各地区各专业的就业率分布。
3.6 系统管理模块
- 用户账号管理 (Admin/Student/Planner)。
- 角色权限分配 (RBAC)。
- 招生政策与通知公告发布。
4. 接口设计规范 (RESTful)
4.1 接口设计原则
- 遵循 RESTful 风格,使用标准的 HTTP 方法 (GET/POST/PUT/DELETE)。
- 统一响应格式:
{ "code": 200, "msg": "success", "data": {...} }。 - 采用 CamelCase 命名法。
4.2 核心接口定义
| 模块 | 接口路径 | 方法 | 描述 |
|---|---|---|---|
| Auth | /api/auth/login |
POST | 用户登录 (JWT) |
| School | /api/schools/{id} |
GET | 获取院校详情 |
| School | /api/schools/search |
POST | 多条件筛选院校 |
| Score | /api/scores/rank |
GET | 分数换算位次及同位分查询 |
| Recommend | /api/volunteer/recommend |
POST | [核心] 获取智能推荐列表 |
| Volunteer | /api/volunteer/simulate |
POST | 保存模拟志愿表 |
| User | /api/user/profile |
PUT | 更新考生档案 |
4.3 智能推荐接口示例
Request (POST /api/volunteer/recommend):
{
"province": "重庆",
"score": 580,
"subject": ["物理", "化学", "生物"],
"preference": {
"location": ["北京", "上海"],
"major_type": "工学"
}
}
Response:
{
"code": 200,
"data": {
"rush": [ ... ], // 冲一冲列表
"steady": [ ... ], // 稳一稳列表
"protect": [ ... ] // 保一保列表
}
}
5. 部署架构
- 开发环境:JDK 1.8+, IntelliJ IDEA, Node.js 16+
- 服务器:Tomcat 9 (内置), Nginx
- 数据库连接池:Druid