java毕业设计——基于JSP+J2EE+sqlserver的考试监控及阅卷系统设计与实现(毕业论文+程序源码)——考试监控及阅卷系统

基于JSP+J2EE+sqlserver的考试监控及阅卷系统设计与实现(毕业论文+程序源码)

大家好,今天给大家介绍基于JSP+J2EE+sqlserver的考试监控及阅卷系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦

文章目录:

1、项目简介

  1. Smart在线考试评估系统(简称“SMART系统”),是基于Browser/Server(简称B/S)结构的数据库访问模式,采用Struts + Spring + Hibernate作为平台搭建的框架开发的一套新型智能的远程教育软件。主要用于各中小学的学生考试和教学评估。本论文设计作为Smart项目的一个组成部分,主要实现了考试过程监控和客观题的自动阅卷功能。论文首先介绍了设计中所涉及到的项目背景、开发技术,并构建了系统的总体框架;其次根据中小学的实际情况和远程教育软件项目的需求,详细地进行了数据库设计和系统功能模块设计,制定了各功能模块的流程图;然后采用JAVA编程语言对本论文的设计任务进行编码,并最终实现了对考试过程的监控和对客观题的自动阅卷等功能。通过本模块的应用,可以满足SMART系统的在线考试部分需求,对SMART系统的应用和发展起到一定的促进作用。


2、资源详情

项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:10059个字26页
包含内容:全套源码+配整论文


3、关键词

Hibernate;在线考试;考试监控;阅卷

4、毕设简介

提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。

1 引言
1.1 课题背景
随着计算机软硬件和互联网的发展,将传统的教育产业信息化成为可能。但是目前学校与社会上的各种考试大都采用传统的考试方式,在此方式下,组织一次考试至少要经过五个步骤,即人工出题、考生考试、人工阅卷、成绩评估和试卷分析。显然,随着考试类型的不断增加及考试要求的不断提高,教师的工作量将会越来越大,并且其工作将是一件十分烦琐和非常容易出错的事情,可以说传统的考试方式已经不能适应现代考试的需要。所以拥有一套实用、完善、高效的在线考试评估系统越来越显的重要。这样能更好的方便学校对教学质量的管理,降低成本,提高效率。

1.2 课题目的
根据目前中小学的具体情况,设计一套符合他们的高效智能的在线考试评估系统(SMART在线考试系统),并为学校、主管部门教学评估、教学质量控制提供决策依据。本课题主要实现该系统的部分功能——考试监控及对客观题的自动阅卷,从而减轻了老师的工作量。把更多的精力放入到对学生的教育中。

1.3 课题意义
SMART在线考试评估系统(简称“SMART系统”)目的是为中小学提供一个公正客观的在线考试、在线评估的智能化平台。考试监控及对客观题的自动阅卷的设计,主要是能够让老师平时繁琐的阅卷以及对整个考试过程的管理中解脱出来,把更多的精力投入到对学生的教育中来;从而大大提高工作效率。与此同时也提高了考试的质量,从而使考试更趋于公正、客观,更加激发学生的学习兴趣。

2 系统总体设计
2.1 系统构架及其相关技术介绍
2.1.1 系统构架
本系统是基于Browser/Server(简称B/S)结构的数据库访问模式,在struts + spring管理的hibernate作为平台框架搭建具体的Smart在线考试评估系统。
采用struts MVC框架主要用于将Smart的数据流和业务流分开,采用hibernate,主要用于更高效率对数据库存取效率及提高项目开发效率。采用spring管理的hibernate主要是获得Spring对Hibernate的支持,获得更高的开发效率和更高的Hibernate操作性能。并能获得Spring相关的事务支持。之所以不完全用Spring框架是考虑项目组的技术水平可能不足以完全驾驭这样的框架规范。所以本系统不属于标准的Struts + Spring + Hibernate的标准J2EE应用。

对于Hibernate的数据库IO操作,将采用DAO模式将操作封装至DAO对象中。而将建立专门的业务层,对WEB层及其他子模块或类进行接口。
如图2-1所示:
在这里插入图片描述

图2-1 系统框架结构图

2.1.2 相关技术介绍
 三层B/S结构介绍
