您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页基于JAVA的在线考试系统

基于JAVA的在线考试系统

来源:爱够旅游网


基于JAVA的在线考试系统

学生:张艳慧 指导教师:张志强

【内容提要】 在线考试系统旨在实现考试的无纸化管理,对一些科目的考试可以通过互联网络或局域网进行,方便校方考务的管理,也方便了考生,尤其适合考生分布广,不易集中的远程教育。我主要开发系统的后台管理系统—JAVA在线考试管理子系统,它包括试题管理、考生管理、在线制作试卷、控制学生考试的设置、试卷审批等功能。本论文主要介绍了对JAVA在线考试管理子系统的分析、设计和开发的全部过程。运用ER图,程序流程图等对在线管理子系统的设计过程进行详细的说明。全文共分为开发方案、需求分析、系统设计、关键技术解决,结论五部分。开发方案中主要介绍开发在线考试系统得目的、开发方案的选择及开发框架的技术的确定;需求分析介绍了在线考试系统的总体需求及系统各模块的功能需求;系统设计介绍了系统设计的指导思想、数据库的设计、系统模块的设计;关键技术介绍了在具体实现时需解决的一些技术,如开发框架的整合技术、开发 框架与数据库的连接及数据的备份与还原。

【关键词】:JSP,JAVA,SQL Server 2000数据库,B/S模式

前 言 ......................................................................................................................................................1 1、开发方案 ............................................................................................................................................2 1.1问题分析 .......................................................................................................................................2 1.2项目目的 ........................................................................................................................................2 1.3方案选择 ........................................................................................................................................2 1.4开发框架技术 ................................................................................................................................4 2、 需求分析 .............................................................................................................................................5 2.1任务概述 ........................................................................................................................................5 2.2功能需求概述 ................................................................................................................................5 2.2运行环境 ........................................................................................................................................7 3、系统设计 ..............................................................................................................................................7 3.1指导思想 ........................................................................................................................................7 3.2系统结构图 ....................................................................................................................................9 3.3数据库设计 ..................................................................................................................................12 3.4系统模块部分设计.......................................................................................................................17 4、关键技术解决 ....................................................................................................................................24 4.1系统架构与数据库的连接 ...........................................................................................................24 4.2框架技术的整合 ..........................................................................................................................26 4.3数据的备份与还原.......................................................................................................................27 5、结束语 ................................................................................................................................................28 参考文献 ..................................................................................................................................................29 ABSTRACT .............................................................................................................................................30 后记 ..........................................................................................................................................................30

基于JAVA的在线考试系统

前 言

现今,不管是国内还是国外的各大厂家,都在不断的推出一系列的考试、认证。如微软的MCSE、Cisco的CCNA等。我们国家的自考或是成考,以及各省市的各种考试,现在都在朝着信息化的道路前进在走。我们相信在今后这一系列的考试将会走向网络化考试的。这样才是符合信息发展的。所以我们考虑这是一个机会。我们要给不同的考试一个好的解决方案。 这个方案在技术上来讲我们是采用B/S模式。 在Windows/Linux平台上,使用IE浏览器,完成抽题、考试、交卷等考试任务。

各考点模块通过网络获取题库,考点模块按照题库中的抽题策略,自动给每个考生生成一份试卷,考生在线作答,考试结果数据通过网络回收,系统自动进行判分,生成考试成绩和统计数据。“在线考试系统”是集合现试理论、方法和现代信息技术手段的智能化网上考试系统,为学生个性化学习提供“灵活、方便、科学、公平”的“个别化考试服务”,是终结性评价系统。学生可以随时、随地进行课程结业考试。

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

1

基于JAVA的在线考试系统

1、开发方案 1.1问题分析

传统的学校教学中,进行一场考试,要求老师刻试卷、印试卷、安排考试、监考、收集试卷、评改试卷、讲评试卷和分析试卷,这是一个繁杂的过程,需要大量人力、物力与时间的投入,已经越来越不适应学校信息化建设与现代教学的需要。尤其在远程网络教学中,学生分布广,不易统一集中安排考试,给校方和学生带来了众多的不便。而在线考试系统,正是信息化建设的产物,它是传统考场的延伸。它可以利用互联网络和局域网,随时随地的对学生进行考试,加上数据库技术的利用,大大简化了传统考试的过程,因此在线考试是电子化教学的不可缺少的辅助手段。在当今信息时代,计算机技术与网络技术越来越广地应用于各个领域,改变着人们的学习、工作、生活乃至思维方式,也引起了教育领域的重大变革。将计算机与网络技术应用于现代高等教育中,是现代高等教育发展的需要,也是改革教育模式,提高学校教学效果和教学效率、提高科研和管理水平的必要手段。

1.2项目目的

在线考试系统的总体目标:

①、 在线考试系统可以帮助教师完成一个考试从题目设计,考试安排,考试实施,考卷批改到

分数统计总结的所有工作。

②、 所有的考试数据和其它数据库需要一种主流的方式进行存储和管理,例如使用数据库技术。 ③、 考试数据的存放和处理必须对密,需要一定的安全性保障。 对考试的系统目标:

①、 这个软件是分布式的,这意味着只要有考试客户端可以连接到考试应用服务器,任何考生

在任何地方进行身份确认,都能完成考试。

②、 题目最好有一定的稳定性和随机性。稳定性可以保证每一次考试对每一个考生是公平的,

随机性可以避免作弊的发生。

③、 考试的部分结果在考生考完之后就可以知道,同时提供一个机会让考生知道自己哪里做错了,并给出反馈信息说明理由。 对教师的系统目标:

①、 提供一个功能全面的考核管理客户端,可以进行考试设计和安排。 ②、 通过管理客户端,教师可以进行考试的身份管理。

③、 考生的考试结果可以被保存下来,供教师进行分析统计和察看。

1.3方案选择

①、 开发在线考试系统,提出以下解决方案:

选择SQL Server 2000作为后台的数据库,选择JAVA、JSP、JavaScript、Html作为应用程序开发工具,运用Tomcat服务器技术,整个系统完全基于B/S (Browser/Server)模式进行设计。 ②、 JAVA简介

2

基于JAVA的在线考试系统

Java是Sun公司推出的新的一代面向对象程序设计语言,特别适合于Internet应用程序开发。Java的产生与流行是当今Internet发展的客观要求,Java是一门各方面性能都很好的编程语言,它的基本特点是简单、面向对象、分布式、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的,特别适合在Internet环境上开发的应用系统。 ③、 Web应用程序开发环境—JSP技术

JSP的全称是Java Server Pages,它是SUN推出的一种动态网页技术标准。它在传统的静态页面文件(*.html,*.htm)中加入JAVA程序片段和JSP标记,就构成了JSP页面。JSP具有以下的优点:

