187 lines
6.7 KiB
Markdown
187 lines
6.7 KiB
Markdown
# 体系结构设计报告
|
||
|
||
**项目名称**:基于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 逻辑架构图
|
||
```mermaid
|
||
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 核心业务时序图 (智能推荐)
|
||
```mermaid
|
||
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):**
|
||
```json
|
||
{
|
||
"province": "重庆",
|
||
"score": 580,
|
||
"subject": ["物理", "化学", "生物"],
|
||
"preference": {
|
||
"location": ["北京", "上海"],
|
||
"major_type": "工学"
|
||
}
|
||
}
|
||
```
|
||
|
||
**Response:**
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"data": {
|
||
"rush": [ ... ], // 冲一冲列表
|
||
"steady": [ ... ], // 稳一稳列表
|
||
"protect": [ ... ] // 保一保列表
|
||
}
|
||
}
|
||
```
|
||
|
||
## 5. 部署架构
|
||
- **开发环境**:JDK 1.8+, IntelliJ IDEA, Node.js 16+
|
||
- **服务器**:Tomcat 9 (内置), Nginx
|
||
- **数据库连接池**:Druid
|