JAVA在线考试管理系统(源代码+论文+开题报告+外文翻译+英文文献+答辩PPT)

附件5:

毕业论文(设计)外文资料译文

论文题目 在线考试系统 .

学生姓名: 年级(学号): .

二级学院: 专业:

指导教师: 职称: .

填表日期: 20 年 月 日

杭 州 师 范 学 院 教 务 处 制


附件6:

毕业论文(设计)开题报告

论文题目 在线考试系统 .

学生姓名: 年级(学号): .

二级学院: 专业:

指导教师: 职称: .

填表日期: 20 年 月 日


选题依据(背景与意义、国内外研究现状与发展趋势)随着网络技术的飞速发展,现在很多国外的大学和社会其他部门都已经开设了远程教育,通过计算机网络实现异地教育和培训。现在,计算机硬件技术的发展已经达到了相当高的水平。但是,远程教育软件的开发目前还处于起步阶段,随着这项技术的不断深入发展,就要求有更好、更完善的软件系统应用到远程教育当中去,这就给软件设计人员提出了更高的设计要求。远程教育包括很多环节,例如教学系统、答疑系统和考试系统等等。其中很重要的一个环节就是在线考试系统,同时它也是最难实现的环节。在我国,虽然远程教育已经蓬勃地发展起来,但是目前学校与社会上的各种考试大都采用传统的考试方式,在此方式下,组织一次考试至少要经过五个步骤,即人工出题、考生考试、人工阅卷、成绩评估和试卷分析。显然,随着考试类型的不断增加及考试要求的不断提高,教师的工作量将会越来越大,并且其工作将是一件十分烦琐和非常容易出错的事情,可以说传统的考试方式已经不能适应现代考试的需要。随着计算机应用的迅猛发展,网络应用不断扩大,如远程教育和虚拟大学的出现等等,且这些应用正逐步深入到千家万户。人们迫切要求利用这些技术来进行在线考试,以减轻教师的工作负担及提高工作效率,与此同时也提高了考试的质量,从而使考试更趋于公证、客观,更加激发学生的学习兴趣。例如目前许多国际著名的计算机公司所举办的各种认证考试绝大部分采用这种方式。在线考试是现阶段研究开发的一个热点。它是建立在国际互联网上的应用系统,客户端的配置可以极为简单,使考试不受地域的局限。一个完备的在线考试系统可以使用户在网上学习过后及时检验自己的学习效果,已发现自己的不足,使得学习效率得到很大提高。在线考试系统中题目的生成、试卷的提交、成绩的批阅等都可以在网络上自动完成。只要形成一套成熟的题库就可以实现考试的自动化。这样一来,教师所要做的只是精心设计题目、维护题库,而不是组织考试,从而大大减轻了教师的负担,这表明其经济性是相当可观的。为了适应新形势的发展,我进行了这一系统的初步设计工作,也可以说是做一个初步的探索,希望它能够在各类考试中发挥高效、便捷的作用,把老师从繁重的工作中解脱出来!目前,网络应用软件运行的模式主要有二类:Client/server模式,Browser/Web模式。前者主要的缺点是维护、升级较麻烦,后者是近几年伴随Internet迅速发展起来的一种技术,它与客户/服务器方式类似,客户端是一个标准的浏览器,服务器端是Web Server ,而Web Server与数据库和应用服务器的紧密结合,使得这种模式的应用范围不断扩大,它已不仅仅用于网上查询,有很多部门的业务系统、企业的MIS系统纷纷采用这种模式,它的主要优点是便于扩充应用、升级维护简便。另外,考试系统的软件也必将不断的更新;同时软件产品本身就要经过一个不断自我完善的过程。基于以上考虑,由于传统的asp/jsp/php等技术已经广泛应用,所以我们研究了一种利用java web services的技术来实现在线考试系统。
二、研究目标与主要内容(含论文提纲)目标是研究如何利用j2ee架构实现在线考试系统.以及该系统的优越性.论文提纲:1 引言2 在线考试系统构架2.1 在线考试系统一般需求分析2.2 当前在线考试系统现状分析2.3 基于J2EE的在线考试系统架构介绍及拥有的优势3 测试系统具体设计3.1 基于J2EE的E-nettest在线考试系统构架概要3.2 E-nettest考试系统环境设置3.3 E-nettest总体功能介绍3.4 E-nettest模块设计3.5 E-nettest数据库设计4 系统中运用到的关键技术介绍5 J2EE技术总结与展望
三、拟采取的研究方法、研究手段及技术路线、实验方案等一.需求分析:要实现一个软件系统,首先应该进行需求分析,这样才能令设计出的软件满足用户的各项功能。下面就对在线考试系统的设计进行需求分析。1 系统需要解决的主要问题首先,因为考试是面向特定的某些对象的,所以考试者进入系统应该进行身份验证。考试者进入考试系统后,应该能根据自己的需要选择考试科目,所以该系统还应具有考试科目选择的功能。在线考试于一般的单机考试是不同的。鉴于考试环境一般为机房,考试者之间的距离很近,为了在线考试做到规范,对于每个应试者来说,试卷的试题和题量都应是相同的,但试题并不相同。在线考试基于网络环境,试卷应该从服务器的数据库随机抽取试题后动态生成的。另外,系统还应该对考试时间进行控制,时间到了会要求考试者交卷。考试者选择答案提交后,应该由计算机自动判卷,得到成绩后显示出来。考试完毕后,可以返回登录界面或继续考试。此外,应该能够方便、快捷的对在线考试系统管理,此外,用户还应能进行远程注册。2 系统应该具备的基本功能 ·用户注册:用户可以进行注册,然后登录。·用户信息的管理:管理员可以增删用户·试题模型设置:设置各科目试题的每种题型的数量和分值。·试题库管理:分科目,对单选、多选两种题型试题库的管理,使试题的增删、编辑更为简便。·试卷生成:可以指定试卷的各题型的数量,从试题库里随机抽取试题生成一份原始试卷。·在线考试:系统严格控制整个考试过程,实行时间的监控与权限的控制,考生需要在限定的考试时间内交卷。 ·计算机自动阅卷:本系统只考虑客观题,要求计算机能自动阅卷,然后马上显示出考生分数。·成绩查阅:考生考完以后,管理员应该能对所有纪录进行查询,并应该可以删除指定纪录。除了实现上述功能以外,在线考试系统还应该具有友好、简洁的界面,安全性要高,稳定性要强,能够满足100人以上同时及进行在线考试。二.系统设计1系统简介该系统是专门用于用户注册、登录、参加在线考试以及管理员进行试题录入、修改、删除、成绩查询、管理用户的应用程序。它应该具有开放性、方便性和灵活性。管理员不仅可以轻松地向题库添加、修改和查询试题,而且还可以自动新增科目并建立相应的数据;它还允许用户根据自己的需求,选取考试科目。考生进行有效的身份验证登录后,选择考试科目,并要求在规定的时间内进行答题,当达到规定的时间后,系统将自动予以提示。一旦考生做完交卷后便能立即看到自己的考试成绩,并且其分数将被记入库中以供审核和查阅;另外,还可完全由计算机自动灵活、随机的抽取试题库中的各类试题组成各种形式的试卷,其内容会随着库中试题的改变而改变,而且,不同的考生生成的试题是不同的。用户可以是学校等单位的教师及学生和企事业单位的培训部门(因企事业单位每年要对员工进行素质、安全教育与技能等方面的培训及考试等)。2 系统结构图根据需求分析,在线考试系统的结构图如下:3 功能模块详细设计下面,对各个功能模块分别进行详细讨论,具体情况见系统源程序。管理模块管理员可以向题库中添加各种类型且符合要求的试题,也可以对它们进行修改和删除。同时,管理员也能对科目、用户、考试记录等数据进行管理。试题管理试题录入首先,用户选择试题所属科目。若菜单中没有该科目,则可以新增一个。返回、刷新一次页面,即可看到新增的科目名称。而且,在本系统中其它需要选择科目的地方也会自动更新。其次,每道试题有类型、试题内容与选项和答案等栏目。管理员输入完以后,即可看到预览效果。如果输入不合法,或者该科题库中已有该试题编号和内容等,则系统给出相应的提示或警告,以待更正。试题修改管理员还可以对试题进行修改。不过,对于各表中的主键不用修改,避免了造成系统中的数据混乱,或者覆盖其它有用数据的现象。如果用户执行了非法操作,则必须重新操作。试题删除管理员可以删除不再需要的试题。科目管理添加科目其基本信息有科目名称、题型、题量和考试总时间等,对于用户输入的不符合系统要求的数据,系统仍旧给出提示或警告。科目删除管理员可以删除不再需要的科目。3.用户管理管理员可以通过管理界面添加或删除用户。4.管理管理员管理员可以通过管理界面添加新管理员或删除原有管理员。5.考试记录管理系统中的管理员可以查询考试记录,也可以删除考试纪录。在线考试模块进入在线考场是本系统最重要的部分之一。因为一个系统如果涉及到现实的话,就必须考虑得十分周到、完善。考生登录后,只要选择考试科目以后,就可以调出试卷进行在线考试。为了实现动态随机不重复的抽取试题,需要在选题过程中每选出一题,就要在试题库中作相应的标志,以便下次不会重复取出此题。试卷出来后要对试题库中的标志位复原。这样就会使每个考生的试卷都不同。考生的其答题信息通过单、复选按钮选择答案来反映。考试结束采取自主交卷和到了规定的时间自动题示有机结合的方式办法予以实现。 用户注册模块该模块的功能是实现用户远程注册。用户输入想要注册的用户名和密码,提交之后由系统判断该用户是否已经存在,如果存在,就给出相应信息,如果不存在,就把用户输入的用户名和密码写到数据库中,完成注册。三 系统实现在进行了整体设计以后,就开始进行详细的设计及编码工作。也就是设计文件和把他们有机地组织在一起实现所有功能。根据系统总体设计,首先系统要有一个登录界面,用户可以从该界面登录参加考试。管理员也应该有一个进入管理登录界面的通道。此外,这个界面上还应该有一个用户注册的通道。在考生正确输入用户名和密码以后,接着应该进入考试科目选择界面。在该界面上,考生选择参加考试的科目,这个人机交互的过程是必不可少的。考生确定考试科目以后,进入开始考试界面,由计算机随机提取试题,显示出来组成试卷,并开始进行计时。考生再次进行考试,答完试题后交卷,进入下一个界面。考生提交答卷后,由计算机进行处理--判卷,得出考试分数,显示出来,并把该生考试记录存入数据库。在这个界面上应该可以返回继续进行考试或回到登录界面。以上是系统进行考试功能的部分,要对系统进行管理,如试题管理、科目管理、用户管理等就需要设计一些管理界面。下面就来逐步进行设计。要进行管理首先要有管理员登陆验证,这里另外设计了一个界面,使它与用户登录区别开来。这个界面与用户登录界面表面上很相似,但是他们是从不同的表中提取数据进行验证的,以便于系统扩充和增加安全性。管理员登录以后,应该有一个管理项目选择界面,其中包括管理用户选项、管理管理员选项、管理考试科目选项、管理考试纪录选项以及管理各科试题选项。管理用户的界面可以实现用户的增加、和删除的功能,管理员在此可以对用户进行管理。管理管理员的界面,功能和管理用户的差不多,实现对管理员的增加和删除功能。管理考试科目界面用来增加或删除考试的科目,以方便对各科试题的管理和查询。管理考试纪录界面可以对考生的每次考试进行纪录,管理员科可以对考生成绩、考试科目、时间及考试各相关纪录进行查询和删除。最后是试题库管理界面,它根据各科进行分类。通过这个界面管理员可以对题库中的某科试题进行增加、修改或删除。这样就十分方便灵活的对试题库进行管理。
四、中外文参考文献目录(作者、书名论文题目、出版社或刊号、出版年月或出版期号)[1] James W. Cooper.《Java Design Pattern》. 科学出版社, 2003.11[2] Yuan Zhenming, Zhang Liang, Zhan Guohua .A Novel Web-based Online Examination System for Computer Science Education. FIE2003, 2003.[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五、研究的整体方案与工作进度安排(内容、步骤、时间)1. ——2月初:熟悉设计课题,构建环境,查找资料,研究和阅读资料,翻译相关的外文资料和撰写阅读综述,以及着手调研。2. :在完成外文翻译和阅读综述的基础上,撰写开题报告。3. :学习和研究Java Web服务技术及软件工程技术,进行需求分析,撰写需求分析报告。4. :制定系统开发的概要设计和详细设计,熟悉开发环境,同时作一次关于Java Web服务的Seminar。5 ——5月初:开发系统, 在4月初接受学院的中期检查。6. ——5月底:撰写论文,同时作一次系统的Seminar。 7. :修改论文,参加论文答辩。
六、研究的预期目标及主要特点及创新点本论文主要研究的是基于j2ee技术的在线考试系统,目的是为了利用j2ee技术的优越性,实现一个在线考试系统。该系统与以前的在线考试系统相比,可靠性,灵活性和维护性都有所大大的提高。
七、指导教师意见:签名: 年 月 日
八、教研室或系审核意见:主任签名: 年 月 日
九、二级学院毕业论文(设计)领导小组审核意见: 负责人签名(盖章): 年 月 日

附件7:

毕业论文(设计)评审答辩成绩表

二级学院名称(盖章): 专业:计算机科学与技术

论文作者班级学号指导教师(职称)
毕业论文︵设计︶情况论文题目基于J2EE架构的在线考试系统
命题类型①院级指导性命题 ②学生自主选题 ③学生独立命题
论文字数13922
论文摘要(由论文作者填写,字数200字以内)目前国内基于B/S、C/S结构的在线考试系统产品已经有许多,本文首先介绍了这些考试系统的形成和发展过程,大致结构。然后通过仔细分析,提出了目前的这些系统还存有系统更新和维护等种种弊端,仍不够成熟。基于对现有产品的思考,结合J2EE的成熟技术,我们想到了是否可以将该技术运用在在线考试系统中,提出了一个基于J2EE架构的在线考试系统。通过将该架构与已有结构的在线考试系统进行比较,分析了该架构的优势,重点介绍了该框架的整体构造以及相关的概念和技术。并通过设计了一个基于J2EE架构的在线考试系统对该架构做了一个比较深入的剖析。最后,对J2EE技术做了一个总结性的展望,认为该技术有着良好的发展空间和广阔的前景。
指导教师评审 意见指导教师评语(含观点、论证〈实验〉内容、文字表达等方面的评价,字数约150 -200字)
初评成绩: 指导教师签名 年 月 日
论文答辩组评审意见 复评成绩: .答辩组组长签名: 成员签名: 年 月 日
二级学院毕业论文工作领导小组审核意见 终评成绩: 组长签名 : 年 月 日
备注 :

(后附“毕业论文〈设计〉答辩纪录”)

附页: 毕业论文(设计)答辩纪录

答辩时间: 年 月 日,答辩地点: ,答辩小组人数 .答辩小组组长 职称 . 成员 职称 . 成员 职称 .成员 职称 . 成员 职称 .
记录人: (不够另加附页)

毕业论文(设计)文献综述

论文题目: 基于J2EE架构的在线考试系统

学生姓名: 年级(学号):

二级学院: 专业:

指导教师: 职称: .

填表日期: 20 年 月 日

一、查阅中外文献资料目录,所查阅的中外文献资料不得少于5篇(含作者、书名或论文题目、出版社或刊名、出版年月或期号及页码等,未经本人查阅的文献资料目录不得列上)[1] James W. Cooper.《Java Design Pattern》. 科学出版社, 2003.11[2] Yuan Zhenming, Zhang Liang, Zhan Guohua .A Novel Web-based Online Examination System for Computer Science Education. FIE2003, 2003.[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
二、文献综述(含本选题国内外研究现状、研究主要成果、发展趋势、存在问题等内容,字数不少于3000字,力求内容切题,具综合归纳性)一、引言现阶段,学校与社会上的各种考试大都采用传统的考试方式,在此方式下,组织一次考试至少要经过五个步骤,即人工出卷、考生考试、人工阅卷、成绩评估和试卷分析。显然,随着考试类型的不断增加及考试要求的不断提高,教师的工作量将会越来越大,并且其工作将是一件十分烦琐和非常容易出错的事情,可以说传统的考试方式已经不能适应现代考试的需要。随着计算机应用的迅猛发展,网络应用不断扩大,如远程教育和虚拟大学的出现等等,且这些应用正逐步深入到千家万户。人们迫切要求利用这些技术来进行在线考试,以减轻教师的工作负担及提高工作效率,与此同时也提高了考试的质量,从而使考试更趋于公证,客观!更加激发学生的学习兴趣。例如目前许多国际著名的计算机公司所举办的各种认证考试绝大部分采用这种方式。为了适应新形势的发展,目前,国内有很多公司团体研究开发了许多基于web的考试系统。二、系统介绍基于数据库和网络应用的系统实现技术有多种,可以采用传统的客户机/服务器(C/S)架构,也可以采用目前流行的基于WEB的方式。所谓客户机/服务器(C/S)模式,即数据库(比如,试题库)内容放在远程的服务器上,在客户机上安装相应软件; C/S结构在技术上虽然很成熟,但该结构的程序往往只局限在在小型的局域网内部,不利于扩展。并且,该结构的每台客户机都需要安装相应的客户端程序。由于我们的系统是一个教学辅助和考试系统,拥有的用户量比较多,因此,如果采用该结构,系统的安装与维护工作比较繁重。同时,由于应用程序直接安装在客户机,客户机直接和数据库服务器交换数据,系统的安全性也受到一定影响。基于WEB的方式其实是一种特殊的客户/服务器方式,在这种方式中,客户端是各种各样的浏览器。为了区别于传统的C/S模式,通常称为浏览器/服务器(B/S)模式。B/S采用三层体系结构,即包括数据库系统、应用服务器、客户浏览器三部分。由于采用了互联网的相关技术,B/S结构的系统开放性好,易维护、扩展。客户浏览器只跟WEB服务器交换数据,数据安全性比较高。当然,B/S结构在网络安全方面也有其弱点。在C/S结构中,应用程序是在客户机上运行的独立程序,如果这台计算机安全的话,那么应用程序就是安全的。而在B/S结构中,众多的客户浏览器访问同一个WEB服务器, WEB服务器会成为攻击活动的对象。系统的设计思路如下:建立数据库服务器和试题库。在服务器上安装NT(比如,Service Pack 5)及数据库管理系统MS SQL Server。题库向广大任课教师收集,具有覆盖面广,难易搭配合理,考核点准确等特点。试题库汇总在服务器上,集中存储管理,确保其可靠性。在数据库服务器上同时存放学生的考试结果和成绩。根据实际需要,应用服务器可以采用独立的服务器,也可以与数据库服务器共用一个物理服务器。考虑到现有机房的服务器上一般都是采用Windows NT作为操作系统,因此我们在应用服务器上建立WEB 时,采用微软的IIS(Microsoft Internet Information Server4.0),为了系统的安全性,安装微软的Proxy Server 作为代理服务器。当然,实际操作时更应该注重IIS本身的安全性。而IIS的安全性很大程度上依赖于NT的安全性,因此也要充分利用NT的安全特性。系统采用ASP技术作为服务器端脚本,实现与数据库和其他应用互动的Web网页。用户运行环境为标准的中文浏览器环境(比如,IE4.0或以上版本),用户只要具有一定的权限,并能通过浏览器访问服务器上的Web站点,就可以使用题库参加考试,以及辅助练习;练习题和试卷均按一定的组卷原则随机抽题,并以HTML格式呈现。操作能力的考核也给评分和成绩处理工作带来一定的难度。考虑到只有教师有评分和成绩处理的权力。同时,这些工作相对来说比较集中,因此,把这部分功能处理成C/S结构的程序。评分部分综合各种技术进行,以求得到较为客观、公正的评分结果。此部分用VB和VC开发成一个独立的客户端程序。为了整个系统的安全和维护的方便,在系统中包含了管理模块,设置有关参数,以及对系统进行必要的监控。只有系统管理员才有该模块的操作权。 用B/S技术设计的系统的逻辑结构图如下:三.在线考试系统一般需求分析及现状 需求分析1)由于考试对应的是特定的对象,所以系统需要经过有效的身份验证才可以登陆。并且系统需要有可以管理会话的功能。以便在考试过程中全程跟踪考试状态。2)系统的权限一般分为两种:管理员和学生。不同的身份使用不同的权限和功能。3)管理员需要对试题和考生进行有效的管理,负责试题的录入及更新和修改,对试题的分类,每次考试前,需要对试场环境和考生状态进行考前初始化工作。要注意的是, 鉴于考试环境一般为机房,考试者之间的距离很近,为了在线考试做到规范,对于每个应试者来说,试卷的试题和题量都应是相同的,但试题并不相同。系统要有良好的试卷上传和回收功能,确保信息传送的正确性。系统要有一个友善的界面,确保考生考试的顺利进行。因为试卷中的主观题需要老师批改,可能需要一段时间才能查询到成绩。但如果试卷是由客观题型组成的,考生就可以在考试结束后查询到自己的成绩了。系统提供对考生成绩的统计和查询等管理功能。系统应具有良好的安全性管理。现状分析当前考试系统中,仍有许多是基于c/s模式的,每一次伴随着系统的升级,都要在每个客户端更新软件,耗时耗力。可喜的是,随着技术的发展,基于b/s模式的在线考试系统越来越多,逐渐占据了主导地位。它克服了c/s模式下的许多缺点,从传统的基于C/S模式的考试系统转变到基于B/S模式的考试系统,可以使用户在任何一台电脑上,只要可以上网,就可以使用该服务,大大简化了操作,为用户提供了方便。另一方面,也为教师的管理和批阅工作提供了方便,提高了效率。但是据我多方的观察和研究,发现大多数的在线考试系统都是采用基于页面的模式开发,每个页面中都包含了要用到的所有功能逻辑,导致代码重复率高,结构不够清晰,维护升级起来也很费时间和人力。鉴于这种情况,所以我们将J2EE的概念加入到在线考试系统中来,使得该系统更易于升级和维护。四.结论:我们从传统的基于C/S模式的考试系统转变到基于B/S模式的考试系统中,可以使用户在任何一台电脑上,只要可以上网,就可以使用该服务,大大简化了操作,为用户提供了方便。另一方面,也为教师的管理和批阅工作提供了方便,提高了效率。当然,该技术还在不断的完善中。 学生签名
三、指导教师审阅意见:指导教师签名 .年 月 日

