无纸化考试系统

无纸化考试系统

摘要:计算机网络技术的飞速发展,特别是计算机硬件技术的发展已经达到了相当高的水平。但是,在我国远程教育软件的开发目前还处于起步阶段,随着这项技术的不断深入发展,就要求有更好、更完善的软件系统应用到远程教育当中去,这就给软件设计人员提出了更高的设计要求。

我们本次设计的无纸化考试系统网站的建设,其于JSP和javaBean技术和SQL Server数据库的考试系统开发,力求给广大考生提供方便,界面友好,易操作,从而使考生顺利完成这项考试,从而免去不必要的麻烦,本考试系统可以自动评分从而为教师省去了不少时间,同时也可以更好的促进考试成绩的公平公正。为网上无纸化考试系统在我国顺利普及打下良好的基础,从而使得我国的网络信息迅速普及,实现高速信息化战略顺利进行!

关键词:考试系统 网站 JSP JavaBean SQL Server数据

Paperless examination system

Abstract : With the rapid developed of computer network technology, the technology has reached a very high level. especially computer hardware technology. However, in our Distance education software development is still in its infancy, with the deepening of the technology development requires a better, more comprehensive software system, which get applied to the distance education, which made for software designers higher design requirements.

We designed this paperless examination system of Web sites, JSP and javaBean its SQL Server database technology and test system development, and strive to facilitate the majority of candidates friendly interface, easy operation, which enable candidates to successfully complete this exam to avoid unnecessary trouble, the examination system can automatically score and thus save a lot of time for teachers, but also can better promote a fair and just examination results. Paperless examination system for online popularity in China and lay a good foundation for success, allowing rapid spread of China's network information, information technology strategy to achieve high-speed smooth!

Key words: examination system network JSP JavaBean SQL Server Database

目 录

1 引言„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1 2 主要技术介绍„„„„„„„„„„„„„„„„„„„„„„„„„„„2

2.1 JSP技术„„„„„„„„„„„„„„„„„„„„„„„„„„„2

2.2 Java Bean技术„„„„„„„„„„„„„„„„„„„„„„„„3

2.3 JDBC技术„„„„„„„„„„„„„„„„„„„„„„„„„„ 4

2.4 Javascript技术„„„„„„„„„„„„„„„„„„„„„„„ 5

2.5 SQL Server2000数据库„„„„„„„„„„„„„„„„„„„„ 5 3系统分析„„„„„„„„„„„„„„„„„„„„„„„„„„„„„6

3.1无纸化考试系统的需求 „„„„„„„„„„„„„„„„„„„„6

3.2技术可行性 „„„„„„„„„„„„„„„„„„„„„„„„„6 4 系统设计„„„„„„„„„„„„„„„„„„„„„„„„„„„„7

4.1 无纸化考试系统的概要设计„„„„„„„„„„„„„„„„„„„7

4.1.1无纸化考试系统的综合系统框架图„„„„„„„„„„„„„7

4.1.2本系统包含的两个子系统 „„„„„„„„„„„„„„„„„„8

4.2系统结构设计„„„„„„„„„„„„„„„„„„„„„„„„„8

4.3系统数据库设计 „„„„„„„„„„„„„„„„„„„„„„„9

4.4 系统web服务器执行流程„„„„„„„„„„„„„„„„„„„ 10 5 无纸化考试系统功能实现„„„„„„„„„„„„„„„„„„„„„ 11

5.1数据连接„„„„„„„„„„„„„„„„„„„„„„„„„„„11

5.2无纸化考试系统设计„„„„„„„„„„„„„„„„„„„„„„12

5.2.1数据库连接公用模块„„„„„„„„„„„„„„„„„„„„ 12

5.2.2首页index.jsp „„„„„„„„„„„„„„„„„„„„„ 16

5.2.3无纸化考试模块„„„„„„„„„„„„„„„„„„„„„„ 17

5.2.4系统管理模块„„„„„„„„„„„„„„„„„„„„„„„ 28 总结 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 35 参考文献„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„36 致 谢 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 37

1 引言

计算机网络技术的飞速发展以及计算机技术的发展及计算机的日益普及,现在很多国内外的大学和社会其他部门都已经开设了远程教育,通过计算机网络实现异地教育和培训,从而为无纸化考试系统发展提供了坚实的基础。现在,计算机硬件技术的发展已经达到了相当高的水平。但是,在我国远程教育软件的开发目前还处于起步阶段,随着这项技术的不断深入发展,就要求有更好、更完善的软件系统应用到远程教育当中去,这就给软件设计人员提出了更高的设计要求。

在二十一世纪的新时代,随着计算机技术的发展及计算机的日益普及,基于在线考试与无纸化办公一样已成为大势所趋。无纸化考试系统也越来越成为学校的好帮手,它的优势不但体现在人力上也体现在物力上,无纸化考试系统的采用自动评阅、计分、成绩存档功能将有效地避免资源的浪费,有利于环保,减少人员,提高效率。

相比传统的考试方式,无纸化考试系统的主要好处是一方面可以动态地管理各种考试信息,只要准备好足够大的题库,从该题库中抽取一定数量的考题生成考试试卷,从而有效地避免了考试作弊,相互抄袭的避端;另一方面,考试时间灵活, 可以在规定的时间段内的任意时间参加考试;另外计算机化的考试的最大特点是阅卷快,系统可以在考试结束时当场给考生成绩,计算机阅卷给了考生最大的公平感。

网络考试系统极大地提高了教学的灵活性,现在在许多领域已经有了广泛的应用。最有影响的案例就是ETS(美国教育考试中心)举办的GRE(美国研究生入学考试)的计算机化考试,它使考试由原来的每年只能有两次参加考试的机会变成了每个工作日都可以参加的考试。

本设计讲述的是一个基于SQL Server 2000+JSP+javabean的无纸化考试系统的综合实现,该系统基本上可以满足学校及现代信息化企业的内部考试要求,可以实现学校低成本投入,高效率办公的宗旨。例如:一个学校如果使用了本系统,无需老师阅卷、评卷,而直接由系统自动判卷,使老师从传统的繁琐的阅卷过程中解脱出来,为广大老师省去不少的时间,从而有更大的精力致力于日常的教学过程中,极大地提高了办公效率。网上无纸化考试系统已成为时代发展的趋势,本课题的设计正是顺应时代潮流,为众多师生考试中提供便捷、公平,当今时代是一个追求公平、公正的时代,是一个效率第一的时代,传统的考试系统在未来的发展中逐渐退出历史舞台,网上无纸化考试系统必将在未来的考试过程发挥更重要的作用。众多优势为网上无纸化考试系统在我国顺利普及打下良好的基础,从而使得我国的网络信息迅速普及,使得中国的高速信息化战略顺利进行!

2 主要技术介绍

2.1 JSP技术

JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,其网址为http://www.javasoft.com/products/jsp。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。

JSP(JavaServer Pages)是一种基于Java的脚本技术。在JSP 的众多优点之中,其中之一是它能将 HTML 编码从 Web 页面的业务逻辑中有效地分离出来。用 JSP 访问可重用的组件,如 Servlet、JavaBean 和基于 Java 的 Web 应用程序。JSP 还支持在 Web 页面中直接嵌入 Java 代码。可用两种方法访问 JSP 文件:浏览器发送 JSP 文件请求、发送至 Servlet 的请求。

1、 JSP 文件访问 Bean 或其它能将生成的动态内容发送到浏览器的组件。图2-1说明了该 JSP 访问模型。当 Web 服务器接收到一个 JSP 文件请求时,服务器将请求发送至 WebSphere应用服务器。WebSphere应用服务器 对 JSP 文件进行语法分析并生成 Java 源文件(被编译和执行为 Servlet)。Java 源文件的生成和编译仅在初次调用 Servlet 时发生,除非已经更新了原始的 JSP 文件。在这种情况下,WebSphere应用服务器 将检测所做的更新,并在执行它之前重新生成和编译 Servlet。浏览器发送 JSP 文件请求如图2.1所示:

图2.1 浏览器发送 JSP 文件请求

2 、发送至 Servlet 的请求生成动态内容,并调用 JSP 文件将内容发送到浏览器。图2-2说明了该访问模型。该访问模型使得将内容生成从内容显示中分离出来更为方便。WebSphere应用服务器支持 HttpServiceRequest 对象和 HttpServiceResponse 对象的一套新方法。这些方法允许调用的 Servlet 将一个对象放入(通常是一个

Bean)请求对象中,并将该请求传递到另一个页面(通常是一个 JSP 文件)以供显示。调用的页面从请求对象中检索 Bean, 并用 JSP 来生成客户机端的 HTML。发送至 Servlet 的请求如图2.2所示:

图2.2发送至 Servlet 的请求

2.2 Java Bean技术

简单地说,JavaBean是用Java语言描述的软件组件模型,其实际上是一个类。这些类遵循一个接口格式,以便于使函数命名、底层行为以及继承或实现的行为,可以把类看作标准的JavaBean组件进行构造和应用。JavaBean一般分为可视化组件和非可视化组件两种。可视化组件可以是简单的GUI元素,如按钮或文本框,也可以是复杂的,如报表组件;非可视化组件没有GUI表现形式,用于封装业务逻辑、数据库操作等。其最大的优点在于可以实现代码的可重用性。JavaBean又同时具有以下特性。

1 易于维护、使用、编写。

2 可实现代码的重用性。

3 可移植性强,但仅限于Java工作平台。

4 便于传输,不限于本地还是网络。

5 可以以其他部件的模式进行工作。

对于有过其他语言编程经验的读者,可以将其看作类似微软的ActiveX的编程组件。但是区别在于JavaBean是跨平台的,而ActiveX组件则仅局限于Windows系统。总之,JavaBean比较适合于那些需要跨平台的、并具有可视化操作和定制特性的软件组件。avaBean组件与EJB(Enterprise JavaBean,企业级JavaBean)组件完全不同。EJB 是J2EE的核心,是一个用来创建分布式应用、服务器端以及基于Java应用的功能强大的组件模型。JavaBean组件主要用于存储状态信息,而EJB组件可以存储业务逻辑。

JavaBean是描述Java的软件组件模型,有点类似于Microsoft的COM组件概念。在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速的生成新的应用程序。对于程序员来说,最好的一点就是JavaBean可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。JavaBean通过Java

拟机(Java Virtual Machine)可以得到正确的执行,运行JavaBean最小的需求是JDK1.1或者以上的版本。JavaBean传统的应用在于可视化的领域,如AWT下的应用。自从Jsp诞生后,JavaBean更多的应用在了非可视化领域,在服务器端应用方面表现出来了越来越强的生命力。

