Files
xlh/未完成/文档内容/体系结构设计报告_Markdown生成版.md

187 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 体系结构设计报告
**项目名称**基于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