目录

摘要:3:3:3

Abstract:4

1 引言55

2 在线考试系统构架55

2.1 在线考试系统一般需求分析55

2.2 当前在线考试系统现状分析66

2.3 基于J2EE的在线考试系统架构介绍及拥有的优势66

2.3.1 结构总体介绍66

2.3.2 客户层组件77

2.3.2.1 Applets7

2.3.2.2 应用程序客户端77

2.3.3 WEB层组件77

2.3.4 业务层组件77

2.3.5 企业信息系统层88

2.3.6 J2EE架构的优势88

2.3.7 Visual Basic .NET4

2.3.8 SQL Server 20005

2.39 Web服务5

2.4.0 Web服务的概念5

2.4.1 Web服务的优点6

2.4.4NET对Web服务的支持6

2.4.3 考试系统的运行平台6

2.4.4 硬件平台6

2.4.5 软件平台6

第三章 考试系统的数据库设计、构成模块及特点7

3.1 考试系统的数据库设计7

3.2考试系统的构成模块9

3 测试系统具体设计99

3.1 基于J2EE的E-nettest在线考试系统构架概要99

3.1.1 E-nettest系统结构99

3.1.2 E-nettest数据流程1010

3.2 E-nettest考试系统环境设置1111

3.3 E-nettest总体功能介绍1111

