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

6.7 KiB
Raw Blame History

体系结构设计报告

项目名称基于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