使用JavaBean的原因是程序中往往会有大量重复使用的段落,JavaBean就是为了能够重复使用而设计的程序段落,而且这些段落并不只服务于某一个程序,而且每个JavaBean都具有特定功能,当需要这个功能的时候就可以调用相应的JavaBean。从这个意义上来讲,JavaBean大大简化了程序的设计过程,也方便了其他程序的重复使用。

2.3 JDBC技术

JDBC API用于连接Java应用程序与各种关系数据库。这使得人们在建立客户/服务器应用程序时,通常把Java作为编程语言,把任何一种浏览器作为应用程序的友好界面,把Internet或Intranet作为网络主干,把有关的数据库作为数据库后端。以下是使用JDBC的优缺点。

优点如下:

1、JDBC API与ODBC十分相似,有利于用户理解。

2、JDBC使得编程人员从复杂的驱动器调用命令和函数中解脱出来,可以致力于应用程序中的关键地方。

3、JDBC支持不同的关系数据库,使得程序的可移植性大大加强。

4、用户可以使用JDBC-ODBC桥驱动器将JDBC函数调用转换为ODBC。

5、JDBC API是面向对象的,可以让用户把常用的方法封装为一个类,备后用。 缺点如下:

6、使用JDBC,访问数据记录的速度会受到一定程度的影响。

7、 JDBC结构中包含了不同厂家的产品,这就给更改数据源带来了很大的麻烦。

2.4 Javascript技术

为了使网页能够具有交互性,能够包含更多活跃的元素,就有必要在网页中嵌入其它的技术。如:Javascript、VBScript、Document Object Model(文件目标模块)、Layers和 Cascading Style Sheets(CSS),CSS和Lyaer(图层)技术已作过专题介绍,因此在这里主要讲Javascript。那么Javascript是什么呢?Javascript就是适应动态网页制作的需要而诞生的一种新的编程语言,如今越来越广泛地使用于Internet网页制作上。 Javascript是由 Netscape公司开发的一种脚本语言(scripting language),或者称为描述语言。在HTML基础上,使用Javascript可以开发交互式Web网页。Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包

含更多活跃的元素和更加精彩的内容。 运行用Javascript编写的程序需要能支持Javascript语言的浏览器。Netscape公司 Navigator 3.0以上版本的浏览器都能支持 Javascript程序,微软公司 Internet Explorer 3.0以上版本的浏览器基本上支持Javascript。微软公司还有自己开发的Javascript,称为JScript。 Javascript和Jscript基本上是相同的,只是在一些细节上有出入。 Javascript短小精悍, 又是在客户机上执行的,大大提高了网页的浏览速度和交互能力。 同时它又是专门为制作Web网页而量身定做的一种简单的编程语言。

虽然,在Dreamweaver的Behaviors可以为我们方便地使用Javascript程序而不用编写代码,但我们自己了解了Javascript的编程方法后,将能更加方便灵活地应用,也使Javascript的代码更简练。本专题通过对一系列典型程序的剖析,使你快速地掌握Javascript的编程技巧,设计出质量上乘的动态网页打下坚实的基础。

2.5 SQL Server2000数据库

SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。 SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出的最新版本。

3系统分析

3.1无纸化考试系统的需求

无纸化考试系统是在网上模拟考试的应用程序,它维护着一个数据库,存储着考生、题库、管理员等信息,主要包括教师出题、学生无纸化考试、自动判卷以及相关的系统维护功能。

3.2技术可行性

现代社会,由于网络技术的飞速发展,从而给我们的社会生活带来的极大的方便,而无纸化考试系统网站的建设,使得用户可以不出远门,在家庭或网吧,就可以完成一项考试,从而免去不必要的麻烦。本网站建设使用了JSP开发技术、SQL SERVER大型数据库、JAVA开发技术。从而实现了无纸化考试系统的实用性和可靠性。

本网站运用JSP技术和SQL SERVER数据库原理,我们开发的一个无纸化考试系统网站。该网站主要采用JSP、HTML、JavaScript、SQL SERVER2000等技术和工具,整体设计包括前台页面的设计与后台的开发,并将两者很好的结合在一起,实现了无纸化考试系统的可用性。

4 系统设计

4.1 无纸化考试系统的概要设计

4.1.1无纸化考试系统的综合系统框架图

图4.1 综合系统框架图

其功能模块大致分为:

(1)考生信息模块

考生信息是由管理员用户添加生成的,其中包括对考生信息的添加和删除功能。

(2)题目管理模块

主要包括对考试题目的添加和修改以及删除的功能。

(3)成绩查询功能

其功能包括对所有考生成绩的显示以及各个分数段考生人数的统计。

(4)管理员添加

其功能是添加和删除后台管理员。

(5)无纸化考试模块

考生考试主要经过三个步骤,首先考生登录,登录成功后进入考试,将所有问题答完后提交将成绩显示出来。

4.1.2本系统包含的两个子系统

(1)学生登录界面的子系统流程图,见图4.2:

图4.2 学生登录界面的系统流程图

(2)后台管理的子系统功能模块图,见图4.3:

图4.3后台管理的系统功能模块图

4.2系统结构设计

JSP服务器响应客户端的工作过程,如图4.4所示:

图4.4 本系统的概要逻辑表示图

本系统属于跨平台的多层Web应用程序。在开发过程中采用了Java的跨平台解决方案作为程序的整体开发框架。从整体上采用了B/S结构,分成三层,即:客户层、服务器层、数据库层。其中数据库层采用了中型SQL数据库服务器SQL2000,检索速

度快是它最大的优势,以完成对数据的存储和维护。在服务器层中采用了Java中的JavaBean技术作为中间层开发手段和JSP技术用以完成对Java服务器页面的调用。在客户层中采用了JavaScript等技术来实现复杂的动态界面展示。

4.3系统数据库设计

根据用户角色和系统实现的功能,本系统数据库设计了一个数据库Exam数据库。 采用的数据库是Microsoft SQL SERVER ,包含如下几个表文件:

admin表:用于管理员的管理。admin表的结构,如表4-1所示:

表4-1 admim的结构

字段名称 id name password

类型 bigint varchar varchar

可否为空

N N N

长度 8 50 50

缺省值

主键 是

说明 管理员id 管理员用户名 管理员密码

score表:用于实现对学生成绩的查询。score表的结构,如表4-2所示:

表4-2 score的结构

字段名称 id S_id

类型 bigint bigint

可否为空

N N

长度 8 8

缺省值

主键 是

说明 Id号 学生id

Student表:用于实现对学生信息的添加、修改和删除。Student表的结构,如表4-3所示:

表4-3 Student的结构

字段名称 id S_id S_name S_psw sex major grade

类型 bigint bigint varchar varchar char varchar varchar

可否为空

N N N N Y Y Y

长度 8 8 50 20 10 50 50

缺省值

主键 是

说明 Id号 学生id 学生姓名 学生密码 学生性别 学生系别 学生年级

Tiku表:用于实现对题库的添加、修改和删除操作。Tiku表的结构,如表4-4所示:

表4-4 Tiku的结构

字段名称 id question keya keyb keyc keyd

类型 bigint varchar varchar varchar varchar varchar

可否为空

N N N N N N

长度 8 300 200 200 200 200

缺省值

主键 是

说明 问题Id号 问题 选项A 选项B 选项C 选项D

4.4 系统web服务器执行流程

图4.5 本系统Web服务器详细执行流程

如上图4.5

所示,本次毕业设计是用典型的B/S(Browser/Server)结构完成的,它的整个框架分为三层:客户层、服务器层、数据层。在数据层采用了SQL Server 2000数据库,服务器层使用了Java的JavaBean和JSP技术,客户层使用了JavaScript相关技术。整个程序开始运行后,处于服务器层层Apache Tomcat应用服务器支持的Servlet会在得到前台页面请求时通过JDBC向后台数据库通过动态查询并索取数据,然后将结果由JSP页面通过HTTP协议向前台发送。通过浏览器根据接受到的JSP页面传递过来的结果将考试信息展示在前台。在JSP页面的制作上,为了增加特效,我又编写了几段JavaScript代码 。

5 无纸化考试系统功能实现

5.1数据连接

数据库作为无纸化考试系统的核心,在建立之后要和前台应用程序建立连接才能发挥它的作用。

5.1.1建立数据库连接

JSP程序通过JDBC来连接和操作数据库。JDBC是一组API,可以协助编程人员轻松地处理程序与数据库之间的连接和操作动作。

进行数据库连接时,需要使用java.sql套件中的类。在正式连接数据库时,首先必须使用java.sql.Class类中的forName方法加载驱动程序类,语法如下:

Class.forName(String 驱动程序类描述);

对于SQL SERVER数据库,使用如下语句加载驱动程序类:

Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”).newInstance(); 注释:(对于tomcat,就确保msbase.jar,mssqlserver.jar,msutil.jar三个文件拷贝到tomcat路径下的comm\lib目录下。)

加载驱动程序类后,就可以使用DriverManager类来打开数据库连接,其语法如下:

Connection 连接对象=DriverManager.getConnection(String 数据库名称,String 用户名称,String 用户密码);

对于SQL Server数据库,一个示例如下: String

url=”jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=exam”; username=”sa” password="sa"

Connection conn=DriverManager.getConnection(url,id,passworcd); 相应地,关闭数据库连接使用连接对象的close方法,其语法如下: 连接对象.close();

5.1.2安全策略

本系统用两个方法来加强用系统的安全性。

首先,使用Session限制未经登录的访问。当考生从登录界面登录,JSP程序进行用户名称和密码的检查后,如果数据符合则成功登录,将用户的ID值写到Session对象

中,对以后的页面都会先检查Session对象保存的数据,从而判断用户是否可浏览页面,以达到安全控制的目的。如果检查失败都会导向登录界面,要求用户重新登录。

第二,防止考生任意刷新页面,起到了防止作弊的作用。

5.2无纸化考试系统设计

我们的无纸化考试系统由一个公用模块和两个主要功能模块组成: 1、数据库连接公用模块

2、无纸化考试模块,考生登录系统后,进行无纸化考试,提交试卷后自动判卷显示成绩。

3、系统管理模块,包括考生信息、题目、分数查询和管理员添加。

5.2.1数据库连接公用模块

在本考试系统中,我们把数据库参数写入一个名为jdbcsql.properies的配置文件中,这样在程序运行时如果环境变化,可以方便地修改数据库配置。

