基于 Spring Boot、MyBatis Plus、MySQL、HTML、CSS、JavaScript、Vue.js、Redis 与 Spring Security 技术栈的 Java 项目实战:选课推荐交流平台的设计与实现
1. 项目概述
1.1项目目标
- 为学生提供个性化课程推荐,助力高效选课。
- 构建师生交流社区,促进课程相关交流。
- 实现课程与用户信息的高效管理。
1.2功能概述
- 用户管理:包括注册、登录、信息修改、角色管理。
- 课程管理:课程发布、查询、修改、删除、选课操作、评价与推荐。
- 交流社区:课程讨论、留言板、评论功能。
- 可视化分析:展示选课数据与用户行为分析。
2. 系统架构设计
2.1技术选型
- 后端:Java + Spring Boot + MyBatis Plus,操作数据库高效便捷。
- 数据库:MySQL,存储数据。
- 前端:HTML + CSS + JavaScript + Vue.js,构建用户界面。
- 安全:Spring Security,保障系统安全。
- 缓存:Redis,提升系统性能。
2.2系统架构图
系统采用分层架构,展示各层关系与交互方式,包括前端、后端、数据库、缓存等组件,以及数据流向。
2.3模块设计
- 用户模块:处理用户注册、登录、信息管理、角色授权。
- 课程模块:涵盖课程管理、选课、评价、推荐。
- 交流模块:实现讨论区、留言板、评论功能。
- 数据可视化模块:负责选课数据与用户行为分析展示。
3. 数据库设计
3.1概念模型设计(ER图)
绘制ER图,展示用户、课程、学院、专业、选课记录、评价、留言、评论、角色、菜单、操作记录等实体及其关系。
3.2数据库表设计
表名 | 描述 | 字段 |
---|---|---|
User | 用户信息表 | user_id, user_name, password, role_id, academy_id, profession_id, grade, user_class, user_phone, user_mail, user_image, enabled |
Course | 课程信息表 | course_id, course_name, course_type, course_time, course_credit, course_teacher, course_description, course_status, academy_id, profession_id, grade, course_user_name |
Academy | 学院信息表 | academy_id, academy_name |
Profession | 专业信息表 | profession_id, profession_name, academy_id |
ChooseCourse | 选课记录表 | cc_id, cc_user_id, cc_course_id, cc_time |
Evaluation | 课程评价表 | evaluation_id, course_id, user_id, evaluation_score, evaluation_content, evaluation_time |
GuestbookInfo | 留言板信息表 | gb_id, gb_title, gb_content, gb_time, user_id |
GuestBook | 评论表 | g_id, g_content, g_time, user_id, gb_id |
Role | 角色表 | role_id, role_name |
Menu | 菜单表 | menu_id, menu_name, menu_url, parent_id |
MenuRole | 菜单角色关联表 | id, menu_id, role_id |
AdminAction | 操作记录表 | action_id, action_admin_id, action_time, action_typeid, object_id |
Result | 推荐结果表 | result_id, user_id, course_id |
Usercf | 用户协同过滤表 | id, userid, courseid, score |
Coursetype | 课程类型表 | coursetype_id, coursetype_name |
3.3数据库索引设计
对常用查询字段添加索引,如用户表的user_id、课程表的course_id等,优化查询性能。
4. 接口设计
4.1用户接口
- 登录:POST /login,参数{user_id, password, code},返回token。
- 注册:POST /register,参数{user_name, password, role_id, academy_id, profession_id, grade, user_class, user_phone, user_mail, user_image},返回成功或失败信息。
- 获取用户信息:GET /user/{user_id},返回用户详细信息。
- 更新用户信息:PUT /user,参数{user_id, user_name, user_sex, user_phone, user_mail, academy_id, profession_id, grade, user_class, user_image},返回成功或失败信息。
4.2课程接口
- 获取课程列表:GET /courses,参数{currentPage, size, course_name, academy_id, profession_id, grade},返回课程列表与分页信息。
- 获取课程详情:GET /course/{course_id},返回课程详细信息。
- 添加课程:POST /course,参数{course_name, course_type, course_time, course_credit, course_teacher, course_description, course_status, academy_id, profession_id, grade, course_user_name},返回成功或失败信息。
- 更新课程:PUT /course,参数{course_id, course_name, course_type, course_time, course_credit, course_teacher, course_description, course_status, academy_id, profession_id, grade, course_user_name},返回成功或失败信息。
- 删除课程:DELETE /course/{course_id},返回成功或失败信息。
- 选课:POST /chooseCourse,参数{cc_user_id, cc_course_id},返回成功或失败信息。
- 获取选课记录:GET /chooseCourses,参数{currentPage, size, user_id},返回选课记录列表与分页信息。
- 获取课程评价:GET /evaluations,参数{currentPage, size, course_id},返回评价列表与分页信息。
- 添加课程评价:POST /evaluation,参数{course_id, user_id, evaluation_score, evaluation_content},返回成功或失败信息。
4.3交流接口
- 获取留言列表:GET /guestbookInfos,参数{currentPage, size},返回留言列表与分页信息。
- 添加留言:POST /guestbookInfo,参数{gb_title, gb_content, user_id},返回成功或失败信息。
- 获取评论列表:GET /guestBooks,参数{currentPage, size, gb_id},返回评论列表与分页信息。
- 添加评论:POST /guestBook,参数{g_content, user_id, gb_id},返回成功或失败信息。
4.4数据可视化接口
- 获取选课数据可视化信息:GET /visualization/chooseCourse,返回选课数据可视化结果。
- 获取用户行为分析数据可视化信息:GET /visualization/userBehavior,返回用户行为分析数据可视化结果。
4.5其他接口
- 获取学院列表:GET /academies,返回学院列表。
- 获取专业列表:GET /professions,参数{academy_id},返回专业列表。
- 获取课程类型列表:GET /coursetypes,返回课程类型列表。
- 获取当前登录用户信息:GET /user/current,返回当前登录用户信息。
- 获取当前登录用户菜单:GET /menus,返回当前登录用户菜单。
- 发送邮件:POST /mail/send,参数{from, to, subject, text},返回成功或失败信息。
5. 核心功能实现
5.1用户管理
- 用户注册时,密码加密存储,确保安全。
- 用户登录时,验证账号状态与密码正确性,生成token。
- 用户信息修改时,更新数据库记录。
5.2课程管理
- 课程添加时,校验必填字段与数据合法性,关联学院、专业信息。
- 课程查询时,支持多条件筛选与分页。
- 选课操作时,检查选课冲突与限制,记录选课信息。
5.3交流社区
- 留言与评论添加时,关联用户信息,存储内容与时间。
- 展示留言与评论时,按时间排序,支持分页。
5.4可视化分析
- 定时统计选课数据与用户行为数据,存储结果。
- 前端请求时,读取统计数据,以图表展示。
5.5推荐功能
- 基于协同过滤算法实现课程推荐:分析用户选课行为,计算用户相似度,推荐相似用户选过的课程。
- 考虑课程相关性与用户兴趣偏好:结合课程类型、教师评价等因素,为用户提供更精准推荐。
6. 安全设计
6.1用户认证与授权
采用Spring Security实现用户认证与授权,用户登录后获取token,访问接口时验证token有效性与权限。
6.2数据加密
用户密码加密存储,防止泄露。敏感数据传输加密,保障数据安全。
6.3防止SQL注入与XSS攻击
对用户输入数据进行校验与过滤,防止SQL注入与XSS攻击。
6.4接口安全控制
对敏感接口设置访问权限,如管理员权限才能操作课程管理接口,确保系统安全。
7. 性能优化
7.1缓存机制
使用Redis缓存常用数据,如课程列表、用户信息,减少数据库查询,提升性能。
7.2数据库优化
优化数据库表结构,添加索引,提高查询效率。定期清理无用数据,保持数据库性能。
7.3代码优化
优化代码逻辑,减少不必要计算与资源消耗。采用异步处理提升系统响应速度。
8. 部署与运维
8.1部署方案
后端项目打包为jar包,部署到服务器,使用Nginx反向代理,前端项目打包为静态文件,部署到Nginx服务器。
8.2运维监控
使用日志框架记录系统操作与错误信息,便于排查问题。通过性能监控工具监控系统性能指标,及时发现与解决性能瓶颈。
8.3备份与恢复
定期备份数据库,确保数据安全。出现问题时,使用备份数据恢复系统。
9. 部分页面展示