3.4 E-nettest模块设计1111

3.5 E-nettest数据库设计1313

4 关键技术1414

4.1 tomcat数据库连接池介绍与配置1414

4.2 applet数字签名技术1616

4.3 如何调用java外部程序1717

5 总结与展望1818

参考文献1919


基于J2EE架构的在线考试系统

摘要:

目前国内基于B/S、C/S结构的在线考试系统产品已经有许多,本文首先介绍了这些考试系统的形成和发展过程,大致结构。然后通过仔细分析,提出了目前的这些系统还存有系统更新和维护等种种弊端,仍不够成熟。基于对现有产品的思考,结合J2EE的成熟技术,我们想到了是否可以将该技术运用在在线考试系统中,提出了一个基于J2EE架构的在线考试系统。通过将该架构与已有结构的在线考试系统进行比较,分析了该架构的优势,重点介绍了该框架的整体构造以及相关的概念和技术。并通过设计了一个基于J2EE架构的在线考试系统对该架构做了一个比较深入的剖析。最后,对J2EE技术做了一个总结性的展望,认为该技术有着良好的发展空间和广阔的前景。

关键词:J2EE,在线考试系统,b/s,JavaBean,jsp,数据池

Abstract:

At present, there are many b/s, c/s structure examination systems based on-line, this paper first introduced most of these systems’ formed and developed process, and structures. Then, analysis these systems, and pointed out that there still have many defects about them, just like the update and the service to these systems .Thinking based on these produces, and now the J2EE technical is becoming mature, we thinking about is this technical can be used in examination systems, so we mentioned a on-line system based on J2EE structure. Compared to other systems, and also analysis its’ advantages, we introduced this structure’s construction and technical as emphasize. Finally, make J2EE technical a expectation and it can progress quiet great and have a nice foreground.