B/S结构是真正的三层结构,它以访问WEB数据库为中心,HTTP为传输协议,客户端通过浏览器(Browser)访问WEB服务器和与其相连的后台数据库,我们称之为B/S(Browser/Server)模式。其三级结构组成如图2-2所示:
在这里插入图片描述

图2-2 B/S三层结构图

图中从左到右,分为三个层次:
第一层是客户端即浏览器,主要完成客户和后台的交互及最终查询结果的输出功能。在客户端向指定的Web服务器提出服务器请求,Web服务器用HTTP协议把所需文件资料传给用户,客户端接受并显示在WWW浏览器上;
第二层Web服务器是功能层,完成客户的应用功能,即Web服务器接受客户请求,并与后台数据库连接,进行申请处理,然后将处理结果返回Web服务器,再传至客户端;
第三层数据库服务器是数据层。数据库服务器应客户请求独立地进行各种处理。
与传统的C/S模式相比,B/S结构把处理功能全部移植到了服务器端,用户的请求通过浏览器发出,无论是使用和数据库维护上都比传统模式更加经济方便。而且使维护任务层次化:管理员负责服务器硬件日常管理和维护,系统维护人员负责后台数据库数据更新维护。
由以上的分析可知,三层结构也可以理解为增加WEB服务器的C/S模式。
省略

2.2 开发环境及相关技术介绍
2.2.1 开发环境
本设计主要运用JSP语言、Hibernate、Struts等知识,在Window 的环境下,采用SQL Server2000数据库,用Eclipse + MyEclipse + Tomcat + j2sdk搭建J2EE开发环境进行开发。

2.2.2 相关技术介绍
 JSP介绍
JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,其网址为http://www.javasoft.com/products/jsp。在传统的网页HTML文件(.htm,.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。

 SQL Server介绍
省略

 Eclipse介绍
Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。
虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
省略

 MyEclipse介绍
MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse 3.0 IDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。

 Tomcat介绍
Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。

 j2sdk介绍
J2SDK=JDK+JRE,J2SDK(Java 2 Software Development Kit) →JAVA2软件开发工具包,包括了Java编译器和Java虚拟器。

3 系统需求分析
需求分析是一切工作的基础,他告诉我们将要做什么。只有当了解了所需要做的任务后,才能对整个系统进行设计。
本课题主要实现SMART在线考试系统的部分功能–考试过程的监控及对客观题的自动阅卷。

3.1 考试监控模块需求分析
考试监控模块的设计,主要是实现对学生参加考试的整个过程的设计及老师对学生考试的监视与控制,包括查看学生信息,改变学生考试状态等。
学生要参加考试,必须根据学生的相关信息(如班级,学号,姓名等)以及当前的服务器时间,来查找该生有权限参加的考试信息并显示在页面上。学生通过点击相应的考试,进入到该门考试的答题界面。为了确保考试的有效性和安全性,系统必须设定一下规则:
(1).只有学生才能参加考试。
(2).学生在考试过程中,不能同时进行其他课程的考试。
(3).对学生来说,每一门考试只允许考一次;如果已经交卷,系统将会禁止其重新进行考试。如果需要进行补考或者重考,教师可以另外设置一份考卷,让学生进行考试。

为防止相邻学生之间可能会出现作弊的情况,要求在学生答题界面生成的题目要随机排序。并且答题页面要禁止实用复制和右键功能。考虑到学生答题过程中有可能会出现断线、死机、电脑故障等问题或者是要返回已经做过的题目,要实现对学生做了的题目答案进行实时保存。当学生要查看已经做过的题目时,要把题目的答案回调在页面上。

监控端主要涉及到对学生考试过程的管理。学生登陆系统时,要判断其是迟到还是由于考试过程中异常情况而重登陆。如果是迟到,则该生的考试时间不推迟,如果是由于考试过程中发生异常情况而造成的重登陆,则需要将学生在重登陆系统所浪费的这个时间补偿给学生。

学生登陆系统时,都要将信息提交到监控端。监考老师可以通过监控页面直观地看出学生的状态,并且可以改变其中的一个或多个学生的考试状态(如重新考试,结束考试等),改变状态后,学生考试界面要出现相应的提示信息。

