首页 > 编程语言 >基于SpringBoot+Vue在线考试系统的设计和实现(源码+文档+部署讲解)

基于SpringBoot+Vue在线考试系统的设计和实现(源码+文档+部署讲解)

时间:2024-07-21 09:55:00浏览次数:14  
标签:Vue SpringBoot examChoose 系统 subjectId 源码 chooseAswer 考试 在线

博主介绍:全网粉丝10W+,CSDN博客专家、全栈领域优质创作者,3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型。
研究方向:SpringBoot、Vue.JS、MyBatisPlus、Redis、SpringSecurity、MySQL、小程序、Android、Uniapp等。

博主说明:本文项目编号 T 007 ,文末自助获取源码 \color{red}{T007,文末自助获取源码} T007,文末自助获取源码

在这里插入图片描述

在这里插入图片描述


目录


一、系统介绍

在这里插入图片描述

经典老框架SSM打造入门项目《在线考试系统》,包括班级模块、教师学生模块、试卷模块、试题模块、考试模块、考试回顾模块,项目编号T007。

在这里插入图片描述

二、演示录屏

<iframe allowfullscreen="true" data-mediaembed="bilibili" frameborder="0" id="P90YEQxs-1721464783210" src="https://player.bilibili.com/player.html?aid=621875543"></iframe>

三、启动教程

<iframe allowfullscreen="true" data-mediaembed="bilibili" frameborder="0" id="QOYojiby-1719118811007" src="https://player.bilibili.com/player.html?aid=965750958"></iframe>

四、功能截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

五、文案资料

5.1 选题背景

在线考试系统是一种利用互联网技术实现的远程考试方式,它通过电子设备进行试题的呈现、作答和评分,为考生提供了便捷、高效的考试体验。这种系统通常包括题库管理、考试设置、在线答题、实时监控、成绩统计等功能,能够满足不同类型考试的需求。在线考试系统的选题背景主要基于以下几个方面:首先,随着信息技术的快速发展,传统的纸质考试方式已经不能满足现代社会对于考试效率和便捷性的要求;其次,在线考试系统可以有效地减少考试成本,提高考试的组织和管理效率;再次,在线考试系统可以实现试题的随机抽取和个性化设置,提高考试的公平性和针对性;最后,在线考试系统可以为考生提供更加灵活的考试时间和地点选择,满足不同考生的需求。因此,在线考试系统在教育、职业资格认证、企业内部培训等多个领域得到了广泛的应用。

5.2 国内外研究现状

在线考试系统作为一种现代教育技术,近年来在全球范围内得到了广泛的关注和研究。随着互联网技术的不断发展,越来越多的教育机构开始采用在线考试系统来提高考试的效率和质量。在国内外,许多研究者和开发者都在致力于在线考试系统的开发和优化。国外研究主要集中在考试系统的安全性、公平性、可访问性以及考试内容的多样性等方面。例如,一些研究者通过使用区块链技术来提高考试数据的安全性和不可篡改性,而另一些研究者则关注于开发更加公平和透明的评分系统。在国内,研究者们则更加关注在线考试系统的用户体验、考试流程的优化以及考试内容的本地化等方面。随着在线教育的普及,越来越多的研究者开始关注如何将人工智能技术应用于在线考试系统中,以提高考试的自动化程度和准确性。总体来看,在线考试系统的研究和开发正朝着更加智能化、个性化和高效化的方向发展。

5.3 可行性分析

六、核心代码

6.1 系统首页数据加载

@RequestMapping("/homeInfo")
public void homeInfo(HttpServletResponse response) throws IOException {
	logger.info("加载后台首页相关数据");
	
	int examPaperTotal = examPaperInfoService.getExamPpaerTotal();
	int subjectTotal = subjectInfoService.getSubjectTotal();
	int teacherTotal = teacherInfoService.getTeacherTotal();
	int studentTotal = studentInfoService.getStudentTotal();
	
	String json = "{\"examPaperTotal\":"+examPaperTotal+", " +
			"\"subjectTotal\":"+subjectTotal+", " +
			"\"teacherTotal\":"+teacherTotal+", " +
			"\"studentTotal\":"+studentTotal+"}";
	
	response.getWriter().print(json);
}

6.2 记录考生考试选择答案