Keywords: J2EE, Examination system on-line, b/s, JavaBean, jsp, data pool

1 引言

现阶段,学校与社会上的各种考试大都采用传统的考试方式,在此方式下,组织一次考试至少要经过五个步骤,即出卷、考生考试、阅卷、成绩评估和试卷分析。显然,随着考试类型的不断增加及考试要求的不断提高,教师的工作量将会越来越大,并且其工作将是一件十分繁琐和非常容易出错的事情,可以说传统的考试方式已经不能适应现代考试的需要。随着计算机应用的迅猛发展,网络应用不断扩大,如远程教育和虚拟大学的出现等等,且这些应用正逐步深入到千家万户。人们迫切要求利用这些技术来进行在线考试,以减轻教师的工作负担及提高工作效率,从而提高了考试的质量,使考试更趋于公证、客观、激发学生的学习兴趣。例如目前许多国际著名的计算机公司所举办的各种认证考试绝大部分采用这种方式。

为了适应新形势的发展,目前国内有很多公司团体研究开发了基于Web的考试系统。而我们知道网络应用软件运行的模式主要有二类:Client/Server模式、Browser/Server模式。前者主要的缺点是维护、升级较麻烦,后者是近几年伴随Internet迅速发展而应运而生的一种技术,在这种模式下,客户端需要一个浏览器,服务器端是Web Server ,而Web Server是与数据库和应用服务器的紧密结合,可见,这种模式是瘦客户端,即对客户端的要求不高.如今,很多部门的业务系统、企业的MIS系统纷纷采用这种模式,它的主要优点是便于扩充应用、升级维护简便。然而,随着技术的发展,更先进的模式纷纷被提出并时兴起来,其中J2EE就是比较成熟的一种。