3.2 阅卷模块需求分析
传统的手工改卷,工作量既繁重又低效,出错的几率比较高。为了使学生的考试更加趋向于公平公正,本模块主要实现对客观题的自动阅卷(如判断题、多选题、单选题等),来代替传统的老师手工该卷。在学生主动提交考卷、老师强制提交或者是考试结束时间到了自动提交后,要对学生当前的考试进行系统自动阅卷,并统计出学生的各项大题分数和总分,为后面的评估做好基础。

学生考试结束后,如果试卷的组成都是客观题,则学生可以马上查看自己的得分。

4 系统数据库设计
数据库设计也是一个很重要的环节。设计一个合理的数据库,能够让程序员在写代码的时候有很强的逻辑性,而不再为了理清数据库表间的关系浪费大量的时间和精力。在以后的系统运行中,数据库也担当着重要的角色,不合理的数据库往往是成为一个系统的瓶颈。

4.1 考试监控模块数据库设计
此模块主要涉及到的数据库表有如下几张:
在这里插入图片描述
在这里插入图片描述

4.2 阅卷模块数据库设计
此模块主要涉及到的数据库表有:
在这里插入图片描述
在这里插入图片描述

5 系统功能设计及实现
5.1 考试监控模块设计及实现
考试监控模块的设计,是指对整个考试过程及考试过程中发生的一些事件进行监视和控制。总体流程如下:
1 学生在点击参加考试后,通过对学生所在的班级NO的判断,查找出所有该班有权限参加的考试,再通过发卷时间与服务器当前时间的比对,在页面上显示出符合该生的考试信息。
在这里插入图片描述

图5-1 学生考试信息图

主要实现代码:
通过用户登陆时写入Session的用户类型,判断是否是学生用户。如果是,则通过用户ID查找到该用户对应的班级NO,再通过班级NO查找对应的符合该班级的考试信息。

//得到用户登陆是存在Session中的用户类型及用户ID
		Authorization user = (Authorization)request.getSession().getAttribute(Constants.USER_KEY);
		//用户ID		
		Long userId = user.getLoginInfo().getUserId();
		//用户类型
		String userType = user.getLoginInfo().getType();
		Map params = new HashMap();
		SmartStudent entity = null;
		//判断该用户如果是学生类型,则将userID传到后台,通过SmartStudent试题得到相关学生信息
		if(userType.equals(UserType.STUDENT)) {
			params.put("stuId", userId);
			entity = (SmartStudent) this.call(new Carrier(params,
					BusinessConstants.PCM_USER_BUSINESS, "LoadStudent"));
		}
		//得到学生所在班级NO
		String classNo = entity.getClassNo();	
		params = new HashMap();
		//通过班级NO查找符合该班的考试信息
		params.put("classNo", classNo);
		List result = (List) this.call(new Carrier(params,
				BusinessConstants.EXAM_OPTION_BUSINESS, "SearchExam"));

比对服务器时间与考试发卷时间及考试结束时间,如果服务器时间早于发卷时间或者迟于考试结束时间,则不显示该门的考试信息。

//调用DatetimeGap(String headDatetime, String tailDatetime)函数,返回两个日期时//间字符串之间的差,日期尾减日期头,以秒为单位。 如果值为负数,说明日*期头大于日//期尾,返回的格式为“long”。
SmartExam smartExam = (SmartExam)result.get(i);
//得到考试发卷时间
String sendTime = smartExam.getSendTime().toString();
//得到考试结束时间
String endTime = smartExam.getEndTime().toString();
//格式化时间
DateFormat time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");	
//获取服务器当前时间
String nowTime = time.format(new Date());			
headDatetime - 日期头 格式为1999-10-10 12:12:12
tailDatetime - 日期尾 格式为1999-10-10 12:12:12
//将当前时间与考试发卷时间比较
long send = DateUtil.getDatetimeGap(sendTime.toString(),nowTime.toString());
//将当前时间与考试结束时间比较
long end = DateUtil.getDatetimeGap(endTime.toString(),nowTime.toString()) ;
if(send < 0 || end > 0) {}
else {	
//如果当前时间在发卷时间和考试结束时间内,则将smartExam内的元素写入到resultList
	resultList.add(smartExam);
}}		
//写入session
request.getSession().setAttribute("resultList", resultList);

2 学生通过点击对应的考试进入考试界面(此时将学生的信息,如姓名、学号、登陆时间、登陆IP等写入监控表),进行答题。
在这里插入图片描述

