基于springboot+vue的在线考试系统(前后端分离)
博主主页:猫头鹰源码
博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战
主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询
文末联系获取
项目介绍:
本系统为原创项目,采用前后端分离,项目代码工整,结构清晰,适合选题:在线考试、考试、试题、学习、前后端分离类其他考试等。系统采用springboot+vue整合开发,前端主要使用了element-ui框架、项目后端主要使用了springboot,数据层采用mybatis。
部分功能:
1.权限控制
本系统存在三个不同的角色,教师,管理员,学生三种用户,此系统是基于vue+springboot实现的前后端分离,用户权限校验通过JWT生成token令牌发放到用户,并根据令牌对用户的身份合法性进行校验。2.在线考试
学生用户在注册登录之后,可以在本系统进行在线的考试,考试可由教师和管理员进行布置并设置考试权限(公开,密码),考试题型分为 单选、多选、判断、简答题,并支持题目附带配图。考试过程中需开启摄像头进行考试,系统会自动抓拍考生实时考试状态。3.成绩模块
参加考试后的学生用户,在提交试卷后进入考试结果页面,页面会自动核对学生用户的逻辑题的对错,对于简答题需要老师或者超级管理员进行批阅。对于学生用户参与的考试,学生用户可以查看到考试的详情并可以查看到自己所错的逻辑题。4.题库模块
学生用户在题库模块中可以进行题目的功能训练,训练模式分为,顺序练习,随机练习,也可以根据题型练习(单选,多选,判断)。用户答题时会实时判断正确与否,并有错题解析功能。5.题库管理
超级管理员和教师可以对本考试系统已有的题库进行管理,实现对题库信息的CRUD操作6.试题管理
教师和系统管理员用户有权限对本系统的所有试题进行操作,本系统试题支持复杂类型的题目,考试题目支持多插图,选项答案支持单插图功能。7.考试管理
教师和系统管理员用户有权限对系统存在的考试进行操作,本系统考试支持公开考试和密码口令考试,并可以对考试进行禁用也可以在设置考试时间段,对于考试可以进行很便利的进行组卷,系统内置两种组卷模式,题库组卷和自由选题组卷。8.考卷批阅
对于本系统中存在的复杂考试的题目,可以又对应的老师进行批阅,此系统的逻辑题无需老师用户进行批阅,老师的工作仅仅是批阅简答题这种无准确答案类型的题目,极大地减轻了老师用户的工作量9.考试统计
本系统针对每一次考试进行数据统计和报表,让使用本系统的老师用户能够直观的了解到每一次考试人员的进步。10.用户管理
超级管理员可以对注册本系统用户的进行授权,并拥有操作一切用户的权限。
系统包含技术:
后端:springboot,mybatis
前端:element-ui、js、css等
开发工具:idea/vscode
数据库:mysql 5.7
JDK版本:jdk1.8
部分截图说明:
下面是登录
首页
查看考试
点击考试,确认
开始考试
考试结果
考试统计
我的成绩
题库训练
试题管理
部分代码:
@PostMapping("/getExamInfo")@ApiOperation("根据信息查询考试的信息")@ApiImplicitParams({@ApiImplicitParam(name = "examQueryVo", value = "考试信息查询vo对象", required = true, dataType = "examQueryVo", paramType = "body")})public CommonResult<PageResponse<Exam>> getExamInfo(@RequestBody ExamQueryVo examQueryVo) {return CommonResult.<PageResponse<Exam>>builder().data(examService.getExamPage(examQueryVo)).build();}@GetMapping("/getExamInfoById")@ApiOperation("根据考试id查询考试的信息和题目列表")@ApiImplicitParams({@ApiImplicitParam(name = "examId", value = "考试id", required = true, dataType = "int", paramType = "query")})public CommonResult<AddExamByQuestionVo> getExamInfoById(@RequestParam Integer examId) {return CommonResult.<AddExamByQuestionVo>builder().data(examService.getExamInfoById(examId)).build();}@GetMapping("/allExamInfo")@ApiOperation("查询考试所有信息")public CommonResult<List<Exam>> allExamInfo() {return CommonResult.<List<Exam>>builder().data(examService.list(null)).build();}@GetMapping("/getBankHaveQuestionSumByType")@ApiOperation("获取题库中所有题目类型的数量")@ApiImplicitParams({@ApiImplicitParam(name = "bankName", value = "题库名称", dataType = "string", paramType = "query"),@ApiImplicitParam(name = "pageNo", value = "页面数", required = true, dataType = "int", paramType = "query"),@ApiImplicitParam(name = "pageSize", value = "页面大小", required = true, dataType = "int", paramType = "query"),})public CommonResult<PageResponse<BankHaveQuestionSum>> getBankHaveQuestionSumByType(@RequestParam(required = false) String bankName,Integer pageNo, Integer pageSize) {return CommonResult.<PageResponse<BankHaveQuestionSum>>builder().data(questionBankService.getBankHaveQuestionSumByType(bankName, pageNo, pageSize)).build();}@GetMapping("/getQuestionByBankIdAndType")@ApiOperation("根据题库id和题目类型获取题目信息 type(1单选 2多选 3判断)")@ApiImplicitParams({@ApiImplicitParam(name = "bankId", value = "题库id", required = true, dataType = "int", paramType = "query"),@ApiImplicitParam(name = "type", value = "题目类型", required = true, dataType = "int", paramType = "query"),})public CommonResult<List<QuestionVo>> getQuestionByBankIdAndType(Integer bankId, Integer type) {return CommonResult.<List<QuestionVo>>builder().data(questionBankService.getQuestionByBankIdAndType(bankId, type)).build();}@GetMapping("/getQuestionByBank")@ApiOperation("根据题库获取所有的题目信息(单选,多选,判断题)")@ApiImplicitParams({@ApiImplicitParam(name = "bankId", value = "题库id", required = true, dataType = "int", paramType = "query")})public CommonResult<List<QuestionVo>> getQuestionByBank(Integer bankId) {return CommonResult.<List<QuestionVo>>builder().data(questionBankService.getQuestionsByBankId(bankId)).build();}@GetMapping("/getCurrentNewNotice")@ApiOperation("获取当前系统最新的公告")public CommonResult<String> getCurrentNewNotice() {return CommonResult.<String>builder().data(noticeService.getCurrentNotice()).build();}
以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。
好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~
相关文章:

基于springboot+vue的在线考试系统(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
重装linux后需要做的配置
1. linux中 vim如果输入中文乱码 打开/etc/vim/vimrc输入: set fileencodingsutf-8,gbk set termencodingutf-8 set encodingutf-8 把vim的缩进格式顺便改了 http://t.csdnimg.cn/K3ncc 2. 配置sudo授权用户 3. 新导入项目后 , chmod -R x 添加权限 4. 查询主机i…...

【华为数通HCIP | 网络工程师】821刷题日记-IS-IS(2)
个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…...

Linux系统-----进程管理(进程的创建与控制)
目录 前言 进程 1.基本概念 2.特征 3.Linux系统的进程 进程的创建 1. fork()函数 2. 多进程的创建与输出 进程的控制 1. exec()系列 2. wait() 函数 3. execl( )和fork( )联合使用 4. exit( ) 前言 前面我们学习了Linux系统的基本指令以及如…...
Unity 获取物体的子物体的方法
Unity 中要获取物体的子物体,可以使用以下一些方法。 1、只获取一级节点的子物体: public Transform tran;// Start is called before the first frame updatevoid Start(){foreach (Transform child in tran){Debug.Log(child.name);}} 使用该方法只会…...
RocketMQ 读写压测
一、Producer 压测 [rootsz-glbd-mq-108-249 rocketmq-all-5.1.3-bin-release]# sh bin/tools.sh org.apache.rocketmq.example.benchmark.Producer -n 10.XXX.108.249:9876 -t TopicTest_LEXIN_2023_pop_128 -w 64 16:39:18,402 |-INFO in org.apache.rocketmq.logging.ch.qo…...
PHP调用API接口的方法及实现(一键采集淘宝商品详情数据)
随着互联网、云计算和大数据时代的到来,越来越多的应用程序需要调用第三方的API接口来获取数据,实现数据互通和协同工作。PHP作为一种常用的服务器端语言,也可以通过调用API接口来实现不同系统的数据交互和整合。本文将介绍PHP调用API接口的方…...

得物App安卓冷启动优化-Application篇
前言 冷启动指标是App体验中相当重要的指标,在电商App中更是对用户的留存意愿有着举足轻重的影响。通常是指App进程启动到首页首帧出现的耗时,但是在用户体验的角度来看,应当是从用户点击App图标,到首页内容完全展示结束。 将启…...
【实战教程】PHP与七牛云的完美对接
前言: 随着互联网的迅速发展,越来越多的网站和应用程序需要处理大量的图片、视频和其他文件。为了有效地存储和管理这些文件,并提供快速的内容分发服务,开发者们常常依赖于云存储和CDN服务提供商。 七牛云是一家领先的云存储和C…...

Go 接口:nil接口为什么不等于nil?
一、Go 接口的地位 Go 语言核心团队的技术负责人 Russ Cox 也曾说过这样一句话:“如果要从 Go 语言中挑选出一个特性放入其他语言,我会选择接口”,这句话足以说明接口这一语法特性在这位 Go 语言大神心目中的地位。 为什么接口在 Go 中有这么…...
(UM1724) STM32 Nucleo-64 boards User manual
STM32 Nucleo-64 评估板用户手册 0. 前言1. 介绍[^1]2. Ordering information2.1 包装编号说明3. 开发环境4. 跳线端子 ON/OFF 的约定5. 快速入门6. 硬件布局与配置6.10 扩展连接器6.11 ARDUINO 连接器6.12 ST morpho 连接器7. Nucleo-64 评估板信息0. 前言 【相关博文】 【STM…...

SourceInsight - Relation Windows
磨刀不误砍柴工,你使用的工具决定了你的下限。我平时使用较多的代码编辑工具就是SourceInsight,这个工具速度快,操作方便,但处理非常大的项目的性能不是很理想,比如你要是添加整个Linux Kernel的源代码的话。 在使用SI…...
二维数组处理
输入整型二维数组a(5行5列),完成如下要求: 输出二维数组a。 将a的第2行和第4行元素对调后,形成新的二维数组a并按行输出,每个元素之间隔一个空格。(行号从0开始计算)。 用对角线(指二维数组左…...
线性表——(2)线性表的顺序存储及其运算的实现
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言📝 看到美好,感受美好&a…...

数据结构 -- 图论之最小生成树
目录 1.最小生成树算法 1.Kruskal算法 2.Prim算法 1.最小生成树算法 定义:最小生成树算法:连通图有n个顶点组成,那么此时的图的每一个点都能相互连接并且边的个数为n-1条,那么此时该图就是最小生成树. 下面量算法有几个共同的特点: 1.只能使用图中权值最小的边来构造生成树 …...

【已解决】游戏缺少xinput1_3.dll的详细解决方案与详情解析
在现代科技日新月异的时代,电脑已经成为我们生活和工作中不可或缺的工具。然而,由于各种原因,电脑可能会出现一些问题,其中之一就是xinput1_3.dll文件的缺失。本文将详细介绍xinput1_3.dll丢失对电脑的影响以及丢失的原因…...

华天动力-OA8000 MyHttpServlet 文件上传漏洞复现
0x01 产品简介 华天动力OA是一款将先进的管理思想、 管理模式和软件技术、网络技术相结合,为用户提供了低成本、 高效能的协同办公和管理平台。 0x02 漏洞概述 华天动力OA MyHttpServlet 存在任意文件上传漏洞,未经身份认证的攻击者可上传恶意的raq文件…...

小航助学题库蓝桥杯题库c++选拔赛(23年8月)(含题库教师学生账号)
需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号) 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)...
[Ubuntu 18.04] RK3399搭建NFS服务实现共享目录
NFS(Network File System)是一种分布式文件系统协议,允许远程计算机通过网络访问存储在另一台计算机上的文件。它使得多台计算机可以共享文件,并且可以在不同计算机之间实现文件的透明访问和共享。 以下是 NFS 服务器的一些特点和介绍: 文件共享:NFS 服务器允许将存储在…...

Java---抽象类讲解
文章目录 1. 抽象类概述2. 抽象类特点3. 抽象类的成员特点4. 抽象类猫狗应用 1. 抽象类概述 在Java中,一个没有方法体的方法应该定义为抽象方法;而类中如果有抽象方法,该类必须定义为抽象类。 2. 抽象类特点 1. 抽象类和抽象方法必须使用abst…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...