a) 将业务层与表示层分离:使用JSP技术,网络开发人员可充分使用HTML来设计页面显示部

分(如字体颜色等),并使用JSP指令或者JAVA程序片段来生成网页上的动态内容; b) 能够跨平台:JSP支持绝大部分平台,包括现在非常流行的LINUX系统,应用非常广泛的

Apache服务器也提供了支持JSP的服务;

c) 组件的开发和使用很方便:如ASP的组件是由C++,VB等语言开发的,并需要注册才能使

用;而JSP的组件是用Java开发的,可以直接使用;

d) 一次编写,处处运行:作为JAVA开发平台的一部分,JSP具有JAVA的所有优点,包括Write

once , Run everywhere.

④、 Tomcat应用服务器

目前支持JSP的应用服务器是较多的,Tomcat是其中较为流行的一个Web服务器,被JavaWorld杂志的编辑选为2001年度最具创新的Java产品,可见其在业界的地位。

Tomcat是一个免费的开源的Serlvet容器,在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。

Tomcat也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。Tomcat是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性,越来越受到人们的重视。 ⑤、 SQL server 2000

Microsoft SQL Server2000是由 Microsoft公司开发的,简称SQL Server,由一系列相互协作的组件构成,能满足最大的Web站点和企业数据处理系统存储和分析数据的需求。

Microsoft SQL Server 2000 具有如下特性:  其数据库引擎提供完整的 XML 支持  一个数据库引擎可以在不同的平台上使用

 其关系数据库引擎支持当今苛刻的数据处理环境所需的功能。  一系列管理和开发工具,是其系统容易安装 、部署、管理和使用。  有析取和分析汇总数据以进行联机分析处理 (OLAP) 的工具

⑥、 B/S 开发模式

伴随着Internet的迅速发展,计算机技术正在由基于C/S(client/ Server)模式的应用系统转变为基于B/S模式的应用系统。

过去,网络软件的开发都采用C/S(client)模式,在这种模式下,主要的业务逻辑都集中于客户端程序,因此,必然导致以下问题:

3

基于JAVA的在线考试系统

a) 系统安装、调试、维护和升级困难。由于客户端的硬件配置可能存在差异,软件环能各不

相同,因此,在安装时,必须对每一个客户端分别进行配置,同样,在软件升级时也要对客户端分别处理。

b) 在整个系统中,业务逻辑和用户界面都集中到了客户端,必然会增加安全隐患。 B/S模式带来了巨大的好处:

a) 开发成本及维护成本降低。由于B/S架构管理软件只安装在服务器端(Server)上,即应

用程序在部署、升级、维护时,只需要在服务器端进行配置就可以了,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。

b) 良好的安全性能,防火墙技术可以保证后台数据库的安全性。所有的配置工作都集中在服

务器端且所有客户端请求都是通过DBMS来访问数据库,从而大大减少了数据直接暴露的风险。

1.4开发框架技术

对于框架技术,我们采用Struts+ Spring+Hibernate的整合,其实任何一种框架都可以完成我们的项目,但我们选择三种框架的组合是因为三种框架各有好处,我们利用它们的优点,来避免它们的缺点,充分利用Java技术在web的应用。  Struts是应用比较广泛的一种表现层框架

Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Servlet,JSP和custom tag library构建Web应用的一项非常有用的技术。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速。它使用服务层框架可以将JavaBeans从Jsp/Servlet中分离出来,而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的标签库,Struts是应用比较广泛的一种表现层框架。  Spring 服务层框架

它也是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

• 目的:解决企业应用开发的复杂性

• 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 • 范围:任何Java应用

简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。  Hibernate通过持久层的框架将数据库存储从服务层中分离出来

4

基于JAVA的在线考试系统

它是O/R Mapping的一种实现是目前在JAVA界使用非常广泛的O/R Mapping的一种实现,可以实现关系型数据库和对象之间的映射。用来开发数据库系统非常方便,可以将数据库和程序的设计融合在一起。表现层和服务层的分离是通过两种框架达到目的的,剩余的就是持久层框架了,通过持久层的框架将数据库存储从服务层中分离出来就是其目的,持久层框架有两种方向:直接自己编写JDBC等SQL语句(如Ibatis);使用O/R Mapping技术实现的Hibernate和JDO技术;当然还有EJB中的实体Bean技术。Hibernate的工作原理是通过文件把值对象和数据库表之间建立起一个映射关系,这样,我们只需要通过操作这些值对象和Hibernate提供的一 些基本类,就可以达到使用数据库的目的。例如,使用Hibernate的查询,可以直接返回包含某个值对象的列表(List),而不必向传统的JDBC访问方式一样把结果集的数据逐个装载到一个值对象中,为我们的编码工作节省了大量的劳动。Hibernate提供的HQL是一种类SQL语言,是提供对象化的数据库查询方式,但HQL在功能和使用方式上都非常接近于标准的SQL 2、 需求分析 2.1任务概述

在线考试管理子系统主要实现题库管理、在线制作试卷、在线控制考试、自动评分(客观题部分)、自动交卷、考生管理、成绩查询、试卷管理等功能,充分利用计算机科学与技术,改变传统的考试操作方式,实现无纸化考试的模式。 2.2功能需求概述 系统需要解决的主要问题

我主要开发的是后台管理子系统,在此系统中我们主要对前台考试系统的显示信息进行管理和设置。我将子系统分为以下功能模块:

在线考试管理子系统 题库管试卷管考试管评卷管成绩管用户管权限管信息管理 理 理 理 理 理 理 理 题库管理:用于对单个试题的增、删、改、查等基本维护,还可对题库进行数据备份和数据还原。我们针对不同题型、不同应用范围及不同科目对试题进行维护。

试卷管理:可进行三种组卷方式的维护:随机组卷、人工组卷、综合组卷。还可对考生的基本信息进行维护。

考试管理:对考试分配试卷,并对考试的基本信息进行维护。相当于人工安排考试的过程 评卷管理:对试卷的客观题分配评卷人,并对评卷人基本信息进行管理。

成绩管理:对每次考试的学生成绩的基本信息进行维护,并提供学生成绩的统计管理。

用户管理:对使用本系统的用户基本信息进行维护,用户多数为:系统管理员、老师、教务处人员、

5

基于JAVA的在线考试系统

其他

权限管理:对系统的访问权限进行管理,并对用户可进行权限的分配。

系统应该具备的基本功能

各模块需完成以下功能:

题型维护 范围维护 科目维护 随机组卷 人工组卷 综合组卷 基本 维护 试题 维护 其它 维护 试卷信息维护 试卷其他维护 题库管理 试卷管理 题型维护:对试题的题型进行增、删、改、查操作。在操作之后会自动刷新主页,以使信息更新。 范围维护:对试题的应用范围进行增、删、改、查操作。在操作之后会自动刷新主页,以使信息更新。

科目维护:对试题的科目进行增、删、改、查操作。在操作之后会自动刷新主页,以使信息更新。 试题维护:对试题的基本信息进行增、删、改、查操作。在操作之后会自动刷新主页,以使信息更新。

其他维护:对试题信息的批量查询,并可进行数据导出、数据备份、数据恢复。 随机组卷:用户只需对试卷题型进行设置就可组卷的方式。 人工组卷:可使用户选择试卷的题型中的试题的组卷方式。

综合组卷:是随机组卷与人工组卷的混合组卷方式,即用户对某一类型的试题可进行选择,也可对试题不进行选择。

试卷其他维护:对试卷信息的批量查询,对试题的数据备份与还原。

考试信息维护 考生信息维护 分配评卷人 评卷人评卷 考生成绩维护 成绩其他维护 考试管理 评卷管理 成绩管理

6

基于JAVA的在线考试系统

考试信息维护:对考试的时间、地点、监考人、考试用的试卷、试卷总分数及答卷总时间等考试的基本要素进行设置。

考生信息维护:对考试的学生的基本信息进行增、删、改、查操作,在操作之后会自动刷新主页,以使信息更新。

分配评卷人:对考试所用试卷的客观题分配评卷人,并对评卷的基本信息进行维护。 评卷人评卷:对分配试卷的评卷人可以在此进行评卷。

考生成绩维护:对考试的考生成绩信息进行统计与汇总,对有权限的人可进行成绩的增、删、改、查操作。

成绩其他维护:对考生成绩信息的批量查询,并可进行数据导出、数据备份、数据恢复。

用户基本信息 权限信息维护 用户分配权限 信息基本维护 用户管理 权限管理 信息管理

用户基本信息维护:对使用本系统的用户进行维护,而用户的权限由权限管理进行维护,并分配给用户,使用户只能访问自己拥有的权限内。

权限信息维护:对基本的权限进行维护,用户可自定义维护权限。

用户分配权限:对未分配权限的用户进行权限的分配,即对 分配权限的增、删、改、查操作。 信息基本维护:我们的信息除了有关考试的信息外,还有公告、新闻、留言信息需要我们维护,其中公告、新闻由后台有权限的人进行增、删、改、查操作,而留言是由前台的用户(学生)或游客录入的,我们要防止垃圾数据显示,即对留言有权更改等操作。

2.2运行环境

 硬件需求: PIII/256M/10G 及以上配置,要求为考试系统分配足够的数据库磁盘空间  推荐配置: PIV 2G/512M/40G

 操作系统需求: Windows2000及以上操作系统 ( 推荐 ) ,也可以使用 Sun Solaris 等

Linux 操作系统

 数据库软件需求: SQL Server 2000 中文版数据库 ( 推荐 ) ,也可以使用 Oracle 8i/Oracle

9i 数据库

 中间件软件需求:tomcat系列服务器

3、系统设计 3.1指导思想

1、B/S结构开发思想 ○

B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部

7

基于JAVA的在线考试系统

分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层(3-tier)结构。一个三层架构的应用程序由三部分组成,这三部分各自分布在网络中的不同地方。这三个部分分别是:工作站或表示层接口、事务逻辑、数据库以及与其相关的程序设计。在一个典型的三层架构应用程序中,应用程序的用户工作站包括提供图形用户界面(GUI)的程序设计和具体的应用程序入口表格或交互式窗口。事务逻辑处在局域网(LAN)服务器或其他共享主机上,它作为响应工作站所发出客户请求的服务器,而相对于处于大型机的第三层它是作为客户端,并且决定需要什么数据以及数据存储在哪里。第三层包括数据库以及处理读写以及访问数据库的程序。然而应用程序的设计可能比这个架构要复杂,对于大型程序来说,这个三层模式是一种比较简便的考虑方法。这种应用程序的设计使用客户/服务器模式,各层可以同时开发,并且可以由不同的成员组用不同的语言来开发。因为各个层次的开发不会影响其他层次,所以这种模型对于进一步开发软件是很方便的。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过

Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。

2、系统工程的流程思想 ○

我们在系统开发过程中,采用软件工程的开发管理,在开发的过程中也遵循软件工程的思想,软件工程的主要环节有:人员管理(自己模拟)、项目管理(我的小组模拟)、可行性与需求分析、系统设计、程序设计、测试、维护等,如图1.1所示。

3、面向对象机制的设计思想 ○

所有计算机均由两种元素组成:代码和数据。精确的说,有些程序是围绕着\"什么正在发生\"而编写,有些则是围绕\"谁正在受影响\"而编写的。

第一种编程方式叫做\"面向过程的模型\",按这种模型编写的程序以一系列的线性步骤(代码)为特征,可被理解为作用于数据的代码。如 C 等过程化语言。

8

基于JAVA的在线考试系统

第二种编程方式叫做\"面向对象的模型\",按这种模型编写的程序围绕着程序的数据(对象)和针对该对象而严格定义的接口来组织程序,它的特点是数据控制代码的访问.通过把控制权转移到数据上,面向对象的模型在组织方式上有:抽象、封装、继承和多态的好处。

4、代码分层思想 ○

由于采用B/S设计模式分层思想,同时根据软件工程的管理思想及系统分析的设计与分析的思想进行系统的开发,利用Java语言开发Web应用程序,提供String+Hibernate+Spring框架对系统的程序代码结构进行分层。分层的策略如下:

表示层 业务层 持久层 Struts Spring Hibernate Struts serviceLTransactions DAO DataSource/CAction, ocator onnection Pool ActionForm, Hibernate Classes Jsp, session QueryLanguagStruts-confiBusiness Service e Support and g.xml,etc. Classes other Hibernate Services Domain Model Business Objects Struts-Spring-Hibernate 架构

3.2系统结构图

1、本系统分为学生前台子系统和考试管理子系统,整个系统的结构图如下: 9

基于JAVA的在线考试系统

学生登陆 考生前 台 权限管理 用户管理 在线成绩管理 考试评卷管理 系统 考试管理 试卷管理 后台管 理 题库管理 2、系统的用例图如下: 可操作系统的任何模块只能操作用户管理中的部分操作,即只能维护在线考试管理子系统用户管理中自己的信息试题管理<<子类>>总权限用户<><>试卷管理<><>考试管理<<子类>><><>用户登录<>评卷管理<>成绩管理系统用户<<子类>>部分权限用户<><><>用户管理权限管理被分配了拥有用户管理的用户,可维护其它用户的信息信息管理系统权限用户○3、系统部分模块类图:

用户管理模块类图如下所示:

10

基于JAVA的在线考试系统

IUserBOIBaseHibernateDAOUserAction(from action)AbstractTable-userbo : IBaseHibernateDAO-userId : String-uservo : AbstractTable<<接口>>UserDAO(from hibernate)-userName : String+loginUser()() : StringIUserBO(from business)-psw : String+queryUserList()() : String+saveUser()() : int-purviewId : String+addUser()() : String+updateUserINfo()() : int+saveUser()() : int+getUserId()() : String+deleteUser()() : Single+deleteUserINfo()() : int+updateUser()() : int+setUserId()()+modifyUser()() : String+queryUserByID()() : AbstractTable+updateUserPurveiw()() : int+getUserbo()() : IBaseHibernateDAO+queryAllUser()() : AbstractTable+deleteUser()() : int+getPsw()() : String+setUserbo()()+queryUserByINfo() : AbstractTable+findByIdUser()() : AbstractTable+setPsw()()+findByPropertyUser()() : AbstractTable+getUserName()() : String+getUservo()() : AbstractTable+setUserName()()+setUservo()()+getPurviewId()() : String+setPurviewId()()

信息管理模块类图如下所示:

接口IInfoBO接口IBaseHibernateDAOInfoTable(from bean)InfoAction(from action)-infoId : String-infobo : IInfoBO(form business)-infovo : InfoTable(from bean)<<实现类>>InfoBO<<实现类>>-infoType : SingleInfoDAO(from hibernate)-infoContent : String-infoInsertTime : String+queryMainInfo()()-infoImage : String+queryInfoList()()+saveInfo()() : int+querySimpleInfo()()+updateInfo()() : int+saveInfo()()-infoName : String+toAdd_modifyInfoPage()()+deleteInfo()() : int+updateInfo()()-extend1 : String+addInfo()()+queryInfoByID()() : InfoTable(from bean)+deleteInfo()()+getInfoId()()+modifyInfo()()+queryInfoList()() : InfoTable(from bean)+findByIdInfo()()+setInfoId()()+deleteInfo()()+findByPropertyInfo()()+getInfoType()()+getInfovo()()+findByConditionInfo()()+setInfoType()()+getInfoContent()()+setInfovo()()+setInfoContent()()+getInfobo()()+getInfoInsertTime()()+setInfobo()()+setInfoInsertTime()()+getInfoImage()()+setInfoImage()()+getInfoName()()+setInfoName()()+getExtend1()()+setExtend1()()

系统部分功能序列图 用户登录序列图:

顶层包::用户登陆LoginAction获取用户信息并处理UserBO到数据库查找用户信息1:login()2:getUservo()3:getUsevo()4:返回用户信息调用用户登录动作

系统操作序列图:

11

基于JAVA的在线考试系统

顶层包::登陆用户用户请求Action系统业务逻辑businessBO1:execte()2:获取用户提供的信息getCustomer()3:获取用户提供的信息getCustomer()4:返回用户请求的信息调用用户具体的动作 3.3数据库设计

1、主要数据库表的介绍 ○

根据系统需要和考试需要,设立了如下数据库表:

试题类型表(questionType_table):其中包括了试题的类型的基本信息,如类型名称、答题方式、说明信息等字段;录入时,我们将答题方式确定为大概几种类型:填空方式,选择方式,问答方式,判断方式,综合方式。

试题范围表(questionBound_table):用于控制试题应用的范围,如同样的科目语文,在小学、初中、高中、大学都有,由此我们设定了此表,此表中有范围名称、范围说明等基本信息;

所属科目表(questionSubject_table):用于录入试题相关的科目应用,它可以有不同的应用范围。如上所述,我们只需录入一次的科目,就可方便我们在录入试题时每次都录。各种题库表:我们采用一种类型的题存储在一个表中,由此我们会有填空题表(question_blanc_table)、单选题表(question_selectone_table)、多选题表(question_selectMany_tabel)一题多问表(question_askone_table)、一题多问表(question_askMany_table)、判断题表(question_judge_table)等试题表

试卷表(exam_table):用于报存考试中试卷的基本信息,如出卷方式(有随机出卷、人工出卷、综合出卷)、试卷名称、试卷应用范围(与试题范围相对应)、试卷所属科目(与试题科目相对应)、试题标题级别、试题标题内容、试题总类型、试题个数、试题总ID等基本信息。 学生表(student_table):用于保存学生的考试的用户名及登陆密码。 成绩表(grade_table):用于存储学生的考试成绩。

评题表(appraiser_question_table):对于主观题的答案我们须要评卷人(有权限的用户)进行手工评卷,本表用来存储评卷人评卷的一些信息。

答案表(student_answer_table):用于存储学生问答题的答案,如试卷ID,学生ID及各种试题类型的答案字段。

用户表(user_table):用于保存用户的登陆的基本信息及分配的权限。

权限表(purview_table):用于存储用户组织的的权限,通过分配操作模块的权限组织权限。

12

基于JAVA的在线考试系统

信息表(info_table):用于保存除了试卷以外的信息,主要是为了学生与教师更好的沟通。有信息类型(有公告、新闻、留言)、信息名称、信息内容等基本字段。 游客表(testuser_table):用于保存游客登陆或注册的基本信息。 2、数据库ER图 ○

数据库设计的逻辑实体关系图表示如下:(这里表示的只是部分表的逻辑实体关系。)

questionBound_tablepurview_tablePK student_answer_tablePK FK1FK2studentAnswerIDselectoneAnswerselectmanyAnswerblankAnsweroneAskAnswermanyAskAnswercombinationAnswerotherAnswerstudentIDtestPaperIDuser_tablePK FK1userIDuserNamepswpurviewIDPK FK1FK2questionSubject_tablequestionSubjectIDquestionSubjectNamequestionSubjectExplainquestionSubjectOpenFlagquestionBoundIDuserIDpurviewIDpurviewNamepurviewExplainpurviewContent FK1questionBoundNamequestionBoundExplainquestionBoundOpenFlaguserIDPKquestionBoundIDquestionType_tablePKstudent_tablePK FK1studentIDstudentNamestudentNumbersstudentIDcardtestPaperIDPK FK1FK2testPaper_tabletestPaperIDtestPaperMakeModetestPaperNametestPaperExplaintestPaperTypequestionTypeIDquestionBoundIDquestionSubjectIDcaptionlevelonecaptionContenttwocaptionContentthreecaptionContentonecaptionExamtwocaptionExamthreecaptionExamquestionNumbersuserIDquestionID FK1questionTypeIDquestionTypeNameanswerMannerquestionTypeExplainquestionOpenFlaguserIDgrade_tablePK FK1FK2gradeIDselectonePointselectmanyPointblankPointoneAskPointmanyAskPointcombinationPointotherPointstudentIDtestPaperIDquestion_tablePK FK1FK2FK3questionIDcontentexplaindifficultyDegreeanswerExplainanswerContentuserIDquestionTypeIDquestionSubjectIDappraiser_question_tabletestuser_tablePK FK1testIDtestNametestPswtestflagtestPaperIDPK FK1exam_tableexamIDexamNameanswerPaperTotalTimeanswerMakeTimetespPaperTotalPointexamBeginTimeexamExplaininvigilateeveryQuestionPointexamPositiontestPaperIDPK FK1FK2appraiserIDuserIDappraiserContentappraiserPointtestPaperNumbersstudentIDquestionIDtestPaperIDPK info_tableinfoIDinfoTypeinfoContentinfoInsertTimeinfoImageinfoNameextend1