图5-2 学生考试答题图

学生考试过程中要定时的获取服务器时间(比如10秒),再将该时间写入监控表,服务器端也要每隔一段时间去读取监控表内的该时间,如果该时间很久没有刷新,则说明此时考试端可能出现了异常情况(如掉线、死机等)。这样就方便管理员去管理学生考试。流程图如下:
用户考试端获取服务器时间并写监控表流程图:
在这里插入图片描述

图5-3 用户考试端获取并写监控表流程图
用户监控端读取监控表流程图:
在这里插入图片描述

图5-4 用户监控端读取监控表流程图

3 监控端监考老师可以选择一个或多个班级进行监控。通过选择班级后,将这些班级的所有参加当前考试的学生信息罗列出来,监考老师可以对学生进行相应的操作。
具体实现:
监考老师可以直接选择要监控的班级,或者也可以通过年级查询先过滤一些年级再进行操作。点击确定后跳到对应班级的所有学生的监控页面。
在这里插入图片描述

图5-5 用户监控端班级列表图
监考老师可以实时获得各个学生的考试状态。也可以对某个或多个学生进行对应的考试操作,如让他们重新考试或者是结束考试等。
在这里插入图片描述

图5-6 用户监控端监控页面图
用户监控端改变考试状态流程图:
在这里插入图片描述

图5-7 用户监控端改变考试状态流程图
用户考试端获取考试状态流程图:
在这里插入图片描述

图5-8 用户考试端获取考试状态流程图

具体实现方法:

//创建XMLHttpRequest类
var xmlHttp;
    	function createXMLHttpRequestObject(){
    		if(window.ActiveXObject) 
    			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    		else if(window.XMLHttpRequest)
    			xmlHttp=new XMLHttpRequest();
    	}
//向服务器发送请求
function startRequest(url,functionName){
//url为要执行的在action中的更新方法
var url = "<%=request.getContextPath()%>/examPageAction.do?action=update";
			createXMLHttpRequestObject();
//发送请求后的回调函数
// getExamState为我要调用的javascript函数名(主要实现对各种状态的处理)
			xmlHttp.onreadystatechange=getExamState;		
			xmlHttp.open("GET",url,true);
			//发送请求并异步执行
			xmlHttp.send(null);
}
//实现的javascript代码
function getExamState() {
		if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
//取得考试状态
var examState = xmlHttp.responseXML.getElementsByTagName("examState");
			var state = examState[0].firstChild.nodeValue;
			//对不同的状态进行不同的操作
			if(state == 'kaoshizhong') {}
			if(state == 'kaoshihou') {}
			if(state == 'kaoshiqian') {}
		}
}
//定时调用该函数,时间单位为毫秒
window.setInterval("startRequest()", 10000);

如老师禁止学生考试,则在学生考试端显示相关的信息。学生确认消息后则自动退出当前考试。
在这里插入图片描述

图5-9 用户考试端 状态被改变后的答题页面

5.2 阅卷模块设计及实现
在学生主动提交考卷、老师强制提交或者是考试时间到了自动提交后,对存在考试临时表内的学生试题信息进行判断,并将结果存入到考试结果表中。最后将分数进行统计存到考试结果统计表中。
其中涉及到的表主要有3张:考试临时表,考试结果表和考试结果统计表。
关系如图5-10所示:
在这里插入图片描述

图5-10 阅卷相关表与其他表间的关系图

自动阅卷流程如图5-11所示:
在这里插入图片描述

图5-11 阅卷流程图
具体实现:

<!-- Hibernate映射文件 -->
<hibernate-mapping>
<!-- com.smart.entity.examManage.SmartExamTemp对应的实体
	 temp_smart_exam为对应的数据库表 -->
	<class name="com.smart.entity.examManage.SmartExamTemp"
			table="temp_smart_exam" schema="dbo" catalog="SMARTDB">
	<!-- 实体属性 -->
	<id name="examTempId" type="string">
	<!-- 数据库字段 -->
		<column name="exam_temp_id" length="16" />
		<generator class="guid" />
	</id>
	<property name="questionNo" type="string">
<column name="exam_paper_question_no" length="50" not-null="false"/>
......
	</class>
</hibernate-mapping>

//构造实体类
public class SmartExamTemp extends PersistenceObject implements Audit,
		java.io.Serializable {}