@RequestMapping(value="/choose", method=RequestMethod.POST)
public void examChooseHandler(
		@RequestParam("studentId") Integer studentId,
		@RequestParam("examPaperId") Integer examPaperId,
		@RequestParam("subjectId") Integer subjectId,
		@RequestParam(value="index", required=false) Integer index,
		@RequestParam("chooseAswer") String chooseAswer,
		HttpServletResponse response) throws IOException {
	logger.info("考生 "+studentId+" 在试卷 "+examPaperId+" 中试题 "+subjectId+" 选择了答案 "+chooseAswer+" 序号 "+index);
	
	//判断该考生是否已经选择过该试题
	Map<String, Object> map = new HashMap<String, Object>();
	map.put("studentId", studentId);
	map.put("examPaperId", examPaperId);
	map.put("subjectId", subjectId);
	examChoose = examChooseInfoService.getChooseWithIds(map);
	logger.info("考生是否选择过试题 "+subjectId+" "+examChoose+" (NULL-否)");
	if (examChoose == null) {
		logger.info("考生 "+studentId+" 尚未选择试题 "+subjectId+" 添加选择记录 答案 "+chooseAswer);
		map.put("chooseResult", chooseAswer);
		/** 添加选择记录 */
		examChooseInfoService.addChoose(map);
	} else if (examChoose.getChooseId() != null && examChoose != null) {
		logger.info("考生 "+studentId+" 已经选择试题 "+subjectId+" 修改选择记录 答案 "+examChoose.getChooseResult()+" 更新为 "+chooseAswer);
		/*
			* 如果选择了和上次相同的答案,则不做修改操作
			* 优化 -- 前台判断选择了相同答案则不发出请求
			*/
		if(!chooseAswer.equals(examChoose.getChooseResult())) {
			examChoose.setChooseResult(chooseAswer);
			/** 当前选择答案和之前选择答案不同 修改答案记录 */
			examChooseInfoService.updateChooseWithIds(examChoose);
		} else {
			logger.info("考生选择了相同答案,不做修改操作");
		}
	} else {
		response.getWriter().print("f");
		return;
	}
	
	response.getWriter().print("t");
}

6.3 所有学生考试信息

@RequestMapping("/examCount")
public void getStudentExamCount(@RequestParam("tid") Integer teacherId, HttpServletResponse response) throws IOException {
	if (teacherId == null) {
		response.getWriter().print("TID-NULL");			
	} else {
		//获取当前班主任对应的班级
		ClassInfo classInfo = classInfoService.getClassByTeacherId(teacherId);
		//获取学生考试信息
		List<StudentExamInfo> stuExamInfos = studentExamInfoService.getStudentExamCountByClassId(classInfo.getClassId());
		
		response.getWriter().print(StudentExamInfoCharts.createExamCountBarJson(stuExamInfos));
	}
}

本文项目编号 T007,希望给大家带来帮助!

标签:Vue,SpringBoot,examChoose,系统,subjectId,源码,chooseAswer,考试,在线
From: https://blog.csdn.net/qq_41464123/article/details/140573567

相关文章

  • springboot+vue前后端分离项目-项目搭建13-支付宝付款
    1.进入支付宝开放平台https://open.alipay.com/,选择网页应用开发,一路设置下一步创建完成,创建后生成、设置密钥,控制台可以看到创建的应用和沙箱环境  2.使用natapp创建公网访问地址,详见:https://www.cnblogs.com/xiexieyc/p/183126383.配置SDK,找到依赖,放到自己项目的pom......
  • SSM 美食食谱分享推荐小程序 毕业设计-附源码68509
    摘要本论文主要论述了如何使用SSM框架开发一个美食食谱分享推荐小程序,将严格按照软件开发流程进行各个阶段的工作,采用B/S架构JAVA技术,面向对象编程思想进行项目开发。在引言中,作者将论述美食食谱分享推荐小程序的当前背景以及系统开发的目的,后续章节将严格按照软件开发流......
  • springboot网上商城系统 毕业设计-附源码08789
    摘 要随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设网上商城系统。本设计主要实现集人性化、高效率、便捷等优点于一身的网上商城系......
  • springboot基于Java的人力资源管理系统的设计与实现人事管理工资员工管理系统(源码+lw
    具体实现截图技术栈后端框架SpringBoot采用springboot作为后台的框架,java框架具有简化配置和开发的效率。Spring框架目前是很多java开发者的首选框架,Spring主要有两大功能,控制反转和面向切面的编程。控制反转(IOC)可以实现代码的依赖注入,减少代码......
  • springboot基于Java的企业人才引进服务平台的设计与实现(源码+lw+部署文档+讲解等)
    具体实现截图技术栈后端框架SpringBoot采用springboot作为后台的框架,java框架具有简化配置和开发的效率。Spring框架目前是很多java开发者的首选框架,Spring主要有两大功能,控制反转和面向切面的编程。控制反转(IOC)可以实现代码的依赖注入,减少代......
  • 基于SpringBoot+Vue的二手手机交易平台的详细设计和实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • springboot的多环境配置
    文章目录一、多环境配置yml二、项目部署打成jar包一、多环境配置在实际开发中,项目的开发环境、测试环境中配置可能不一致,因此SpringBoot支持多环境配置java-jarxxx,jaryml这三个yml文件做配置这个一般为本地开发环境这个为生产环境这个为测试环境二、......
  • 【2024最新版】Vue前端面试篇,看这一篇就够了
    文章目录Vue常用的指令都有哪些v-bind和v-model的区别Vue2的生命周期有哪些Vue3的生命周期有哪些vue3中创建响应式变量的方法ref和reactive原理vuex有哪些方法vue-router生命周期钩子vue框架和原生JavaScript有什么区别对于提升项目加载速度和运行效率是怎么做的webpack......
  • VuePress安装
    linux下预构建二进制文件安装NodejsNodejs预购建二级制文件下载地址安装Nodejs和npm#解压tarxvfnode-v20.15.1-linux-x64.tar.xz#移动解压出的文件夹到/usr/local下,并且重命名为nodejsmv./node-v20.15.1-linux-x64/usr/local/nodejs#添加软连接,之后就能直接......
  • 基于SpringBoot+Vue+uniapp的新闻资讯系统(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......