13

基于JAVA的在线考试系统

3、主要数据库表的结构 ○

定义(数据词典):

A、数据库表名的定义使用:重点字_table;重点字可以是多个英文单词的组合,从组合的第二单词○

起首字母大写,字段命名是能表达字段内容的英文单词的组合,组合方式同表名重点字相同。

B、NN 表示not null 不填表可为空。 ○

C、数据类型不使用固定数据库的类型,标识大众类型,如字符串、字符、数字等。这样在更改数○

据库时需求的数据是可移植的

D、输写数据表在数据库中的物理名称,可用自己熟悉的语言再定义表名称,方便沟通。 ○

E、长度定义又数据类型决定:如字符串可选8000以下,数字可在50位之间,字符只允许一位。 ○

F、输入方式表示数据的来源:生成表由程序或数据库的索引自动生成,而不需人工录入;输入表○

示通过文本框等输入的数据;选择表单选框、复选框、下拉列表等通过选择输入的数据;自定获取是为外码的输入设定的,它由程序自动获取。 主要表结构如下:

物理名称:questionType_table 表名称 questionTypeID questionTypeName answerManner 主要字段 数据类型 字符串 字符串 长度 属性 输入方式 生成 输入 描述 试题类型标识符(主键) 试题类型名称 备注 50 50 NN NN 由系统自动生成 系统定义了6种常见的固定的答题方式,如:单选方式、多选方式、填空方式、判断方式、问答题方式。 试题类型表 questionTypeExplain questionOpenFlag 字符串 50 NN 选择 此种试题的回答方式 字符串 5000 输入 试题类型的说明 是否公开标志 表示是自己使用字符串 50 NN 选择 的类型还是每个用户都可使用的公共类型 userID 备注

字符串 50 NN 自动获取 用户ID 外码 用于定义试题的类型,可以使用户以不同的数据类型名称来表达自己的试题 物理名称:questionBound_table 表主要字段 数据类长度 属性 输入描述 备注 14

基于JAVA的在线考试系统

名型 方式 称 questionBoundID 字符串 50 NN 生成 试题范围标识符(主键) 由系统自动生成 questionBoundNa字符串 50 NN 输入 试题范围名 试me 称 题questionBoundEx字符串 5000 输入 试题范围的 范plain 说明 围questionBoundO表示是自己使用表 penFlag 字符串 50 NN 选择 是否公开标的范围还是每个志 用户都可使用的公共类型 userID 字符串 50 NN 自动获取 用户ID 外码 备注 用于定义试题的范围,可以使用户以不同的试题范围名称来定义自己的试题

物理名称:questionSubject_table 表名主要字段 数据类称 型 长度 属性 输入方式 描述 备注 questionSubjectID 字符串 50 NN 生成 试题科目标识符(主键) 由系统自动生成 questionSubjectName 字符串 50 NN 输入 试题科目名称 试questionSubjectE题xplain 字符串 5000 输入 试题类型的说明 科questionSubjectO表示是自己使用目penFlag 表 字符串 50 NN 选择 是否公开标的类型还是每个志 用户都可使用的公共类型 questionBoundID 字符串 50 NN 选择 试题范围ID 外码1 userID 字符串 50 NN 自动获取 用户ID 外码2 备注 用于定义试题的科目,可以使用户以不同的试题科目名称来定义自己的试题

物理名称:question_table 表名主要字段 数据类长度 属性 输入称 型 方式 描述 备注 15

基于JAVA的在线考试系统

questionID 字符串 50 NN 生成 试题标识符(主键) 由系统自动生成 content 根据不同类型的字符串 50 NN 输入 试题内容 答题方式进行输入试题 explain 字符串 5000 输入 试题说明 difficultyDegree 系统模认6种试题深度:基础、 字符串 50 NN 选择 试题深度 简单、中等、中试级、中难、难级、题极难。 表 answerContent 字符串 50 NN 选择 试题答案内容 answerExplain 字符串 5000 输入 试题答案说明 userID 字符串 50 NN 自动获取 用户ID 外码1 questionTypeID 字符串 NN 选择 试题类型ID 外码2 questionSubjectID 字符串 NN 选择 试题科目ID 外码3 备注 本试题表只是模拟了试题表的公共部分,实际是一种试题一张表,可由不同用户录入。

物理名称:testPaper_table 表名主要字段 数据类长度 属性 输入称 型 方式 描述 备注 testPaperID 字符串 50 NN 生成 试卷标识符(主键) 由系统自动生成 testPaperMakeM系统设定有三种ode 字符串 50 NN 输入 试卷出题方出题方式:随机式 组卷、人工组卷、综合组卷。 试testPaperName 字符串 50 NN 输入 试卷名称 卷testPaperExplain 字符串 5000 选择 试卷说明 表 userID 字符串 50 NN 自动获取 用户ID 外码1 questionID 字符串 50 NN 试题ID 外码2 questionBoundID 字符串 50 NN 试卷范围ID 外码3 questionTypeID 字符串 50 NN 选择 试题类型ID 外码4 questionSubjectID 字符串 50 NN 选择 试题科目ID 外码5

16

基于JAVA的在线考试系统

备本试卷表模拟了试卷的主要部分,其中很多字段是组合的,如试题ID就是多试题的注 ID

物理名称:exam_table 表名主要字段 数据类描述 备注 称 型 长度 属性 输入方式 examID 字符串 50 NN 生成 考试标识符(主键) 由系统自动生成 examName 字符串 50 NN 输入 考试名称 answerPaperTotal字符串 50 NN 输入 答卷总时间 Time 考answerMakeTime 字符串 50 NN 输入 允许参加次试数 表 examBeginTime 时间/日期 50 NN 输入 答卷开始时间 examExplain 字符串 50 NN 考试考试过程中说明 的要点 examPosition 字符串 50 NN 输入 考试位置 testPaperID 字符串 50 NN 选择 试卷ID 外码 备注 可设定某次考试的基本信息,并选择考卷。