jdbcsql.properies内容如下:

driver=com.microsoft.jdbc.sqlserver.SQLServerDriver //驱动程序

url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=exam //连接字符串 username=sa //用户名 password= //密码

javaBean是一种基于java的软件组件。JSP对于在Web应用中集成JavaBean组件提供了完善的支持。这种支持不仅能缩短开发时间(可以直接利用通过测试可信任的已有组件,避免了重复开发),也为JSP应用带来了更多的可伸缩性。JavaBean组件可以用来执行复杂的计算任务,在本例中,我们通过使用缩写JavaBean读取配置文件(jdbcsql.properies)来连接数据库,文件名为DBConnectionBean.java的代码如所示:

//DBConnectionBean.java

//用在jsp网页里的数据库桥接bean package examinline; import java.util.*; import java.sql.*; import java.io.*;

public class DBConnectionBean{ //成员变量初始化 //定义变量并初始化

Connection dbcon=null;//数据库连接 Statement stmt=null; //JDBC声明

ResultSet result=null;//记录集 String driver="";//数据库驱动程序 String url="";//连接字符串 String user="";//用户名 String password="";//密码 public DBConnectionBean(){ try{//配置输入流读取配置文件

InputStream fis =getClass().getResourceAsStream("jdbcsql.properties"); Properties ps=new Properties(); ps.load(fis); //读取配置文件参数

driver=ps.getProperty("driver"); url=ps.getProperty("url"); user=ps.getProperty("username"); password=ps.getProperty("password");

Class.forName(this.driver);//注册数据库驱动程序 }

catch(Exception e){

System.out.println(e);//为方便调试程序,出错打印e就知道在什么地方出错了 } }

//设置驱动程序

public void setdrivername() { try{

Class.forName(this.driver);//注册数据库驱动程序

System.out.println("加载数据驱动成功!");//输出结果,方便调试 }catch(ClassNotFoundException e){

System.out.println("jdbc driver error");//抛出异常,加载数据驱动失败 } }

//打开连接

public Connection getopenConnection(){ try{//建立数据库连接

this.dbcon=DriverManager.getConnection(this.url,this.user,this.password); System.out.println("桥接数据库成功!"); }catch(SQLException e2){ System.out.println(e2);//异常处理 }

return dbcon; }

//executeQuery方法用于进行记录的查询操作,入口参数为sql语句,返回ResultSet对象

public ResultSet executeQuery(String query)throws SQLException{ this.stmt=dbcon.createStatement();//创建一个JDBC声明

this.result=stmt.executeQuery(query);//获得SQL指令执行返回结果 return result; }

//executeUpdate方法用于进行add或者update记录的操作,入口参数为SQL语句,成功返回true,否则为false

public void executeUpdate(String query)throws SQLException{ this.stmt=dbcon.createStatement();//创建一个JDBC声明 stmt.executeUpdate(query);//执行指令

if(stmt!=null) stmt.close();//操作成功时关闭声明 }

//根据列号读取数据,入口参数为int型数据表列号,返回string类型的数据 public String getData(int index) throws SQLException{ return result.getString(index); }

//根据列号读取数据,入口参数为int型数据表列号,返回int类型的数据 public int getIntData(int index) throws SQLException{ return result.getInt(index); }

//根据列号读取数据,入口参数为int型数据表列号,返回float类型的数据 public float getFltData(int index) throws SQLException{ return result.getFloat(index); }

//判断数据库中的记录是否已到记录尾,返回值为boolean值

//若到记录尾,返回值为false,否则为true public boolean next() throws SQLException{ return result.next(); }

//清空SQL指令执行结果

public void resetResult() throws SQLException{ this.result=null; }

//关闭数据库连接,关闭JDBC声明,清空结果 public void close() throws SQLException{ if(dbcon!=null) dbcon.close(); if(stmt!=null) stmt.close(); if(result!=null) result.close(); }

//系统公共函数,实现字符的替换 public void finalize() throws Throwable{ this.close(); }

public String replaceString(String str){//转换入口参数String类型的str为数组 char tempArray[]=str.toCharArray(); int iCurr[]=new int[10]; int j=0;

for(int i=0;i!=tempArray.length;i++) {

int temp=(int)tempArray[i]; if(temp==92){ iCurr[j]=i; j++; } }

final int temp2=j+1;

String strArray[]=new String[temp2]; strArray[0]=str.substring(0,iCurr[0]); strArray[temp2-1]=str.substring(iCurr[j-1]+1);

for(int m=1;m!=strArray.length-1;m++){ strArray[m]=str.substring(iCurr[m-1]+1,iCurr[m]); } str="";

for(int k=0;k!=strArray.length-1;k++){ str=str+strArray[k]+"%5C"; }

str=str+strArray[temp2-1]; return str; } }

5.2.2首页index.jsp

考试系统首界页图5.1所示

:

图5.1考试系统首界页

5.2.3无纸化考试模块

该模块实现用户登录、信息确认、考试、显示成绩等功能。该部分文件包括:

Login.jsp:考试登录页面。 Reading.jsp:考生信息显示。 Begin.jsp:开始考试。 Result.jsp:显示考试成绩。

考生登录页面是考生登录系统第一个页面,是进入考试状态的接口。在考生登录页面

(login.jsp)中,提供给考生进入考试时所必须的ID和密码,“考生登录”处输入考生ID和密码,然后按“登录”按钮转到reading.jsp页面对ID和密码进行验证。

Login.jsp代码执行,其显示界面图5.2所示

:

图5.2考生登录界面

在登录页面中,我们用JavaScript创建一个数据检查函数numericCineck()来检查考生的

ID。考生ID只能为数字,这样可以把一部分检测工作放在客户端来执行,降低服务器的压力。下面给出这段javaScript的代码:

相应地在login.jsp代码中的ID文本框中做如下更改:

其中onblur=numericCheck()的作用为:当输入完ID并且ID文本框失去焦点时调用numericCheck()函数进行验证,以检验考生输入的ID是否符合要求。在本程序中判断输入文本框的是否全为数字。

登录页面login.jsp程序不包含和数据库的交互操作,因为主要代码为html和javascript,

(2)对用户登录信息进行验证的页面在reading.jsp中,如果用户存在密码正确则显示该考生资料,然后单击按钮进入begin.jsp界面。

Reading.jsp代码如下:

String userNow = request.getParameter("userid");//取得用户登录ID

String password=request.getParameter("password");//取得用户登录密码

System.out.print(password);

%>

//设置数据库驱动程序

//通过传来的ID提取学生资料,取得数据库连接

Connection conn = linejdbc.getopenConnection();

PreparedStatement s = conn.prepareStatement

("select * from student where S_id=? and S_psw=?");//为PreparedStatement参数赋值

s.setString(1,userNow);

s.setString(2,password);

ResultSet result = s.executeQuery();//执行PreparedStatement并取得结果

if (result.next())

{//若记录非空,读取用户资料

String S_id = result.getString("S_id");

String S_name = result.getString("S_name");

String Sex=result.getString("sex");

String Major=result.getString("major");

String Grade=result.getString("grade");

%>

登陆成功!

您的相关信息:

学号:

姓名:

性别:

年级:

专业:

"> ">

s = conn.prepareStatement("select * from score where s_id=?");

s.setString(1,userNow);

ResultSet rs=s.executeQuery();

if(rs.next())

{

%>

你已经参加过考试了,你的上次考试成绩为:

}

%>

警告:

答题过程不能中断!如果您试图进行作弊或者超过答题时间,

您将被强令在24小时后进行补考,补考时间到期前,您不能参加考试!

如果您准备完毕,点按钮开始答题!

}

Else //若用户名不存在或者用户密码错误,给出登录错误信息返回重新登录 {

out.print(" 用户ID不存在或密码错误!返回");

}

%>

考生成功登录界面如图5.3所示:

图5.3考生成功登录界面

(3)考试页面begin.jsp实现随机出题、防止刷新页面(通过javaScript来实现)、超时处理(通过调用Servlet来实现)和考试时间显示(通过javaScript来实现)等功能。

在考试开始页面中将会随机抽取50道题供考生做答,并且在考生进入答题时即生成。为了防止考生反复刷新页面,进行重新选题,利用客户端javaScript限制考生刷新。

采用cookie存储用户登录时间和url,比较url如果发现相同值则认为用户登录后刷新了页面,抛出错误。其代码实现如下:

用户登录系统答题时间超过预定时间后会显示答题超时,我们采用Servlet处理。代码如下:

//CTimeOut.java

//验证密码,验证是否以参加考试,传送参数

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.util.*;

public class CTimeOut extends HttpServlet

{

//定义doPost方法用来接受数据

public

{

//定义输出流

req.setCharacterEncoding("gb2312");//设置输入编码格式

res.setContentType("text/html;charset=gb2312");//设置输出编码格式

PrintWriter out = res.getWriter();//定义输出流

String chaoshiID = req.getParameter("chaoshiID");//取得url参数

try

{//输出跳转页

void doGet(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException

out.println("");

out.println("");

out.println(""); out.println("无标题文档");

out.println

("");

out.println("");

out.println("

return document.MM_returnValue>");

out.println("");

out.println("");

out.close();

}

catch(Exception e) //异常处理

{System.out.println(e.toString());

} } }

在考生答题过程中,要实时显示考生答题已经消耗时间,并在即将交卷时给出提示.

Begin.jsp页面是考生进入答题系统的主界面,给考生提供了一个网络答题交流平台,begin.jsp将从tiku表中抽取50道题,在规定时间范围内回答完毕并提交给系统进行评分。此程序也是整个系统的一个难点,其中随机数的产生,相同随机数的处理方法。

Begin.jsp执行界面如图5.4所示:

图5.4开始答题界面

其产生随机数代码如下:

//产生50个随即数

int randnum[]=new int[50];

boolean isexsit=false;

for(num=0;num

{

randnum[num]=0;

}

Random rand = new Random();

while (true) //判断随机数是否重复并进行处理

{

isexsit=false;

i = rand.nextInt(maxid);

for(num=0;num

{

if (randnum[num]==i)

{

isexsit=true;

break;

}

}

(4)成绩显示页面result.jsp主要为根据考生的答题结果,计算考生成绩并显示。 执行代码显示界面如图5.5所示:

图5.5考生成绩显示界面

计算答对题的数量,并计算分数,代码如下:

int i;

int score=0;//总分

String selectvalue;

String id;

for (i=1;i

{

selectvalue=request.getParameter("select"+i);

id=request.getParameter("h"+i);

ps=conn.prepareStatement("select * from tiku where id=? and answer=?");

ps.setInt(1,Integer.parseInt(id));

ps.setString(2,selectvalue);

rs=ps.executeQuery();//判断用户做出的答案是否正确,如果正确score+1

if (rs.next())

{

score=score+1;

}

System.out.println(id+":"+selectvalue+":"+score);

}

score=score*2; //每题两分,按百分制计算。

到这里,前台考生登录、考试模块均已经设计完毕。这些是最终要展现给用户的界面信息。

5.2.4系统管理模块

该模块主要实现如下功能:管理员登录、考生信息管理、题目管理、管理员添加等功能。

主要包含以下文件:

Login.jsp:管理员登录页面。

Main.jsp:主窗体(后台管理的主要框架)。

Zuo.jsp:主窗体中左边的导航页面。

You.jsp:主窗体中右边的显示页面。

Addobject.jsp:对考生信息的管理。

Addadmin.jsp对管理员信息的管理。

Addq.jsp:对考题的管理。

Search.jsp:成绩统计。

(1)管理员登录

Login.jsp管理员登录页面,它是后台管理的首页面,根据输入的用户名和密码验证该管理员是否存在及密码是否正确。当输入的用户名和密码正确时,自动跳转到main.jsp页面,从而最终选择对考生信息、管理员信息、考题和成绩的管理。管理员登录界面,如图5.6所示

:

图5.6管理员登录界面

(2)main.jsp主窗体

main.jsp起到一个导航的作用。采用框架结构,通过它管理员可以进行对考生信息、管理员信息、考题和成绩的管理操作并可以实现退出管理选项,最终实现退出管理系统。主窗架界面,如图5.7所示

:

图5.7主窗架界面

(3)addobject.jsp考生管理

管理员选择学生管理,可以实现对学生信息的管理,如考生信息的删除和添加操作,其中对考生的添加包括添加考生学号、密码、姓名、性别、专业和年级等各项,其中学号、密码和姓名是必选项。考生管理界面,图5.8所示:

图5.8考生管理界面

(4)addp.jsp考题管理

实现对考题的维护操作,用于实现对考题的添加和删除操作,其中对考题的添加包括对考试题目和四个选项的添加。考题管理界面,如图5.9所示

:

图5.9考题管理界面

(5)addadmin.jsp管理员的管理

该程序的功能是对系统管理员进行维护,包括添加和删除功能。管理员管理界面,如图5.10所示

:

图5.10管理员管理界面

(6)search.jsp考试成绩显示

该程序的主要功能是对成绩进行统计,其中包括各个分数段的人数及平均分、最高分和最低分。以及可以看到各个考生的考试成绩。成绩显示界面,如图5.11所示:

图5.11 成绩显示界面

代码实现如下:

Connection conn = linejdbc.getopenConnection();//打开连接数据库

PreparedStatement ps=null;

String sqlstr;

ResultSet result;

sqlstr="SELECT COUNT(*) FROM score "; //查询数据库中已参加考试的考生数量

ps=conn.prepareStatement(sqlstr);

result=ps.executeQuery();

result.next();

int total=result.getInt(1);//取得考生的数量值

sqlstr="SELECT count(*) from score where score>=80";//取得80分以上的考生数//量

ps=conn.prepareStatement(sqlstr);

result=ps.executeQuery();

result.next();

%>

//显示统计结果,以10分为一个分数段的划分。

参加考试总人数:人

80分以上:人

sqlstr="SELECT count(*) from score where score>=70 and score

ps=conn.prepareStatement(sqlstr);

result=ps.executeQuery();

result.next();

%>

70-80分:人

sqlstr="SELECT count(*) from score where score>=60 and score

ps=conn.prepareStatement(sqlstr);

result=ps.executeQuery();

result.next();

%>

60-70分:人

sqlstr="SELECT count(*) from score where score

ps=conn.prepareStatement(sqlstr);

result=ps.executeQuery();

result.next();

%>

60分以下:人

sqlstr="SELECT max(score) as maxscore,min(score) as minscore,sum(score) as sumscore from score "; //查询最高分、最低分和总分

ps=conn.prepareStatement(sqlstr);

result=ps.executeQuery();

result.next();

%>

最高分:

最低分:

平均分:

//显示平均分

}

%>

总结

在本次的毕业设计过程中使用了JSP开发技术、SQL SERVER大型数据库、JAVA、JavaBean以及JavaScript开发技术。从而实现了无纸化考试系统的实用性和可靠性,通过以上技术的使用使我对实用性网站开发技术有了更深的掌握。

我们所设计的无纸化考试系统主要包括两个子系统:考生考试子系统和管理员管理子系统。其中考生考试子系统包括以下考试流程顺序:考生登录、准备考试、答题并提交、查看考试结果;管理员管理子系统包括以下几个分子系统:“学生管理”、“题目管理”、“成绩查询”以及“管理员添加”子系统,通过管理员的登录可以实现对以上分子系统的管理。

无纸化考试系统可以动态地管理各种考试信息,只要准备好足够大的题库,从该题库中抽取一定数量的考题生成考试试卷,从而有效地避免了考试作弊,相互抄袭的弊端;另一方面,考试时间灵活, 可以在规定的时间段内的任意时间参加考试;另外计算机化的考试的最大特点是阅卷快,系统可以在考试结束时当场给考生成绩,计算机阅卷给予考生的最大的公平和公正。

本设计在各位老师和同学的帮助下得以顺利完成,但由于时间紧迫和知识水平有限,有些功能未能得到预期的效果,例如:时间原因未实现的功能,在考生登录界面应添加一些公告和新闻,在本设计中由于时间紧迫未能得以实现.由于技术原因未实现的功能,如:在本次老师设计中,由于考题数据库设计单一,只进行了选择题的设计而未进行判断、填空和简答题等的设计。本设计可能还存在众多的不足希望老师给予指正,以便在以后的工作和生活中不断得到提高。

参考文献

[1] 严蔚敏、吴伟民.数据结构[M].北京:清华大学出版社,2003

[2] 方盈.SQL server 2000从入门到精通[M].北京:中国铁道出版社,2007

[3] 龚波.SQL Server 2000教程[M] 北京希望电子出版社 2008年

[4] 孙印杰、吕书琴.ASP.NET+SQL server动态网站设计实例精解[M].北京:电子工业出版社,2005

[5] 于海涛主讲.基于.net的web程序设计视频教程[M].北京:北大青鸟教育学院

[6] 李明刚、肖建等.JSP.net高级编程[M].北京:清华大学出版社,2009

[7] 赵增敏.JSP动态网站开发[M].水利水电出版社.2008

[8] 邓春江、王琳.asp.net服务器控件与组件开发[M].北京:机械工业出版社,2005

[9] 刘晓华. 精通.NET核心技术—原理与构架[M].北京:电子工业出版社,2009

[10] Robert lair.asp.net开发人员手册[M].北京:电子工业出版社,2002

[11] Cay S.Horstmann. Core Java 2, Volume I--Fundamentals [M]. 北京:机械工业出版社.2009

[12] 李兴华. Java开发实战经典[M]. 北京:清华大学出版社.2009

[13] Horstmann Gay S. JAVA核心技术[M]. 北京:机械工业出版社.2008

[14] 李宁. Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax [M].北京:清华大学出版社,2009

致 谢

在本次的毕业设计中,使得我对自己所学的专业知识掌握的更加牢固,并且在本次的毕业设计过程中使得我养成了独立思考、善于运用创造性思维将自己的思想运用到毕业设计过程中,充分发挥自己的创造力。在养成独立思维习惯的同时,我也得到了各老师和同学的帮助,尤其是我的毕业设计指导老师周金玲,在整个毕业设计的选题、设计和论文阶段对我的工作其了极为重要的指导作用,并且给予了我极大的关怀和鼓励,并给予我宝贵的经验和精心的指导,使本次设计得以顺利过完成。在此表此深深谢意!

几年的求学之路即将结束,在告别母校的时候,我们才深深对母校的丝丝眷恋,在这几年的大学生活中,不仅使我学到了更深的专业知识,并且锻炼我的独立思维能力、超强的创造能力,以及自尊、自强、自信的精神,使我养成团结友爱的团队精神。这必将使我在以后的社会生活中受益匪浅,如果说社会是我们拼搏的舞台,那么母校是培育我们的根基,在此希望我的母校——潍坊学院在以后的发展过程中,不断超载、越来越好!在此向我母校及全体师生表示深深的敬意!

无纸化考试系统

摘要:计算机网络技术的飞速发展,特别是计算机硬件技术的发展已经达到了相当高的水平。但是,在我国远程教育软件的开发目前还处于起步阶段,随着这项技术的不断深入发展,就要求有更好、更完善的软件系统应用到远程教育当中去,这就给软件设计人员提出了更高的设计要求。

我们本次设计的无纸化考试系统网站的建设,其于JSP和javaBean技术和SQL Server数据库的考试系统开发,力求给广大考生提供方便,界面友好,易操作,从而使考生顺利完成这项考试,从而免去不必要的麻烦,本考试系统可以自动评分从而为教师省去了不少时间,同时也可以更好的促进考试成绩的公平公正。为网上无纸化考试系统在我国顺利普及打下良好的基础,从而使得我国的网络信息迅速普及,实现高速信息化战略顺利进行!

关键词:考试系统 网站 JSP JavaBean SQL Server数据

Paperless examination system

Abstract : With the rapid developed of computer network technology, the technology has reached a very high level. especially computer hardware technology. However, in our Distance education software development is still in its infancy, with the deepening of the technology development requires a better, more comprehensive software system, which get applied to the distance education, which made for software designers higher design requirements.

We designed this paperless examination system of Web sites, JSP and javaBean its SQL Server database technology and test system development, and strive to facilitate the majority of candidates friendly interface, easy operation, which enable candidates to successfully complete this exam to avoid unnecessary trouble, the examination system can automatically score and thus save a lot of time for teachers, but also can better promote a fair and just examination results. Paperless examination system for online popularity in China and lay a good foundation for success, allowing rapid spread of China's network information, information technology strategy to achieve high-speed smooth!

Key words: examination system network JSP JavaBean SQL Server Database

目 录

1 引言„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1 2 主要技术介绍„„„„„„„„„„„„„„„„„„„„„„„„„„„2

2.1 JSP技术„„„„„„„„„„„„„„„„„„„„„„„„„„„2

2.2 Java Bean技术„„„„„„„„„„„„„„„„„„„„„„„„3

2.3 JDBC技术„„„„„„„„„„„„„„„„„„„„„„„„„„ 4

2.4 Javascript技术„„„„„„„„„„„„„„„„„„„„„„„ 5

2.5 SQL Server2000数据库„„„„„„„„„„„„„„„„„„„„ 5 3系统分析„„„„„„„„„„„„„„„„„„„„„„„„„„„„„6

3.1无纸化考试系统的需求 „„„„„„„„„„„„„„„„„„„„6

3.2技术可行性 „„„„„„„„„„„„„„„„„„„„„„„„„6 4 系统设计„„„„„„„„„„„„„„„„„„„„„„„„„„„„7

4.1 无纸化考试系统的概要设计„„„„„„„„„„„„„„„„„„„7

4.1.1无纸化考试系统的综合系统框架图„„„„„„„„„„„„„7

4.1.2本系统包含的两个子系统 „„„„„„„„„„„„„„„„„„8

4.2系统结构设计„„„„„„„„„„„„„„„„„„„„„„„„„8

4.3系统数据库设计 „„„„„„„„„„„„„„„„„„„„„„„9

4.4 系统web服务器执行流程„„„„„„„„„„„„„„„„„„„ 10 5 无纸化考试系统功能实现„„„„„„„„„„„„„„„„„„„„„ 11

5.1数据连接„„„„„„„„„„„„„„„„„„„„„„„„„„„11

5.2无纸化考试系统设计„„„„„„„„„„„„„„„„„„„„„„12

5.2.1数据库连接公用模块„„„„„„„„„„„„„„„„„„„„ 12

5.2.2首页index.jsp „„„„„„„„„„„„„„„„„„„„„ 16

5.2.3无纸化考试模块„„„„„„„„„„„„„„„„„„„„„„ 17

5.2.4系统管理模块„„„„„„„„„„„„„„„„„„„„„„„ 28 总结 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 35 参考文献„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„36 致 谢 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 37

1 引言

计算机网络技术的飞速发展以及计算机技术的发展及计算机的日益普及,现在很多国内外的大学和社会其他部门都已经开设了远程教育,通过计算机网络实现异地教育和培训,从而为无纸化考试系统发展提供了坚实的基础。现在,计算机硬件技术的发展已经达到了相当高的水平。但是,在我国远程教育软件的开发目前还处于起步阶段,随着这项技术的不断深入发展,就要求有更好、更完善的软件系统应用到远程教育当中去,这就给软件设计人员提出了更高的设计要求。

在二十一世纪的新时代,随着计算机技术的发展及计算机的日益普及,基于在线考试与无纸化办公一样已成为大势所趋。无纸化考试系统也越来越成为学校的好帮手,它的优势不但体现在人力上也体现在物力上,无纸化考试系统的采用自动评阅、计分、成绩存档功能将有效地避免资源的浪费,有利于环保,减少人员,提高效率。

相比传统的考试方式,无纸化考试系统的主要好处是一方面可以动态地管理各种考试信息,只要准备好足够大的题库,从该题库中抽取一定数量的考题生成考试试卷,从而有效地避免了考试作弊,相互抄袭的避端;另一方面,考试时间灵活, 可以在规定的时间段内的任意时间参加考试;另外计算机化的考试的最大特点是阅卷快,系统可以在考试结束时当场给考生成绩,计算机阅卷给了考生最大的公平感。

网络考试系统极大地提高了教学的灵活性,现在在许多领域已经有了广泛的应用。最有影响的案例就是ETS(美国教育考试中心)举办的GRE(美国研究生入学考试)的计算机化考试,它使考试由原来的每年只能有两次参加考试的机会变成了每个工作日都可以参加的考试。

本设计讲述的是一个基于SQL Server 2000+JSP+javabean的无纸化考试系统的综合实现,该系统基本上可以满足学校及现代信息化企业的内部考试要求,可以实现学校低成本投入,高效率办公的宗旨。例如:一个学校如果使用了本系统,无需老师阅卷、评卷,而直接由系统自动判卷,使老师从传统的繁琐的阅卷过程中解脱出来,为广大老师省去不少的时间,从而有更大的精力致力于日常的教学过程中,极大地提高了办公效率。网上无纸化考试系统已成为时代发展的趋势,本课题的设计正是顺应时代潮流,为众多师生考试中提供便捷、公平,当今时代是一个追求公平、公正的时代,是一个效率第一的时代,传统的考试系统在未来的发展中逐渐退出历史舞台,网上无纸化考试系统必将在未来的考试过程发挥更重要的作用。众多优势为网上无纸化考试系统在我国顺利普及打下良好的基础,从而使得我国的网络信息迅速普及,使得中国的高速信息化战略顺利进行!

2 主要技术介绍

2.1 JSP技术

JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,其网址为http://www.javasoft.com/products/jsp。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。

JSP(JavaServer Pages)是一种基于Java的脚本技术。在JSP 的众多优点之中,其中之一是它能将 HTML 编码从 Web 页面的业务逻辑中有效地分离出来。用 JSP 访问可重用的组件,如 Servlet、JavaBean 和基于 Java 的 Web 应用程序。JSP 还支持在 Web 页面中直接嵌入 Java 代码。可用两种方法访问 JSP 文件:浏览器发送 JSP 文件请求、发送至 Servlet 的请求。

1、 JSP 文件访问 Bean 或其它能将生成的动态内容发送到浏览器的组件。图2-1说明了该 JSP 访问模型。当 Web 服务器接收到一个 JSP 文件请求时,服务器将请求发送至 WebSphere应用服务器。WebSphere应用服务器 对 JSP 文件进行语法分析并生成 Java 源文件(被编译和执行为 Servlet)。Java 源文件的生成和编译仅在初次调用 Servlet 时发生,除非已经更新了原始的 JSP 文件。在这种情况下,WebSphere应用服务器 将检测所做的更新,并在执行它之前重新生成和编译 Servlet。浏览器发送 JSP 文件请求如图2.1所示:

图2.1 浏览器发送 JSP 文件请求

2 、发送至 Servlet 的请求生成动态内容,并调用 JSP 文件将内容发送到浏览器。图2-2说明了该访问模型。该访问模型使得将内容生成从内容显示中分离出来更为方便。WebSphere应用服务器支持 HttpServiceRequest 对象和 HttpServiceResponse 对象的一套新方法。这些方法允许调用的 Servlet 将一个对象放入(通常是一个

Bean)请求对象中,并将该请求传递到另一个页面(通常是一个 JSP 文件)以供显示。调用的页面从请求对象中检索 Bean, 并用 JSP 来生成客户机端的 HTML。发送至 Servlet 的请求如图2.2所示:

图2.2发送至 Servlet 的请求

2.2 Java Bean技术

简单地说,JavaBean是用Java语言描述的软件组件模型,其实际上是一个类。这些类遵循一个接口格式,以便于使函数命名、底层行为以及继承或实现的行为,可以把类看作标准的JavaBean组件进行构造和应用。JavaBean一般分为可视化组件和非可视化组件两种。可视化组件可以是简单的GUI元素,如按钮或文本框,也可以是复杂的,如报表组件;非可视化组件没有GUI表现形式,用于封装业务逻辑、数据库操作等。其最大的优点在于可以实现代码的可重用性。JavaBean又同时具有以下特性。

1 易于维护、使用、编写。

2 可实现代码的重用性。

3 可移植性强,但仅限于Java工作平台。

4 便于传输,不限于本地还是网络。

5 可以以其他部件的模式进行工作。

对于有过其他语言编程经验的读者,可以将其看作类似微软的ActiveX的编程组件。但是区别在于JavaBean是跨平台的,而ActiveX组件则仅局限于Windows系统。总之,JavaBean比较适合于那些需要跨平台的、并具有可视化操作和定制特性的软件组件。avaBean组件与EJB(Enterprise JavaBean,企业级JavaBean)组件完全不同。EJB 是J2EE的核心,是一个用来创建分布式应用、服务器端以及基于Java应用的功能强大的组件模型。JavaBean组件主要用于存储状态信息,而EJB组件可以存储业务逻辑。

JavaBean是描述Java的软件组件模型,有点类似于Microsoft的COM组件概念。在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速的生成新的应用程序。对于程序员来说,最好的一点就是JavaBean可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。JavaBean通过Java

拟机(Java Virtual Machine)可以得到正确的执行,运行JavaBean最小的需求是JDK1.1或者以上的版本。JavaBean传统的应用在于可视化的领域,如AWT下的应用。自从Jsp诞生后,JavaBean更多的应用在了非可视化领域,在服务器端应用方面表现出来了越来越强的生命力。

使用JavaBean的原因是程序中往往会有大量重复使用的段落,JavaBean就是为了能够重复使用而设计的程序段落,而且这些段落并不只服务于某一个程序,而且每个JavaBean都具有特定功能,当需要这个功能的时候就可以调用相应的JavaBean。从这个意义上来讲,JavaBean大大简化了程序的设计过程,也方便了其他程序的重复使用。

2.3 JDBC技术

JDBC API用于连接Java应用程序与各种关系数据库。这使得人们在建立客户/服务器应用程序时,通常把Java作为编程语言,把任何一种浏览器作为应用程序的友好界面,把Internet或Intranet作为网络主干,把有关的数据库作为数据库后端。以下是使用JDBC的优缺点。

优点如下:

1、JDBC API与ODBC十分相似,有利于用户理解。

2、JDBC使得编程人员从复杂的驱动器调用命令和函数中解脱出来,可以致力于应用程序中的关键地方。

3、JDBC支持不同的关系数据库,使得程序的可移植性大大加强。

4、用户可以使用JDBC-ODBC桥驱动器将JDBC函数调用转换为ODBC。

5、JDBC API是面向对象的,可以让用户把常用的方法封装为一个类,备后用。 缺点如下:

6、使用JDBC,访问数据记录的速度会受到一定程度的影响。

7、 JDBC结构中包含了不同厂家的产品,这就给更改数据源带来了很大的麻烦。

2.4 Javascript技术

为了使网页能够具有交互性,能够包含更多活跃的元素,就有必要在网页中嵌入其它的技术。如:Javascript、VBScript、Document Object Model(文件目标模块)、Layers和 Cascading Style Sheets(CSS),CSS和Lyaer(图层)技术已作过专题介绍,因此在这里主要讲Javascript。那么Javascript是什么呢?Javascript就是适应动态网页制作的需要而诞生的一种新的编程语言,如今越来越广泛地使用于Internet网页制作上。 Javascript是由 Netscape公司开发的一种脚本语言(scripting language),或者称为描述语言。在HTML基础上,使用Javascript可以开发交互式Web网页。Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包

含更多活跃的元素和更加精彩的内容。 运行用Javascript编写的程序需要能支持Javascript语言的浏览器。Netscape公司 Navigator 3.0以上版本的浏览器都能支持 Javascript程序,微软公司 Internet Explorer 3.0以上版本的浏览器基本上支持Javascript。微软公司还有自己开发的Javascript,称为JScript。 Javascript和Jscript基本上是相同的,只是在一些细节上有出入。 Javascript短小精悍, 又是在客户机上执行的,大大提高了网页的浏览速度和交互能力。 同时它又是专门为制作Web网页而量身定做的一种简单的编程语言。

虽然,在Dreamweaver的Behaviors可以为我们方便地使用Javascript程序而不用编写代码,但我们自己了解了Javascript的编程方法后,将能更加方便灵活地应用,也使Javascript的代码更简练。本专题通过对一系列典型程序的剖析,使你快速地掌握Javascript的编程技巧,设计出质量上乘的动态网页打下坚实的基础。

2.5 SQL Server2000数据库

SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。 SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出的最新版本。

3系统分析

3.1无纸化考试系统的需求

无纸化考试系统是在网上模拟考试的应用程序,它维护着一个数据库,存储着考生、题库、管理员等信息,主要包括教师出题、学生无纸化考试、自动判卷以及相关的系统维护功能。

3.2技术可行性

现代社会,由于网络技术的飞速发展,从而给我们的社会生活带来的极大的方便,而无纸化考试系统网站的建设,使得用户可以不出远门,在家庭或网吧,就可以完成一项考试,从而免去不必要的麻烦。本网站建设使用了JSP开发技术、SQL SERVER大型数据库、JAVA开发技术。从而实现了无纸化考试系统的实用性和可靠性。

本网站运用JSP技术和SQL SERVER数据库原理,我们开发的一个无纸化考试系统网站。该网站主要采用JSP、HTML、JavaScript、SQL SERVER2000等技术和工具,整体设计包括前台页面的设计与后台的开发,并将两者很好的结合在一起,实现了无纸化考试系统的可用性。

4 系统设计

4.1 无纸化考试系统的概要设计

4.1.1无纸化考试系统的综合系统框架图

图4.1 综合系统框架图

其功能模块大致分为:

(1)考生信息模块

考生信息是由管理员用户添加生成的,其中包括对考生信息的添加和删除功能。

(2)题目管理模块

主要包括对考试题目的添加和修改以及删除的功能。

(3)成绩查询功能

其功能包括对所有考生成绩的显示以及各个分数段考生人数的统计。

(4)管理员添加

其功能是添加和删除后台管理员。

(5)无纸化考试模块

考生考试主要经过三个步骤,首先考生登录,登录成功后进入考试,将所有问题答完后提交将成绩显示出来。

4.1.2本系统包含的两个子系统

(1)学生登录界面的子系统流程图,见图4.2:

图4.2 学生登录界面的系统流程图

(2)后台管理的子系统功能模块图,见图4.3:

图4.3后台管理的系统功能模块图

4.2系统结构设计

JSP服务器响应客户端的工作过程,如图4.4所示:

图4.4 本系统的概要逻辑表示图

本系统属于跨平台的多层Web应用程序。在开发过程中采用了Java的跨平台解决方案作为程序的整体开发框架。从整体上采用了B/S结构,分成三层,即:客户层、服务器层、数据库层。其中数据库层采用了中型SQL数据库服务器SQL2000,检索速

度快是它最大的优势,以完成对数据的存储和维护。在服务器层中采用了Java中的JavaBean技术作为中间层开发手段和JSP技术用以完成对Java服务器页面的调用。在客户层中采用了JavaScript等技术来实现复杂的动态界面展示。

4.3系统数据库设计

根据用户角色和系统实现的功能,本系统数据库设计了一个数据库Exam数据库。 采用的数据库是Microsoft SQL SERVER ,包含如下几个表文件:

admin表:用于管理员的管理。admin表的结构,如表4-1所示:

表4-1 admim的结构

字段名称 id name password

类型 bigint varchar varchar

可否为空

N N N

长度 8 50 50

缺省值

主键 是

说明 管理员id 管理员用户名 管理员密码

score表:用于实现对学生成绩的查询。score表的结构,如表4-2所示:

表4-2 score的结构

字段名称 id S_id

类型 bigint bigint

可否为空

N N

长度 8 8

缺省值

主键 是

说明 Id号 学生id

Student表:用于实现对学生信息的添加、修改和删除。Student表的结构,如表4-3所示:

表4-3 Student的结构

字段名称 id S_id S_name S_psw sex major grade

类型 bigint bigint varchar varchar char varchar varchar

可否为空

N N N N Y Y Y

长度 8 8 50 20 10 50 50

缺省值

主键 是

说明 Id号 学生id 学生姓名 学生密码 学生性别 学生系别 学生年级

Tiku表:用于实现对题库的添加、修改和删除操作。Tiku表的结构,如表4-4所示:

表4-4 Tiku的结构

字段名称 id question keya keyb keyc keyd

类型 bigint varchar varchar varchar varchar varchar

可否为空

N N N N N N

长度 8 300 200 200 200 200

缺省值

主键 是

说明 问题Id号 问题 选项A 选项B 选项C 选项D

4.4 系统web服务器执行流程

图4.5 本系统Web服务器详细执行流程

如上图4.5

所示,本次毕业设计是用典型的B/S(Browser/Server)结构完成的,它的整个框架分为三层:客户层、服务器层、数据层。在数据层采用了SQL Server 2000数据库,服务器层使用了Java的JavaBean和JSP技术,客户层使用了JavaScript相关技术。整个程序开始运行后,处于服务器层层Apache Tomcat应用服务器支持的Servlet会在得到前台页面请求时通过JDBC向后台数据库通过动态查询并索取数据,然后将结果由JSP页面通过HTTP协议向前台发送。通过浏览器根据接受到的JSP页面传递过来的结果将考试信息展示在前台。在JSP页面的制作上,为了增加特效,我又编写了几段JavaScript代码 。

5 无纸化考试系统功能实现

5.1数据连接

数据库作为无纸化考试系统的核心,在建立之后要和前台应用程序建立连接才能发挥它的作用。

5.1.1建立数据库连接

JSP程序通过JDBC来连接和操作数据库。JDBC是一组API,可以协助编程人员轻松地处理程序与数据库之间的连接和操作动作。

进行数据库连接时,需要使用java.sql套件中的类。在正式连接数据库时,首先必须使用java.sql.Class类中的forName方法加载驱动程序类,语法如下:

Class.forName(String 驱动程序类描述);

对于SQL SERVER数据库,使用如下语句加载驱动程序类:

Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”).newInstance(); 注释:(对于tomcat,就确保msbase.jar,mssqlserver.jar,msutil.jar三个文件拷贝到tomcat路径下的comm\lib目录下。)

加载驱动程序类后,就可以使用DriverManager类来打开数据库连接,其语法如下:

Connection 连接对象=DriverManager.getConnection(String 数据库名称,String 用户名称,String 用户密码);

对于SQL Server数据库,一个示例如下: String

url=”jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=exam”; username=”sa” password="sa"

Connection conn=DriverManager.getConnection(url,id,passworcd); 相应地,关闭数据库连接使用连接对象的close方法,其语法如下: 连接对象.close();

5.1.2安全策略

本系统用两个方法来加强用系统的安全性。

首先,使用Session限制未经登录的访问。当考生从登录界面登录,JSP程序进行用户名称和密码的检查后,如果数据符合则成功登录,将用户的ID值写到Session对象

中,对以后的页面都会先检查Session对象保存的数据,从而判断用户是否可浏览页面,以达到安全控制的目的。如果检查失败都会导向登录界面,要求用户重新登录。

第二,防止考生任意刷新页面,起到了防止作弊的作用。

5.2无纸化考试系统设计

我们的无纸化考试系统由一个公用模块和两个主要功能模块组成: 1、数据库连接公用模块

2、无纸化考试模块,考生登录系统后,进行无纸化考试,提交试卷后自动判卷显示成绩。

3、系统管理模块,包括考生信息、题目、分数查询和管理员添加。

5.2.1数据库连接公用模块

在本考试系统中,我们把数据库参数写入一个名为jdbcsql.properies的配置文件中,这样在程序运行时如果环境变化,可以方便地修改数据库配置。

jdbcsql.properies内容如下:

driver=com.microsoft.jdbc.sqlserver.SQLServerDriver //驱动程序

url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=exam //连接字符串 username=sa //用户名 password= //密码

javaBean是一种基于java的软件组件。JSP对于在Web应用中集成JavaBean组件提供了完善的支持。这种支持不仅能缩短开发时间(可以直接利用通过测试可信任的已有组件,避免了重复开发),也为JSP应用带来了更多的可伸缩性。JavaBean组件可以用来执行复杂的计算任务,在本例中,我们通过使用缩写JavaBean读取配置文件(jdbcsql.properies)来连接数据库,文件名为DBConnectionBean.java的代码如所示:

//DBConnectionBean.java

//用在jsp网页里的数据库桥接bean package examinline; import java.util.*; import java.sql.*; import java.io.*;

public class DBConnectionBean{ //成员变量初始化 //定义变量并初始化

Connection dbcon=null;//数据库连接 Statement stmt=null; //JDBC声明

ResultSet result=null;//记录集 String driver="";//数据库驱动程序 String url="";//连接字符串 String user="";//用户名 String password="";//密码 public DBConnectionBean(){ try{//配置输入流读取配置文件

InputStream fis =getClass().getResourceAsStream("jdbcsql.properties"); Properties ps=new Properties(); ps.load(fis); //读取配置文件参数

driver=ps.getProperty("driver"); url=ps.getProperty("url"); user=ps.getProperty("username"); password=ps.getProperty("password");

Class.forName(this.driver);//注册数据库驱动程序 }

catch(Exception e){

System.out.println(e);//为方便调试程序,出错打印e就知道在什么地方出错了 } }

//设置驱动程序

public void setdrivername() { try{

Class.forName(this.driver);//注册数据库驱动程序

System.out.println("加载数据驱动成功!");//输出结果,方便调试 }catch(ClassNotFoundException e){

System.out.println("jdbc driver error");//抛出异常,加载数据驱动失败 } }

//打开连接

public Connection getopenConnection(){ try{//建立数据库连接

this.dbcon=DriverManager.getConnection(this.url,this.user,this.password); System.out.println("桥接数据库成功!"); }catch(SQLException e2){ System.out.println(e2);//异常处理 }

return dbcon; }

//executeQuery方法用于进行记录的查询操作,入口参数为sql语句,返回ResultSet对象

public ResultSet executeQuery(String query)throws SQLException{ this.stmt=dbcon.createStatement();//创建一个JDBC声明

this.result=stmt.executeQuery(query);//获得SQL指令执行返回结果 return result; }

//executeUpdate方法用于进行add或者update记录的操作,入口参数为SQL语句,成功返回true,否则为false

public void executeUpdate(String query)throws SQLException{ this.stmt=dbcon.createStatement();//创建一个JDBC声明 stmt.executeUpdate(query);//执行指令

if(stmt!=null) stmt.close();//操作成功时关闭声明 }

//根据列号读取数据,入口参数为int型数据表列号,返回string类型的数据 public String getData(int index) throws SQLException{ return result.getString(index); }

//根据列号读取数据,入口参数为int型数据表列号,返回int类型的数据 public int getIntData(int index) throws SQLException{ return result.getInt(index); }

//根据列号读取数据,入口参数为int型数据表列号,返回float类型的数据 public float getFltData(int index) throws SQLException{ return result.getFloat(index); }

//判断数据库中的记录是否已到记录尾,返回值为boolean值

//若到记录尾,返回值为false,否则为true public boolean next() throws SQLException{ return result.next(); }

//清空SQL指令执行结果

public void resetResult() throws SQLException{ this.result=null; }

//关闭数据库连接,关闭JDBC声明,清空结果 public void close() throws SQLException{ if(dbcon!=null) dbcon.close(); if(stmt!=null) stmt.close(); if(result!=null) result.close(); }

//系统公共函数,实现字符的替换 public void finalize() throws Throwable{ this.close(); }

public String replaceString(String str){//转换入口参数String类型的str为数组 char tempArray[]=str.toCharArray(); int iCurr[]=new int[10]; int j=0;

for(int i=0;i!=tempArray.length;i++) {

int temp=(int)tempArray[i]; if(temp==92){ iCurr[j]=i; j++; } }

final int temp2=j+1;

String strArray[]=new String[temp2]; strArray[0]=str.substring(0,iCurr[0]); strArray[temp2-1]=str.substring(iCurr[j-1]+1);

for(int m=1;m!=strArray.length-1;m++){ strArray[m]=str.substring(iCurr[m-1]+1,iCurr[m]); } str="";

for(int k=0;k!=strArray.length-1;k++){ str=str+strArray[k]+"%5C"; }

str=str+strArray[temp2-1]; return str; } }

5.2.2首页index.jsp

考试系统首界页图5.1所示

:

图5.1考试系统首界页

5.2.3无纸化考试模块

该模块实现用户登录、信息确认、考试、显示成绩等功能。该部分文件包括:

Login.jsp:考试登录页面。 Reading.jsp:考生信息显示。 Begin.jsp:开始考试。 Result.jsp:显示考试成绩。

考生登录页面是考生登录系统第一个页面,是进入考试状态的接口。在考生登录页面

(login.jsp)中,提供给考生进入考试时所必须的ID和密码,“考生登录”处输入考生ID和密码,然后按“登录”按钮转到reading.jsp页面对ID和密码进行验证。

Login.jsp代码执行,其显示界面图5.2所示

:

图5.2考生登录界面

在登录页面中,我们用JavaScript创建一个数据检查函数numericCineck()来检查考生的

ID。考生ID只能为数字,这样可以把一部分检测工作放在客户端来执行,降低服务器的压力。下面给出这段javaScript的代码:

相应地在login.jsp代码中的ID文本框中做如下更改:

其中onblur=numericCheck()的作用为:当输入完ID并且ID文本框失去焦点时调用numericCheck()函数进行验证,以检验考生输入的ID是否符合要求。在本程序中判断输入文本框的是否全为数字。

登录页面login.jsp程序不包含和数据库的交互操作,因为主要代码为html和javascript,

(2)对用户登录信息进行验证的页面在reading.jsp中,如果用户存在密码正确则显示该考生资料,然后单击按钮进入begin.jsp界面。

Reading.jsp代码如下:

String userNow = request.getParameter("userid");//取得用户登录ID

String password=request.getParameter("password");//取得用户登录密码

System.out.print(password);

%>

//设置数据库驱动程序

//通过传来的ID提取学生资料,取得数据库连接

Connection conn = linejdbc.getopenConnection();

PreparedStatement s = conn.prepareStatement

("select * from student where S_id=? and S_psw=?");//为PreparedStatement参数赋值

s.setString(1,userNow);

s.setString(2,password);

ResultSet result = s.executeQuery();//执行PreparedStatement并取得结果

if (result.next())

{//若记录非空,读取用户资料

String S_id = result.getString("S_id");

String S_name = result.getString("S_name");

String Sex=result.getString("sex");

String Major=result.getString("major");

String Grade=result.getString("grade");

%>

登陆成功!

您的相关信息:

学号:

姓名:

性别:

年级:

专业:

"> ">

s = conn.prepareStatement("select * from score where s_id=?");

s.setString(1,userNow);

ResultSet rs=s.executeQuery();

if(rs.next())

{

%>

你已经参加过考试了,你的上次考试成绩为:

}

%>

警告:

答题过程不能中断!如果您试图进行作弊或者超过答题时间,

您将被强令在24小时后进行补考,补考时间到期前,您不能参加考试!

如果您准备完毕,点按钮开始答题!

}

Else //若用户名不存在或者用户密码错误,给出登录错误信息返回重新登录 {

out.print(" 用户ID不存在或密码错误!返回");

}

%>

考生成功登录界面如图5.3所示:

图5.3考生成功登录界面

(3)考试页面begin.jsp实现随机出题、防止刷新页面(通过javaScript来实现)、超时处理(通过调用Servlet来实现)和考试时间显示(通过javaScript来实现)等功能。

在考试开始页面中将会随机抽取50道题供考生做答,并且在考生进入答题时即生成。为了防止考生反复刷新页面,进行重新选题,利用客户端javaScript限制考生刷新。

采用cookie存储用户登录时间和url,比较url如果发现相同值则认为用户登录后刷新了页面,抛出错误。其代码实现如下:

用户登录系统答题时间超过预定时间后会显示答题超时,我们采用Servlet处理。代码如下:

//CTimeOut.java

//验证密码,验证是否以参加考试,传送参数

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.util.*;

public class CTimeOut extends HttpServlet

{

//定义doPost方法用来接受数据

public

{

//定义输出流

req.setCharacterEncoding("gb2312");//设置输入编码格式

res.setContentType("text/html;charset=gb2312");//设置输出编码格式

PrintWriter out = res.getWriter();//定义输出流

String chaoshiID = req.getParameter("chaoshiID");//取得url参数

try

{//输出跳转页

void doGet(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException

out.println("");

out.println("");

out.println(""); out.println("无标题文档");

out.println

("");

out.println("");

out.println("

return document.MM_returnValue>");

out.println("");

out.println("");

out.close();

}

catch(Exception e) //异常处理

{System.out.println(e.toString());

} } }

在考生答题过程中,要实时显示考生答题已经消耗时间,并在即将交卷时给出提示.

Begin.jsp页面是考生进入答题系统的主界面,给考生提供了一个网络答题交流平台,begin.jsp将从tiku表中抽取50道题,在规定时间范围内回答完毕并提交给系统进行评分。此程序也是整个系统的一个难点,其中随机数的产生,相同随机数的处理方法。

Begin.jsp执行界面如图5.4所示:

图5.4开始答题界面

其产生随机数代码如下:

//产生50个随即数

int randnum[]=new int[50];

boolean isexsit=false;

for(num=0;num

{

randnum[num]=0;

}

Random rand = new Random();

while (true) //判断随机数是否重复并进行处理

{

isexsit=false;

i = rand.nextInt(maxid);

for(num=0;num

{

if (randnum[num]==i)

{

isexsit=true;

break;

}

}

(4)成绩显示页面result.jsp主要为根据考生的答题结果,计算考生成绩并显示。 执行代码显示界面如图5.5所示:

图5.5考生成绩显示界面

计算答对题的数量,并计算分数,代码如下:

int i;

int score=0;//总分

String selectvalue;

String id;

for (i=1;i

{

selectvalue=request.getParameter("select"+i);

id=request.getParameter("h"+i);

ps=conn.prepareStatement("select * from tiku where id=? and answer=?");

ps.setInt(1,Integer.parseInt(id));

ps.setString(2,selectvalue);

rs=ps.executeQuery();//判断用户做出的答案是否正确,如果正确score+1

if (rs.next())

{

score=score+1;

}

System.out.println(id+":"+selectvalue+":"+score);

}

score=score*2; //每题两分,按百分制计算。

到这里,前台考生登录、考试模块均已经设计完毕。这些是最终要展现给用户的界面信息。

5.2.4系统管理模块

该模块主要实现如下功能:管理员登录、考生信息管理、题目管理、管理员添加等功能。

主要包含以下文件:

Login.jsp:管理员登录页面。

Main.jsp:主窗体(后台管理的主要框架)。

Zuo.jsp:主窗体中左边的导航页面。

You.jsp:主窗体中右边的显示页面。

Addobject.jsp:对考生信息的管理。

Addadmin.jsp对管理员信息的管理。

Addq.jsp:对考题的管理。

Search.jsp:成绩统计。

(1)管理员登录

Login.jsp管理员登录页面,它是后台管理的首页面,根据输入的用户名和密码验证该管理员是否存在及密码是否正确。当输入的用户名和密码正确时,自动跳转到main.jsp页面,从而最终选择对考生信息、管理员信息、考题和成绩的管理。管理员登录界面,如图5.6所示

:

图5.6管理员登录界面

(2)main.jsp主窗体

main.jsp起到一个导航的作用。采用框架结构,通过它管理员可以进行对考生信息、管理员信息、考题和成绩的管理操作并可以实现退出管理选项,最终实现退出管理系统。主窗架界面,如图5.7所示

:

图5.7主窗架界面

(3)addobject.jsp考生管理

管理员选择学生管理,可以实现对学生信息的管理,如考生信息的删除和添加操作,其中对考生的添加包括添加考生学号、密码、姓名、性别、专业和年级等各项,其中学号、密码和姓名是必选项。考生管理界面,图5.8所示:

图5.8考生管理界面

(4)addp.jsp考题管理

实现对考题的维护操作,用于实现对考题的添加和删除操作,其中对考题的添加包括对考试题目和四个选项的添加。考题管理界面,如图5.9所示

:

图5.9考题管理界面

(5)addadmin.jsp管理员的管理

该程序的功能是对系统管理员进行维护,包括添加和删除功能。管理员管理界面,如图5.10所示

:

图5.10管理员管理界面

(6)search.jsp考试成绩显示

该程序的主要功能是对成绩进行统计,其中包括各个分数段的人数及平均分、最高分和最低分。以及可以看到各个考生的考试成绩。成绩显示界面,如图5.11所示:

图5.11 成绩显示界面

代码实现如下:

Connection conn = linejdbc.getopenConnection();//打开连接数据库

PreparedStatement ps=null;

String sqlstr;

ResultSet result;

sqlstr="SELECT COUNT(*) FROM score "; //查询数据库中已参加考试的考生数量

ps=conn.prepareStatement(sqlstr);

result=ps.executeQuery();

result.next();

int total=result.getInt(1);//取得考生的数量值

sqlstr="SELECT count(*) from score where score>=80";//取得80分以上的考生数//量

ps=conn.prepareStatement(sqlstr);

result=ps.executeQuery();

result.next();

%>

//显示统计结果,以10分为一个分数段的划分。

参加考试总人数:人

80分以上:人

sqlstr="SELECT count(*) from score where score>=70 and score

ps=conn.prepareStatement(sqlstr);

result=ps.executeQuery();

result.next();

%>

70-80分:人

sqlstr="SELECT count(*) from score where score>=60 and score

ps=conn.prepareStatement(sqlstr);

result=ps.executeQuery();

result.next();

%>

60-70分:人

sqlstr="SELECT count(*) from score where score

ps=conn.prepareStatement(sqlstr);

result=ps.executeQuery();

result.next();

%>

60分以下:人

sqlstr="SELECT max(score) as maxscore,min(score) as minscore,sum(score) as sumscore from score "; //查询最高分、最低分和总分

ps=conn.prepareStatement(sqlstr);

result=ps.executeQuery();

result.next();

%>

最高分:

最低分:

平均分:

//显示平均分

}

%>

总结

在本次的毕业设计过程中使用了JSP开发技术、SQL SERVER大型数据库、JAVA、JavaBean以及JavaScript开发技术。从而实现了无纸化考试系统的实用性和可靠性,通过以上技术的使用使我对实用性网站开发技术有了更深的掌握。

我们所设计的无纸化考试系统主要包括两个子系统:考生考试子系统和管理员管理子系统。其中考生考试子系统包括以下考试流程顺序:考生登录、准备考试、答题并提交、查看考试结果;管理员管理子系统包括以下几个分子系统:“学生管理”、“题目管理”、“成绩查询”以及“管理员添加”子系统,通过管理员的登录可以实现对以上分子系统的管理。

无纸化考试系统可以动态地管理各种考试信息,只要准备好足够大的题库,从该题库中抽取一定数量的考题生成考试试卷,从而有效地避免了考试作弊,相互抄袭的弊端;另一方面,考试时间灵活, 可以在规定的时间段内的任意时间参加考试;另外计算机化的考试的最大特点是阅卷快,系统可以在考试结束时当场给考生成绩,计算机阅卷给予考生的最大的公平和公正。

本设计在各位老师和同学的帮助下得以顺利完成,但由于时间紧迫和知识水平有限,有些功能未能得到预期的效果,例如:时间原因未实现的功能,在考生登录界面应添加一些公告和新闻,在本设计中由于时间紧迫未能得以实现.由于技术原因未实现的功能,如:在本次老师设计中,由于考题数据库设计单一,只进行了选择题的设计而未进行判断、填空和简答题等的设计。本设计可能还存在众多的不足希望老师给予指正,以便在以后的工作和生活中不断得到提高。

参考文献

[1] 严蔚敏、吴伟民.数据结构[M].北京:清华大学出版社,2003

[2] 方盈.SQL server 2000从入门到精通[M].北京:中国铁道出版社,2007

[3] 龚波.SQL Server 2000教程[M] 北京希望电子出版社 2008年

[4] 孙印杰、吕书琴.ASP.NET+SQL server动态网站设计实例精解[M].北京:电子工业出版社,2005

[5] 于海涛主讲.基于.net的web程序设计视频教程[M].北京:北大青鸟教育学院

[6] 李明刚、肖建等.JSP.net高级编程[M].北京:清华大学出版社,2009

[7] 赵增敏.JSP动态网站开发[M].水利水电出版社.2008

[8] 邓春江、王琳.asp.net服务器控件与组件开发[M].北京:机械工业出版社,2005

[9] 刘晓华. 精通.NET核心技术—原理与构架[M].北京:电子工业出版社,2009

[10] Robert lair.asp.net开发人员手册[M].北京:电子工业出版社,2002

[11] Cay S.Horstmann. Core Java 2, Volume I--Fundamentals [M]. 北京:机械工业出版社.2009

[12] 李兴华. Java开发实战经典[M]. 北京:清华大学出版社.2009

[13] Horstmann Gay S. JAVA核心技术[M]. 北京:机械工业出版社.2008

[14] 李宁. Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax [M].北京:清华大学出版社,2009

致 谢

在本次的毕业设计中,使得我对自己所学的专业知识掌握的更加牢固,并且在本次的毕业设计过程中使得我养成了独立思考、善于运用创造性思维将自己的思想运用到毕业设计过程中,充分发挥自己的创造力。在养成独立思维习惯的同时,我也得到了各老师和同学的帮助,尤其是我的毕业设计指导老师周金玲,在整个毕业设计的选题、设计和论文阶段对我的工作其了极为重要的指导作用,并且给予了我极大的关怀和鼓励,并给予我宝贵的经验和精心的指导,使本次设计得以顺利过完成。在此表此深深谢意!

几年的求学之路即将结束,在告别母校的时候,我们才深深对母校的丝丝眷恋,在这几年的大学生活中,不仅使我学到了更深的专业知识,并且锻炼我的独立思维能力、超强的创造能力,以及自尊、自强、自信的精神,使我养成团结友爱的团队精神。这必将使我在以后的社会生活中受益匪浅,如果说社会是我们拼搏的舞台,那么母校是培育我们的根基,在此希望我的母校——潍坊学院在以后的发展过程中,不断超载、越来越好!在此向我母校及全体师生表示深深的敬意!


相关内容

  • 2015年全国计算机等级考试无纸化考试系统操作指南
  • 2015年全国计算机等级考试无纸化考试系统操作指南 来源:考试吧 2014-3-28 8:38:44 [考试吧:中国教育培训第一门户] 模拟考场 从2013年9月开始改革为无纸化考试,相信很多考生还不清楚无纸化考试的形式和操作,下面就一起来看一看吧! 全国计算机等级考试等级无纸化考试系统操作说明 一 ...

  • 2013陕西省会计从业资格无纸化考试实施方案
  • 陕西省会计从业资格无纸化考试实施方案 按照财政部要求,为推进我省会计管理信息化建设,结合2011年试点经验,决定于2012年下半年起,在我省全面实施会计从业资格无纸化考试(以下简称无纸化考试).具体事项如下: 一. 考试时间安排及考试科目 2012年无纸化考试时间拟安排两次,分别为7月21-22日和 ...

  • 上海会计从业资格考试报名注意事项
  • 上海会计从业资格考试报名流程及要求 本次考试实行网上报名,考生通过登陆会计从业资格考试报名网址网办理报名事宜.符合报名条件的考生按网上报名系统提示,如实填写报名信息,上传本人近期证件照,通过网上远程审核后,考生在7月17日前,按网上操作说明进行交费,缴费成功(请核查自己的网银,是否转款)即报名结束. ...

  • 会计证要求
  • 新疆:http://www.xjcz.gov.cn/31 1.对报名参加浙江省会计从业资格无纸化考试人员的条件有何规定? 答:符合下列基本条件的人员,均可报名参加会计从业资格考试. 1.遵守会计和其他财经法律.法规: 2.具备良好的道德品质: 3.具备会计专业基础知识和技能. 因有<会计法&g ...

  • 无纸化学法用法及考试系统使用方法
  • 无纸化学法用法及考试系统使用方法 一. 在地址栏输入http://10.1.1.207:8080进入无纸化学法用 法及考试系统. 二. 学习时选择"学法用法平台",根据个人登录账号登陆学习. 看到<山西省"六五"中期无纸化法律知识考试复习资料(必修课)& ...

  • 浙江2017年中级会计职称考试报名时间为3月16日
  • 浙江2017年中级会计职称考试报名时间为3月16日-31日,全省会计专业技术中.高级资格考试采用网络报名.网上支付考试费用的方式.因特殊原因在外网报名系统自动审核未通过的人员,请本人携带相关证明材料,前往本人单位所属地的财政会计管理部门,变更其相关信息. 浙江省财政厅 浙江省人力资源和社会保障厅关于 ...

  • 2015年上海会计从业资格考试改革公告
  • 为进一步完善会计从业资格考试大纲,促进会计从业资格考试的知识结构科学合理,充分发挥会计从业资格考试在会计职业准入中的作用,根据<会计从业资格管理办法>(财政部令第73号)等有关规定,财政部对2009年修订的会计从业资格考试大纲进行了修订,自2014年10月1日起施行.依照财政部办公厅&l ...

  • 三级数据库大纲
  • 全国计算机等级考试三级数据库技术 考试大纲(2013年版) 基本要求 1. 掌握数据库技术的基本概念.原理.方法和技术. 2. 能够使用SQL 语言实现数据库操作. 3. 具备数据库系统安装.配置及数据库管理与维护的基本技能. 4. 掌握数据库管理与维护的基本方法. 5. 掌握数据库性能优化的基本方 ...

  • 2016年贵州无纸化考试会计从业资格证[初级会计电算化]考试试卷
  • 2016年贵州无纸化考试会计从业资格证<初级会计电算化>考试试 卷 一.单选题(在每小题给出的四个备选参考答案中,只有一个正确的答案,请将所选答案的字母填在题后的括号内.每小题3分,共30分) 1.下列各项中,______不在 Excel 提供的工作表列数范围之内. A.128 B.12 ...