《毕业设计(论文)基于JSP的在线考试系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于JSP的在线考试系统的设计与实现.doc(43页珍藏版)》请在三一办公上搜索。
1、基于JSP的在线考试系统的设计与实现(陕理工计算机系计算机科学与技术专业051班,陕西 汉中 723000)指导教师: 摘要 人类进入21世纪,信息技术和网络技术的迅速发展和广泛应用,对社会的政治、经济、军事、科技和文化等领域产生越来越深刻的影响,也正在改变着人们的工作、生活、学习和交流方式。本文主要论述了如何利用JSP(Java Server Pages)技术进行考试资源网站的开发,作为动态网站的设计与数据库是分不开的,网站采用SQL Server 2000数据库作为后台数据库,在开发中严谨地遵循软件工程学的原理,在设计上具有友好的交互界面,管理员可以在管理界面上对后台数据进行更改,从而改变
2、用户界面的内容,在用户界面上网站提供了最新考试信息、考试资料下载、在线考试等功能,使得人们利用在Internet上获得重要的信息来改变传统的学习方式。 关键词 : JSP ; 数据库 ; 网站开发Abstract The mankind enters 21st century, information technology and rapid development and extensive application, politics, economy, military, science and technology and culture of the society of networ
3、k technology, etc field exert a deeper and deeper influence, changing peoples work , life , study and exchange way too. This text expound the fact how utilize JSP (Java Server Pages ) technology go on , have an examination resource development of website mainly, the design as dynamic website can not
4、 be separated from that the database is, websites adopt Sql server 2000 database as backstage supporters database , the principle of following engineering of software in developing rigorously, have friendly mutual interfaces in the design, the administrator can change backstage supporters data in ma
5、naging interfaces , thus change the content of users interface, website offer latest examination information , have an examination materials download , person who have an examination function online at user interface, make people utilize and obtain important information on Internet to change the tra
6、ditional study way. Keyword : JSP ; Database ; Websites development 目录1.课题描述82.系统分析92.1需求分析92.2功能分析92.3可行性研究103.系统总体设计113.1系统目标113.2 系统功能结构113.3业务流程图123.4 系统开发语言123.4.1 JSP的基本概念133.4.2 Ajax技术133.5系统预览133.6开发环境154数据库设计164.1 数据库分析164.2 数据库概念设计164.3数据库逻辑结构174.3.1各数据表的结构174.4数据表之间的关系设计195 公共类设计205.1数据库连
7、接及操作类的编写205.2字符串处理类226功能模块设计236.1前台首页设计236.1.1 前台首页概述236.1.2前台首页技术分析236.1.3 前台首页的实现过程246.2考生信息模块设计246.2.1 考生信息模块概述246.2.2 考生信息模块的技术分析256.2.3考生注册的实现过程256.2.4 找回密码的实现过程286.3在线考试模块设计296.3.1 在线考试模块的概述296.3.2选择考试课程的实现过程296.3.3随机抽取实体并显示试题的实现过程306.3.4 自动阅卷并显示考试成绩的实现过程316.3.5 单元测试326.4台首页设计336.4.1 后台首页概述336
8、.42 后台首页分析346.4.3 后台首页的实现过程346.5考试题目管理额模块设计346.5.1考试题目管理模块的概述346.5.2 考试题目管理模块的技术分析356.5.3查看考试题目列表的实现过程366.5.4添加考试题目的实现过程376.5.5删除考试题目的实现过程377.软件测试397.1功能测试397.2性能测试407.3可用性测试407.4客户端兼容性测试40结 论42致谢43参考文献441.课题描述在线考试系统课题产生的背景是当今教育信息化的趋势及我国高校教育信息化系统的建设;目的是充分利用学校现有的计算机软、硬件资源和网络资源实现无纸化考试以避免传统手工考试的不足。与传统考
9、试模式相比,网上考试渗入了更多的技术环节,对实现安全性的途径、方法也提出了更高的技术要求。通过Internet/Intranet来实现网上考试,是现代教育技术的一个具体实现,具有很重要的现实意义。可以有效利用校园网的软硬件资源,使其发挥最大效力,更好的为学校的教学、科研、管理服务,可以大规模的实行考试,实现考试的客观、公证性,自动化组卷、阅卷可以减轻教师的工作强度。传统考试要求老师刻试卷、印试卷、安排考试、监考、收集试卷、评改试卷、讲评试卷和分析试卷。这是一个漫长而复杂的过程,已经越来越不适应现代教学的需要。在计算机技术迅猛发展下,给传统的办学提供了新的模式。传统的考试方式时间长、效率低;同时
10、人工批卷等主观因素也影响到考试的公正性。这种无纸的在线考试系统,使教务管理突破了时空限制,提高了考试效率和标准化水平;使学校管理者、教师和学生可以在任何时候、任何地点通过网络进行考试。在线考试系统已经成为教育技术发展与研究的方向。2.系统分析2.1需求分析随着社会经济的发展,人们对教育越来越重视。考试是教育中的一个重要环节,近几年来随着考试类型不断增加以及考试要求不断提高,传统考试方式要求教师打印考卷、监考、批卷,使教师的工作量越来越大,并且这些环节由于全部由人工完成,非常容易出错。因此,许多学校或考试机构建立网络在线考试网站来降低成本和人力物力的投入,同时为考生提供了更全面更灵活的服务。考生
11、希望对自己的学习情况进行客观科学的评价,教务人员希望有效的改进现有的考试模式;提高考试效率,为了满足考生和教务人员的要求,在线考试系统应包含在线考试成绩查询等功能以满足用户的需求。在传统的学校教学中,进行一场考试,要求老师刻试卷、印试卷、安排考试、监考、收集试卷、评改试卷、讲评试卷和分析试卷,这是一个繁杂的过程,需要大量人力、物力与时间的投入,已经越来越不适应学校信息化建设与现代教学的需要。尤其在远程网络教学中,学生分布广,不易统一集中安排考试,给校方和学生带来了众多的不便。当前盛行的在线考试系统,正是信息化建设的产物,它是传统考场的延伸。它可以利用互联网络和局域网,随时随地的对学生进行考试,
12、评分,加上数据库技术的利用,使得管理过程简化,能够轻松实现查询,控制等功能。因此在线考试是信息化教学的不可缺少的辅助手段。显然,无论采取何种方式,首要考虑的是安全性能。为此,本系统在SSL协议下完成了在线考试。数据、信息、资料等得以安全稳定的传输。2.2功能分析本网站采用B/S(Browser/Server)即浏览器/服务器网络体系结构,在这种结构下,用户工作界面通过www浏览器来实现,极少部分事务逻辑在前端(Browser)实现,客户端只需要一个浏览器,而将所有的业务规则、数据处理等放在服务器端进行,这在维护和开发上变得简单、容易,所有的操作只需要针对服务器进行就可以,使得成本降低,并且可选
13、择的服务器操作系统是不受限制的.1用户类别:登录系统的身份定为四种,一是超级管理员,二是学校领导,三是一般管理员(普通老师),四是学生,只有被授权的用户才可以使用本系统的资源。2权限管理:系统需要经过有效的身份验证可以登录。用户的身份不同,使用的系统资源也不同。考生只可以参加在线考试;一般管理员(普通教师)可以在线制作试卷,进行考生管理,添加学生信息、控制考试、成绩查询等。学校领导可添加院系、教师、部门、科目信息及查询修改管理员信息及审批试卷、查询考生信息;超级管理员拥有整个系统的全部使用权限,但查询修改管理员信息的权限例外。3在线考试功能:考生输入准号证号登陆系统后,选择对应的试卷可进行考试
14、。答题完毕后,可自动交卷,系统将自动评分,考生可同时获得考试成绩。4在线制作试卷:一般管理员(教师)、学校领导和超级管理员可在线制作试卷,可设定试题的类型、难易程度、分值。5控制考试功能:可设定每次的考试时间,可禁止或允许考生参加考试,同时可查看考生的考试状态。6考生管理功能:可注册新增学生用户,同时查看个别考生及班级考生的信息,也可设定考生的考试状态:允许或禁止考试。7考生成绩查询功能:提供考生各科目成绩的详细查询。8试卷审批功能:超级管理员及学校领导有此权限。教师制作试卷完毕,只有经过超级管理员或学校领导审批后才能发布,发布后学生才能开考。9系统管理功能:一般管理员只可更改登陆密码。超级管
15、理员及学校领导除更改密码外,同时具有高级管理功能,进行添加和删除管理员的帐号。2.3可行性研究可行性分析的目的就是要用最小的代价在尽可能短的时间内确定问题是否能够解决。通过分析解决分析方法的利弊来判定系统目标和规模是否现实,系统完成后所能带来的效益是否达到值得去投资开发这个系统的程度。在线考试系统的可行性应从以下方面考虑。经济可行性定期的组织考试是各个院校及时掌握学生学习成绩的有效方式,利用网络在线考试系统一方面可以节省人力资源降低考试成本,另一方面,在线考试系统能够快速的进行考试和评分,体现考试的客观与公正性。技术可行性开发一个在线考试系统涉及到的核心的技术问题就是如何实现在不断刷新页面的情
16、况下实时显示考试时间和剩余时间,并做到到达考试结束时间自动提交试卷的功能。如果在Ajax技术出现以前,要实现这些功能比较麻烦,但现在可以轻松实现这些功能,这为网络在线考试系统的开发提供了技术保障。3.系统总体设计3.1系统目标根据前面所做的要求分析及用户的需求可知,网络在线考试系统属于中小型的软件,在系统实施后,应达到以下目标:具有空间性。被授权的用户可以在异地登录网络考试在线系统,而无需到指定地点进行考试。操作简单方便、界面简洁美观。系统提供考试时间倒计时功能,使考生实时了解考试剩余时间。随即抽取试题。实现自动提交试卷功能。当考试时间到达规定时间时,如果考生还未提交试卷,系统将自动交卷,以保
17、证考试严肃、公正地进行。系统自动阅卷,保证成绩真实准确。考生可以查询考试成绩。系统运行稳定、安全可靠。3.2 系统功能结构根据网络在线考试系统的特点,可以将其分为前台和后台两个部分进行设计。前台主要用于考生注册和登录系统、在线考试、查询成绩及修改个人资料等;后台主要用于管理员对考生信息、课程信息、考题信息、和考生成绩信息等进行管理。在线考试系统的前台功能结构如图:3.1所示。在线考试系统的后台功能结构如图:3.2所示。在线考试系统的前台考生注册找回密码在线考试成绩查询修改个人资料退出系统考试规则选择课程准备考试开始考试自动阅卷显示考试成绩图3.1 在线考试系统的前台功能结构图在线考试系统的后台
18、管理员信息管理考生试信息管理考生成绩查询课程信息管理套题信息管理考试题目管理退出后台管理图3.2 在线考试系统的后台功能结构图3.3业务流程图 在线考试的系统流程如图3.3所示:找回密码注册登录前台首页成绩查询在线考试修改个人资料选择考试课程准备考试自动阅卷并显示成绩考生成绩查询考生信息管理管理员信息管理提交试卷开始考试同意规则登录后台首页hou课程信息管理试题管理管理员考生图3.3系统流程图3.4 系统开发语言本次设计是基于Jsp的在线考试系统,主要利用了Jsp技术、Ajax技术和SQL server2000数据库开发完成的。3.4.1 JSP的基本概念Java Server Pages (
19、JSP) 技术提供了一种简单快速的方法来创建显示动态生成内容的 Web 页面。由业界处于领先地位的 Sun 公司制定了相关的 JSP 技术规范,该规范定义了如何在服务器和 JSP 页面间进行交互,还描述了页面的格式和语法。 JSP 页面使用 XML 标签和 scriptlets(一种使用 Java 语言编写的脚本代码),封装了生成页面内容的逻辑。它将各种格式的标签(HTML 或者 XML)直接传递回响应页面。通过这种方式,JSP 页面实现了页面逻辑与其设计和显示的分离。 JSP 技术是 Java 系列技术的一部分。JSP 页面被编译成 servlets,并可能调用 JavaBeans 组件(b
20、eans) 或 Enterprise JavaBeans 组件(企业 beans),以便在服务器端处理。因此,JSP 技术在构建可升级的基于 web 的应用程序时扮演了重要角色。 JSP 页面并不局限于任何特定的平台或 web 服务器上。JSP 规范在业界有着广泛的适应性。JSP的效率和安全性更高;JSP的组件 (Component) 方式更方便;JSP的适应平台更广。3.4.2 Ajax技术Ajax 是Asynchronous JavaScript and XML的缩写,意思是异步的JavaScript与XML。它并不是一门新的语言或技术,而是由 JavaScript、XML、XSLT、CS
21、S、DOM和XML Http Request等多种技术所组成的,其中XML Http Request对象是Ajax的核心,该对象是由浏览器中的JavaScript创建,负责在后台以异步的方式让客户端连接到服务器。这样开发人员通过使用 XML Http Request 对象,即可让一些需要服务器参与的工作能够在用户不知不觉中进行。Ajax具体有以下几个方面的优点:(1)减轻服务器的负担。原则是按需求获取数据。(2)可以把一部分以前由服务器承担的工作转移到客户端,利用客户端闲置的资源进行处理,节约空间和成本。(3)无刷新更新页面,可以通过DOM及时将更新的内容显示在页面上。(4)可以调整XML等外
22、部数据,进一步促进页面显示和数据的分离。3.5系统预览在线考试系统由多个页面组成,下面列出几个重要页面。考生登入页面如图:3.4所示,该页面主要用于实现考生登录,同时也提供了考生注册、找回密码和进入后台的超链接;主页面提供了导航条,如图3.5所示;在线考试页面如图3.6所示,该页面用于实现在线答题功能,同时提供了显示考试时间和剩余时间及自动提交试卷的功能。图3.4 考生登录页面图3.5 主页面图3.6在线考试页面套题信息管理页面如图3.7所示,该页面主要用于实现显示套题计本信息、批量删除套题信息等功能,同时还提供了添加套题的超链接;添加考试题页面如图1.8所示,该页面主要用于将考试题目添加到数
23、据库,同时实现了在不刷新页面的情况下,改变课程是自动显示相关课程对应的套题。图3.7套题信息管理页面图3.8添加考试题目页面3.6开发环境在开发在线考试系统时,需要具备下面的软件环境。服务器端:操作系统:Windows 2003。Web 服务器: Tomcat6.0。Java 开发包:JDK1.5以上。数据库:SQL Server 2003。浏览器:IE 6.0。分辨率:最佳效果为1024*768像素。客户端:浏览器:IE 6.0。分辨率:最佳效果为1024*768。4数据库设计4.1 数据库分析由于在线考试系统对于数据的安全性及完整性要求比较高,并且为了增加程序的使用范围,还要保证系统可以拥
24、有存储足够多数据的能力。SQL Server 2000 是一种高性能的关系型数据库管理系统,它在SQL Server 7.0的基础上又扩展了系统性能、可靠性、安全性和易用性,逐渐成为在线事物进程和数据仓库等最好的数据库平台。综上所述,本系统采用SQL Server 2000数据库。4.2 数据库概念设计根据以上各节系统所做的需求分析和系统设计,规划出本系统中使用的数据库实体分别为考生档案实体、管理员档案实体、课程档案实体、套题实体、考试题目实体和考生成绩实体。考生档案实体。考生档案实体包括编号、姓名、密码、性别、注册时间、提示问题、问题答案、专业和身份证号属性。考生档案实体的E-R图如图4.1
25、所示。考生档案姓名编号身份证号密码性别注册时间专业问题答案提示问题图4.1 考生档案实体E-R套题实体。套题实体包括编号、套题名称、所属课程和添加时间属性。套题实体的E-R 图如图4.2所示。套题编号套题名称所属课程添加时间图4.2套题实体E-R试题题目实体考试题目实体包括编号、问题类型、所属课程、所属套题、选项A、选项B、选项C、选项D、添加时间、正确答案和备注等属性。考试题目实体的E-R图如图4.3所示。考试题目问题类型编号正确答案所属课程所属套题选项D选项C选项B选项A图4.3 考试题目实体E-R4.3数据库逻辑结构4.3.1各数据表的结构本系统共包含6张数据表,具体如下所示:tb_St
26、udent(考生信息表)考生信息表用来保存考生信息,该表的结构如表4.1所示表4.1 td_Student表的结构字段名数据类型是否为空是否主键默认值描述idbigint(8)NoYesID号(自动编号)namevarchar(20)NoNull姓名pwdvarchar(20)NoNull密码sexvarchar(2)NoNull性别joinTimedatetime(8)NoGetdate()注册时间Questionvarchar(50)NoNull提示问题Answervarchar(50)NoNull问题答案Professionvarchar(30)YesNull专业cardNovarCha
27、r(18)NoNull身份证号tb_TaoTi(套题信息表)套题信息表用来保存套题信息,该表的结构如表4.2所示。表4.2 td_TaoTi表的结构字段名数据类型是否为空是否主键默认值描述idbigint(8)YesID号(自动编号)Namevarchar(50)套题名称LessonIDbigint(8)所属课程joinTimeDatetime(8)getdate()添加时间tb_Questions(考试题目信息表)考试题目信息表用来保存考试题目信息,该表中保存着所属课程和所属套题的ID,通过这两个ID可以获取所属课程和套题的信息。考试题目信息表的结构如表4.3所示。表4.3 tb_Quest
28、ions表的结构字段名数据类型是否为空是否主键默认值描述idbigint(8)YesID号(自动编号)subjectvarchar(50)问题typechar(6)类型jointimedatetime(6)getdate()添加时间lessonIDint(4)所属课程IDtaoTiIdbigint(8)所属套题IDoptionAvarchar(50)选项AoptionBvarchar(50)选项BoptionCvarchar(50)选项CoptionDvarchar(50)选项Danswervarchar(50)正确答案notevarchar(50)允许为空备注tb_stuResult(考生成
29、绩信息表)考试成绩信息表用来保存考生成绩,该表中的所属课程字段whichLesson与tb_Lesson表中的name字段相关联,并且设置为级联更新。考生成绩表的结构如表4.4所示。表4.4 tb_stuResult表的结构字段名数据类型是否为空是否主键默认值描述idbigint(8)YesID号(自动编号)stuIdvarchar(16)准考证号whichLessonvarchar(60)所属课程resSingleint(4)单选题分数resMoreint(4)多选题分数resTotalint(4)允许为空合计分数joinTimedatetime(8)getdate()添加时间 tb_les
30、son(课程信息表)课程信息表用来保存课程信息.结构如表4.5所示.表 4.5tb_lesson表的结构字段名数据类型是否为空 是否主键 默认值 描述 idbigint(8) YESID号(自动编号)Namevarchar(60)课程名称joinTimedatetime(8) getdate() 添加时间 tb_manager(管理员信息表)管理员信息表用来保存管理员信息,结构如表4.6所示.表 4.6tb_manager字段名数据类型是否为空是否主键 默认值 描述 Id bigint(8) YES ID号(自动编号) namevarchar(30)管理员名pwdVarchar(30)密码4.
31、4数据表之间的关系设计本系统设计了如图4.4所示的数据表之间的关系,该关系实际上也反映了系统中各个实体之间的关系。tb_studenttb_stuResutb_Lessontb_questionstb_Taotitb_manager图4.4数据表之间的关系图5 公共类设计 在开发过程中,经常会用到一些公共类,例如数据库连接及操作的类和字符串处理的类。因此,在开发系统前首先需要设计这些公共类。5.1数据库连接及操作类的编写字符串处理的类是解决程序中经常出现得有关字符串处理问题的方法,包括将数据库中及页面中有中文问题的字符串进行正确的显示和对字符串空值进行处理的方法。定义用于进行数据库连接及操作的
32、类ConnDB,并将其保存到com.wgh.core包中,同时定义所需的全局变量及构造方法。代码如下:package com.wgh.core; /将该类保存到com.wgh.core包中import java.io.InputStream; /导入java.io.InputStream类import java.sql.*; /导入java.sql包中的所有类import java.util.Properties; /导入java.util.Properties类public class ConnDB public Connection conn = null; / 声明Connection对
33、象的实例public Statement stmt = null; / 声明Statement对象的实例public ResultSet rs = null; / 声明ResultSet对象的实例private static String propFileName = /com/connDB.properties; / 指定资源文件保存的位置private static Properties prop = new Properties(); / 创建并实例化Properties对象的实例private static String dbClassName = com.microsoft.jdbc
34、.sqlserver.SQLServerDriver; /定义保存数据库驱动的变量private static String dbUrl = jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=db_expressLetter;private static String dbUser = sa;private static String dbPwd = ;public ConnDB() /定义构造方法try /捕捉异常/将Properties文件读取到InputStream对象中InputStream in = getClass().ge
35、tResourceAsStream(propFileName);prop.load(in); / 通过输入流对象加载Properties文件dbClassName = prop.getProperty(DB_CLASS_NAME); / 获取数据库驱动dbUrl = prop.getProperty(DB_URL, dbUrl);/获取URLdbUser = prop.getProperty(DB_USER, dbUser);/获取登录用户dbPwd = prop.getProperty(DB_PWD, dbPwd);/获取密码 catch (Exception e) e.printStack
36、Trace(); / 输出异常信息.println(警告: DbConnectionManager.getConnection() 获得数据库链接失败.rnrn链接类型:+ dbClassName+ rn链接位置:+ dbUrl+ rn用户/密码+ dbUser + / + dbPwd);return conn; * 功能:执行查询语句 */public ResultSet executeQuery(String sql) try / 捕捉异常conn = getConnection(); / 调用getConnection()方法构造Connection对象的一个实例connstmt = c
37、onn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs = stmt.executeQuery(sql); catch (SQLException ex) System.err.println(ex.getMessage(); / 输出异常信息return rs; / 返回结果集对象 * 功能:执行更新操作public int executeUpdate(String sql) int result = 0; / 定义保存返回值的变量try / 捕捉异常conn = getConn
38、ection(); / 调用getConnection()方法构造Connection对象的一个实例connstmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);result = stmt.executeUpdate(sql); / 执行更新操作 catch (SQLException ex) result = 0; / 将保存返回值的变量赋值为0return result; / 返回保存返回值的变量/*功能:关闭数据库的连接*/public void close()
39、try / 捕捉异常if (rs != null) / 当ResultSet对象的实例rs不为空时rs.close(); / 关闭ResultSet对象if (stmt != null) / 当Statement对象的实例stmt不为空时stmt.close(); / 关闭Statement对象if (conn != null) / 当Connection对象的实例conn不为空时conn.close(); / 关闭Connection对象 catch (Exception e) e.printStackTrace(System.err); / 输出异常信息5.2字符串处理类字符串处理类是为了
40、解决程序中经常出现的有关字符串处理问题而编写的类,在本系统中的字符串处理中,只包含一个用于将指定字符串格式化为制定位数的方法formatNO()。(1)编写将整形数据格式化为指定长度的字符串的ChStr类,将其保存到com.wgh.core包中,并导入所需的包,关键代码如下:package com.wgh.core;import java.text.NumberFormat;public class ChStr (2)在ChStr类中创建一个方法formatNO(),该方法有两个int型参数,风别是str(要格式化的数字)和length(格式化后字符串的长度),返回值为格式化后的字符串,具体代
41、码如下:public String formatNO(int str, int length) float ver = Float.parseFloat(System.getProperty(java.specification.version); /获取JDK的版本String laststr = ; if (ver 1.5) /JDK1.5以下版本执行的语句 try NumberFormat formater = NumberFormat.getNumberInstance();/声明并实例化NumberFormat的一个实例formater.setMinimumIntegerDigits
42、(length);/指定laststr = formater.format(str).toString().replace(, ); catch (Exception e) System.out.println(格式化字符串时的错误信息: + e.getMessage();/输出异常信息 else /JDK1.5版本执行的语句Integer arr=new Integer1;/声明并初始化数组arrarr0=new Integer(str);/将要格式化的数字str赋值给数组arr的第一个元素laststr = String.format(%0+length+d, arr); return laststr; 6功能模块设计6.1前台首页设计6.1.1 前台首页概述考生通过“考生登录模块”的验证后,看以登录到网络在线系统的前台首