3.4系统模块部分设计 A、用户登录:

1对于已注册的用户根据用户名和密码进行登陆,登录界面如下:

17

基于JAVA的在线考试系统

2填写您的用户名、密码和验证码; ○

3击“登陆”按钮; ○

4用户名、密码和验证码都正确,登陆成功,进入系统主界面; ○5主要代码: ○

if(this.session().getAttribute(\"rand\")!=null){//检验随机数是否为空

if(this.checkCode.equals(this.session().getAttribute(\"rand\").toString())){//比较随机数

uservo=userbo.queryUserByINfo(uservo);//检验用户信息并将信息返回 if(uservo!=null){//看用户是否存在

this.setUserpurview(uservo.getPurviewId());//设置用户权限

this.session().setAttribute(\"user\将用户信息放在session中 return SUCCESS;//返回用户主界面页面 }else{ return ERROR;返回到失败页面} }else{return ERROR; }}else{ return ERROR; }

B、用户主界面:

1因为每个用户被分配了不同的权限,在这里我们选用的拥有所有的权限的超级管理员,用户主界○

面是用户的管理界面。主界面如下所示:

2点击左测具体的模块并进行具体的操作;用户根据自己的权限进行选择,没有被分配权限的模块○

是不能操作的;

3选择login按钮可重新登陆,选择帮助是本系统的介绍和操作介绍,点击退出即可退出本系统; ○4主要代码: ○

18

基于JAVA的在线考试系统

/main.jsp /login.jsp//

C、操作的主要模块:

1题库管理模块的试题维护: ○

A试题维护主界面:选择题库管理中试题维护是试题维护的主界面,展示了试题维护的主要信息;○

可进行试题的录入、编辑、删除(单条删除和批量删除)、批量查询等操作;

主要代码如下:

try{

UserTable user=(UserTable)this.session().getAttribute(\"user\");//获取当前用户信息

QuestionTypeTable typevo=new QuestionTypeTable(); typevo.setUserId(user.getUserId());

typelist=typebo.findQuestionTypeList(typevo);//获取试题类型列表 QuestionSubjectTable subjectvo=new QuestionSubjectTable(); subjectvo.setUserId(user.getUserId());

subjectlist=subjectbo.findSubjectByCondition(subjectvo);//获取试题科目列表

QuestionBoundTable boundvo=new QuestionBoundTable(); boundvo.setUserId(user.getUserId());

boundlist=boundbo.queryBoundList(boundvo);//获取试题范围列表 questionvo.setUserId(user.getUserId()); String type=questionvo.getQuestionType(); if(type!=null&&!type.equals(\"\")){

questionvo.setExtend1(\"0\");

returnlist=questionbo.findQuestionList(questionvo); //获取某种试题类型列表

}else{

String managers=\"0,1,2,3,4,5,6,7\"; questionvo.setExtend1(\"2\");

questionvo.setAnswerManner(managers);//设置试题类型的答题方式

19

基于JAVA的在线考试系统

returnlist=questionbo.findQuestionList(questionvo);//获取所有试题列表 if(returnlist!=null&&returnlist.size()>0){

for(int i=0;iQuestionVO tempvo=(QuestionVO)returnlist.get(i); if(boundlist!=null&&boundlist.size()>0){

for(int j=0;jQuestionBoundTable tempbound=(QuestionBoundTable)boundlist.get(j);

if(tempbound.getQuestionBoundId().equals(tempvo.getQuestionBoundId())){ tempvo.setQuestionBoundId(tempbound.getQuestionBoundName());//获取试题范围名称

}}}

if(subjectlist!=null&&subjectlist.size()>0){

for(int j=0;jQuestionSubjectTable tempsubject=(QuestionSubjectTable)subjectlist.get(j);

if(tempsubject.getQuestionSubjectId().equals(tempvo.getQuestionSubjectId())){tempvo.setQuestionSubjectId(tempsubject.getQuestionSubjectName());//获取试题科目范围名称}}} if(typelist!=null&&typelist.size()>0){

for(int j=0;jQuestionTypeTable temptype=(QuestionTypeTable)typelist.get(j);

if(temptype.getQuestionTypeId().equals(tempvo.getQuestionTypeId())){

tempvo.setQuestionTypeId(temptype.getQuestionTypeName());//获取试题类型名称

}}}}}}}catch(Exception e){e.printStackTrace();} return SUCCESS;

B试题的录入:可进行多种试题的录入,每一种试题被录入到每一个试题库中,如填空方式会填到○

填空表中、多选方式会填到多选题库中;点击主界面中录入,可弹出试题录入界面,输入试题的信息后,点击提交即可,界面如下:

主要代码如下:

try{int flag=0;

UserTable user=(UserTable)this.session().getAttribute(\"user\");//获取当前用户信息

questionvo.setUserId(user.getUserId());

flag=questionbo.addQuestion(questionvo);//添加试题信息

20

基于JAVA的在线考试系统

if(flag>0){return SUCCESS;//录入成功 }else{return ERROR;//录入失败}

}catch(Exception e){e.printStackTrace();return ERROR;}

c试题的编辑:点击主页面的每条信息的编辑,可进行每条信息的修改,在修改过后点击确定即可,○

若修改成功修改的页面会自动关闭并刷新主页面;需要注意的一点是,对于不是此用户录入的试题,即公开的试题,当前的用户是不能修改的;编辑界面如下:

主要代码如下:

try{int flag=0;

UserTable user=(UserTable)this.session().getAttribute(\"user\"); String type_id[]=questionvo.getQuestionId().split(\"_\"); questionvo.setQuestionId(type_id[1]);//设置试题ID questionvo.setQuestionTypeId(type_id[0]);//设置类型ID flag=questionbo.modifyQuestion(questionvo);//修改试题信息

if(flag>0){return SUCCESS;//修改成功}else{return ERROR;//修改失败}

}catch(Exception e){e.printStackTrace();return ERROR;}

D试题的删除:删除有两种,批量删除(删除按钮)和单条删除(每条记录后的删除);无论哪种○

删除,在点击删除后会提示是否真的删除,若点击确定则执行删除操作;若操作成功返回主页面,否则返回到错误页面;若点击取消则不执行任何操作;删除界面如下:

21

基于JAVA的在线考试系统

主要代码如下:

int flag=0;

try{flag=questionbo.deleteQuestion(questionvo);//删除试题信息

if(flag>0){ return SUCCESS;//删除成功 }else{return ERROR; //删除失败}

}catch(Exception e){e.printStackTrace();return ERROR; }

2试卷管理的试卷基本信息维护: ○

A试卷基本信息主界面:选择试卷管理中试卷基本信息维护,主要展示了试卷维护的主要信息,可○

进行试卷的组卷:随机组卷、人工组卷、综合组卷;随机组卷只是选择试题类型也可设定试题的个数,然后根据试题的数量进行抽取相应数量和相应类型的试题;人工组卷是用户可直接对试题进行选取,对试题的信息一目了然;综合组卷即使随机组卷和人工组卷的混合,对某类型的试题用户可进行随机抽取(必需设定数量),也可人工选择;对每种组卷方式我们都提供了试卷的增、删、改、查操作;试卷基本信息如下:

主要代码如下:

try {

UserTable user = (UserTable) this.session().getAttribute(\"user\"); QuestionSubjectTable subjectvo = new QuestionSubjectTable(); subjectvo.setUserId(user.getUserId());

subjectlist = subjectbo.findSubjectByCondition(subjectvo);//获取应用科目 QuestionBoundTable boundvo = new QuestionBoundTable(); boundvo.setUserId(user.getUserId());

boundlist = boundbo.queryBoundList(boundvo); papervo.setUserId(user.getUserId());

returnlist=paperbo.findPaperByCondition(papervo); if(returnlist!=null&&returnlist.size()>0){ for(int i=0;iTestPaperTable temppaper=(TestPaperTable)returnlist.get(i); if(boundlist!=null&&boundlist.size()>0){ for(int m=0;m22

基于JAVA的在线考试系统

QuestionBoundTable tempbound=(QuestionBoundTable)boundlist.get(m);

if(tempbound.getQuestionBoundId().equals(temppaper.getQuestionBoundId())){

temppaper.setQuestionBoundId(tempbound.getQuestionBoundName()); }}}

if(subjectlist!=null&&subjectlist.size()>0){

for(int n=0;nQuestionBoundTable tempbound=(QuestionBoundTable)boundlist.get(n);

if(tempbound.getQuestionBoundId().equals(temppaper.getQuestionBoundId())){

temppaper.setQuestionBoundId(tempbound.getQuestionBoundName());

}}}}}} catch (Exception e) {

e.printStackTrace();}

return SUCCESS;

B试卷的录入:不同的组卷方式录入的信息也不同,在随机的录入中只需设置试卷中每个题的类型○

即可,若是完全随机则不需要录入试题个数,而部分随机要录入个数;人工组卷需选择某类型的试题;综合组卷的录入比较随便,可随机设置也可人工选择;三种试题录入的界面如下:

图1随机组卷录入

图2人工组卷录入

23

基于JAVA的在线考试系统

图3综合组卷录入

主要代码如下:

try{

int flag=0;

UserTable user=(UserTable)this.session().getAttribute(\"user\"); papervo.setUserId(user.getUserId());//设置试卷是哪个用户录入的 flag=paperbo.savePaper(papervo);//录入试卷信息

if(flag>0){ return SUCCESS;录入成功 }else{return ERROR;//录入失败 } }catch(Exception e){

e.printStackTrace(); return ERROR;}

4、关键技术解决

4.1系统架构与数据库的连接

对于数据库的连接,我们的数据访问接口采用JDBC-ODBC桥数据驱动程序,以纯Java的方式来连接数据库,为访问不同的数据库提供统一的接口。JDBC数据库驱动程序是把JDBC调用翻译成厂商专用API的调用。开放数据连接(ODBC)最初是为微软操作系统上的SQL提供API标准,后来也在其他的平台上提供了支持。ODBC为直接访问数据定义了一组函数,而不是在客户应用程序中嵌入SQL。JDBC-ODBC桥在JDBC API 和ODBC API 之间提供了一个桥梁,这个桥把标准的JDBC调用翻译成对应的ODBC调用,然后通过ODBC API把它们发送到ODBC数据源。 在选择了数据访问接口后,开始利用这个原理进行具体的连接了。

由于我们开发时是利用MVC的设计模式,所以在此我们的数据库连接是封存在M中的,即只要我们和M层连接上,就已经连接上数据库了。

在M上我们采用Hibernate框架技术,以下是一个非常简要的Hibernate体系结构的概要图:

24

基于JAVA的在线考试系统

从这个图可以看出,Hibernate使用数据库和配置信息来为应用程序提供持久化服务(以及持久的对象)。我们只需在hibernate.cfg.xml中配置以下语句即可:

\"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"

\"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">

sa name=\"connection.url\">jdbc:microsoft:sqlserver://localhost:1035;DatabaseName=webexamine

org.hibernate.dialect.SQLServerDialect sqlserver2000 aaaaaaaa name=\"connection.driver_class\">com.microsoft.jdbc.sqlserver.SQLServerDriver

org.hibernate.dialect.HSQLDialect true

其实我们在这里配置了一个数据连接,以保证系统的正常运行,我们需要使用proxool连接池,我们经测试,分别用proxool、tomcat JNDI、Hibernate自带的连接池进行配置之后分别执行以上的10000条数据插入和读取,结果显示proxool的性能要优于tomcat JNDI,而Hibernate自带的就更不用提了,差很远。依次为:39265毫秒/10000条、26013毫秒/10000条、50029毫秒/10000条。

25

基于JAVA的在线考试系统

4.2框架技术的整合 首先我们要建立web应用程序名字为webexamine的项目,其基本内容及结构如下的形式:

先将项目中所需要的基础类库及各框架的类库放到lib文件夹子下面,所需要的主要类库如下:

struts2-core-2.0.6.jar xwork-2.0.1.jar spring-core.jar spring-orm.jar hibernate3.jar commons-beanutils.jar commons-lang.jar mssqlserver.jar

然后在classes中建立各框架的默认使用的文件: struts.xml Struts.properties hibernate.cfg.xml

applicationContext.xml 到此,Struts+hibernate+spring初步配置完成。我们还需要具体的更改web.xml(服务器配置文件)、contextApplication.xml(spring1.2 框架配置文件),配置文件,才能达到真正的整合。 web.xml文件中的配置: xmlns=\"http://java.sun.com/xml/ns/j2ee\"

xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\">

contextConfigLocation

/WEB-INF/classes/applicationContext.xml

exportFilter

org.displaytag.filter.ResponseOverrideFilter

26

基于JAVA的在线考试系统

struts2

org.apache.struts2.dispatcher.FilterDispatcher

struts2 /*

org.springframework.web.context.ContextLoaderListener

contextApplication.xml文件中最基本的配置如下:

class=\"org.springframework.orm.hibernate3.LocalSessionFactoryBean\">

/WEB-INF/classes/hibernate.cfg.xml

class=\"org.springframework.orm.hibernate3.HibernateTransactionManager\">

这样我么的配置就算整合完成了,之后就是具体开发中加入的代码了,在此不叙述。上面是采用spring框架座桥梁进行控制,由web.xml告诉服务器:将struts托管给spring,由spring监听;之后再contextApplication.xml中将hibernate也加入到spring的管理中,若要struts连接hibernate,

必须通过spring。

4.3数据的备份与还原

我们根据mssqlserver数据库提供的backup(备份)命令及restore(恢复)命令,进行数据库的备份与还原,在连接数据库后,我们在需要备份和还原的地方加入以下语句:

27

基于JAVA的在线考试系统

backup database to disk='备份文件名' restore database from disk='备份文件名' 然后发送给数据库的管理对象进行数据还原与备份。

在知道了数据库备份与还原的接口后,用JAVA进行具体的连接,这里采用JAVA直连的方法,部 分代码如下:

try{

String user=\"sa\";//连接sqlserver2000数据库登陆名 String password=\"aaaaaaaa\";//连接sqlserver2000数据库密码

String sDBDriver=\"com.microsoft.jdbc.sqlserver.SQLServerDriver\";//连接数据库的驱动字符串

String connStr=\"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=webexamine\";//注册连接字符串 Connection con=null;

Class.forName( sDBDriver);//注册数据库驱动

con = Driver Manager.getConnection(connStr ,user,password);//获取数据库连接

String sql=\"backup database xncsims to disk='d:\\\\xncback.dat'\";//备份数据库,还原数据库和着类似,只是将这句变为

还原的语句

st=con.createStatement();//创建发送对象

rs=st.executeQuery(sql);//这里就是把你的SQL语句发到数据库执行 }catch(SQLException e){ System.out.println(e.toString());} catch(Exception e){ System.out.println(e.toString());}

5、结束语

当今许多高校都非常关注无纸化网络考试的开发与应用,本文是通过考试方面进行的尝试,实践证明,该方法是可行的;本人结合企业的开发技术及在校所学理论知识(软件工程,操作系统,数据结构等学科),利用毕业设计的机会,开发一套在线考试系统,基本上实现了在线考试及考试管理等功能。

由于时间仓促,一些技术和设备所限,该系统存在一些不足之处,有待进一步改进和完善,具体说来有:

(1) 对后台数据库中数据的日常维护,包括自动清理过时数据。

(2) 程序中错误处理和输入控制不够全面,可能导致输入无效引发错误。

28

基于JAVA的在线考试系统

参考文献

[1] 洪维恩,何嘉. Java2面向对象程序设计[M].北京.中国铁道出版社.2005.1:50-200 [2] 张孝祥IT课堂系统---Java就业培训教程(网上课堂). [3] http://java.sun.com(java 官方网站). [4] http://www.cn-java.com (中国java网站).

[5] 耿祥义.Java基础教程[M].北京.清华大学出版社. 2004.9:10-50 [6] Bruce Eckel.Java编程思想[M].北京.机械工业出版社. 2002.9:30-280

[7] (美)舒尔第.Java2-The complete reference[M].北京.电子工业出版社. 2003.1:20-100 [8] (美)Marty Hall.Servlet与JSP权威指南[M].北京v机械工业出版社. 2002.10:30-350 [9] (美)Marty Hall.JavaScript高级程序设计[M].北京.人民邮电出版社. 2006.11:50-200 [10](美)David Flanagan.JavaScript权威指南[M].北京.机械工业出版社. 2003.1:10-200 [11] 梁立新.项目实践精解:基于struts-spring-hibernate的Java应用开发[M].北京.电子工业出版社. 2006.8:10-300

[12] 邱哲等.Struts Web设计与开发大全[M].北京.清华大学出版社. 2006.8:10-208 [13] 张洪伟.Tomcat Web开发及整合应用[M].北京.清华大学出版社. 2006.8:10-230 [14] 郭锋等.Spring 从入门到精通[M].北京.清华大学出版社. 2006.8:10-250

[15] 蔡雪焘.Hibernate开发及整合应用大全[M].北京.清华大学出版社. 2006.8:10-200 [16] 高寅.系统分析之路[M].北京.电子工业出版社. 2005.5:30-200 [17] http://displaytag.sourceforge.net(displaytag官方网站) [18] http://jakarta.apache.org (Apache软件Jakarta项目组官方网站) [19] http://www.hibernate.org(hibernate官方网站) [20] http://www.springframework.org (spring官方网站)

[21] 范云之.基于Web数据库在线考试系统的设计与实现研究[J].商丘师范学院学报第22卷第5期 2006.10:1-20

29

基于JAVA的在线考试系统

On-line examination system base on JAVA

Student :zhang yanhui supervisor:zhang zhiqiang

【ABSTRACT】On-line examination system the aim is carry out examination of have no the paper turn a management, can carry on through Internet net or bureau area net to some examinations of categories, convenient school square test the management of duty, also convenient the examinee is particularly suitable for examinee to distribute widely and not easily concentrated of long range education.I mainly develop the system-JAVA of the backstage management's on-line examination management sub- system of system and it includes to try the management, on-line creation of a management, examinee to try book, control the constitution that the student examine and try an examination and approval etc. function.This thesis mainly introduced to manage the analysis, design of the sub- system and all processes of the development to JAVA's on-line examination.Make use of ER diagram, procedure flow chart etc. to on-line manage the design process of sub- system to carry on expatiation.The full text is totally divided into the design, key technique of the analysis, system of the development project, need to solve, conclusion five part.Develop the main introduction in the project develops on-line examination system purpose, development project of choice and development frame of the assurance of technique;The need analysis introduced the total need of the on-line examination system and the function request of each mold of system piece;The system design introduced the design, system mold of the instruction thought, database of system design the design of the piece;The key technique introduced at concrete carry out need some techniques for solve, such as development frame of integration technique, development frame with The database link and the backup and revivification of data.

Keyword:JSP, JAVA,2000 databases of the SQL Server, mode of B/ S 后记

在实践的过程中,充分理解面向对象语言的思想及网络对我们的冲击,计算机在网络上的应用已经成为我们生活里不可或缺的辅助元素,而利用计算机科学与应用技术来解决生活中的实际问题是我们学习计算机的主要目的;没有计算机时我们也可以解决,但有了计算机、网络我们会更轻松的解决问题。最后在本论文完成之际,感谢学校领导、系领导、及导师张志强的大力帮助与支持,感谢参加我论文审阅和答辩的各位教授和老师及关心我的同学和老师。

30

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务