2 在线考试系统构架

2.1 在线考试系统一般需求分析

在线考试系统应具有以下要求:

1)由于考试对应的是特定的对象,所以系统需要经过有效的身份验证才可以登陆。并且系统需要有可以管理会话的功能。以便在考试过程中全程跟踪考试状态。

2)系统的权限一般分为两种:管理员和学生。不同的身份使用不同的权限和功能。

3)管理员需要对试题和考生进行有效的管理,负责试题的录入及更新和修改,对试题的分类,每次考试前,需要对试场环境和考生状态进行考前初始化工作。要注意的是, 鉴于考试环境一般为机房,考试者之间的距离很近,为了在线考试做到规范,对于每个应试者来说,试卷的试题和题量都应是相同的,但试题并不相同。

  1. 系统要有良好的试卷上传和回收功能,确保信息传送的正确性。
  2. 系统要有一个友善的界面,确保考生考试的顺利进行。
  3. 因为试卷中的主观题需要老师批改,可能需要一段时间才能查询到成绩。但如果试卷是由客观题型组成的,考生就可以在考试结束后查询到自己的成绩了。
  4. 系统提供对考生成绩的统计和查询等管理功能。
  5. 系统应具有良好的安全性管理。

2.2 当前在线考试系统现状分析

当前考试系统中,仍有许多是基于c/s模式的,每一次伴随着系统的升级,都要在每个客户端更新软件,耗时耗力。可喜的是,随着技术的发展,基于b/s模式的在线考试系统越来越多,逐渐占据了主导地位。它克服了c/s模式下的许多缺点,从传统的基于C/S模式的考试系统转变到基于B/S模式的考试系统,可以使用户在任何一台电脑上,只要可以上网,就可以使用该服务,大大简化了操作,为用户提供了方便。另一方面,也为教师的管理和批阅工作提供了方便,提高了效率。但是据我多方的观察和研究,发现大多数的在线考试系统都是采用基于页面的模式开发,每个页面中都包含了要用到的所有功能逻辑,导致代码重复率高,结构不够清晰,维护升级起来也很费时间和人力。鉴于这种情况,所以我们将J2EE的概念加入到在线考试系统中来,使得该系统更易于升级和维护。

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

从Web层接收的一个Web页面可以包含内嵌的applet。一个applet是一个用Java编程语言编写的小的客户端应用程序,它在安装在Web浏览器中的Java虚拟机中运行。然而,为了在Web浏览器中成功地运行applet,客户端系统很可能需要Java插作和安全策略文件。

  Web组件是用来建立一个Web客户端程序的首选的API,因为这样在客户端系统中就不需要插件和安全策略文件。同样的,使用Web组件可以有效地改善应用程序设计,因为它们提供了一个将应用程序设计和Web页面设计有效分离的途径。Web页面的设计者可以不必关心Java编程语言的语法就能很好地完成自己的工作。

2.3.2.2 应用程序客户端

一个J2EE应用程序客户端运行在客户端机器上,它使得用户可以处理需要比标记语言所能提供的更丰富的用户界面的任务。具有代表性的是用Swing或抽象窗口工具包(AWT)API建立的图形用户界面(GUI),但是一个命令行界面也是当然可能的。

  应用程序客户端直接访问运行在商业层的enterprise bean。然而,如果应用程序需要授权, 一个J2EE应用程序客户端可以打开一个HTTP连接来与一个运行在Web层的servlet建立通信。

2.3.3 WEB层组件

J2EE web层组件可以是JSP 页面或Servlets.按照J2EE规范,静态的HTML页面和Applets不算是web层组件。

正如下图所示的客户层那样,web层可能包含某些 JavaBean 对象来处理用户输入,并把输入发送给运行在业务层上的enterprise bean 来进行处理。

图2 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为搭建具有可伸缩性、灵活性、易维护性的系统提供了良好的机制:

1)保留现存的IT资产: 由于技术需求的不断更新,在线考试系统必须可以适应新的要求,利用已有的对考试系统方面的投资,而不是重新制定全盘方案。这样,一个以渐进的(而不是激进的,全盘否定的)方式建立在已有考试系统之上的服务器端平台机制是学校和单位所需求的。J2EE架构可以充分利用用户原有的投资,这之所以成为可能是因为J2EE拥有广泛的业界支持和一些重要的'企业计算'领域供应商的参与。每一个供应商都对现有的客户提供了不用废弃已有投资,进入可移植的J2EE领域的升级途径。由于基于J2EE平台的产品几乎能够在任何操作系统和硬件配置上运行,现有的操作系统和硬件也能被保留使用。

2)高效的开发: J2EE允许客户把一些通用的、很繁琐的服务端任务交给中间件供应商去完成。这样开发人员可以集中精力在如何创建商业逻辑上,相应地缩短了开发时间。高级中间件供应商提供以下这些复杂的中间件服务:

① 状态管理服务 -- 让开发人员写更少的代码,不用关心如何管理状态,这样能够更快地完成程序开发。

② 持续性服务 -- 让开发人员不用对数据访问逻辑进行编码就能编写应用程序,能生成更轻巧,与数据库无关的应用程序,这种应用程序更易于开发与维护。

③ 分布式共享数据对象服务 -- 让开发人员编制高性能系统,极大提高整体部署的伸缩性。

3)支持异构环境: J2EE能够开发部署在异构环境中的可移植程序。基于J2EE的应用程序不依赖任何特定操作系统、中间件、硬件。因此设计合理的基于J2EE的程序只需开发一次就可部署到各种平台。由于考试系统很多时候需要提供给许多不同的学校和单位使用,这些学校和单位的软件硬件环境存在有较大的差异,所以能支持异构环境这点就十分关键。同时J2EE标准也允许客户订购与J2EE兼容的第三方的现成的组件,把他们部署到异构环境中,节省了由自己制订整个方案所需的费用。

4)伸缩性: 学校和单位必须要选择一种服务器端平台,这种平台应能提供极佳的可伸缩性去满足可能不断增多的在他们系统上进行考试的大批新的考生。基于J2EE平台的应用程序可被部署到各种操作系统上。例如可被部署到高端UNIX与大型机系统,这种系统单机可支持64至256个处理器。(这是NT服务器所望尘莫及的)J2EE领域的供应商提供了更为广泛的负载平衡策略。能消除系统中的瓶颈,允许多台服务器集成部署。这种部署可达数千个处理器,实现可高度伸缩的系统,满足未来系统升级和规模扩大的需要。

