基于SpringBoot实现的考试/答题系统,由于这是从一个大项目中截取的部分功能,具体的业务代码非常复杂就不列出了,这里主要介绍系统的设计思路,可作为课设或毕设的参考

数据库设计

实体类设计

  • test(试卷):记录单份试卷的信息
  • quiz(题目):记录单个题目的信息,一张试卷对应多个题目
  • test_record(试卷完成情况):记录单个学生的答题情况,每个学生提交后产生一份
  • quiz_record(题目完成情况):记录某个学生某道题目的完成情况,每个学生提交后产生一份,一份试卷完成情况对应多个题目完成情况

数据表及字段

DROP TABLE IF EXISTS `t_test`;
CREATE TABLE `t_test` (`id` char(19) NOT NULL,`title` varchar(20) NOT NULL COMMENT '试卷标题',`type` int NOT NULL COMMENT '试卷类型',`score` int NOT NULL COMMENT '总分',`suggest_time` int NOT NULL COMMENT '建议用时',`deadline` datetime NOT NULL COMMENT '截止时间',`status` int NOT NULL COMMENT '状态',`is_deleted` int NOT NULL DEFAULT '0',`gmt_create` datetime NOT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;DROP TABLE IF EXISTS `t_test_record`;
CREATE TABLE `t_test_record` (`id` char(19) NOT NULL,`uid` char(19) NOT NULL COMMENT '做题人',`test_id` char(19) NOT NULL,`type` int NOT NULL COMMENT '试卷类型',`system_score` int NOT NULL COMMENT '系统评分',`final_score` int DEFAULT NULL COMMENT '最终得分',`score` int NOT NULL COMMENT '总分',`quiz_count` int NOT NULL COMMENT '题目数量',`correct_count` int NOT NULL COMMENT '正确数量',`finish_time` int NOT NULL COMMENT '完成时间',`is_deleted` int NOT NULL DEFAULT '0',`gmt_create` datetime NOT NULL COMMENT '提交时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;DROP TABLE IF EXISTS `t_quiz`;
CREATE TABLE `t_quiz` (`id` char(19) NOT NULL COMMENT '题目ID',`test_id` char(19) NOT NULL COMMENT '试卷ID',`question` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '问题',`options` varchar(800) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '选项',`type` int NOT NULL COMMENT '题目类型',`answer` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '答案',`score` int NOT NULL COMMENT '分数',`is_deleted` int NOT NULL DEFAULT '0',`gmt_create` datetime NOT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;DROP TABLE IF EXISTS `t_quiz_record`;
CREATE TABLE `t_quiz_record` (`id` char(19) NOT NULL,`test_record_id` char(19) NOT NULL,`uid` char(19) NOT NULL COMMENT '做题人',`quiz_id` char(19) NOT NULL,`user_answer` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用户答案',`correct_answer` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '正确答案',`status` int DEFAULT NULL COMMENT '是否正确',`is_deleted` int NOT NULL DEFAULT '0',`gmt_create` datetime NOT NULL COMMENT '提交时间',`score` int NOT NULL COMMENT '获得分数',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

功能实现

对于选项的处理

我这里选项只用了数据表的一个字段,思路是在读取时将多个选项通过’/'连接,再存入数据库;读取时通过String的split方法将多个选项拆开放入列表传给前端

检查试卷完成情况并打分

学生提交试卷后,前端将试卷信息以及学生各题的答案传到后端,后端在数据库中查询相应题目的正确答案并与学生提交的答案进行比对,得到学生各题的完成情况,将对应的数据存入数据库之后再返回一份数据给前端,以便学生能查看自己的答题情况

功能优化

为了增加考试的严谨性,防止学生互通答案,我决定在不同学生获取试卷时将各题的选项随机打乱,此处的难点为:这里的随机打乱不能完全随机,因为要保证同一位学生答题界面和答题结果界面的一致性,比如在做题时选择了C,查看结果却发现变成了D…

实现思路:前端在传输给后端的对象中加入当前学生的ID号,由于ID固定不变,在打乱选项时取ID的最后一位作为随机数种子,调用Collections的shuffle方法对选项进行打乱,这样就能保证对一份试卷而言,同一学生的打乱顺序相同,不同学生的打乱顺序不同

最终效果

在此基础上结合增删改查和前端页面,最终实现效果如下图:

考试/答题系统的设计思路相关推荐

  1. 毕业设计So Easy:在线考试答题系统

    目录 1.项目概述 2.开发环境 3.项目运行 4.项目效果 很多计算机专业大学生经常和我交流:毕业设计没思路.不会做.论文不会写.太难了...... 针对这些问题,决定分享一些软.硬件项目的设计思路 ...

  2. 一个简单答题系统的设计与实现(二)

    在一个简单答题系统的设计与实现(一)博文中列出了需求分析,与详细设计,现在按照之前的详细设计开始一步一步实现. 文件设计(数据层设计) 该系统由于需求场景限制,在数据层利用文件和文件的读写实现查询.具 ...

  3. 近期大热的实时直播答题系统的实现思路与技术难点分享

    为什么80%的码农都做不了架构师?>>>    1.前言 HQ Trivia 号称直播答题的鼻祖,它是一款小知识互动游戏,由短视频社交鼻祖Vine的联合创始人拉斯-尤苏波夫和科林-克 ...

  4. 专业的在线考试答题系统,快考题,高并发人数使用流畅

    在线考试的普及,让越来越多的学校,企业,教育机构纷纷加入.在线考试系统的开发也打破了以往传统的考试模式,不受时间限制,不受地域限制.那么一个完善的在线考试系统除了以上两大优势,还有哪些"过人 ...

  5. Java计算机等级考试系统的实现_基于JSP的计算机等级考试查询系统的设计与实现论文.docx...

    基于JSP的计算机等级考试查询系统的设计与实现论文.docx 职场大变样社区():下载毕业设计成品全套资料,全部50元以下毕业设计(论文)任务书第1页毕业设计(论文)题目:基于JSP的计算机等级考试查 ...

  6. php答题测试,ThinkPHP框架开发的微信考试问卷答题系统_学生在线考试答题系统

    源码介绍 ThinkPHP框架开发的微信考试问卷答题系统,通过微信公众平台进行问卷答题,适合用来做问卷调查,也可以用来做学生考试答题系统,还有完善的问卷后台管理系统,可自定义上传问卷,支持成绩表查询. ...

  7. 在线考试答题系统的五大功能,你知道多少?

    在线考试答题系统 -五大功能,你知道多少?- 在线考试答题系统优势: 在线考试答题系统具有高度的可扩展性,高效灵活.功能强大.考试用户随时随地就可通过网络登录在线考试答题系统,参加在线报名.在线练习. ...

  8. 已超990,000+用户使用,快考题,永久免费的在线考试答题系统

    众所周知互联网教育在这两年成为了一大发展热门,那么伴随着互联网教育的发展,在线考试答题系统也备受关注,下面就带领大家了解一下在线考试答题系统. 一.高效组建各类培训考试 教育机构的知识竞赛:各大企业的 ...

  9. 爬虫与反爬虫系统的设计思路与策略

    爬虫与反爬虫系统的设计思路与策略 常用的爬虫工具 01 封IP 02 封User-Agent 03 封Cookie 04 javascript渲染 05 验证码验证 06 ajax异步传输 07 图片 ...

最新文章

  1. java jdk 环境变量配置(window 10 系统)
  2. 一.vtun源码学习笔记
  3. IDEA配置java代码规范
  4. GATT之Device information Service
  5. 主数据——共享数据的核心,数据资产的灵魂
  6. 用来正常显示中文标签显示错误代码plt.rcParams[‘font.sans-serif’] = [‘SimHei’]无法运行
  7. linux下python网络编程框架-twisted安装手记,linux编程_Linux下Python网络编程框架安装日志...
  8. 2021会员运营痛点分析
  9. Python 英文转中文
  10. 安卓DEVICE ID为何有15位和16位
  11. 【线性代数】上三角矩阵/下三角矩阵
  12. 12306排队是什么意思_12306的排队机制是什么样的?
  13. java都市男人心痒痒_男人听了会“心痒痒”的四个称呼,低情商的女人从来没叫过...
  14. 批处理——读写文件、字符串替换
  15. 项目经理杂事多,该怎么有效的安排时间
  16. PLC通讯实现-C#实现AB-CIP以太网通讯
  17. python Django音乐推荐系统
  18. 微软Exchange服务器被黑客攻击以部署Cuba勒索软件
  19. 晶体谐振器和晶体振荡器有什么区别?
  20. 字节跳动一面通过率_字节跳动面试(一面)总结

热门文章

  1. flink消费kafka从指定时间消费offset的日志
  2. 嵌套div里子元素div使用margin可能遇到的问题
  3. docker服务无法启动 神坑
  4. acm在线评测系统 c 语言,ACM在线评测系统.pdf
  5. 在Latex论文下方添加copyright
  6. 如何在GitHub上靠私活赚钱?
  7. 手机电子邮件用outlook登录
  8. 京东安联臻爱无限2020,可以带“病”投保的百万医疗险!
  9. 全国著名大学在线精品课程网站大全
  10. Translation Regime介绍