//接口
public class SmartExamTempImpl extends AbstractDAO implements SmartExamTempDAO {
	public List search(String no) {}}
//在Business中调用
public class SmartExamTempBusiness extends BaseBusiness {
	public Object process search(Carrier vo) {}}
//在action中调用
public class ExamControlAction extends BaseAction {
	public ActionForward save(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
...
this.call(new Carrier(map2,
						BusinessConstants.PAPER_CHECK_BUSINESS,
						"SavePaperResult"));
...
}
...
}

6 系统测试
依据上述分析和设计资料,经过多次测试,已完成系统所需的功能。系统截图参考上面系统功能设计部分。

单元测试:在开发系统的过程中,对所有代码的正确性和逻辑行得到一定的检验,暂时看来不存在大的错误。单元测试就是指为了确保我们的软件在运行过程中的正确无误。 单元测试任务包括: 模块接口测试、数据库连接测试等。 本系统的单元测试中,使用了Eclipse作为测试工具。在测试过程中,我们要对每一个类实现的方法编写一个相应的测试方法。例如下面一个简单方法的用例。

public class ExamOptionImpl  extends AbstractDAO implements ExamOptionDAO {
//通过班级no查找对应的考试
	public Object loadExam(String no) {
		return this.load(SmartExam.class, no);	
	}	
	public static void main(String[] args){
		ExamOptionImpl dao=new ExamOptionImpl();
		String no="18e0f279-050c-4eb3-9d57-5c4385cd0365";
//强制转换成List类型
		List list1= (List)dao.loadExam(no);
		Iterator it =list1.iterator();
		while(it.hasNext()){
			SmartExam se=(SmartExam) it.next();
			String name = se.getExamName();			
			Date startTime = se.getStartTime();
			Date endTime = se.getEndTime();
			String examDelay = se.getExamDelay();
long s = DateUtil.getDatetimeGap("2007-05-12 09:20:00.1233",startTime.toString()) ;
//打印结果,看测试是否成功
			System.out.println(name);	
			System.out.println(startTime);
			System.out.println(endTime);
			System.out.println(examDelay);	
			System.out.println(s+"分钟");	
			System.out.println(new Date());
			DateFormat date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("the date is format =>" + date.format(new Date()));		
		}		
	}

功能测试:它是在已知系统所应具有的功能,通过测试来检测每个功能的情况。本系统功能全部实现,并能正常使用。

性能测试:测试软件的运行性能。这种测试常常与强度测试结合进行,需要事先对被测软件提出性能指标。从测试的结果看,多个用户同时访问时,性能存在有一个饱和点,一旦超过这个负荷,就使性能表现出下降趋势。而且系统的性能还跟计算机硬件性能也有很大的关系。硬件也好,该软件的性能也越好。

结 论
在本次毕业设计中,我如期完成了毕业设计任务书所规划的所有任务和功能,主要实现对考试过程的监控和对客观题的自动阅卷,包括:判断学生是否有参加考试的权限;在学生答题过程中对答案进行实时保存,以防止由于电脑故障等原因造成数据的丢失;老师监控端实时获取考生的信息,并对其进行考试状态的控制(如重新考试,结束考试等);学生提交考卷后,对客观题进行自动阅卷和判分。

省略

参考文献
[1] 方睿等.网络数据库原理及应用[M].成都:四川大学出版社,2005。
[2] 沈沁等.网页设计与制作[M].北京:中国电力出版社,2003。
[3] 飞思科技产品研发中心.JSP应用开发详解[M].北京:电子工业出版社,2005。
[4] 朱福喜等.Java程序设计技巧与开发实例[M].北京:人民邮电出版社,2004。
[5] 朱敏等.JSP Web应用教程[M].北京:清华大学出版社,2004。
[6] 夏昕等.深入浅出Hibernate[M].北京:电子工业出版社,2005。

致 谢
省略


5、资源下载

本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。

序号毕业设计全套资源(点击下载)
本项目源码基于JSP+J2EE+sqlserver的考试监控及阅卷系统设计与实现(源码+文档)_jsp_J2EE_BS架构_考试监控及阅卷系统.zip
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

毕业设计方案专家

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

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

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

打赏作者

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

抵扣说明:

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

余额充值