5)稳定的可用性: 虽然在线考试系统不象一般企业的服务器端平台必须能全天候运转以满足公司客户、合作伙伴的需要,但起码必须保证考生考试的这段时间内不发生意外停机等故障,从而影响到考生考试。J2EE部署到可靠的操作环境中,他们支持长期的可用性。一些J2EE部署在WINDOWS环境中,客户也可选择健壮性能更好的操作系统如Sun Solaris、IBM OS/390。最健壮的操作系统可达到99.999%的可用性或每年只需5分钟停机时间。这是对在线考试系统,特别对于那些比较重要的考试的理想选择。

该考试系统用Microsoft Visual http://Basic.NET进行开发,数据库采用SQL Server 2000。由于系统采用三层结构,即数据库服务器、Web服务器、客户浏览器,为了实现可用子网内的任何一台服务器作为数据库服务器的需求,本系统采用Web服务技术,即把Web服务装在Web服务器中,通过访问Web服务来进行数据库的访问。下面分别对Microsoft Visual http://Basic.NET、SQL Server 2000和Web服务技术进行介绍。

2.1 Visual Basic .NET

Microsoft Visual http://Basic.NET 是 Microsoft Visual Basic 6.0 的后续版本,它是基于 .NET 框架直接创建的,因此可以使用所有的平台特性,并能够与其他 .NET 语言协同工作。

2.1.1 Visual Basic 6.0

Visual Basic 6.0 有限的面向对象的特性,特别是缺乏继承,使之不适合于开发面向对象的架构。正由于这一点,对于某些类型的开发,特别是大型、复杂应用程序的开发,与C++或Java开发人员相比,Visual Basic 6.0开发人员会处于不利的地位。另外,Visual Basic 6.0没有多线程能力;错误处理能力差,与其他语言如C++的集成能力差;对于基于Internet的应用程序,没有生动有效的用户界面等缺点。

2.1.2 Visual http://Basic.NET

Visual http://Basic.NET对于IT业来说,它可能是一个小的前进,但是对VB开发人员来说,它是一个巨大的进步!Visual Basic .NET并不只是向核心技术添加和修改了技术特性的VB新版本,它打破了模式的框框!实际上它是一种新编程语言,基于新的核心技术——.NET范例。在Visual Basic .NET之中,技术变化是如此之多,以致VB开发人员可以与C#,C++和Java开发人员相竞争。

在许多方面Visual Basic .NET都与它以前的版本不同。它具有更高的一致性和类型安全级别。用Visual Basic .NET我们更容易写出控制性、可读性很高的代码。虽然它有时要求你习惯于那些编译时额外的检查,但它将在你测试和调试时,为你节约宝贵的时间。

http://VB.NET的语法与VB 6.0已经有了根本性的差别,与其说http://VB.NET是VB 6.0的升级,不如说http://VB.NET是C#的Basic版本。由于采用了CLI的结构,http://VB.NET将很难兼容以前的VB 6.0的代码,大量的VB代码无法顺利地转移到.NET上,不过开发人员仍然可以在.NET平台下,将原有的COM组件进行重新包装,形成.NET平台下的Web服务组件,而且.NET的整个平台、开发工具的高集成性和友好的开发环境还是会给开发人员留下深刻印象。在Java领域中,无论是Borland的JBuilder 6,还是Sun的Forte for Java,或是IBM的WebShpere Studio Application Developer、VisualAge for Java都无法达到VB. NET的生产效率。

2.2 SQL Server 2000

SQL Server是一个功能强大的后台数据库管理系统,它可以帮助各种规模的企业用来管理数据,以可伸缩性的商业解决方案、强大的数据仓库以及与Microsoft Office和Microsoft BackOffice的紧密集成为企业提供额外的商业便利,日益为广大用户所喜爱。到目前为止,SQL Server 2000是Microsoft公司推出的数据库管理系统的最新版本。它不但继承了原来版本的许多优点,而且又增加了很多更先进的功能。

Microsoft SQL Server 2000使用了最先进的数据库架构,具有完全的Web功能,通过对高端硬件平台以及最新的网络和存储技术的支持,可以为较大的Web站点和企业级的应用提供很好的解决方案。SQL Server 2000扩展了SQL Server 7.0版的性能,并增加了几种新的功能,使得用户能够更方便、更快捷地管理数据库和开发应用程序。因此它已成为大规模联机事务处理(OLTP)、数据仓库和电子商务应用程序的优秀数据库平台。

2.3 Web服务

随着Internet和网络化的日渐成熟,无论是属于单个组织的计算机还是属于多个组织的计算机都想通过Internet彼此交流。借助更基本的Internet通信协议,可能需要几个月的时间和大量的资本开发自己的系统。而且当使用该系统和另一个组织的系统进行通信时,两个系统之间的转换也许并不容易,甚至是不可能的,最后得到的只是一团糟。过去人们引入分布式架构系统以解决这个问题。大多数系统本身的缺点甚至妨碍了它们在企业范围内的部署,更别说在全球的部署。为此带来了Web服务。

2.3.1 Web服务的概念

从表面上看,Web服务就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web来调用这个应用程序。Web服务内在的含义是基于XML的通信流通过HTTP协议在一个公共网络(Internet)上传送。Web服务平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web 服务 ,只要我们可以通过Web服务标准对这些服务进行查询和访问。

2.3.2 Web服务的优点

Web服务最大的特性也许是使用XML支持的跨平台的兼容性。即使我们假设一个组织内部使用的都是相同的操作系统、软件等,我们也不可能期望其他的组织使用相同的设备。而Web服务不作此类的要求, 它不依赖于任何平台或公司。它的部分吸引力在于,不管是在Solaris,UNIX,Mac还是在Windows上部署Web服务,所有用户都可以连接并使用。这和一般Web站点是一样的,不必关心要访问的Web站点运行于什么平台,只要它能够正常工作就行。

Web服务需要使用一种平台中立的方法来描述数据和交换数据,为此它使用XML(可扩展标记语言)。XML使用标准化的文本格式以一种简单的方法格式化数据(无论数据有多复杂)。最初,开发人员对XML嗤之以鼻,认为它只不过是书写脚本的另一种方式而已。然而这些惯于从事数据库管理和开发的开发人员不久便意识到,XML是能在双方之间提供数据而无须依赖于专门方案的一种技术。

2.4 .NET对Web服务的支持

