jsp+mysql在线考试系统论文.docx
- 文档编号:10760681
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:21
- 大小:205.56KB
jsp+mysql在线考试系统论文.docx
《jsp+mysql在线考试系统论文.docx》由会员分享,可在线阅读,更多相关《jsp+mysql在线考试系统论文.docx(21页珍藏版)》请在冰豆网上搜索。
jsp+mysql在线考试系统论文
目录
1系统概述3
1.1系统需求3
1.2国内外研究现状3
1.3网站的开发语言和语言功能4
1.4系统具备的特点6
2在线考试系统的系统的需求分析6
2.1在线考试系统的需求分析6
2.2在线考试系统的概要设计7
3在线考试系统的详细过程8
3.1系统环境9
3.2数据连接的设计9
3.3servlet的使用9
3.4部分功能的设计与实现举例10
3.4.1在线考试功能的设计与实现10
3.4.2系统管理功能的设计与实现12
3.5安全性设计13
4系统的测试14
4.1系统测试分析14
4.1.1测试过程14
4.1.2测试方法15
4.1.3具体的方案测试15
4.2系统测试结果15
5课程设计总结15
1系统概述
1.1系统需求
网络考试系统是实现网络教育的一个重要组成部分,通过网络考试系统你可以及时测试自己的学习进度、自己对已学习知识的掌握程度。
网络考试与传统考试相比有着明显的优势,考生和教师可以从世界的任何角落,通过浏览器接入因特网来使用考试系统,不受地域的限制,同时也使得用户可以更加灵活地安排考试时间,可以在任何时候使用网络考试系统进行自测,快速查询考试成绩。
所以,网络考试系统的开发和应用现在正受到越来越多的大学的重视。
在本单位,网络考试模式是教学改革的正式项目之一,它可以运用到多种教学过程中。
例如对于本单位公共课程“计算机应用基础”,要求在计算机等级考试前进行一次拟上机考试,以前都是由老师自己命题,然后复制题目到每个学生的机器上,学生把答案写一个文件中,做完题后由教师回收该文件进行判分。
这样的考试,过程变得非常复杂,让教师的负担很重;而且考试题目不统一,经常出现很多无法估计的问题,考试效果不能达到预想的目的。
基于上述情况,迫切需要一个界面统一、管理使用方便的网络考试系统的出现。
校园网建设的普及和完善以及Web数据库技术的快速发展为网络考试系统开发提供了良好的媒介和基础,使我们对考试过程的实施和管理由书面化和单机化过渡到了网络化。
1.2国内外研究现状
互联网的考试用途很早就受到了各方面的重视,既然考试能够通过电脑完成,那么网上考试从技术上来说就是可行的。
国内著名的工商管理考试GMAT于1999年就开始实行算机考试,2000年后GRE,TOEFL考试也开始采用计算机考试,向着网络化方向发展。
近年来出现的各种rI’认证考试以及英语GM八T和GRE考试已经是一种基于计算机网络的考试,完全摆脱了纸和笔。
考生使用计算机答卷,通过网络提交答卷,自动阅卷。
网络考试的优点是显然的:
阅卷更加迅速,考试结束考生即可知道考试结果,还免了纸介质的试卷和答卷的传输,从而降低了保密成本。
通过抽取不同的试题,或者是随机变换试题顺序或答案顺序,可以做到一人一卷,极大地降低了作弊的几率。
另外,网络考试为自适应考试提供了可能。
基于计算机网络的考试需要专门的较高水平的技术支持,考试己经发展为一种产
业。
网络考试系统的实现技术有多种,可以采用传统的客户机/服务器(C/S)型的Mls型架构,即试题内容放在远程的服务器上,在考试机上安装考试应用程序和数据库客户机配置,因此每次考试时要对机器进行安装、配置,这样一来考务工作比较烦琐;而且考试程序放在客户机上,安全性也受到一定影响。
另外一种考试系统采用W七b技术实现。
节几b技术超越了传统的“客户机/服务器”两层结构,采用了三层体系结构:
用户界面层/事务层/数据库层。
因此Web结构有着更好的安全性。
在用户机上不需要安装任何应用程序,只需要有一个标准的web浏览器就可以。
应用程序可以安装在事务层所在的计算机上,试题存放在数据库服务器上(事务层和数据库可以是同一台机器)。
采用这种体系结构的计算机网络考试和管理系统适用于一个考场或几十个考场、几十人或几万人同时进行无纸化考试,解决了考试系统对客户机软件过分依赖的问题,减轻了客户机软件维护工作量。
比以往的考试系统更具有实用性。
而且,考试系统安装和试题装卸的程序简易,进行不同类别试题的考试时仅需要在服务器上进行试题的更换处理,对考场的计算机配置应考专业的相应软件,考生就可以进行考试。
目前国内成熟的网络考试系统多为QS模式,比如清华毫太网络考试系统,
B/S模式的比较少,其中基于JavaZ技术的网络考试平台则更少。
1.3网站的开发语言和语言功能
(1)JSP技术
JavaServerPagesTM(JSP)技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法。
JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作。
下面是JavaServerPagesTM具的一些特点:
将内容的生成和显示进行分离
使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。
使用JSP标识或者小脚本来生成页面上的动态内容。
生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。
如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。
在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBCTM技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。
这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。
强调可重用的组件
绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者EnterpriseJavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。
开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。
基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。
采用标识简化页面开发
Web页面开发人员不会都是熟悉脚本语言的编程人员。
JavaServerPage技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。
标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。
通过开发定制化标识库,JSP技术是可以扩展的。
今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。
这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。
JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。
作为采用Java技术家族的一部分,以及Java2(企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。
由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为JavaServlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。
作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。
随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。
(2)Servlet技术
Servlet是使用JavaServlet应用程序设计接口(API)及相关类和方法的Java程序。
除了JavaServletAPI,Servlet还可以使用用以扩展和添加到API的Java类软件包。
Servlet在启用Java的Web服务器上或应用服务器上运行并扩展了该服务器的能力。
JavaServlet对于Web服务器就好象JavaApplet对于Web浏览器。
Servlet装入Web服务器并在Web服务器内执行,而applet装入Web浏览器并在Web浏览器内执行。
JavaServletAPI定义了一个Servlet和Java使能的服务器之间的一个标准接口,这使得Servlet具有跨服务器平台的特性。
Servlet通过创建一个框架来扩展服务器的能力,以提供在Web上进行请求和响应服务。
当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让Servlet建立起服务器返回给客户机的响应。
当启动Web服务器或客户机第一次请求服务时,可以自动装入Servlet。
装入后,Servlet继续运行直到其它客户机发出请求。
Servlet的功能涉及范围很广。
例如,Servlet可完成如下功能:
创建并返回一个包含基于客户请求性质的动态内容的完整的HTML页面。
创建可嵌入到现有HTML页面中的一部分HTML页面(HTML片段)。
与其它服务器资源(包括数据库和基于Java的应用程序)进行通信。
用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。
例如,Servlet可以是多参与者的游戏服务器。
当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至applet的新连接,并将该连接保持在打开状态。
当允许客户机和服务器简单、高效地执行会话的情况下,applet也可以启动客户浏览器和服务器之间的连接。
可以通过定制协议或标准(如IIOP)进行通信。
对特殊的处理采用MIME类型过滤数据,例如图像转换和服务器端包括(SSI)。
将定制的处理提供给所有服务器的标准例行程序。
例如,Servlet可以修改如何认证用户。
(3)MySql数据库技术
MySQL是一个真正的多用户、多线程SQL数据库服务器。
SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。
MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。
SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。
例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像。
MySQL主要目标是快速、健壮和易用。
最初是因为我们需要这样一个SQL服务器,它能处理与任何可不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,MySQL就开发出来。
自1996年以来,我们一直都在使用MySQL,其环境有超过40个数据库,包含10,000个表,其中500多个表超过7百万行,这大约有100个吉字节(GB)的关键应用数据。
(4)JavaScript技术
JavaScript就是适应动态网页制作的需要而诞生的一种新的编程语言,如今越来越广泛地使用于Internet网页制作上。
JavaScript是由Netscape公司开发的一种脚本语言(scriptinglanguage),或者称为描述语言。
在HTML基础上,使用JavaScript可以开发交互式Web网页。
JavaScript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。
运行用JavaScript编写的程序需要能支持JavaScript语言的浏览器。
Netscape公司Navigator3.0以上版本的浏览器都能支持JavaScript程序,微软公司InternetExplorer3.0以上版本的浏览器基本上支持JavaScript。
微软公司还有自己开发的JavaScript,称为JScriptoJavaScript和Jscript基本上是相同的,只是在一些细节上有出入。
JavaScript短小精悍,又是在客户机上执行的,大大提高了网页的浏览速度和交互能力。
同时它又是专门为制作Web网页而量身订做的一种简单的编程语言。
1.4系统具备的特点
本系统利用JAVA实现了在线考试管理系统,该系统应在开发出来后在技术上应具有一定的先进性、操作性和交互性,具有强大的数据统计分析功能。
这样才能使系统在建成后一段时间内,不会因技术的落后而需要大规模的调整,并且能够跟随逐步的升级而保持整个系统的先进性。
同时要求系统对计算机硬件要求不能太高,运行速度要快。
因为个体用户从经济实力上无法大量投资去购置高档硬件、软件,短时间内对系统进行全面升级,系统应能够适应社会的不断变化,应具有良好的实时性、交互性、可扩展性、易扩充性、开放性。
(1)良好的实时性:
作为一个远程教育实时系统,它的质量的好坏关键在方法调用的快捷和网络数据传输的快慢上,所以系统必须具有完备和良好的实时性。
(2)良好的通用性:
全国各个地区的用户或会员都可对网站进行使用,因此应具有良好的通用性。
(3)易扩充性:
本网站的数据库管理模块能够方便灵活地对各种数据库进行扩充修改,使得各个数据库中的记录保持最新最完整的状态,并且初步具备网络化的特征,为以后的网络版留下升级空间。
(4)界面的人性化:
良好的界面,能使管理员工作更加轻松,操作更加方便,能在需要的时候,很快的找到自己所需要的内容。
2在线考试系统的系统的需求分析
2.1在线考试系统的需求分析
要实现一个在线考试系统,首先应该进行需求分析,这样才能令设计出的软件满足用户的各项功能。
基于JsP的网络考试系统采用三层体系结构,解决了两层体系结构中的缺点。
在三层体系结构中,把应用逻辑独立出来形成一个中间层,中间层位于客户层与存储层之间。
该三层结构中,客户层采用研几b浏览器作为标准用户界面,使客户层简单且便于维护。
存储层采用SQLServer7.0/2000。
中间层采用Tomcats服务器。
所有服务器的操作系统采用Windows2000。
在这种模式下,客户层是“瘦”的,而中间层也被称为应用层或应用服务器,它可依据应用逻辑的要求来分布部署,而且可以在各个部署点上进行维护,并由应用层负责与存储层进行交互
在线考试时在网上模拟考试的应用程序,它维护着一个数据库,存储着考生、题库、管理员等信息,主要包括教师出题、学生在线考试、自动判卷以及相关的系统维护功能。
2.2在线考试系统的概要设计
2.2.1系统功能描述
对于JsP方案的在线考试系统,总体上作如下设计:
(l)将访问系统的用户按身份分为两类:
管理员用户(一般是教师)、考生用户;
(z)只允许系统管理员对考生、题目等基本信息进行管理;
(3)考生的主要功能是在线考试以及查看成绩;
(4)只有通过身份验证的用户才能进入相应用户身份的主页。
以上两类用户分别拥有自己的操作功能。
根据操作划分模块,每一个操作模块都要实现自身的功能,并且在整个操作流程中负责承上启下。
下面根据这两个方面的需要,来分别描述各个模块要实现的功能:
其功能模块大致分为:
1)考生信息模块
考生信息是由超级用户添加生成德,其中包括对考生信息的添加和删除功能
2)题目管理模块
主要包括对考试题目的添加和修改功能
3)成绩统计模块
其中包括所有考生考试成绩的显示及各个分数段考生人数的统计
4)管理员追加
主要功能是添加和删除后台管理员
5)在线考试模块
考生在线考试主要经过三个步骤,首先考生登录,登录成功后进入考试,将所有问题答完后提交,将成绩显示出来。
如图所示:
考生过程
描述这个应用程序的系统框架图:
3在线考试系统的详细过程
系统的详细设计是利用需求分析和概要设计来确定每个模块的内部特征以及实现过程,进行详细的程序设计,其中包括数据库详细设计和程序的详细设计。
3.1系统环境
1、硬件方面:
服务器的CPU主频至少在400MHZ以上,内存容量至少在256MB以上,硬盘容量至少在4GB以上。
2、软件方面:
1)服务器的操作系统为Windows2003Server。
2)数据库管理系统为sqlserver2000o
3)开发工具:
Sun的Jdk、tomcat5.5,eclipse。
3.2数据连接的设计
数据库作为在线考试应用系统的核心,在建立之后要和前台应用程序建立连
接才能发挥它的作用。
本节将介绍建立数据库的连接文件,在需要与数据库进行
交互操作的应用程序中都将引用此连接。
在本系统中我们把数据库的连接参数写入一个名为jdbcsql.Properties的配置文
件中,这样在程序运行时如果环境变化,可以方便地修改数据库配置。
Jdbcsql.ProPerties的代码如下:
Driver=com.microsoft.jdbc.sqlserver.SQLServverDriver
url=jdbc:
microsoft:
sqlserver:
//localhost:
1433;DatabaseName=exam
username=””
password=””
为了避免在每一次进行数据库操作前都需要进行的加载驱动、创建连接等操作,提高编写代码的效率,在本系统中,我们通过使用编写JavaBean读取配置文件(jdbcsql.properties)来连接数据库,文件名为DBConnectionBeanjava。
该JavaBean把数据库的连接及数据库的基本操作封装在其中。
这样做有很大的优点:
1、实现了数据库的统一管理,方便程序开发时与数据库的交互;
2、一旦系统移植、数据库参数改变,则不需要重新修改所有的连接代码并重
新编译,只要在这个封装JavaBean中改变其中的参数即可。
3.3servlet的使用
在本系统中,也使用了Servlet来帮助实现业务逻辑控制,例如用户登录系统
答题时间超过预定时间后会显示答题超时就采用了CTimeout这个Servlct来处理。
该Servlet的代码如下:
//CTimeoutjava
//验证密码,验证是否以参加考试,传送参数
importjava.io.*:
imP0rtjavax.servlet.*;
importjavax.servlet.httP.*:
importjava.util.*;
PublieclassCllmeoutextendsHttPServlet
{
//定义d0Post方法用来接受数据
PublicvoiddoGet(HttPServletRequestreq,HttpServletResponseres)throws
ServletException,IOException
{
//定义输出流
req.setCharacterEncoding(“gh2312”):
res.setContentType(”text/html:
charset=gh2312”);
Printwriterout=res.getwriter();
StringchaoshiID=req.getParameter(“chaoshiID”);
try
{
out.Println(“”);
out.Println(“
”):out.Println(“ charset=gh2312‘>”); out.prindn(“
out.Println
(“
out.printhln(“”):
out.Println(“”);
out.Println(“ document.MMretumValue>”); out.println(“”); out.println(“