news 2026/7/1 8:20:56

SpringBoot + MySQL + Redis 实现在线考试系统与智能组卷

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot + MySQL + Redis 实现在线考试系统与智能组卷

下面给你一套可直接用于毕业设计 / 课程设计的《基于 SpringBoot + MySQL + Redis 的在线考试系统与智能组卷》完整方案

内容覆盖:选题意义 → 技术架构 → 数据库设计 → Redis 典型用法 → 智能组卷算法 → 核心代码 → 答辩亮点,适合本科毕设,工作量充足、创新点明确。


一、选题背景与意义(论文可直接用)

随着高校信息化建设的推进,传统纸质考试存在以下问题:

  • 组织成本高、阅卷周期长

  • 试题重复率高,缺乏科学性

  • 成绩统计繁琐,易出错

  • 无法支持大规模并发考试

本系统基于SpringBoot + MySQL + Redis,实现了:

  • 在线考试全流程管理

  • 基于策略的智能组卷

  • 高频数据缓存与并发控制

  • 自动阅卷与成绩分析

具有较强的实用价值和推广前景。


二、技术架构

前端(Vue / Thymeleaf) ↓ SpringBoot ├── Controller(接口层) ├── Service(业务层) │ ├── 考试管理 │ ├── 智能组卷 │ └── 成绩统计 ├── Mapper(MyBatis) ↓ MySQL(持久化存储) Redis(缓存 / 限流 / 临时试卷)

技术

作用

SpringBoot

快速开发

MyBatis

ORM

MySQL

存储试题、试卷、成绩

Redis

缓存题库、考试会话、限流

Vue / Axios

前后端分离

JWT

登录鉴权


三、系统角色设计

1️⃣ 管理员

  • 题库管理(增删改查)

  • 科目 & 题型管理

  • 考试发布

  • 系统监控

2️⃣ 教师

  • 智能组卷

  • 手动组卷

  • 阅卷(主观题)

  • 成绩分析

3️⃣ 学生

  • 在线答题

  • 自动交卷

  • 查看成绩与解析


四、数据库设计(核心表)

1️⃣ 试题表question

CREATE 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️⃣ 试卷表paper

CREATE TABLE paper ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100), total_score INT, duration INT, -- 分钟 create_by INT );

3️⃣ 试卷题目表paper_question

CREATE TABLE paper_question ( paper_id BIGINT, question_id BIGINT, score INT );

4️⃣ 考试记录表exam_record

CREATE 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_record

CREATE 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: List<Question> TTL: 30 min
redisTemplate.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 List<Question> smartGeneratePaper(PaperStrategy strategy) { List<Question> result = new ArrayList<>(); // 按难度随机抽取 for (Difficulty diff : Difficulty.values()) { int count = strategy.getCountByDifficulty(diff); List<Question> list = questionMapper .selectRandom(diff, strategy.getSubjectId(), count); result.addAll(list); } return result; }

📌进阶写法:遗传算法 / 回溯算法 / 权重随机(毕设加分)


七、自动阅卷核心逻辑

public BigDecimal autoScore(Long recordId) { List<AnswerRecord> 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)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 8:18:35

从传统后端到阿里大模型应用层:我的两年Agent/RAG学习路径(收藏版)

作者分享从传统后端开发转行大模型应用层的经验&#xff0c;涵盖LLM基础、模型原理、RAG技术、流式编程及开源项目学习。强调技术结合产品思维的重要性&#xff0c;并提供配套学习资源。适合想入行大模型应用开发的小白或程序员。 先说我&#xff0c;传统后端开发入职阿里&…

作者头像 李华
网站建设 2026/7/1 8:11:11

文件上传漏洞攻防实战:从DVWA靶场到74cms的进阶绕过技巧

1. 项目概述&#xff1a;从靶场到实战的文件上传漏洞攻防演练最近在整理OSCP认证相关的研习笔记&#xff0c;发现“文件上传漏洞”这个老生常谈的议题&#xff0c;在实战和考试中依然是高频考点&#xff0c;也是许多WEB应用安全评估的突破口。很多人觉得它简单&#xff0c;无非…

作者头像 李华
网站建设 2026/7/1 8:07:52

别再只盯着CQI≥7的占比了:一份给LTE/5G网优工程师的CQI实战调优手册

别再只盯着CQI≥7的占比了&#xff1a;一份给LTE/5G网优工程师的CQI实战调优手册当网络优化工程师的绩效考核表上赫然印着"CQI≥7占比≥85%"的KPI时&#xff0c;这个看似简单的数字背后往往隐藏着复杂的无线环境故事。去年某省会城市的地铁线路优化项目中&#xff0c…

作者头像 李华
网站建设 2026/7/1 8:03:28

别再死记硬背了!用这5个真实场景,彻底搞懂Cisco ASA防火墙的NAT配置

实战解析&#xff1a;5个企业级场景下的Cisco ASA防火墙NAT配置精髓在当今复杂的网络环境中&#xff0c;Cisco ASA防火墙的NAT配置一直是网络工程师必须掌握的核心技能。但传统的命令手册式学习往往让工程师陷入"配置会做&#xff0c;原理不懂"的困境。本文将带您通过…

作者头像 李华
网站建设 2026/7/1 8:02:40

3步掌握Axure中文包:告别英文界面,提升原型设计效率

3步掌握Axure中文包&#xff1a;告别英文界面&#xff0c;提升原型设计效率 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在…

作者头像 李华