.NET从一开始就深深打上了Web服务技术的烙印,在它的市场推广活动中,无时无刻不凸显其作为Web服务的开发和部署平台的特征。可以说,.NET天生就是为Web服务准备的开发和部署平台。

.NET是一个全新的架构,它的整个平台、开发工具的高集成性和友好的开发环境给开发人员留下深刻印象。在Java领域中,任何一种语言都无法达到VS .NET的生产效率。开发工具是.NET的一大优势。.NET正是为进行基于Web服务模型的应用程序开发而度身定做的新一代开发工具和基本结构。.NET构建块服务、新增的.NET设备支持以及即将到来的.NET用户体验,使人们能够充分利用Web服务模型,如愿以偿地开发出新一代应用程序。

http://VB.NET平台内建了对Web服务的支持,包括Web服务的构建和使用。与其它开发平台不同,使用.NET平台,你不需要其他的工具或者SDK就可以完成Web服务的开发了。.NET Framework本身就全面支持Web 服务,包括服务器端的请求处理器和对客户端发送和接受SOAP消息的支持。利用Visual http://Studio.Net,你可以不必了解HTTP、XML、SOAP、WSDL等底层协议,同样能开发和使用Web服务。

2.5 考试系统的运行平台

2.5.1 硬件平台

Web服务器和数据库服务器可共用一台或分别用一台专用服务器或高档PC机,联网设备可采用交换机或HUB,带宽为10M--100M。

2.5.2 软件平台

  1. 操作系统
    服务器端采用Windows 2000 SERVER ,客户端采用Windows即均可。
  2. Web服务器
    目前,市场上有很多Web服务器软件,如IIS、Netscape Enterprise Server、Apache等,各有千秋,其中微软的IIS 具有对系统硬件要求低、功能强、配置简便且与Windows 紧密集成等优点,比较适合各院校和中学的网络硬、软件环境,因此我们选用IIS 5.0。
  3. 数据库服务器
    数据库服务器与 Web服务器应有较紧密的结合,Windows 、IIS均为微软的产品,其数据库也有相应的产品,即SQL Server,所以我们选用SQL Server 2000 为数据库服务器。
  4. 浏览器
    IE浏览器(建议版本5.5以上)
    第三章 考试系统的数据库设计、构成模块及特点
    3.1 考试系统的数据库设计
    考试系统离不开数据库系统的支持,不论是试题、答案,还是考生信息都需要存放在数据库中,而且数据库独立于程序而存在,具有较好的安全性。本系统使用的数据库软件为SQL Server 2000。首先建立一名为ksxt的数据库,主要表格介绍如下:
    3.1.1 考生信息表(stuinfo)
列名数据类型长度允许空
IdNvarchar10
NameNvarchar8
StateNvarchar6

该表主要存放考生的信息,其中Id表示考生的准考证号;Name表示考生的姓名;State表示考生状态,分为三种:已交卷、未交卷(正在考试中)、缺考。考生登录的时候输入准考证号,从该表中检查是否存在该准考证号,如果存在,显示该考生姓名,允许进入考试界面;否则显示“无此考生”。State字段有助于统计缺考人数。
3.1.2 各类试题表(xuanze,tiankong,panduan,chengxtk,chengxts,chengxsj)
主要包括选择题表、判断题表、概念填空题表、程序填空题表、程序调试题表、程序设计题表共6张表,每张表中存放了各类试题的题号和题目。下面以程序设计题表为例说明:

列名数据类型长度允许空
THChar2
XTHChar2
TMNtext16
OleImage16

其中TH表示该试题在第几套题目中;XTH表示该试题的题号,即这套题目中的2个程序设计题中的第几题;TM表示该试题的题目描述;Ole字段存放的为考试时要读出来,解压,供考生下载的压缩文件。如果是选择题表,还有A、B、C、D四个字段分别表示该试题四个选项的内容。除了程序设计题以外,其他试题表没有Ole字段。之所以设TH字段,是因为试题是按套分的,每一套中又有若干题目。每套中的题目事先就定好的,但是每次抽到该套题目时,试题的顺序是打乱的,以减少出现一模一样试卷的概率。
3.1.3 考试信息表(testresult01—testresult99)

列名数据类型长度允许空
IdNvarchar10
XuanzthChar2
PandthChar2
TiankthChar2
ChengxtkthChar2
ChengxtsthChar2
ChengxsjthChar2
XuanzdaNvarchar40
PandaNvarchar20
TiankdaNvarchar100
ChengxtkdaNvarchar100
ChengxtsdaImage16
chengxsjdaImage16
LasttimeInt4

考试信息表共有99张,根据考生准考证号后两位来决定把该考生的考试信息放入哪张表中,比如该考生准考证号末两位为28,则放入表testresult28中。其中Id表示考生的准考证号;Xuanzth、pandth、Tiankth、Chengxtkth、Chengxtsth、Chengxsjth分别表示选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题的题号;Xuanzda、pandda、Tiankda、Chengxtkda、Chengxtsda、Chengxsjda分别表示选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题的正确答案。Lasttime用于记录考试时间,如果时间到了还没有交卷,则回收答案,停止考试。
3.1.4 回收表(reclaim,result)
回收表共有两张,一张记录回收的答案,另一张记录回收是否成功。
表1

列名数据类型长度允许空
IdNvarchar10
XuanzthChar2
PandthChar2
TiankthChar2
ChengxtkthChar2
ChengxtsthChar2
ChengxsjthChar2
XuanzdaNvarchar40
PandaNvarchar20
TiankdaNvarchar100
ChengxtkdaNvarchar100
ChengxtsdaImage16
chengxsjdaImage16

这张表主要用来记录回收的答案,其中Xuanzth、Pandth、Tiankth、Chengxtkth、Chengxtsth、Chengxsjth分别表示选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题的题号,Xuanzda、Pandda、Tiankda、Chengxtkda、Chengxtsda、Chengxsjda分别表示考生的选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题的答案,可与考试信息表中各题的正确答案做比较。
表2

列名数据类型长度允许空
IdNvarchar10
NameNvarchar8
XuanzeChar2
PandChar2
TiankChar2
ChengxtkChar2
ChengxtsChar2
ChengxsjChar2

这张表主要用来判断回收是否成功。其中Id表示考生的准考证号;Name表示考生的姓名;Xuanze、Pand、Tiank、Chengxtk、Chengxts、Chengxsj分别表示选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题是否回收成功,如果成功,则为OK,否则为空。
3.1.5管理表(setting)

列名数据类型长度允许空
DbnameNvarchar10
ServernameNvarchar10
SqlpwdNvarchar10
TestdirNvarchar40
TesttypeNvarchar4
RelaimdirNvarchar40
redopwdNvarchar10

