大家好,今天给大家介绍基于java+J2EE+sqlserver的在线考试系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦
文章目录:
项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:14586个字24页
包含内容:整套源码+完整毕业论文+答辩PPT
提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。
引言
省略
为了适应新形势的发展,目前国内有很多公司团体研究开发了基于Web的考试系统。而我们知道网络应用软件运行的模式主要有二类:Client/Server模式、Browser/Server模式。前者主要的缺点是维护、升级较麻烦,后者是近几年伴随Internet迅速发展而应运而生的一种技术,在这种模式下,客户端需要一个浏览器,服务器端是Web Server ,而Web Server是与数据库和应用服务器的紧密结合,可见,这种模式是瘦客户端,即对客户端的要求不高.如今,很多部门的业务系统、企业的MIS系统纷纷采用这种模式,它的主要优点是便于扩充应用、升级维护简便。然而,随着技术的发展,更先进的模式纷纷被提出并时兴起来,其中J2EE就是比较成熟的一种。
2 在线考试系统构架
2.1 在线考试系统一般需求分析
在线考试系统应具有以下要求:
1)由于考试对应的是特定的对象,所以系统需要经过有效的身份验证才可以登陆。并且系统需要有可以管理会话的功能。以便在考试过程中全程跟踪考试状态。
2)系统的权限一般分为两种:管理员和学生。不同的身份使用不同的权限和功能。
3)管理员需要对试题和考生进行有效的管理,负责试题的录入及更新和修改,对试题的分类,每次考试前,需要对试场环境和考生状态进行考前初始化工作。要注意的是, 鉴于考试环境一般为机房,考试者之间的距离很近,为了在线考试做到规范,对于每个应试者来说,试卷的试题和题量都应是相同的,但试题并不相同。
4) 系统要有良好的试卷上传和回收功能,确保信息传送的正确性。
5) 系统要有一个友善的界面,确保考生考试的顺利进行。
6) 因为试卷中的主观题需要老师批改,可能需要一段时间才能查询到成绩。但如果试卷是由客观题型组成的,考生就可以在考试结束后查询到自己的成绩了。
7) 系统提供对考生成绩的统计和查询等管理功能。
8) 系统应具有良好的安全性管理。
2.2 当前在线考试系统现状分析
省略
2.3 基于J2EE的在线考试系统架构介绍及拥有的优势
2.3.1 结构总体介绍
J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。事实上,sun设计J2EE的初衷正是为了解决两层模式(client/server)的弊端,在传统模式中,客户端担当了过多的角色而显得臃肿,在这种模式中,第一次部署的时候比较容易,但难于升级或改进,可伸展性也不理想,而且经常基于某种专有的协议――通常是某种数据库协议。它使得重用业务逻辑和界面逻辑非常困难。现在J2EE 的多层企业级应用模型将两层化模型中的不同层面切分成许多层。一个多层化应用能够为不同的每种服务提供一个独立的层,以下是 J2EE 典型的四层结构:
运行在客户端机器上的客户层组件
运行在J2EE服务器上的Web层组件
运行在J2EE服务器上的业务逻辑层组件
运行在EIS服务器上的企业信息系统(Enterprise information system)层软件
图1 J2EE 典型的四层结构
2 3.2 客户层组件
J2EE应用程序可以是基于web方式的,也可以是基于传统方式的。J2EE规范中指出,客户层组件有两种,它们是应用客户端程序和applets客户端。
2.3.2.1 Applets
省略
2.3.2.2 应用程序客户端
省略
2.3.3 WEB层组件
省略
2.3.4 业务层组件
业务层代码的逻辑用来满足银行,零售,金融等特殊商务领域的需要,由运行在业务层上的enterprise bean 进行处理. 下图表明了一个enterprise bean 是如何从客户端程序接收数据,进行处理(如果必要的话), 并发送到EIS 层储存的,这个过程也可以逆向进行。有三种企业级的bean: 会话(session) beans, 实体(entity) beans, 和消息驱动(message-driven) beans。 会话bean 表示与客户端程序的临时交互. 当客户端程序执行完后, 会话bean 和相关数据就会消失. 相反, 实体bean 表示数据库的表中一行永久的记录。当客户端程序中止或服务器关闭时, 就会有潜在的服务保证实体bean 的数据得以保存.消息驱动 bean 结合了会话bean 和 JMS的消息监听器的特性, 允许一个业务层组件异步接收JMS 消息。
图3 业务层组件
2.3.5 企业信息系统层
企业信息系统层处理企业信息系统软件包括企业基础建设系统例如企业资源计划 (ERP), 大型机事务处理, 数据库系统,和其它的遗留信息系统. 例如,J2EE 应用组件可能为了数据库连接需要访问企业信息系统。
2.3.6 J2EE架构的优势
J2EE为搭建具有可伸缩性、灵活性、易维护性的系统提供了良好的机制:
省略
2.4 .NET对Web服务的支持
省略
2.5 考试系统的运行平台
省略
第三章 考试系统的数据库设计、构成模块及特点
3.1 考试系统的数据库设计
考试系统离不开数据库系统的支持,不论是试题、答案,还是考生信息都需要存放在数据库中,而且数据库独立于程序而存在,具有较好的安全性。本系统使用的数据库软件为SQL Server 。首先建立一名为ksxt的数据库,主要表格介绍如下:
3.1.1 考生信息表(stuinfo)
该表主要存放考生的信息,其中Id表示考生的准考证号;Name表示考生的姓名;State表示考生状态,分为三种:已交卷、未交卷(正在考试中)、缺考。考生登录的时候输入准考证号,从该表中检查是否存在该准考证号,如果存在,显示该考生姓名,允许进入考试界面;否则显示“无此考生”。State字段有助于统计缺考人数。
3.1.2 各类试题表(xuanze,tiankong,panduan,chengxtk,chengxts,chengxsj)
主要包括选择题表、判断题表、概念填空题表、程序填空题表、程序调试题表、程序设计题表共6张表,每张表中存放了各类试题的题号和题目。下面以程序设计题表为例说明:
其中TH表示该试题在第几套题目中;XTH表示该试题的题号,即这套题目中的2个程序设计题中的第几题;TM表示该试题的题目描述;Ole字段存放的为考试时要读出来,解压,供考生下载的压缩文件。如果是选择题表,还有A、B、C、D四个字段分别表示该试题四个选项的内容。除了程序设计题以外,其他试题表没有Ole字段。之所以设TH字段,是因为试题是按套分的,每一套中又有若干题目。每套中的题目事先就定好的,但是每次抽到该套题目时,试题的顺序是打乱的,以减少出现一模一样试卷的概率。
3.1.3 考试信息表(testresult01—testresult99)
考试信息表共有99张,根据考生准考证号后两位来决定把该考生的考试信息放入哪张表中,比如该考生准考证号末两位为28,则放入表testresult28中。其中Id表示考生的准考证号;Xuanzth、pandth、Tiankth、Chengxtkth、Chengxtsth、Chengxsjth分别表示选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题的题号;Xuanzda、pandda、Tiankda、Chengxtkda、Chengxtsda、Chengxsjda分别表示选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题的正确答案。Lasttime用于记录考试时间,如果时间到了还没有交卷,则回收答案,停止考试。
3.1.4 回收表(reclaim,result)
回收表共有两张,一张记录回收的答案,另一张记录回收是否成功。
表1
这张表主要用来记录回收的答案,其中Xuanzth、Pandth、Tiankth、Chengxtkth、Chengxtsth、Chengxsjth分别表示选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题的题号,Xuanzda、Pandda、Tiankda、Chengxtkda、Chengxtsda、Chengxsjda分别表示考生的选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题的答案,可与考试信息表中各题的正确答案做比较。
表2
这张表主要用来判断回收是否成功。其中Id表示考生的准考证号;Name表示考生的姓名;Xuanze、Pand、Tiank、Chengxtk、Chengxts、Chengxsj分别表示选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题是否回收成功,如果成功,则为OK,否则为空。
3.1.5管理表(setting)
其中Dbname表示数据库名称;Servername表示服务器名称;Sqlpwd表示SQL Server服务器密码;Testdir表示考试目录;Testtype表示考试类型;Relaimdir表示回收目录;redopwd表示重做密码。有些考生考试时可能会因为误操作而退出了系统,这时候要再次进入系统进行考试,就需要输入密码,以防止作弊行为。重做密码是在考生第一次进入系统时从该表中获得的。
3 测试系统具体设计
3.1 基于J2EE的E-nettest在线考试系统构架概要
3.1.1 E-nettest系统结构
我们的系统结构是针对了J2EE的四层架构进行设计的
图4 系统结构
如图所示,客户层负责提供用户界面接口,包括试题的显示和考生答案的输入。
Web层负责将得到的考生登陆和题目上传的信息送交给业务层,同时,将从业务层处得到考试的相关信息输出到html页面为考生提供相关服务。
业务层负责系统的具体逻辑实现,主要是得到数据池中的数据源,向数据库中提交和获得数据等。
信息系统层主要采用了Microsoft sql数据库对数据进行存贮管理。
3.1.2 E-nettest数据流程
省略
3.2 E-nettest考试系统环境设置
省略
3.3 E-nettest总体功能介绍
客户端
登陆服务:负责用户的登陆的输入,与服务器端的验证,如果是重登陆的,需重登陆密码。
题目下载:负责从数据库中读取试题数据,下载到客户端。
用户答题:负责在客户的浏览器中显示下载的题目,供用户做题。
题目上传:负责将客户所答题目的答案上传到服务器端。
管理端
生成试题:负责从试题源中生成当场考试的相应试题。
试题初始化:负责在每场考试前清空试题回收信息。
考生监控:负责在考试期间管理监控各考生的考试状态。
试卷回收:负责在考试结束后,将考生提交的答案上传到数据库服务器中。
试卷批阅:负责自动化批阅回收试卷(客观题)。
数据库连接服务:负责从各共性服务层模块接收相关数据库连接,查询,修改等服务,并返回相关数据。
数据访问层异常管理:负责数据库连接服务出现的异常。
3.4 E-nettest模块设计
各模块的详细介绍:
1)考生登陆模块:
在客户层,考生通过主登陆页面输入用户名与密码。
在web层,将从用户输入处得到的用户名和密码与从业务层返回的相应用户名和密码作比较,如果用户存在密码正确且还未登陆就登陆考试主页面,否则跳到出错页面要求重新登陆。
在业务层,获得与mssql数据库的连接,并取出所有的用户名和密码信息。将该信息传入web层。
在EIS层,对应的是mssql数据库中的students表格。
2)做题模块:
(1)选择题:
在客户层,浏览器中显示每个考生所对应的考试题目,要求考生输入考试答案。并有一个提交按钮供考生做完题目后上传题目。
在Web层,jsp负责从业务层中获得题目,并将题目组织在一起向客户端显示。
在业务层,获得与数据库的连接,并且取出选择题题目。
在EIS层,对应的是数据库中choose表格。
(2)word题:
在客户层,在浏览器中applet的textarea区域显示word题的要求,并利用applett数字签名技术,突破访问本地文件系统的限制,打开word做题。
在Web层,利用servlet的文件上传下载技术,将读出的word文件下载到本地磁盘。
在业务层,获得数据库连接,并取出word题目,word题是以二进制流的方式将word文件存贮在数据库。
在EIS层,对应的是数据库中word表格。
3)答案上传模块:
在客户层,在浏览器中单击提交按钮将做完的答案提交制相应页面
在Web层,将用户提交的答案提交给相应的javabean组件,并在客户端显示提示信息。
在业务层,将提交上来的答案存入相应的数据库中。
在EIS层,数据库中students表格,有两个相应字段用来存放该用户所对应的提交答案。
图6 系统模块
3.5 E-nettest数据库设计
由于目前市场上存在有许多的数据库产品,较流行的有oracle,Mssql,Access,等,oracle数据库多用于大企业中,稳定性最好,但价格也较高,且系统要求也较高,而Access数据库不支持网络功能,一般只对个人或小型的系统适用,而对于本系统来说,采用Msssql则是一个较为合适的选择,Mssql是微软网络数据库的主打产品,支持网络功能,日志记录等多种方便的服务,并且有着较为稳定的性能和可靠的管理。下面是数据库表的设计:
Students table:
id, char, 10,notnull;
password, char, 10,null;
number, char, 10,notnull;
sex, char, 1,null;(1=男,0=女)
chooseans, char, 60,null;
wordans, image,16,null;
status, char, 1,notnull;(1=在线,0=离线)
choose table:
QNUM, INT, 4,notnull;
QCON, TEXT, 16, notnull;
QANSA, TEXT, 50, notnull;
QANSB, TEXT, 50,notnull;
QANSC, TEXT, 50,notnull;
QANSD, TEXT, 50,notnull;
QANSE, TEXT, 50,notnull;
QANS, TEXT, 1,notnull;
Word table:
TOPIC_NUMBER , nvarchar, 2,notnull;
QUESTION_TITLE, text, 16,notnull;
QUESTION_CONTENT,image, 16,notnull;
4 关键技术
4.1 tomcat数据库连接池介绍与配置
省略
4.2 applet数字签名技术
实现applet数字签名,使得applet可以突破默认安全限制,读取本地文件系统。
在Java2的安全体系下,1个Applet开发和运行的过程如下:
在代码的分发端:
1)开发Java源程序并对其进行编译。
2)用JAR工具对类文件和资源文件进行封装。
3)用keytool创建公钥和密钥,生成X。509V1签名证书,输出证书。
4)通过jarsigner工具用生成的密钥对JAR文件进行数字签名。
在代码的接收端:
1)用keytool输入证书视其为可信任。
2)用policytool创建和修改安全性策略配置文件,授权请求的访问权限。
3)从网络取得字节码,用公钥验证数字签名证书和文档代码的完整性。
4)验证字节码的合法性,根据策略文件分配相应权限。
5)执行代码,完成后被垃圾回收器回收内存。
在用公钥验证数字签名证书之前,接收方需要确认公钥自身的可靠性,因此通常情况是提供一个包含公钥的证书而不是公钥自身。1个证书包括:
1)1个公钥。
2)1个唯一的名字实体(个人或公司),它是证书的所有者,包含用户名字、公司、组织、城市、地址、国家代码、省份等信息。
3)数字签名:1个证书被1个分发者的实体签名,保证证书确实包含另1个实体(所有者)的公钥。
4)分发者的标识名信息。
对于接收者可以用分发者的公钥来验证他的数字签名,检查证书的合法性。然而公钥可能包含在另一个证书中,而数字签名需要用另一个证书的分发者的公钥来验证,这样嵌套下去,直到一个公钥被接收者确认是可信任的。如果接收者不能建立信任链,例如:1个分发者的证书不合法,那么可以用keytool-import命令来计算指纹,每个指纹是一个相关的短数字,它唯一可靠地标识证书(指纹是一个用信息摘要算法计算的证书信息的哈希值),接收者可以呼叫证书的所有者,并比较发出的证书和接收证书的指纹,如果指纹相同,则证书不同。因此能够保证证书在传递的过程中未被修改。另一个潜在的问题是发送者身份的标识,有时一个证书是自签名的,即使用证书中的公钥相对应的密钥进行签名,如果接收者已经知道或信任发送者,那么就没有任何问题。否则发送者需要从一个可信任的第3方得到证书,这个第3方通常是一个证书的授权机构CA,那么首先发送一个自签名的证书签名请求CSR给CA,由CA验证CSR的签名及发送CSR的身份、许可证以及其它信息。然后CA通过一个用CA的密钥进行签名的证书,授权CSR的发送者作为公钥的所有者,任何人只要信任CA的公钥,都可以用之来验证证书的签名,很多情况下CA自身有一个来自更高一级的CA的证书,从而构成证书链。所有信任的证书实体都可以作为信任证书被引入钥匙库,每个证书中的公钥都可以用来验证用相应的密钥生成的签名。
发送者在发送签名的代码和文档时还相应提供包含与签名的密钥相应的公钥证书。用keytool-export命令或API函数可以从钥匙库中输出证书到文件中,然后将这个文件发送给需要的接收者,由接收者用keytool-import命令或API函数将其引入钥匙库中。如果用jarsigner工具为JAR文件生成签名,他会从钥匙库中取出证书及证书链,并和签名一起放入JAR文件。
密钥和相应的公钥证书存放在一个由口令保护的数据库中,称为钥匙库(keystore)。1个钥匙库包含2种类型的条目,可信任的证书条目,钥匙和证书条目,每个都包含1个密钥和与密钥相应的公钥证书,在钥匙库中的每个条目都有1个别名进行标识。1个钥匙库的所有者在钥匙库中可以有多个钥匙,可以通过不同的别名进行访问,每个别名通常是用钥匙库的所有者使用的钥匙的特定角色来命名,别名也可以标识钥匙的目的。例如:SignPersonalEmail可以被用来标识1个钥匙库的条目,它的密钥用于签名个人邮件,SignJarFiles用于标识1个条目,它的密钥用于签名JAR文件。
4.3 如何调用java外部程序
省略
5 总结与展望
在传统的两层体系下,业务逻辑在客户端和服务器端都有分布,而且服务器端的主要计算任务都由数据库承担。数据库系统本身作为系统级软件,它本身的优势在于提供高效率的数据访问和处理而不是数值计算,利用数据库系统处理大量的业务计算并没有完全发挥出数据库管理系统的特长,当请求并发量巨大时,数据库性能下降很快。针对这一不足,基于J2EE架构的处理方式是:业务逻辑分布到应用服务器上,数据库上不再具有业务逻辑处理单元,而只负责基础业务数据的管理,主要的计算任务由应用服务器完成,从而充分利用了应用服务器在并发处理和逻辑计算方面的优势。另外,应用服务器还可以做集群的配制,即在物理上,统一应用管理多台应用服务器对外部请求的分配和并行处理。这样,当计算请求并发量巨大时,集群的多台应用服务器之间可以动态的进行任务分配,实现负载均衡,保证了系统性能不会因为大量并发用户的访问而急剧下降,另外系统也同时具备了很好的可扩展性和伸缩性,即在请求并发量增大或减少时,可根据实际情况增加或减少应用服务器数量,以便保证性能的前提下,合理利用硬件资源。这些都是两层结构所不具备的优点。
基于J2EE的四层架构还具备很多特点。应用J2EE的四层架构对于保留现存的IT资产有着重要意义。由于社保机构在面对适应新的业务需求的同时,也要充分利用好已有的资产,因此,在信息系统建设方面,做平滑的系统迁移方案,而不是重新制定全盘方案就变得很重要。这样,一个以渐进的,而不是激进的、全盘否定的方式建立在已有系统之上的服务器端平台机制,是所有社保经办机构所力求的。J2EE架构可以充分利用用户原有的投资,如一些公司使用的BEA Tuxedo、IBM CICS、IBM Encina、Inprise VisiBroker。之所以成为可能,主要是因为J2EE拥有广泛的业界支持。每一个供应商都对现有的客户提供了不用废弃已有投资,进入可移植的J2EE领域的升级途径。另外,由于基于J2EE平台的产品几乎能够在任何操作系统和硬件配置上运行,现有的操作系统和硬件也可以被完整地保留下来继续使用。
J2EE体系对大型系统的高效开发有着良好的支持者。J2EE标准严格要求把一些通用的、很繁琐的服务端底层开发任务交给中间件供应商去完成,而这些复杂的系统级功能是常规应用开发中难度最大、开发成本最高的一部分工作。高级中间件供应商提供复杂的中间件服务,如:状态管理服务、持续性服务、分布式共享数据对象的缓冲服务等,它对开发人员来说是很重要的,这样开发人员可以集中精力在如何创建业务逻辑上,相应地缩短了开发时间。对于核心平台来讲,也就缩短了本地化开发的周期。
这篇论文拿在线考试系统作为实例,从中具体实现了最基本的J2EE架构并体现了其优势。由于时间关系,设计还不算很完美,主要研究了关键技术,设计有待于改进。.
参考文献
[1] James W. Cooper, 《Java Design Pattern》, 科学出版社, 2003.11
[2] Yuan Zhenming, Zhang Liang, Zhan Guohua ,A NOVEL WEB-BASED ONLINE EXAMINATION SYSTEM FOR COMPUTE SCIENCE EDUCATION,
[3] Bruce Eckel ,《Thinking in Java (3rd Edition)》, December 6, 2002
[4] Mike Jasnowski,《Java,Xml和Web服务宝典》, 电子工业出版社, 2003.6
[5] Danny Ayers,《Java 数据编程指南》,电子工业出版社,2003.6
[6] John Bell , 《Java Servlets 2.3编程指南》,电子工业出版社,2002.6
[7] Subrahmanyam Allamaraju,《J2EE编程指南(1.3版)》,电子工业出版社,2002.5
[8] 何梅,《Java Applet编程实例》, 清华大学出版社,2002.4
本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。
序号 | 毕业设计全套资源(点击下载) |
---|---|
本项目源码 | 基于java+J2EE+sqlserver的在线考试系统设计与实现(源码+文档)_java_J2EE_BS架构_在线考试系统.zip |