springboot高考志愿填报推荐系统---附源码14332
源码获取
私信联系我即可~
大家点赞、收藏、关注、评论啦
精彩专栏推荐订阅:在下方专栏👇🏻
👇🏻 精彩专栏 推荐订阅👇🏻
Java精品项目案例【2000套】Java精品项目案例【2000套】
https://blog.csdn.net/2401_88653928/category_13187615.html
Python精品项目案例【500套】
uniapp/微信小程序/安卓app【1800套】
✅文末获取源码✅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️
目录
1 绪论
1.1 研究背景与意义
1.1.1 研究背景
1.1.2 研究意义
1.2 国内外研究现状
1.2.1 国内现状
1.2.2 国外现状
1.3 主要研究内容
2 相关技术介绍
2.1 Spring Boot框架
2.2 Vue.js框架
2.3 MySQL数据库
2.4 前后端分离架构
3 系统分析
3.1 可行性分析
3.1.1 技术可行性
3.1.2 经济可行性
3.1.3 操作可行性
3.2 功能需求分析
3.2.1 学生用户功能需求
3.2.2 管理员用户功能需求
3.3 数据采集与预处理
4 系统设计
4.1 系统架构设计
4.2 系统结构功能设计
4.3 系统流程设计
4.3.1 系统总体业务流程设计
4.3.2 学生注册登录流程设计
4.3.3 专业信息查看流程设计
4.3.4 历年分数查看流程设计
4.3.5 专业信息管理流程设计
4.4 数据库设计
4.4.1 E-R图设计
4.4.2 数据库表设计
5 系统实现
5.1 1学生用户角色功能实现
5.1.1 注册登录
5.1.2 专业信息查看
5.1.3 专业信息数据对比
5.1.4 通知公告查看
5.1.5 新闻资讯查看
5.1.6 历年分数查看
5.1.7 就业信息查看
5.2 管理员用户角色功能实现
5.2.1 地域信息管理
5.2.2 成绩区间管理
5.2.3 学位数据管理
5.2.4 专业信息管理
5.2.5 历年分数管理
5.2.6 就业信息管理
5.2.7 通知公告管理
5.2.8 新闻资讯管理
5.2.9 新闻资讯分类管理
6 系统测试
6.1 测试目的
6.2 测试方法
6.3 测试内容
6.4 测试结论
7 总结
参考文献
致谢
学生用户功能需求
学生用户在系统中可以执行注册登录、专业信息查看、专业信息数据对比、通知公告查看、新闻资讯查看、历年分数查看、就业信息查看操作。注册登录用于身份验证与个性化数据存储。专业信息查看获取院校专业的基本属性与录取要求。数据对比功能将多个专业并列展示,便于横向评估差异。通知公告与新闻资讯提供系统动态与教育政策信息。历年分数查看帮助考生评估录取概率。就业信息查看用于了解专业对应的职业前景。
学生用户完成账户注册与登录后可访问系统核心功能。专业信息模块支持多条件筛选与关键词检索,查看院校层次、选科要求、计划招生等详细数据。数据对比功能允许同时选取多个专业,在统一界面中比对录取分数、学费学制、地域分布等指标。资讯类功能提供公告与新闻的分页浏览,支持按分类筛选内容。历年分数查询按年份维度展示录取分数变化趋势。就业信息模块展示各专业的就业人数与薪资水平数据。
管理员用户功能需求
管理员用户在系统中可以对地域信息进行管理,成绩区间进行管理,学位数据进行管理,专业信息进行管理,历年分数进行管理,就业信息进行管理,通知公告进行管理,新闻资讯进行管理,新闻资讯分类进行管理。地域信息管理维护招生地区数据。成绩区间管理用分数段来确定分界线。学位数据管理维护学位授予信息。专业信息管理增删改查院校专业数据。每年分数更新后,就对录取分数进行更新。就业信息的管理维护就业率、薪资数据。通知公告、新闻资讯发布系统发布通知、发布教育资讯。根据内容的性质将组织资讯内容分层。
管理员用户通过身份验证后进入管理控制台,对系统数据进行全面维护。地域信息、成绩区间、学位数据作为基础字典,支撑专业信息的分类检索。专业信息管理是核心模块,负责维护学校名称、录取批次、选科要求、计划招生、最低分位次等字段,支持数据导入导出。历年分数管理与专业信息关联,按年份维度录入录取分数。就业信息管理维护各专业的就业人数与薪资水平。通知公告与新闻资讯模块支持富文本编辑与发布时间设置。分类管理提供树形结构组织资讯内容。
系统总体业务流程设计
系统总体业务流程覆盖学生与管理员两类角色。学生通过注册登录进入系统。系统主页展示专业信息、历年分数、新闻通知等核心模块。学生查阅专业详情或对比不同专业数据。历年分数与就业信息辅助决策参考。管理员后台管理地域、成绩、学位等基础数据。专业信息与新闻公告由管理员统一维护。系统总体业务流程如图4-3所示。
学生注册登录流程设计
学生注册登录流程从访问系统首页开始。新用户提交用户名与密码完成注册。已注册用户直接输入凭证进行登录验证。系统后台核对用户信息一致性。验证通过后跳转至学生个人主页。验证失败则停留在登录页面并提示错误。学生注册登录流程如图4-4所示。
专业信息查看流程设计
专业信息查看流程启动于学生进入专业浏览模块。系统展示专业列表包含名称与学位等基础字段。学生选定某个专业查看详细描述。系统加载该专业的培养目标与核心课程。学生可选择加入对比列表以便横向评估。专业信息查看流程如图4-5所示。
历年分数查看流程设计
历年分数查看流程服务于学生填报参考需求。学生进入分数查询页面选择年份与专业类别。系统接收筛选条件后检索对应录取数据。返回结果包含最低分与平均分等关键指标。学生可调整年份重新查询获得不同年度趋势。历年分数查看流程如图4-6所示。
图4-6 历年分数查看流程图
数据库
DROP TABLE IF EXISTS `student_user`; CREATE TABLE `student_user`(student_user_id int(11) NOT NULL AUTO_INCREMENT COMMENT '学生用户ID', `student_name` varchar(64) comment '学生姓名', `student_gender` varchar(64) comment '学生性别', `college_entrance_examination_results` double(8,2) DEFAULT 0 comment '高考成绩', `geographical_preference` varchar(64) comment '地域偏好', `examine_state` varchar(16) DEFAULT '已通过' NOT NULL comment '审核状态', `user_id` int(11) DEFAULT '0' NOT NULL comment '用户ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `create_by` int(11) DEFAULT '1' NOT NULL comment '创建用户ID', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', DROP TABLE IF EXISTS `school_data`; CREATE TABLE `school_data`(school_data_id int(11) NOT NULL AUTO_INCREMENT COMMENT '学校数据ID', `school_serial_number` varchar(64) comment '学校序号', `school_name` varchar(64) comment '学校名称', `specificss_link` varchar(64) comment '详情链接', `school_level` varchar(64) comment '学校层次', `school_district` varchar(64) comment '学校地区', `year_of_enrollment` varchar(64) comment '招生年份', `admission_batch` varchar(64) comment '录取批次', `admission_types` varchar(64) comment '招生类型', `provincial_control_line` varchar(64) comment '省控线', `professional_group` varchar(64) comment '专业组', `course_selection_requirements` varchar(64) comment '选科要求', `major_name` varchar(64) comment '专业名称', `planned_enrollment` varchar(64) comment '计划招生', `lowest_score` varchar(64) comment '最低分', `lowest_rank` varchar(64) comment '最低位次', `school_tuition` varchar(64) comment '学校学费', `school_system` varchar(64) comment '学校学制', `professional_information_limit_times` int(8) DEFAULT 0 NOT NULL comment '展示限制次数', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `create_by` int(11) DEFAULT '1' NOT NULL comment '创建用户ID', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', DROP TABLE IF EXISTS `professional_information`; CREATE TABLE `professional_information`(professional_information_id int(11) NOT NULL AUTO_INCREMENT COMMENT '专业信息ID', `school_name` varchar(64) comment '学校名称', `school_level` varchar(64) comment '学校层次', `school_district` varchar(64) comment '学校地区', `year_of_enrollment` varchar(64) comment '招生年份', `admission_batch` varchar(64) comment '录取批次', `admission_types` varchar(64) comment '招生类型', `provincial_control_line` varchar(64) comment '省控线', `professional_group` varchar(64) comment '专业组', `course_selection_requirements` varchar(64) comment '选科要求', `major_name` varchar(64) comment '专业名称', `planned_enrollment` varchar(64) comment '计划招生', `lowest_score` varchar(64) comment '最低分', `lowest_rank` varchar(64) comment '最低位次', `school_tuition` varchar(64) comment '学校学费', `school_system` varchar(64) comment '学校学制', `school_area` varchar(64) comment '学校地域', `achievable_results` varchar(64) comment '可冲成绩', `sdesk_results` varchar(64) comment '可稳成绩', `insurable_performance` varchar(64) comment '可保成绩', `pad_results` varchar(64) comment '可垫成绩', `cover_image` varchar(255) comment '封面图片', `hits` int(11) DEFAULT 0 NOT NULL comment '点击数', `praise_len` int(11) DEFAULT 0 NOT NULL comment '点赞数', `collect_len` int(11) DEFAULT 0 NOT NULL comment '收藏数', `comment_len` int(11) DEFAULT 0 NOT NULL comment '评论数', `recommend` int(11) DEFAULT '0' NOT NULL comment '智能推荐', `calendar_year_score_limit_times` int(8) DEFAULT 0 NOT NULL comment '历年分数限制次数', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `create_by` int(11) DEFAULT '1' NOT NULL comment '创建用户ID', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',注册登录
注册登录模块负责用户身份认证与会话管理。新用户填写用户名、密码、手机号码等基本信息提交注册请求,后端校验用户名唯一性后加密存储密码并创建账户记录。已注册用户通过用户名密码组合发起登录请求,后端验证凭证有效性后生成令牌返回前端,后续请求携带令牌完成身份识别。
用户登录时,后端控制器接收前端传递的用户名与密码参数。系统根据用户名查询用户表,校验账户状态是否为可用。密码验证通过后生成UUID格式的访问令牌,将令牌与用户ID存入Redis缓存,令牌有效期为2小时。登录成功后将用户基本信息与令牌封装返回前端。注册接口接收用户提交的注册信息,检查用户名唯一性后将密码直接存储,新用户默认状态设置为可用。
核心代码实现如下:
// UserController.java - 用户登录接口 @PostMapping("login") public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) { String username = data.get("username"); String password = data.get("password"); Map<String, String> map = new HashMap<>(); map.put("username", username); List resultList = service.selectBaseList(service.select(map, new HashMap<>())); if (resultList == null || resultList.size() <= 0) { return error(30000, "用户不存在"); } User byUsername = (User) resultList.get(0); if (byUsername.getState() != 1) { return error(30000, "用户非可用状态,不能登录"); } if (byUsername.getPassword().equals(password)) { AccessToken accessToken = new AccessToken(); accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", "")); accessToken.setUser_id(byUsername.getUserId()); Duration duration = Duration.ofSeconds(7200L); redisTemplate.opsForValue().set(accessToken.getToken(), accessToken, duration); JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername)); user.put("token", accessToken.getToken()); JSONObject ret = new JSONObject(); ret.put("obj", user); return success(ret); } return error(30000, "账号或密码不正确"); } // UserController.java - 用户注册接口 @PostMapping("register") public Map<String, Object> signUp(@RequestBody User user) { Map<String, String> query = new HashMap<>(); Map<String, Object> map = JSON.parseObject(JSON.toJSONString(user)); query.put("username", user.getUsername()); List list = service.selectBaseList(service.select(query, new HashMap<>())); if (list.size() > 0) { return error(30000, "用户已存在"); } map.put("password", String.valueOf(map.get("password"))); service.insert(map); return success(1); } |
注册登录界面如图5-1所示。
图5-1 注册登录界面
专业信息查看
专业信息查看模块展示院校专业的基本属性与录取要求。用户进入页面后系统加载学校层次、招生年份、选科要求等筛选条件。用户设置查询参数或输入关键词,系统根据条件组合检索数据库,以分页卡片形式展示匹配结果。点击某条记录进入详情页,展示最低分、最低位次、计划招生、学费学制等完整字段。
核心代码实现如下:
// ProfessionalInformationController.java - 专业信息查询(继承BaseController通用方法) // BaseController中提供的getList方法支持多条件分页查询 @RequestMapping("/get_list") public Map<String, Object> getList(HttpServletRequest request) { Map<String, String> query = service.readQuery(request); Map<String, String> config = service.readConfig(request); Map<String, Object> map = new HashMap<>(); List list = this.service.selectBaseList(this.service.select(query, config)); map.put("list", list); map.put("count", this.service.selectBaseCount(this.service.count(query, config))); return success(map); } |
专业信息查看界面如图5-2所示。
图5-2 专业信息查看界面
专业信息数据对比
专业信息数据对比模块支持多专业横向比较。用户在专业列表页勾选2至4个待对比专业,点击对比按钮跳转至对比页面。系统提取已选专业的核心指标字段,在学校层次、录取分数、选科要求、学费学制等维度上并列展示差异。对比表格支持列排序与高亮标记,帮助用户快速识别各专业优势与限制。
核心代码实现如下:
// ProfessionalInformationController.java - 根据ID列表批量查询专业信息 @PostMapping("/get_list_by_ids") public Map<String, Object> getListByIds(@RequestBody Map<String, Object> paramMap) { String ids = paramMap.get("ids").toString(); List<Integer> idList = Arrays.stream(ids.split(",")) .map(Integer::parseInt) .collect(Collectors.toList()); String sql = "SELECT * FROM professional_information WHERE professional_information_id IN (" + idList.stream().map(String::valueOf).collect(Collectors.joining(",")) + ")"; List<Map<String, Object>> resultList = service.selectMapBaseList(sql); Map<String, Object> result = new HashMap<>(); result.put("list", resultList); return success(result); } |
专业信息数据对比界面如图5-3所示。
图5-3 专业信息数据对比界面
通知公告查看
通知公告查看模块展示系统发布的各类通知信息。进入页面后系统按发布时间倒序排列公告列表,每条记录显示标题与发布日期。用户点击标题进入详情页阅读完整正文内容。列表上方提供搜索框,支持按标题关键词检索公告。
核心代码实现如下:
// NoticeController.java - 公告列表查询 @RequestMapping("/get_list") public Map<String, Object> getList(HttpServletRequest request) { Map<String, String> query = service.readQuery(request); Map<String, String> config = service.readConfig(request); Map<String, Object> map = new HashMap<>(); List list = this.service.selectBaseList(this.service.select(query, config)); map.put("list", list); map.put("count", this.service.selectBaseCount(this.service.count(query, config))); return success(map); } // NoticeController.java - 公告新增 @PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String, Object> addMap = service.readBody(request.getReader()); validateParameters(addMap); removeUnnecessaryFields(addMap); this.service.insert(addMap); return success(1); } |
通知公告查看界面如图5-4所示。
图5-4 通知公告查看界面
源码获取
私信联系我即可~
大家点赞、收藏、关注、评论啦
精彩专栏推荐订阅:在下方专栏👇🏻