其中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 sql2000数据库对数据进行存贮管理。
3.1.2 E-nettest数据流程
考生首先进入登陆页面,输入用户名和密码,系统将该用户名和密码与数据库中考生表的用户名密码一一核对,如果存在该考生且未登陆,则弹出一个考试的主页面正常进入考试,并将该考生置为考试状态。否则会跳到出错页面要求考生重新登陆。
进入考试页面后,有许多分类的试题要求考生分别完成,考生点击相应页面的超链接,进入做题,在每个分页面的顶部,都将会有对该部分试题的操作提示和注意事项,考生阅读完相关事项后进行做题,每做完该部分试题都必须保存,系统将收集到的考生做题信息上传到数据库中,考生则继续做其他部分试题。
完成所有考试后,考生点击交卷标记,系统保存考生所有的答题信息后正常他退出,并将考生置于离线状态。
具体流程见下图:


图5 系统流程
3.2 E-nettest考试系统环境设置
本系统运行环境如下:
服务器端:软件环境:win2000/nt Tomcat,jsdk用以支持jsp网页,sql server数据库服务器
硬件环境:p3 1.0以上cpu,256M Rom
客户端: 软件环境:win9x/2000/xp,ie5.0以上浏览器
硬件环境:p2 233以上cup,32M 以上内存
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数据库连接池介绍与配置
数据库连接池概述:数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:

    1. 最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;
    2. 最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。
    3. 如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。

以下介绍一下连接池配置关键几个环节:

1)首先在$CATALINA_HOME/conf/server.xml中, 配置应用程序的路径

<Context path="/DBTest" docBase="DBTest"

debug="5" reloadable="true" crossContext="true">

2)然后配置资源名,用以在jndi中进行查询

<Resource name="jdbc/TestDB"

auth="Container"

type="javax.sql.DataSource"/>

3)定义各连接参数,用户名,密码,数据库驱动以及数据源的查找路径

<parameter><name>username</name><value>javauser</value></parameter>

<parameter><name>password</name><value>javadude</value></parameter>

<parameter><name>driverClassName</name>

<value>com.microsoft.jdbc.sqlserver.SQLServerDriver </value></parameter>

<parameter><name>url</name>

<value>jdbc:mysql://localhost:3306/javatest?autoReconnect=true</value>

</parameter>

</ResourceParams>

</Context>

4)由于系统是一个web应用程序,被布署在tomcat容器中,所以需要在$CATALINA_HOME/webapps/quality/WEB-INF/web.xml里设置被引用的资源:

下面是配置代码,必须放在<web-app>和</web-app>里。

<!-- Database Config start -->

<resource-ref>

<description>connectDB test</description>

<res-ref-name>jdbc/connectDB</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

<!-- Database Config end -->

5)最后,将第3方的驱动都保存在$CATALINA_HOME/common/lib/*.jar中,如我们这里连接的是mssql,则将mssql的驱动程序msbase.jar, mssqlserver.jar, msutil.jar放入其中。

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外部程序

在系统中,由于涉及到需要调用word程序进行word试题的考试,因此需要用到调用java外部程序的功能,java.lang.Runtime 类提供了exce()方法来完成对外部可执行程序的调用。注意:在这里exce()方法调用的其实是java解释器这个可执行程序,外部类文件Invoked.class只不过是作为java解释器的参数出现。事实上,exce()方法还可以直接调用其它的可执行文件,而不仅仅是java解释器。具体代码见下:

String path = "C:/word.doc";

try {

Runtime.getRuntime().exec("cmd /c start winword \"" + path + "\"");

} catch (IOException e) {

e.printStackTrace();

}

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

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Grbl是一款开源的运动控制程序,为了增强代码的可读性,Grbl的源代码中附有中文注释,方便开发者理解和调试程序。 Grbl的中文注释涉及的内容包括:存储、运动控制、状态指示、报警和通信等方面。在存储方面,注释解释了程序在运行时对EEPROM、缓存区、状态变量和读取命令的处理逻辑;在运动控制方面,注释解释了各种运动模式下的运动参数、限位检测和离线指令处理等;在状态指示方面,注释解释了状态灯的闪烁方式和编号的含义;在报警方面,注释解释了各种报警的说明和打印方式;在通信方面,注释解释了Grbl支持的通信协议、命令和通信缓存等。 这些中文注释不仅方便了中文开发者阅读和理解Grbl源代码,而且对于英文阅读能力稍差的开发者来说也是十分有用的。通过仔细研读Grbl源代码中的中文注释,开发者可以深入了解Grbl的运作原理,为实现类似的运动控制程序提供参考和帮助。 ### 回答2: GRBL运动控制源代码是一种广泛使用的驱动器及控制器的开源代码,被广泛应用于各种数控设备如雕刻机、高精度打印机等。其核心是一个基于Arduino(开源电子平台) 的固件,它是由 C/C++ 语言编写的。 中文注释是对GRBL源代码的解释和说明。因为源代码中的注释是以英文方式解释的,可能不易理解,用中文注释可以使程序员更容易读懂代码的功能和结构。 在GRBL源代码中,这些中文注释通常包括对每个函数的解释,程序的结构和作用以及变量和常量的意义等等。例如,对于步进电机的控制部分,注释会说明相关代码的功能所在以及编写者在编写这个部分时要用的命名规则,比如step_pulse和dir_pin。 中文注释在理解源代码及修改其功能时非常重要。因为在代码中,有些变量或者参数并没有直接的文本描述,而只有注释能够解释清楚,比如GRBL源代码中的$130-$132参数,它们分别是电机在每个轴上的移动速度限制,通过注释,我们可以清楚地知道如何调整这些限制参数,从而得到更好的电机控制效果。 总之,中文注释是GRBL源代码的有价值的补充,它可以帮助程序员理解代码的意义和实现过程,从而更好地进行修改、调整和优化。这对于GRBL在控制数控设备领域的应用将会发挥重要的作用。 ### 回答3: GRBL是一个基于Arduino的开源运动控制软件,用于CNC机器人控制。GRBL源代码中包含了许多中文注释,这些注释有助于理解代码的含义和执行流程。 首先,代码中的注释解释了各种变量和常量的含义,包括步进电机控制、限位开关状态、速度控制参数和加速度控制参数等。 其次,注释还详细解释了固件如何处理运动指令,并控制与运动有关的Pin引脚。例如,当机器人在单轴上移动时,注释展示了如何使用pinMode函数控制电机方向,使用digitalWrite函数设置步进脉冲信号并改变电机步进状态。 此外,GRBL中的中文注释还解释了处理G代码的方式,包括G0和G1指令,以及如何根据G代码指令计算速度和加速度参数。 最后,注释还提供了关于固件完整性的信息,其中包括执行流程、错误处理和循环。这有助于用户理解固件的整个工作原理和可能的问题。 总之,GRBL源代码中的中文注释是非常有用的,帮助人们更好地理解和使用这个强大的开源运动控制软件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值