返回作品

课堂考试测评系统

创建于 2025 年 8 月 1 日

标签
  • Java 17
  • Spring Boot 3.4.5
  • MyBatis-Plus
  • MySQL 8.0
  • Redis
  • Redisson
  • Knife4j
  • Vue 3
  • Vite 4
  • Element Plus
  • TypeScript
  • ECharts
  • EasyExcel

项目介绍

课堂考试测评系统是一个面向课堂教学与考试测评场景的一体化平台,项目基于芋道 ruoyi-vue-pro(yudao 企业级快速开发平台)二次开发:后端新增独立的业务模块 yudao-module-cr(约 330 个 Java 文件),前端在 yudao-ui-admin-vue3 基础上扩展了完整的 src/views/cr 视图目录。系统围绕”课堂”与”考试”两条主线,把课前(教案、班级、机房)、课中(签到、抢答、云词、打字练习、上课记录)、课后(作业互评、测评评价、网盘资料)以及考试测评(题库、组卷、在线考试、自动判分、成绩排行)串成完整闭环。

数据库脚本 250801-ketang.sqlcr_ 前缀划分业务表,共 40 余张,覆盖班级、学生、教师、机房座位、教材树、上课记录、教案、签到、抢答、云词、打字、题目、试卷、考试、答题、作业、评价配置与记录、小组、个人/小组网盘、访问足迹等实体。项目需求文档按超级管理员、教师账号、学生账号三个角色拆分,配套 XMind 脑图与接口文档,功能边界清晰。

项目架构

后端沿用 yudao 经典的 Controller-Service-Mapper 三层架构,基于 Java 17 + Spring Boot 3.4.5,持久层使用 MyBatis-Plus 3.5.12,数据库为 MySQL 8.0,并复用框架自带的 Redis/Redisson 缓存、多租户与数据权限、Quartz 定时任务、EasyExcel 导入导出、Knife4j 接口文档等基础设施。业务模块 yudao-module-cr 依赖 yudao-module-systemyudao-module-infra,教师、学生等角色统一挂在 yudao 的用户体系上(如 system_users 中 142 号用户即教师),通过菜单与权限注解(@PreAuthorize)做接口鉴权。

数据设计上,考试采用”试卷快照”思路:题目库存于 cr_question(含单选/多选/填空/简答四类、难度、标签、共享标记),组卷后题目及选项、填空答案固化到 cr_paper_questioncr_paper_question_choice_optioncr_paper_question_fill_answer 等试卷专用表;学生开始考试时再把正确答案快照到 cr_exam_answer,此后教师如何修改题库都不会影响进行中的考试判分。前端基于 Vue 3 + Vite 4 + Element Plus 2.9.1 + TypeScript,课堂互动页使用 ECharts 词云(echarts-wordcloud)渲染云词,学生考试页内置倒计时、答题卡与成绩弹窗。

