高考志愿填报是考生人生道路上的关键环节,直接关系到未来的学业规划与职业发展,传统志愿填报方式往往面临信息分散、数据更新滞后、匹配效率低等问题——考生需手动查阅厚厚的《招生专业目录》,对比不同院校历年录取分数线,耗时耗力且易出现信息误差,为解决这一痛点,结合计算机科学与技术(CS)项目实训的实践要求,我们设计并实现了一款高考志愿填报系统,旨在通过信息化手段整合院校、专业、录取数据等资源,为考生提供智能、高效、精准的志愿填报辅助服务。
项目背景与意义
1 现状分析
当前高考志愿填报主要存在三大痛点:
- 信息不对称:院校招生计划、专业设置、历年录取数据等信息分散于各省教育考试院官网、院校招生网站等平台,考生需跨平台整合,效率低下;
- 匹配不精准:考生难以快速定位“分数匹配+兴趣适配”的院校专业,仅凭“线差法”“位次法”估算,易受数据波动影响;
- 操作复杂化:模拟填报需手动排序、记录志愿表,缺乏动态调整与风险预警功能,考生易陷入“选择焦虑”。
2 项目意义
本项目以CS项目实训为契机,将软件开发流程(需求分析、系统设计、编码实现、测试部署)应用于实际问题解决,具有双重价值:
- 对考生:提供一站式数据查询、智能匹配、模拟填报服务,降低信息获取成本,提升志愿填报科学性;
- 对教学:通过真实项目实训,锻炼学生需求分析、数据库设计、前后端开发、团队协作等工程能力,实现“学用结合”。
系统需求分析
1 用户角色与核心需求
系统围绕三类用户设计核心功能:
| 用户角色 | 核心需求 |
|---|---|
| 考生 | 查询院校(名称、类型、地理位置、特色专业); 查询专业(课程设置、就业方向、录取分数线); 智能匹配(根据分数/位次推荐“冲、稳、保”院校专业); 模拟填报(生成志愿表、计算录取概率、保存填报记录)。 |
| 家长 | 查看考生模拟填报进度; 获取院校专业对比分析(如录取分数波动、就业率); 接收填报提醒(如截止日期预警)。 |
| 管理员 | 维护院校专业数据(新增/修改/删除院校、专业); 上传历年录取数据(分数线、位次、计划人数); 管理用户账户(禁用/激活违规账号)。 |
2 非功能需求
- 安全性:用户密码加密存储,敏感数据(如身份证号)脱敏处理;
- 易用性:界面简洁直观,支持关键词搜索、数据可视化展示;
- 性能:支持1000+用户并发查询,响应时间≤2秒;
- 可扩展性:预留AI推荐、实时数据接口等扩展模块。
系统设计与实现
1 技术栈选择
基于“轻量级、易开发、高性能”原则,系统采用主流前后端分离架构:
| 模块 | 技术选型 |
|---|---|
| 前端 | Vue 3 + Element Plus(UI组件库)+ ECharts(数据可视化) |
| 后端 | Spring Boot + MyBatis Plus + JWT(身份认证) |
| 数据库 | MySQL 8.0(存储结构化数据)+ Redis(缓存热点数据) |
| 开发工具 | IntelliJ IDEA(后端开发)+ VS Code(前端开发)+ Git(版本控制) |
2 核心模块设计
(1)数据管理模块
- 数据库设计:设计5张核心表——
user(用户表)、university(院校表)、major(专业表)、admission_data(录取数据表)、application_record(模拟填报记录表)。admission_data表包含年份、院校ID、专业ID、最低分、最低位次等字段,支持多维度数据关联查询。 - 数据采集:通过Python爬虫抓取各省教育考试院官网、院校招生网公开数据,经清洗后导入数据库,确保数据时效性(每年高考后更新)。
(2)智能匹配模块
- 匹配算法:基于“位次优先、分数辅助”原则,设计推荐逻辑:
- 输入考生分数/位次,查询近3年该位次对应的录取区间;
- 按院校类型(综合类、理工类等)、地域偏好等条件筛选;
- 计算每个院校专业的“匹配度”(公式:
匹配度=1-|考生位次-专业最低位次|/专业录取位次区间),生成“冲(匹配度60%-70%)、稳(70%-85%)、保(85%以上)”三级推荐列表。
(3)模拟填报模块
- 功能实现:考生可拖拽调整志愿顺序,系统实时计算“平行志愿投档模拟结果”(如“若按当前顺序填报,有X






