考研平台
- Python 41.8%
- Vue 29%
- Java 28.8%
- JavaScript 0.2%
- HTML 0.2%
| bigdata | ||
| data-collection | ||
| database | ||
| services | ||
| web | ||
| .gitignore | ||
| README.md | ||
计算机专业考研择校平台
面向计算机相关专业考研学生的院校检索、择校推荐与招生数据分析平台。整合公开招生数据,基于学生画像与 AHP 层次分析法输出个性化的冲刺/求稳/保底推荐。
一、系统功能
学生端
- 学生画像:本科专业、目标地区、成绩预估、目标专业方向、风险偏好(冲刺/求稳/保底)。
- 权重配置:分数匹配度、竞争激烈度、院校层次、地域偏好、专业匹配度五个权重滑块。
- 院校检索:按省份、专业代码、院校层次筛选,支持分页浏览。展开院校可见院校简介(官网/邮箱/电话/建校年份/隶属/985-211)。
- 择校推荐:基于全系统 494 所高校候选集,按目标省份 + 专业方向过滤,AHP 加权评分,输出推荐理由与冲刺/求稳/保底分层。
- 对比清单:最多 5 项院校专业对比(localStorage 持久化)。
- 收藏管理:收藏感兴趣的院校专业。
- 经验分享:每个专业方向下可发布/浏览备考经验评论。
- 数据可视化:招生与热度分析图表。
管理员端
- 数据导入(CSV,含院校详情与专业数据)。
- 院校专业数据管理、用户管理、系统日志、运营看板。
二、推荐算法(AHP,模型版本 ahp-v1.1)
- 方法:层次分析法(AHP,Saaty 1-9 标度),一致性比率 CR < 0.1。
- 准则权重:分数匹配度 41.7% > 竞争激烈度 26.3% > 院校层次 16% > 地域偏好 9.7% > 专业匹配度 6.2%。
- 权重融合:
final = 0.6 × AHP + 0.4 × 用户滑块权重。 - 风险调整:CONSERVATIVE
[1.3,0.9,0.7,1.0,1.1]、BALANCED[1.0×5]、AGGRESSIVE[0.7,1.1,1.4,1.0,0.8]。 - 切分阈值:≥75 保底,≥55 求稳,其余冲刺。
- 结果过滤:优先返回「目标省份 + 专业方向」均匹配的结果;无结果时放宽到仅专业匹配;再放宽到全量按分排序取前 30。
三、技术架构
| 层级 | 技术 | 职责 |
|---|---|---|
| 学生端/管理端 | Vue 3 + Vite | 检索、画像、对比、推荐、数据维护 |
| 业务服务 | Spring Boot + MyBatis-Plus | 账号、院校专业 CRUD、数据导入 |
| 算法服务 | Flask + pandas/numpy | AHP 推荐评分与排序 |
| 存储 | MySQL(本地 gradschool 库) |
业务主数据持久化 |
大数据组件(Hadoop/Hive 离线数仓、Flink 实时热度)为论文规划模块,见
bigdata/。
四、目录结构
grad-school/
├── README.md # 项目说明(唯一文档)
├── database/ # 数据库脚本(schema.sql / seed.sql)
├── services/
│ ├── business-service/ # Spring Boot 业务服务(端口 8080)
│ └── recommendation/ # Flask AHP 推荐服务(端口 5001)
├── web/ # Vue 3 前端(端口 5173)
├── data-collection/ # 数据采集脚本与最终数据
│ └── runs/ # 中间产物 CSV
├── bigdata/ # 大数据模块
│ ├── hive/ # Hive 建表与 SQL
│ └── flink/ # Flink 实时作业
└── docs/ # (已并入根 README,待清理)
五、数据
- 候选院校:494 所,来自
data-collection/system_universities.json。 - 院校详情:447 条(官网、邮箱、电话、简介、985/211、隶属等),来自
data-collection/university_details.csv。 - 专业方向:覆盖 0812(计算机科学与技术)、0835(软件工程)、0839(网络空间安全)、0854(电子信息)等。
- 历年数据:分年度复试线、招生计划、报名人数等。
- 国家线(工学):2020=264、2021=263、2022=273、2023=273、2024=273、2025=275、2026=275。
数据规则:以研招网与高校研究生院公开信息为准;报名人数未公开时不得估算;不同年份分年度展示;推荐结果仅作择校辅助。
六、快速启动
1) 启动 Flask 推荐服务(端口 5001)
cd services/recommendation
py -3 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python app.py
健康检查:GET http://127.0.0.1:5001/health → {"modelVersion":"ahp-v1.1","service":"recommendation-service","status":"ok"}
2) 启动 Spring Boot 业务服务(端口 8080)
前置:本地 MySQL(localhost:3306)已启动,账号 root / 密码 123456(可在 application.yml 修改),连接串内含 createDatabaseIfNotExist=true,首次启动自动创建 gradschool 库并建表。
cd services/business-service
mvn clean package -DskipTests
java -jar target/business-service-0.1.0.jar
数据初始化:首次连接空库时,
DataInitializer自动灌入默认账号与管理类数;院校详情数据通过管理端「数据导入」上传data-collection/university_details.csv(447 条)持久化到 MySQL,重启不丢失。
3) 启动前端(端口 5173)
cd web
npm install
npm run dev
浏览器访问:http://127.0.0.1:5173
七、默认账号
| 角色 | 账号 | 密码 |
|---|---|---|
| 管理员 | admin | 123456 |
| 普通用户 | student | 123456 |
| 测试用户 | test | 123456 |
八、API 说明
- 分页参数使用
pageSize(最大 100,需@Max(100)校验)。 - 院校分组接口:
GET /api/v1/universities?page=0&pageSize=100,返回UniversityGroup{universityName, province, level, majors[], universityInfo}。 - 推荐接口:
POST /api/v1/recommendations(由前端代理到 Flask),入参{profile, programs, weights}。
数据导入格式
- 专业数据:18 个逗号分隔字段;字段内包含逗号时替换为中文逗号
,。 - 院校详情:20 列 CSV。
九、学校与学生信息
- 题目:计算机专业考研择校平台
- 学生:马新宇(学号 202400507117)
- 专业:数据科学与大数据技术
- 指导教师:刘泽宇
更新时间:2026年9月