核心功能

  • 考试编排与状态管理:教师创建考试时绑定试卷,可配置参与班级(JSON 数组)、起止时间、考试时长、题目顺序(固定/随机)、是否显示解析与排行榜、是否启用 IP 白名单、是否允许重考及最大重考次数;考试在”未开始 → 进行中 → 已暂停 → 已结束”状态机间流转,结束考试时 autoSubmitExamRecords 会把所有”进行中”记录强制提交(状态 4)并结算分数,同时提供 getExamStatistics 统计与 getExamResults 成绩列表。
  • 准入校验与防作弊:学生开始考试时后端依次校验考试状态、学生班级是否在 class_ids 白名单内、limit_ip 开启时客户端 IP 是否在 allowed_ips 中(IP 由 ServletUtils.getClientIP() 采集并写入 cr_exam_record.client_ip 留痕)、进行中记录复用、重考次数上限;答题时若题目顺序为随机,getExamQuestions 会打乱题目序列,降低相邻学生互抄风险。
  • 自动判分与人工评分autoGradeAnswer 对单选做全对/全错判定;多选完全匹配得满分、部分正确得一半分并标记”部分正确”(is_correct 0/1/2 三态);填空按空位逐空忽略大小写匹配、按命中比例给分;简答题无标准答案,置 isGraded=0 并给考试记录打上 need_manual_grade 标记等待教师人工评分。每次提交答案后 updateExamRecordScore 实时累加总分、客观分(objective_score)与主观分(subjective_score)。
  • 学生考试体验:学生端”我的考试”以卡片列出可参加/进行中/已提交的考试,考试弹窗逐题作答、支持前后题切换与答题卡定位,倒计时剩余 5 分钟弹窗提醒、时间耗尽自动强制交卷;交卷后展示得分、当前排名(show_rank 控制)与成绩排行榜,并可回看客观题解析。
  • 题库与组卷:题目支持单选、多选、填空、简答四种题型,可打标签、设难度与分数、标记是否共享;组卷接口 selectQuestionsForPaper 按条件分页筛选题库,试卷支持”含题创建”、复制(copyPaper 连同题目与选项一起深拷贝)与详情统计(getPaperDetailWithStats)。
  • 课堂教学闭环:班级管理(所属教师、机房关联)、学生信息(支持 Excel 模板导入)、教师与班级关联、机房与座位管理、教材树(年级 → 学科 → 册 → 章节的祖先链式层级);教案(教学计划)与上课记录(周次/星期/节次、应到/实到/迟到/请假、备注)支撑教务留痕,学生端可查看自己的上课记录。
  • 课堂互动四件套:打卡签到(学生签到、教师查看课堂座位分布 getClassroomSeats)、快速提问/抢答(学生端返回题目及答题状态)、云词收集(教师开始/停止收集,学生提交云词,前端渲染词云)、打字练习(教师设置课堂打字内容,记录打字信息)。
  • 作业与测评:作业支持标题、内容、类别、是否允许点赞/星级、限制文件类型、是否允许重新提交;学生提交作业后可互评,教师可评价作业、切换点赞、查看评论与作业统计、拉取”可互评”记录分页。测评模块通过评价配置(类型/评语/分数/logo 模板)生成对学生的评价记录(班级、学生、评语、分数),支持批量删除与 Excel 导出。
  • 个人/小组网盘与仪表盘:网盘支持上传、下载、批量下载、重命名、移动、分享链接、回收站恢复,教师可管理全部学生文件,个人/小组网盘可用性由系统配置开关控制;管理员、教师、学生三套仪表盘分别提供班级人数统计、任教班级平均分、学生个人信息与课堂评价列表。

设计亮点

  • 考试快照保证判分一致性initExamAnswers 在学生开始考试时把试卷上的正确答案按题型解析(单选取正确选项 key、多选取正确选项集合、填空取答案列表)快照进 cr_exam_answer,判分完全基于快照,题库后续修改不影响已开考考试。
  • 多选部分给分策略:多选按”全对满分、部分正确半对半得分、全错零分”三档计分,is_correct 用 0/1/2 区分错误/正确/部分正确,比传统全对全错的二值判定更符合教学实际。
  • 双保险的收卷兜底:教师结束考试时后端批量强制提交未交卷记录;学生端前端定时器到点也会自动交卷。前后端双保险确保考试结束时没有”悬空”的进行中记录。
  • IP 采集与白名单双层防作弊:学生开始考试时后端主动采集客户端 IP 写入考试记录(全程留痕),若教师开启 limit_ip,则与 allowed_ips 白名单比对拦截,机房考试场景下可精确限制学生只能在指定机房作答。
  • 题目顺序随机化getExamQuestions 根据考试的 question_order 配置对题目列表洗牌,同一试卷不同学生看到不同题序,结合 IP 限制形成低成本高性价比的防作弊组合。

功能截图

暂无运行截图。

快速上手

项目由后端 ruoyi-vue-pro-课堂考试测评系统 与前端 yudao-ui-admin-vue3-课堂考试测评系统 两个工程组成。后端为 Maven 多模块工程(Spring Boot 3.4.5 / Java 17),先将 数据库/250801-ketang.sql 导入 MySQL 8.0,在 yudao-serverapplication-local.yaml 中配置数据源与 Redis 后启动即可;业务代码集中在 yudao-module-cr。前端使用 pnpm 安装依赖(pnpm i)后以 pnpm dev 启动(Vite 4)。由于基于芋道框架,需先以超级管理员账号初始化框架菜单与权限,再通过 cr 模块的菜单路径(/cr/...)进入班级、题库、试卷、考试、课堂互动等页面;学生账号登录后进入”我的考试”与课堂功能页体验完整流程。

总结

该项目把”教、学、考、评”四个环节真正打通:课堂侧有签到、抢答、云词、打字等轻量互动与上课记录留痕,考试侧有题库 → 组卷 → 发布 → 自动判分 → 成绩排行的完整链路,测评与作业互评又补全了过程性评价。技术上站在芋道成熟脚手架的肩膀上,快速获得了多租户、权限、定时任务、Excel 等企业级能力,而考试快照、多选部分给分、IP 白名单、随机题序等设计都体现出对真实教学场景的细致考虑,是一个功能完整、思路值得借鉴的教育类业务系统。