SpringBoot + MySQL + Redis 实现在线考试系统与智能组卷
下面给你一套可直接用于毕业设计 / 课程设计的《基于 SpringBoot MySQL Redis 的在线考试系统与智能组卷》完整方案。内容覆盖选题意义 → 技术架构 → 数据库设计 → Redis 典型用法 → 智能组卷算法 → 核心代码 → 答辩亮点适合本科毕设工作量充足、创新点明确。一、选题背景与意义论文可直接用随着高校信息化建设的推进传统纸质考试存在以下问题组织成本高、阅卷周期长试题重复率高缺乏科学性成绩统计繁琐易出错无法支持大规模并发考试本系统基于SpringBoot MySQL Redis实现了在线考试全流程管理基于策略的智能组卷高频数据缓存与并发控制自动阅卷与成绩分析具有较强的实用价值和推广前景。二、技术架构前端Vue / Thymeleaf ↓ SpringBoot ├── Controller接口层 ├── Service业务层 │ ├── 考试管理 │ ├── 智能组卷 │ └── 成绩统计 ├── MapperMyBatis ↓ MySQL持久化存储 Redis缓存 / 限流 / 临时试卷技术作用SpringBoot快速开发MyBatisORMMySQL存储试题、试卷、成绩Redis缓存题库、考试会话、限流Vue / Axios前后端分离JWT登录鉴权三、系统角色设计1️⃣ 管理员题库管理增删改查科目 题型管理考试发布系统监控2️⃣ 教师智能组卷手动组卷阅卷主观题成绩分析3️⃣ 学生在线答题自动交卷查看成绩与解析四、数据库设计核心表1️⃣ 试题表questionCREATE TABLE question ( id BIGINT PRIMARY KEY AUTO_INCREMENT, subject_id INT, type VARCHAR(20), -- single/multiple/judge content TEXT, options JSON, -- [A,B,C,D] answer VARCHAR(50), difficulty INT, -- 1~5 score INT, create_time DATETIME );2️⃣ 试卷表paperCREATE TABLE paper ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100), total_score INT, duration INT, -- 分钟 create_by INT );3️⃣ 试卷题目表paper_questionCREATE TABLE paper_question ( paper_id BIGINT, question_id BIGINT, score INT );4️⃣ 考试记录表exam_recordCREATE TABLE exam_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, student_id INT, paper_id BIGINT, start_time DATETIME, end_time DATETIME, score DECIMAL(5,2) );5️⃣ 答题详情表answer_recordCREATE TABLE answer_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, record_id BIGINT, question_id BIGINT, student_answer VARCHAR(50), correct_answer VARCHAR(50), is_correct TINYINT );五、Redis 的核心应用场景✅ 答辩重点✅ 1️⃣ 缓存题库减少 DB 压力Key: question:subject:{id} Value: ListQuestion TTL: 30 minredisTemplate.opsForValue().set(key, questions, 30, TimeUnit.MINUTES);✅ 2️⃣ 考试会话防止刷新丢题Key: exam:session:{studentId}:{paperId} Value: 当前答题状态 JSON TTL: 考试时间 5min✅ 3️⃣ 考试倒计时原子操作redisTemplate.opsForValue().set(exam:time: recordId, remainSeconds); redisTemplate.expire(exam:time: recordId, remainSeconds, TimeUnit.SECONDS);✅ 4️⃣ 防重复提交 / 限流Boolean ok redisTemplate.opsForValue() .setIfAbsent(exam:submit: studentId, 1, 5, TimeUnit.SECONDS); if (!ok) { throw new RuntimeException(请勿重复提交); }六、智能组卷设计⭐ 创新点组卷策略参数参数说明题型比例单选/多选/判断难度分布简单 / 中等 / 困难知识点覆盖章节权重总分100题量N智能组卷算法简化版public ListQuestion smartGeneratePaper(PaperStrategy strategy) { ListQuestion result new ArrayList(); // 按难度随机抽取 for (Difficulty diff : Difficulty.values()) { int count strategy.getCountByDifficulty(diff); ListQuestion list questionMapper .selectRandom(diff, strategy.getSubjectId(), count); result.addAll(list); } return result; }进阶写法遗传算法 / 回溯算法 / 权重随机毕设加分七、自动阅卷核心逻辑public BigDecimal autoScore(Long recordId) { ListAnswerRecord answers answerMapper.selectByRecordId(recordId); BigDecimal total BigDecimal.ZERO; for (AnswerRecord ar : answers) { if (ar.getStudentAnswer().equals(ar.getCorrectAnswer())) { ar.setIsCorrect(1); total total.add(BigDecimal.valueOf(ar.getScore())); } } answerMapper.updateBatch(answers); return total; }八、系统特色答辩必讲✅ Redis 缓存题库提高并发性能✅ 智能组卷算法提升试卷科学性✅ 考试倒计时 自动交卷✅ 防作弊禁止重复提交、会话校验✅ 支持大规模在线考试✅ 可扩展为微服务 / 分布式部署九、毕设论文结构建议章节内容第1章绪论第2章相关技术SpringBoot / Redis / MyBatis第3章系统需求分析第4章系统设计E-R图、Redis设计第5章系统实现重点智能组卷第6章系统测试并发、性能第7章总结与展望十、可升级方向体现工作量✅ 前后端分离Vue ElementUI✅ JWT Redis 登录鉴权✅ 试卷导出 PDF✅ 错题本 / 学习推荐✅ 考试监控切屏检测✅ 分布式锁Redisson