【JAVA开源】基于Vue和SpringBoot在线考试系统

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

在这里插入图片描述



一、系统介绍

在这里插入图片描述

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

在这里插入图片描述

二、演示录屏

三、启动教程

四、功能截图

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

在这里插入图片描述

在这里插入图片描述

五、文案资料

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,希望给大家带来帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡晗靓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值