最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

基于Java_Web的在线考试系统的设计与实现

IT圈 admin 27浏览 0评论

2024年5月29日发(作者:练天亦)

在线考试

题 目:

Java Web应用开发——

在线模拟考试系统的设计与实现

学 院: 软件工程与服务外包学院

专 业: 软件技术

学生姓名: XXX 班级/学号 软工XXXXXXXXX

指导老师/督导老师: XXX

摘要

摘 要

随着网络技术的发展,远程教育和网上考试成为网络应用的一个重要

方面。近几年,在线考试特别是基于Web 的在线考试系统受到越来越多的

人青睐。

本次项目实训的题目是在线模拟考试系统的设计与实现,系统采用浏

览器/服务器模式开发,包括登录注册、在线考试、试卷设置、试题管理、

分数的统计以及成绩查询等功能。系统运行在Windows 操作系统上,以

Tomcat作为Web服务器,使用SSH+JSP技术和MySQL 数据库实现。

关键词:在线考试;浏览器/服务器;JSP;MySQL;JDBC;

I

目录

目录

摘 要 ............................................................................................................................................................ I

第一章 项目概述 ........................................................................................................................................... 1

1.1 开发背景 ................................................................................................................................................. 1

1.2 开发意义 ................................................................................................................................................. 1

1.3开发工具 .................................................................................................................................................. 2

第二章 系统分析 ........................................................................................................................................... 6

2.1 现状分析 ................................................................................................................................................. 6

2.2 可行性分析 ............................................................................................................................................. 6

2.3 设计目标 ................................................................................................................................................. 7

2.4 功能要求 ................................................................................................................................................. 8

2.5 系统开发环境配置 ................................................................................................................................. 9

第三章 系统设计 ......................................................................................................................................... 10

3.1数据库设计 ............................................................................................................................................ 10

3.2系统结构设计 ........................................................................................................................................ 13

3.3用户界面设计 ........................................................................................................................................ 14

第四章 系统实现 ......................................................................................................................................... 17

4.1 数据库连接的实现方法 ....................................................................................................................... 17

4.2 登陆注册模块 ....................................................................................................................................... 18

4.3考生模块 ................................................................................................................................................ 21

4.4 教师模块 ............................................................................................................................................... 26

4.5 管理员模块 ........................................................................................................................................... 34

第五章 系统测试 ......................................................................................................................................... 36

5.1什么是软件测试 .................................................................................................................................... 36

5.2软件测试的目标与方法 ........................................................................................................................ 36

5.3测试内容 ................................................................................................................................................ 36

5.4系统的不足和展望 ................................................................................................................................ 37

结束语 ........................................................................................................................................................... 38

参考文献 ....................................................................................................................................................... 39

II

目录

III

Java Web应用开发——在线模拟考试系统的设计与实现

第一章 项目概述

1.1 开发背景

随着我国计算机技术和通讯技术的发展,互联网的普及程度已经很广

泛了,但是,现在的教育教学检验方式,还是停留在过去的纸质考试层面

在,而传统的教育教学检验方式中,要进行一次考试,至少需要经过教师

出题、学生考试、教师阅卷等几步,这是一个繁杂的过程,需要大量人力、

物力与时间的投入,同时也让教师的工作量越来越大;现在远程教育类学

校的增多,虽然利用了网络拉近了教师与学生的距离,但学生的分布过广,

导致了不易统一集中安排考试,考生成本的增加等诸多难题的出现,给校

方和学生带来了很多的不便,因此,传统的考试方式已经不能适应现在新

兴的教育教学方式的考试需要了。可以解决这些诸多难题的一种方式,就

是利用Internet无国界的特点,在互联网上在线考试。

在线考试系统可以减轻教师的工作负担、提高工作效率,也减少了因

考试而消耗不必要的人力和物力。在线考试的题目由计算机从题库中随机

抽取,提高了考试的质量,考试的评判由计算机自动完成,这样使考试更

趋于公证、客观。随着社会的发展和我国互联网的普及,我们的生活中的

已经有很多方面都运用到了网络,比如网上购物,网上交友等,甚至现在

很多人看新闻都是通过网络阅读的,在阅读新闻这个事件上,已经不仅仅

局限于纸质化的报纸上了;而要把考试趋于无纸化的模式,需要在线模拟

考试系统来完成,这个也是现在高等教育发展的一个需求。

在国内,试题库系统理论与技术的研究在最近几年取得了很大的进步。

我国许多企业和高校都投入量大量的人力物力到各门课程的试题库中,并

取得了一定的成就。现在的生活中已经有越来越多的等级考试运用了在线

考试系统,比如会计的电算化考试、计算机等级考试、银行资格证考试等,

这些已经充分说明,在线考试系统是今后我们的考试生涯中的一个发展趋

势。

1.2 开发意义

考试是教育中一个非常重要的环节,但在以前的很长时间里,全球所有

的国家都是以笔试的方式来检查焦距教学成果的,随着网络的发展,互联

网已经普及的非常广泛,随着这些周围环境的改变,人们开始去寻找新的

方式来去达到更客观,更方便快捷的去达到考试的目的。近些年来,在国

外,已经投入使用的考试系统有著名的TOEFL,GRE网上考试系统,还有微软、

思科等大公司的国际认证考试等,这些考试系统在全球范围内有众多的使

1

Java Web应用开发——在线模拟考试系统的设计与实现

用者。网络化考试系统对节约考试成本,实现远距离的同步考试,提高考试

效率,确保考试结果的公平、公正、科学、及时等具有重要的意义,不仅

可以动态地管理考试信息,而且还提高了教学的灵活性,相信随着技术的

不断发展和网络覆盖面的不断扩大,在不断完善该考试系统的同时也会在

更大的范围上应用。

1.3开发工具

本系统是基于Tomcat为服务器,SSH+JSP+MySQL数据库技术实现的一个

简单的在线考试系统.

1.3.1动态网页开发技术—JSP(Java Server Page)

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司

参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是

在传统的网页HTML文件中插入Java程序段和JSP标记,从而形成JSP文

件。 用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其

他操作系统上运行。

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装

产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于

服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可

重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将

执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序

段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。

JSP与Java servlet一样,是在服务器端执行的,通常返回该客户端的就

是一个HTML文本,因此客户端只要有浏览器就能浏览。

JSP页面由HTML代码和嵌入其中的Java代码所组成。Java servlet 是

JSP的技术基础,而且大型的Web应用程序的开发需要Java servlet和JSP

配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有

平台无关性且安全可靠,主要面向因特网的所有特点。

1.JSP技术的强势

(1)一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之

外,代码不用做任何更改。

(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在

任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是

现而易见的。

2

Java Web应用开发——在线模拟考试系统的设计与实现

(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行servlet/JSP,

到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,

消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。

(4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有

了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经

可以顺利的运行于多种平台之下。

2. JSP技术的弱势

(1) 与ASP一样,Java的一些优势正是它致命的问题所在。正是由于为

了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。

(2) Java的运行速度是用class常驻内存来完成的,所以它在一些情况

下所使用的内存比起用户数量来说确实是“最低性能价格比”了。从另一

方面,它还需要硬盘空间来储存一系列的.java文件和.class文件,以及

对应的版本文件。

1.3.2 数据库—MySQL

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,

在2008年1月16号被Sun 公司收购。MySQL被广泛地应用在Internet上

的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放

源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL

作为网站数据库。如雅虎、阿尔卡特—朗讯、Google公司、诺基亚公司、

百度等公司就采用了MySQL数据库。MySQL数据库可以称得上是目前运行速

度最快的SQL语言数据库。除了具有许多其它数据库所不具备的功能和选

择之外,MySQL数据库是一种完全免费的产品,用户可以直接从网上下载.

MySQL数据库主要有以下特点:

1、可移植性

使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移

植性。

2、可扩展性和灵活性

MySQL可以支持UNIX、Linux和SUN OS以及Windows等多种操作系统

平台。在一个操作系统中实现的应用可以很方便地移植到其他操作系统。

MySQL作为开源性质的 数据库服务器,可以为那些想要增加独特需求的用

户提供完全定制的功能。

3、强大的数据保护功能

MySQL有一个非常灵活且安全的权限和密码系统。为确保只有获授权用

户才能进入该数据库服务器,所有的密码传输均采用加密形式,同时也提

供了 SSH和SSI。支持,以实现安全和可靠的连接。MySQL强大的数据加密

和解密功能,可以保证敏感数据不受未经授权的访问。

4、支持大型的数据库

3

Java Web应用开发——在线模拟考试系统的设计与实现

虽然对于用PHP编写的网页来说,只要能够存放数百条以上的记录数

据就是够了,但MySQL可以方便地支持上千万条记录的数据库。作为一个

开放源代码的数据库,MySQL可以针对不同的应用进行相应的修改。

5、超强的稳定性

MySQL拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持

续使用而不必担心其稳定性。线程是轻量级的进程,它可以灵活地为用户

提供服务,而不占用过多的系统资源。用多线程和C语言实现的MySQL能

很容易地充分利用CPU。

6、强大的查询功能

MySQL支持查询的select和where语句的全部运算符和函数,并且可

以在同一查询中混用来自不同数据库的表,从而使得查询变得快捷、方便。

1.3.3 Tomcat介绍

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,是Apache

软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一

些学校及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet

和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet

2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而

深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流

行的Web 应用服务器。

Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩

展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还

在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中

加入新的功能。

Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用

户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一

个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可

利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器

的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个

与Apache 独立的进程单独运行的。

自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成

GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提

供Web服务的JSP服务器,当然同时也支持Servlet, 这样Tomcat就诞生了。

Tomcat是jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑

选为2001年度最具创新的java产品,同时它又是sun公司官方推荐的

servlet和jsp容器,因此其越来越受到软件公司和开发人员的喜爱。

servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。其次,

4

Java Web应用开发——在线模拟考试系统的设计与实现

Tomcat也是完全免费的软件,任何人都可以从互联网上自由地下载。

5

Java Web应用开发——在线模拟考试系统的设计与实现

第二章 系统分析

2.1 现状分析

传统的考试方式是教师提前命题、印刷试卷、组织学生考试、学生在

统一时间和地点考试、收卷后教师阅卷、成绩统计。如图2.1

教师提前命题

印刷试卷

组织学生考试

成绩统计

教师阅卷

学生统一考试

图2.1 传统考试模式

这种模式存在有较多的问题:

命题:由于是同意的时间进行考试,所以考生的试卷都是一样的,这

样对教师命题带来的很大的麻烦,即:试题太难或者太容易,都达不到考

试的目的。如果是大型的考试,比如英语四级考试,还要担心试题是否被

泄漏的等问题(现在已经有类似问题的出现,才会有现在说的花卷)。

印刷试卷:组织考试,印刷试卷费工费时,成本高,而且对于纸张资

源也是一种浪费,而且印刷的时候,也会担心试题被泄漏的问题。

组织学生考试:监考人资源的浪费,和教师资源的匮乏,如何调配也

是一个难题,如果是全国统一考试,还要涉及不同区域同时考试的问题。

学生统一考试:由于是同一时间,同一地点,同一张试题,考生作弊

问题便会出现,而且是非常难解决的问题,再加上每个监考员监考的严格

程度不同,这些人为因素难控制,使考试难公平,公正。

教师阅卷:教师阅卷比较容易出错,会造成人为的不公正性。

成绩统计:当成绩录入时,数字的混乱会导致录入者输入错误或者看

错。

2.2 可行性分析

可行性分析也称为可行性研究,即是在系统调查的基础上,针对新系

统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、管理

的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行

性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解

决。该系统的可行性分析包括以下几个方面的内容。

6

Java Web应用开发——在线模拟考试系统的设计与实现

2.2.1经济可行性

在线考试必然会在今后的教学管理上成为主要的考试形式。开发一套

能满足一般考试的需要,并实现试卷生成、评判自动化的在线考试系统。

在减少由于人为原因导致试卷阅卷的不公正的同时,也可以让教师的工作

量得以减少,有更多的时间去备课教学。本系统如果用在一些辅助教育类

的网站上,那经济效果是很明显的;如果是用在学校的教学管理上,会得

以发挥其潜在的经济效益,比如印刷试卷的费用等。因此,本系统在经济

上是可行的。

2.2.2 技术可行性

技术上的可行性分析主要分析技术条件是否能顺利完成开发工作,硬、

软件能否满足开发者的需要等。

硬件方面,硬件的更新速度之快,可靠性越来越高,目前一般的硬件

平台均能满足次系统的需要。

软件方面,编程的软件以及Web服务器等均已具备,并且环境变量已

经搭好,数据库用MySQL存储大量的数据,MySQL开源化,目前已经很成熟,

在灵活、安全和易用方面均能提供良好的支持。因此,系统的软件开发平

台已经成熟可行。

2.3 设计目标

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

1.

本系统提供给管理员类用户、教师类用户及学生类用户使用。不同的用

户类型所能完成的功能不同。管理员类用户可以对于已经注册的考生及

系统中已经存在的教师进行删除操作,对于未注册过的考生及系统中未

存在的教师进行添加操作;教师类用户可以创建试题、删除试题、修改

试题,也可进行试题维护、修改密码以及对成绩的统计;学生类用户主

要是参与考试,完成试卷,查询成绩。

2.

考试数据的存放和处理过程必须保密,需要一定的安全性保障若考生需

要查卷,经审核方可以。

3.

题目的选择具有稳定性、随机性。稳定性就是每张试卷总体的难易程度

要近似一样,保证每一次考试对每一个考生是公平的,随机性可以避免

作弊的发生。

4.

适时的试题题库更新,试题题型包括判断题、选择题类型。试题库的更

新由管理员类用户完成。学生类用户不允许对试题进行更新。

5.

实现现代考试网络化。

7

Java Web应用开发——在线模拟考试系统的设计与实现

2.4 功能要求

系统具备的基本功能:

1.用户登录及注册-对用户进行识别、验证;没有注册的用户跳转到用户

注册页面;

2.考试模块-考生选择自己想要参加的考试类别,并进行考试,考试完成

以后可以获得当

考试成绩。

3.历史成绩模块-考生可以看到自己以前参加的考试成绩。以对自己的进步

状况进行一次把握。

4.试题维护模块-教师选择试题的类别,然后针对该试题分类中的所有试题

进行维护,可以添加新题目,也可以对现在有的题目进行修改或者删除

处理。

5.试卷设置模块-教师对题库中的题目按照一定分类标准存放,包括分类的

添加、修改和删除操作等。

6.历史成绩管理模块-教师可以看到模式体分类的整体考试情况,考试成绩

分布情况,可以判断出题库中的题目难以水平,并可以在以后的维护中

做出适当调整。

7.考生管理-系统管理员可以对已经注册的考生进行删除操作,对于未注册

的考生进行增加操作。

8.教师管理-系统管理员可以对系统已经存在的教师进行删除操作,对于未

在系统中存在的教师进行增加操作。

9.修改密码模块-教师和考生可以在已经登录成功的页面点击修改密码,可

以修改本人登录此考试系统的登录密码。

除了实现上述功能以外,在线考试系统还应该具有简洁、易用的界面,

安全性要高,稳定性要强。

根据以上的需求分析,画出本系统的Use Case图,如图2.2所示:

考生

注 册 试题维护

考生管理

登 录

教师管理

管理员

教师

在线考试

试卷设置

8

历史成绩

Java Web应用开发——在线模拟考试系统的设计与实现

图2.2 在线考试系统的Use Case图

修改密码

历史成绩

管理

2.5 系统开发环境配置

1. 操作系统:Windows xp

2. 内存:4G

3. CPU:2.00GHZ

4. Java平台:JDK 5.0

5. Web服务器:Tomcat6.0

6. 数据库服务器:MySQL

7. 开发平台: MyEclipse6.0

9

Java Web应用开发——在线模拟考试系统的设计与实现

第三章 系统设计

3.1数据库设计

在对网上考试系统数据库部分进行设计的过程中,通过对系统功能进

行需求分析得到系统的基本信息表,详细设计过程如下介绍。

3.1.1 数据库需求分析

需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户

的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否

合理和实用。对于本系统而言,系统的角色分为管理员、教师、学生,这

需要3个表,而考生考试,需要一个存放题库的表,考试的类别不同,也

需要一个存放类别的表,考生考试完毕后,需要一个存放考试成绩的表。

综合以上分析,要实现上面的所有功能模块,数据库共要设计六个表,

它们分别是:试卷类别表、用户表、用户成绩表、教师表、管理员表、题

库表。

3.1.2 数据库表设计

用户信息表,用来存放考生信息,如表3-1所示:

表3-1用户信息表

字段名 类型 长度 是否为主可否为说明

键 空

user_id int 11 是 否 用户的id

username varchar 20 否 否 登录用户

password varchar 20 否 否 用户登录

密码

realname varchar 20 否 否 用户真实

姓名

教师信息表,存放教师信息,如表3-2所示:

表3-2教师信息表

字段名 类型 长度 是否为主可否为说明

键 空

teacher_id int 11 是 否 教师的id

teachername varchar 20 否 否 教师登录

10

Java Web应用开发——在线模拟考试系统的设计与实现

password

realname

varchar

varchar

20

20

教师登录

密码

教师真实

姓名

管理员信息表,存放管理员信息,如表3-3所示:

表3-3管理员信息表

字段名 类型 长度 是否为主可否为说明

键 空

adusername varchar 20 是 否 管理员登录

password varchar 20 否 否 管理员登录

密码

realname varchar 20 否 否 管理员真实

姓名

题库信息表,存放考试题目以及答案等信息,如表3-4所示:

表3-4题库信息表

字段名 类型 长度 是否为主可否说明

键 为空

question_id int 10 是 否 试题编号

category_id int 10 否 否 试题分类编

subject varchar 300 否 否 题目

choice_a varchar 100 否 否 选项A

choice_b varchar 100 否 否 选项B

choice_c varchar 100 否 否 选项C

choice_d varchar 100 否 否 选项D

answer char 10 否 否 正确答案

成绩表,存放考生考试时间以及成绩等信息,如表3-5所示

11

Java Web应用开发——在线模拟考试系统的设计与实现

字段名

record_id

类型

int

表3-5成绩表

长度 是否为主

10 是

20

10

username varchar

category_id char

test_time char 14 否

test_result int 11 否

试卷类别表,存放试卷类别信息,包括试卷分类名称、试卷题目等,如表

3-6所示

表3-6试卷类别表

字段名 类型 长度 是否为主可否为说明

键 空

category_id int 11 是 否 试题分类

编号

category_name varchar 20 否 否 试题分类

名称

question_number int 10 否 否 试题数目

3.1.3数据库逻辑结构设计

1. 关系图

可否为说明

否 考试记录编

否 考试用户名

否 试题分类编

否 考试时间

否 考试成绩

本系统各表之间的关系如下图3-1示:

12

Java Web应用开发——在线模拟考试系统的设计与实现

图3-1关系图

2.完整性设计

完整性要求用于描述各种信息之间的制约关系以及关联关系,各个数据

项的取值范围以及各个数据项是否可以取值。根据实际需要,采取一定的

手段来满足用户的完整性需求。域完整性约束要求属性值必须在域中。实

体完整性约束要求主键必须唯一且不能为空。如用户信息表中的用户名设

置为主键,并且要求唯一且不能为空。

3.2系统结构设计

网上考试系统是一个典型的数据库应用程序,主要有管理员、教师和

学生三大模块组成,各模块功能如下:

管理员模块:该模块包含2个功能,一个为考生管理,系统管理员可以

对已经注册的考生进行删除操作,对于未注册的考生进行增加操作;另一

个为教师管理,系统管理员可以对教师进行增加、删除操作。

教师模块:该模块包含4个功能,分别为试卷设置、试题维护、历史成

绩、修改密码。教师成功登录该系统后,能够进行修改个人信息,添加、

修改、删除试题、试卷类别操作,也可对考生的成绩进行统计。

学生模块:该模块包含3个功能,分别为开始考试、历史成绩、修改密

码。学生成功登录该系统后,能够进行考试、查询成绩、修改密码。

系统功能结构如图3-2所示:

学生模块 教师模块

管理员模块

系统功能

图3-2系统功能结构图

13

Java Web应用开发——在线模拟考试系统的设计与实现

3.3用户界面设计

页面上部采用一个Logo图片和适当的标识,表明当前的系统名称。接

下来是帮助连接和退出系统的连接。然后下部页面的主题分为左右两部分,

左边是导航模块部分,其中放置迁移到不同功能模块的链接按钮,右边是

页面的主要操作区域,不同页面的不同显示主要在此体现。

学生角色的模版页面如图3-3所示:

在线考试系统

Logo图片。。。。。。。

帮助 退出登录

欢迎您!XXX

开始考试

历史成绩

修改密码

图3-3 学生角色模版

每个模块都包含多个页面,再次挑选几个比较低型或者重要的页面进行

详细描述。其他的页面结构比较类似或者比较简单,不一一详述。

学生开始考试的时候,首先需要选择试卷类型,或者也可以叫做试题分

类。在此页面中采用下拉列表框的形式进行,如图3-4所示:

在线考试系统

Logo图片。。。。。。。

帮助 退出登录

欢迎您!XXX 请选择试题的分类:

开始考试

历史成绩

14

会计基础 确定

Java Web应用开发——在线模拟考试系统的设计与实现

修改密码

图3-4 试题分类选择页面草图

选择试题分类以后,即是学生答题页面。答题页面的主体应该是试题和

试题的选项。考虑到本系统需要在题目结束以后立即知道考试结果,所以

决定采用所有试题的形式都是ABCD型的选择题,页面应该针对这些题目选

项设置单选按钮。

在答题内容的上方,应该能够给考生信息,说明当前的题目是全部题目

的第几道,以及总共有几道题,使得考生可以把握整个考试进度。

同时考虑到考生在时间允许的情况下,需要在题目间前后迁移,所以在题

目的下方,还应该有前后翻页的按钮。

对应教师角色的模版略有不同,模块多了几个,而且页面顶端的标识

也有所区别。对应的模版页面如图3-5所示。

在线考试系统(管理界面)

Logo图片。。。。。。。

帮助 退出登录

欢迎您!XXX

试题维护

15

Java Web应用开发——在线模拟考试系统的设计与实现

试卷设置

成绩查询

修改密码

图3-11 教师角色模版页面

图3-5 管理员角色模版页面

16

Java Web应用开发——在线模拟考试系统的设计与实现

第四章 系统实现

本系统包括3个不同的角色,即学生、教师、管理员。不同角色的功

能有所不同,学生的功能包括:考试模块,修改密码,成绩查询模块。教

师的功能包括:试卷类别管理、试题管理、修改密码、成绩管理。管理员

的功能包括:教师管理和考生管理。

4.1 数据库连接的实现方法

从系统功能模块划分中可以看出,各模块虽然是独立的,但又统一于同

一数据库中,便于管理员管理维护数据库,同时也便于教师和学生的操作。

在介绍系统各模块的实现方法之前,首先介绍系统与MySQL数据库的连接

方法,再介绍系统主要部分的实现方法。

创建与数据库的连接:

①:首先要将mysql的驱动包放在tomcat/lib目录下;

②:利用语句进行对数据库的操作,以下仅是对用户表查询的语句:

<%@page contentType="text/html;charset=gb2312" %>

<%@page language="java" import=".*" %>

<%

//声明数据库连接对象,初始化为空

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

try

{

//载入MySQL的JDBC驱动类

e("");

//获得数据库连接

String sConn =

"jdbc:mysql://localhost/Myexam?user=root&password=890427";

conn = nection( sConn );

//创建Statement对象

stmt = Statement();

//执行SQL语句

String query = "select * from user";

rs = eQuery( query );

%> catch(Exception e)

17

Java Web应用开发——在线模拟考试系统的设计与实现

{

//获得数据库连接出错

n("error occured!!");

}

finally

{

//释放数据库连接

();

();

();

}

%>

4.2 登陆注册模块

4.2.1 登录模块

用户登录页面比较简单,为防止用户登录的操作错误,应设置错误处理

页面,在登录操作过程中,一般发生的错误有:用户输入了错误的用户名

或密码、用户直接单击了登录按钮,对上述情况的判断就要通过Servlet

文件来实现。当用户登录的时候,输入的帐号或者密码有其中一项为空时,

会有提示框提示,提示您帐号或者密码不能为空。实现这个功能的是用

javascript实现的,具体代码如下所示:

验证输入不为空的脚本代码

在登录页面时,当用户提交了登录资料后,就由“”这个

页面进行验证,它的工作主要是连接到数据库,从数据中找出输入的用户

名和密码并判断其是否一致。如果用户输入了错误的用户名和密码,就会

跳出一个登录失败的页面。

用户可以点击返回按钮回到其刚才登录的界面,然后重新输入用户名

及密码进行再次登录。若用户提交正确的用户和密码后,如果记录验证无

误,就通过JSP重定向语句direct()跳转到相应的主界面。

教师以及管理员的登录验证跟考生相似,只是查询条件和连接的数据

库表不同,以及登陆成功之后,跳转的页面不同。

4.2.2 考生注册模块

在此模块,考生需要填写用户名、密码、确认密码、真实姓名。如若

填写中缺少一项,那么会有提示,其功能也是由上面所说的一样,通过调

用javascript实现的,这里只提供下截图,主要代码如上,如图4-1所示:

图4-1 注册提示页面

当用户填写的内容完全符合注册标准后,点击注册按钮,会转到注册

成功的页面;如若用户名已经被注册,会转到注册失败页面,提醒注册用

户可能是该用户名已经注册。在此只以注册成功的页面为例,如图4-2所

示:

19

Java Web应用开发——在线模拟考试系统的设计与实现

图4-2 注册成功页面

完成注册模块的主要代码如下所示:

首先获取上个页面传过来的数据,用户名、密码、真实姓名

String username = ameter("username");

String password = ameter("password");

String realname = ameter("realname");

n(username); //打印出username

其次开始连接数据库

try{

e( "" ).newInstance();

Connection

conn=nection("jdbc:mysql://localhost:3306/my

exam?user=root&password=890427&useUnicode=true&characterEncoding

=gbk");

Statement stmt=Statement();

ResultSet rs=null;

查询user表,看用户名是否存在

String sql="select * from user where username like

'"+username+"'";

rs=eQuery(sql);

如果存在,提示“ 您好,您注册的用户名已经存在,请重新输入 ”,如

果不存在,把接收过来的值付给新的变量:

String s_username=ameter("username");

String s_password=ameter("password");

String s_realname=ameter("realname");

执行SQL插入语句,把得到的值插入到user表中

sql = "insert into user(username,password,realname)

value('"+username+"','"+password+"','"+r

20

Java Web应用开发——在线模拟考试系统的设计与实现

ealname+"')";

如果插入成功,提示:“恭喜您注册成功!”

4.3考生模块

考生登录系统并且用户名也密码正确后,会直接跳转到学生主页,本

页面中,考生可以在左侧选择自己下一步要做的事情,有开始考试、历史

成绩查询、修改密码。在页面中间,有提示语,告诉考生每个按钮都可以

操作什么功能;若考生对考试流程不太熟悉,可以点击帮助,来查询相关

问题的答案。如图4-3所示:

图4-3考生主页

4.3.1 开始考试模块

考生点击开始考试,会首先弹出关于所选考试科目的一些介绍,比如

考试时间和总共有多少道题目等,然后点击开始考试,倒计时开始,考生

选择上一题,下一题进行答卷,当考生答到最大题数时,下一题变成完成

答卷按钮。点击完成答卷,进入成绩页面,考生可以知道自己的成绩,并

且,成绩通过后台,插入到数据库中。如图4-4所示:

21

Java Web应用开发——在线模拟考试系统的设计与实现

图4-4 考生考试页面

执行的具体代码如下所示:

<%

HttpSession sess=(HttpSession)sion(true);

int category = (Integer)ribute("category");

String username = ameter("username");

MysqlDjtDao md = new MysqlDjtDao(); //引进包

int valid = TestRecordByuser(username,category);//去test_record

表查询有无考试记录

valid=0;//控制返回值,自己可以自由修改。

if( valid==0 ){

Calendar cl = tance();//java util 包 表提供的系统时间

Calendar

long starttime = eInMillis();//得到当前时间的毫秒数

long endtime = starttime+1800000;

InactiveInterval(3600); //设置session的存活时间

ribute("username",username);

ribute("endtime",endtime);

List tmid = new ArrayList();//指定传入的类型 建立

一个集合 准备存放抽到的题目的ID号

(0);//设置默认值0

ribute("tmid",tmid);

int fenshu =0;

ribute("fenshu",fenshu);

List ddcount = new ArrayList();

ribute("ddcount",ddcount);

List allwts = new ArrayList();//建立问题question

22

Java Web应用开发——在线模拟考试系统的设计与实现

对应的实体类 来存放查到的题目信息

List listsId = QInfoCount(category);//某个科有多少

个问题

int qnum = QNum(category);//共需要几个问题

ribute("qnum",qnum);

Random rand = new Random();//Java提供的得到数字的类

for( int a=0;a

int hao = t(()-1);//取一个随机数,不超过题目的

总数 t()取一个随机数

for( Integer vd:tmid ){//去掉重复的题 泛型循环 if( vd==hao ){

hao = t(()-1);//如果重复再重新抽,即重新生

成一个随机数

}

}

int bcid = (hao);//根据抽到的数得到该题目的Id号

Question qs = QInfoByid(bcid);//根据Id号查询题目的信息

(qs);//把查到的题目的信息插入到allwts集合中

(hao);//把已经用过的随机数放入集合,防止重复抽题

}

ribute("allwts",allwts);

%>

<%

}else{

ribute("errorInfo","已经答过题了,不能重复答题!

");

%>

<%

}

%>

4.3.2 历史成绩模块

考生点击历史成绩,会先迁移到考试科目选择页面,当考生通过下拉

列表,选中要查询的科目,然后点击确认,会从数据库中提取出考生的成

绩,然后在表格中显示。点击左下角的返回按钮,回到考试科目选择页面,

继续查询其他科目成绩,如图4-5所示:

23

Java Web应用开发——在线模拟考试系统的设计与实现

图4-5 考生成绩查询页面

成绩查询页面主要代码如下所示:

接收上个页面传过来的值

String category = ameter("category");

String[] result = null;

int count = 0;

开始连接数据库

e( "" ).newInstance();

Connection

conn=nection("jdbc:mysql://localhost/Myexam?user=root&password=890

427&useUnicode=true&characterEncoding=gbk");

Statement stmt=Statement();

数据库结果集的数据表

ResultSet rs=null;

ResultSet rr = null;

执行sql语句,查询test_record表中是否有与接收的值相同项

String sqlcount = "select count(*) from test_record where

(category_id='"+category+"' and username ='"+s+"')";

rr = eQuery(sqlcount);

24

Java Web应用开发——在线模拟考试系统的设计与实现

if(()){

将ing字符类型数据转换为Integer整型数据

count = nt(ing(1));

}

定义一个新的字符串数组

result = new String[count];

执行sql语句,查询test_record表

String sql = "select * from test_record where (category_id='"+category+"'and

username ='"+s+"')";

执行刚建立的SQL语句,并把结果返回到结果集对象中

rs = eQuery(sql);

int i=0;

把结果集数据表中的数据附到数组中

while(()){

result[i++] =

ing(1)+":"+ing(2)+":"+ing(3)+":"+ing(4)+":"+

String(5);

循环输出所有项

<% for(int k=0;k<;k++) { %>

查询category表,显示出科目名称

<%String sql2 = "select category_name from category where category_id ='"+category+"'";

执行刚建立的SQL语句,并把结果返回到结果集对象中

rs = eQuery(sql2);

String rs1=null;

if(()){

rs1= ing(1);

n(rs1);

} %>

<%n(rs1);%>

取出表的第4列并显示出来

<%=result[k].split(":")[3] %>

25

打印出结果

Java Web应用开发——在线模拟考试系统的设计与实现

取出表的第5列并显示出来

<%=result[k].split(":")[4] %>

4.3.2 修改密码模块

考生可以通过修改密码模块,来修改自己登录本考试系统的登录密码。

在修改页面中,需要填写原密码、新密码和确认新密码。当考生忽略其中

一项没有填写或者输入的新密码和确认密码不一致,会有提示信息,某项

不能为空或密码不一致;当考生都输入完毕后,点击修改按钮,系统通过

后台,连接数据库来确认考生输入的原密码和用户名是否匹配,如果匹配,

那么更新数据库,把原密码替换掉,然后转到修改密码成功页面;若不匹

配,则直接转到修改密码失败页面,修改密码页面如图4-6所示:

图4-6 考生修改密码页面

4.4 教师模块

教师登录系统后,若用户名和密码正确,直接跳转到教师首页,在此

页面,教师可以选择试题维护、试卷设置、历史成绩、修改密码;根据页

面中间的操作提示,可以知道每个选项都可以进行什么操作。如试题维护

可以对试题进行添加、修改、删除操作。如下图4-7所示:

26

Java Web应用开发——在线模拟考试系统的设计与实现

图4-7教师主页

4.4.1 试题维护模块

教师点击试题维护,首先需要选择要维护的试卷类别,也就是科目名称,

选择好后,点击确认,页面会显示您选择的类别下的所有题目,在该页面

下,教师可以进行对试题的修改,删除和添加操作,当点击不同的操作,

会跳转到不同的页面中,下面是教师对题目进行增、删、改的具体界面以

及执行的主要代码。图4-8为试题列表页面:

图4-8 试题列表页面

1.教师对题目的修改页面:

点击修改,会弹出提示框等待确认,这样减少因为

27

Java Web应用开发——在线模拟考试系统的设计与实现

误点而带来的不必要的麻烦。点击确定后,如果修改成功,会出现修改成

功页面,在该页面中,您可以选择下一步的操作,如点击进入教师主页或

点击进入试题列表页面。如图4-9所示:

图4-9 教师修改试题页面

修改试题操作主要代码:

接收上一个页面传过来的值

String question_id = ameter("question_id");

通过session把question_id传到下个页面

ribute("question_id",question_id);

接收传过来的值并付值给新的变量

String category = ameter("category");

String[] result = null;

int count = 0;

开始连接数据库

e( "" ).newInstance();

加载JDBC驱动程序

Connection

conn=nection("jdbc:mysql://localhost/Myexam?user=root&password=890

427");

Statement stmt=Statement();

结果集初始化为空

ResultSet rs=null;

ResultSet rr = null;

28

Java Web应用开发——在线模拟考试系统的设计与实现

执行sql语句,查询question表

String sqlcount = "select count(*) from question where question_id='"+question_id+"'";

rr = eQuery(sqlcount);

if(()){

count = nt(ing(1));

}

建立一个新的字符串数组

result = new String[count];

执行sql查询语句

String sql = "select * from question where question_id='"+question_id+"'";

rs = eQuery(sql);

int i=0;

把结果集数据表中的数据附到数组中

while(()){

result[i++] =

ing(1)+":"+ing(2)+":"+ing(3)+":"+ing(4)+":"+

String(5)+":"+ing(6)+":"+ing(7)+":"+ing(8)+":"+ing

(9);

}

验证页面接收上个页面传来的值

String s = (String)ribute("question_id");

String category_name = ameter("category_name");

String choice_a = ameter("choice_a");

String choice_b = ameter("choice_b");

String choice_c = ameter("choice_c");

String choice_d = ameter("choice_d");

String answer = ameter("answer");

开始连接数据库

try{

e( "" ).newInstance();

Connection

conn=nection("jdbc:mysql://localhost:3306/myexam?user=root&passwor

d=890427&useUnicode=true&characterEncoding=gb2312");

Statement stmt=Statement();

ResultSet rs=null;

执行sql更新语句

String sql ="update question set

29

Java Web应用开发——在线模拟考试系统的设计与实现

choice_a='"+choice_a+"',choice_b='"+choice_b+"',choice_c='"+choice_c+"',choice_d='"+ch

oice_d+"',subject='"+subject+"',answer='"+answer+"' where question_id ='"+s+"'";

如果修改成功,会提示:“修改试题成功!”

2.教师对题目的删除操作:

点击删除,依旧会有提示框弹出,点击确定,后台

会直接连接数据库,删除选中的项,当删除成功后,会直接跳转到成功页

面。以下是删除的sql语句:

String sql="delete from question where question_id='"+question_id+"'" ;

3.教师对题目的添加操作:

当点击添加新问题按钮,会跳转到试题添加页面,

在此页面,先选中要添加的试卷类别,然后依次输入题目,选项,正确答

案,点击提交按钮,后台会搜索题库,如果该题目没有出现过,那么将其

添加到数据库,并且跳转到添加成功页面,反之,会跳转到添加失败页面。

如图4-10所示:

图4-10 教师添加试题页面

执行添加试题的主要代码如下:

接收上个页面传过来的值

String category_id = ameter("category");

String subject = ameter("subject");

String choice_a = ameter("choice_a");

String choice_b = ameter("choice_b");

String choice_c = ameter("choice_c");

String choice_d = ameter("choice_d");

30

Java Web应用开发——在线模拟考试系统的设计与实现

String answer = ameter("answer");

开始连接数据库

try{

e( "" ).newInstance();

加载JDBC驱动程序

Connection

conn=nection("jdbc:mysql://localhost:3306/myexam?user=root&passwor

d=890427&useUnicode=true&characterEncoding=gb2312");

Statement stmt=Statement();

ResultSet rs=null;

执行查询sql语句,验证在该类别下该题目是否存在

String sql="select * from question where category_id like '"+category_id+"'and

subject like'"+subject+"'";

rs=eQuery(sql);

如果存在,提示:“您好,该题目已经存在 ,请确定后再次加入试题!”,如果表中不存在,那

么执行插入SQL语句

sql ="insert into

question(category_id,subject,choice_a,choice_b,choice_c,choice_d,level,answer)

values('"+category_id+"','"+subject+"','"+choice_a+"','"+choice_b+"','"+choice_c+"','"

+choice_d+"','"+level+"','"+answer+"')";

int temp = eUpdate(sql);

插入成功后,提示:“恭喜您添加试题成功!”

4.4.3 历史成绩模块

教师点击历史成绩模块,会先选择要查看的试卷类别,选择好后点击确

定,会有成绩统计表,包含科目、分数段和各个分数段下的人数统计,教

师可以通过该表来判断下教学成果如何,如图4-11所示:

31

Java Web应用开发——在线模拟考试系统的设计与实现

图4-11 教师成绩统计页面

执行成绩统计主要代码如下:

接收上个页面传过来的值

String as = ameter("category");

e( "" ).newInstance();

开始连接数据库

加载JDBC驱动

Connection

conn=nection("jdbc:mysql://localhost/Myexam?user=root&password=890

427");

Statement stmt=Statement();

结果集初始化为空

ResultSet ra=null;

ResultSet rb = null;

ResultSet rc = null;

ResultSet rd = null;

ResultSet re = null;

ResultSet rs = null;

执行查询语句统计小于60分的人数

String sqlcount = "select count(*) from test_record where category_id = '"+as+"' AND

test_result<'60'";

ra = eQuery(sqlcount);

String result = null;

while(()){

32

Java Web应用开发——在线模拟考试系统的设计与实现

result = ing(1);

}

执行查询语句并统计大于等于60分小于等于69分的人数

String sqlcount1 = "select count(*) from test_record where category_id = '"+as+"'

AND test_result<='69'and test_result>='60'";

rb = eQuery(sqlcount1);

String result1 = null;

while(()){

result1 = ing(1);

}

执行查询语句并统计大于等于70分小于等于85分的人数

String sqlcount2 = "select count(*) from test_record where category_id = '"+as+"'

AND test_result<='85'and test_result>='70'";

rc = eQuery(sqlcount2);

String result2 = null;

while(()){

result2 = ing(1);

}

执行查询语句并统计大于等于86分小于等于99分的人数

String sqlcount3 = "select count(*) from test_record where category_id = '"+as+"'

AND test_result<='99'and test_result>='86'";

rd = eQuery(sqlcount3);

String result3 = null;

while(()){

result3 = ing(1);

}

执行查询语句并统计大于等于100分的人数

String sqlcount4 = "select count(*) from test_record where category_id = '"+as+"'

AND test_result='100'";

re = eQuery(sqlcount4);

String result4 = null;

while(()){

result4 = ing(1);

}

显示各成几段的人数

60分以下

<%=result %>

33

Java Web应用开发——在线模拟考试系统的设计与实现

60~69分

<%=result1 %>

70~85分

<%=result2 %>

86~99分

<%=result3 %>

100分

<%=result4 %>

4.5 管理员模块

管理员验证密码成功登录系统后,进入管理员首页如下图4-12所示:

图4-12管理员主页

管理员登录到管理员主页后,会看到有2个权限,一个为考生管理,另

一个为教室管理。在页面中央,管理员可以看到相关操作的一些说明,对

系统的操作有个初步的了解。

34

Java Web应用开发——在线模拟考试系统的设计与实现

4.5.1 考生管理

管理员在该模块中,可以对已经注册过的考生进行删除操作,对还未注册

的,可以直接添加该考生。如图4-13所示:

图4-13 考生管理页面

点击删除,会弹出提示框,点击确定按钮,后台连接数据库,从user表中删除该

考生,执行代码与教师删除试题类似,只是连接数据库表不同。

删除学生的sql语句:

String sql="delete from user where user_id='"+user_id+"'" ;

删除教师的sql语句:

String sql="delete from teacher where teacher_id='"+teacher_id+"'" ;

点击添加新用户按钮,会跳转到添加页面,在此页面中,需要管理员填写用户名、

密码、确认密码、真实姓名,该页面与注册页面基本相同,其主要执行代码也与注册页

面执行的代码类似。在此就不列举了。

执行添加的sql语句是:

sql = "insert into user(username,password,realname)

value('"+username+"','"+password+"','"+realname+"')";

35

Java Web应用开发——在线模拟考试系统的设计与实现

第五章 系统测试

5.1什么是软件测试

软件测试是在软件投入运行前,对软件需求分析、设计规格说明书和编

码的最终的复审,是软件质量保证的关键步骤。确切的说,软件测试就是

为了发现错误而执行的过程。一般分为两个阶段:

1.单元测试:在编完模块后进行测试;

2.综合测试:在开发完软件后进行综合测试。

5.2软件测试的目标与方法

G. Myers 给出了关于测试的一些规则,这些规则可以看作是测试的

目标或定义:

1.测试是为了发现程序中的错误而执行程序的过程;

2.好的测试方案是极可能发现迄今为止尚未发现的错误的测试;

3.成功的测试是发现了至今为止尚未发现的错误的测试。

测试任何软件都有两种方法:黑盒测试和白盒测试法。

黑盒测试法(又称功能测试法)是把程序看成一个黑盒子,完全不考虑

程序的内部结构和处理过程,是在程序接口进行的测试,它只检查程序功

能是否按照规格说明书的规定正常使用。

白盒测试法(又称结构测试法)是把程序看成装在一个透明的白盒子里,

也就是完全了解程序的结构和处理过程,这种方法按照程序内部的逻辑测

试程序,检验程序中的每条通路是否都能按照预定要求正确工作。

5.3测试内容

考生注册功能-点击注册按钮,跳转到注册页面,输入一个已经注册成

功的用户名,填写完其他项,点击注册,提示该用户名已经存在,与预期

效果相同。

考生修改密码功能-在修改页面填写原密码,新密码和确认新密码项填

写不同,但是也提示修改成功,与预期效果不同,经查询代码发现,sql语

句的限制条件出现问题,导致最后这种效果,最终经修改、测试,达到预

期效果。教师修改密码的测试与考生类似,不一一列举。

考生成绩查询功能-先选择要查询的试卷类别,然后在页面中显示出考

试的成绩以及考试时间,与预期效果相同。

教师对题目的增加、删除、修改功能-填写好题目的内容,然后进行添

加,但是当插入数据库的时候,跳转的页面显示不出提示信息,经查阅资

料后得知,是因为插入中文问题,修改了数据库的字符类型后,成功添加,

36

Java Web应用开发——在线模拟考试系统的设计与实现

达到预期效果。删除和修改功能与预期效果相同。

管理员对考生的删除功能-点击删除,出现提示框,是否确认删除,点

击确定后,实现删除,与预期效果相同;对教师的删除功能也是按照此步

骤,与预期效果相同。

其他的功能的测试也如上面一样进行,测试结果与预期结果一致。

5.4系统的不足和展望

对于本次做的网上考试系统有很多的不足和不完善的地方。比如系统的

有些功能操作不够人性话,提示不够准确,对管理信息的设置很不完善。

在系统模块的实现上,由于本人学业不精,导致做的都非常复杂;没有设

置公共页面,在修改的时候会非常的繁琐,是以后提升的重要点。在页面

美化上,没有做的很好,只是基本功能能够实现了,但在今后的学习上,

会更加注意这一点。在教师成绩统计的页面,没有考虑到不同时期考试的

成绩累加问题,这个也需要我再继续完善下该系统。在数据库表方面,表

的关联性运用的不是很好,只是一些内容得到了关联,使用了外键,由于

前期设计是没有想的很全面,导致了到最后的复杂性,需要在今后的工作

和学习中不断的积累经验,要有个全局的思想。

在当今信息时代,计算机技术与网络技术越来越广地成熟的应用于各个

领域,同时也影响了教育领域的重大变革,网上考试系统也将更多更好的

应用在教育教学领域中。以后的网上考试系统将会更加完善使用。

37

Java Web应用开发——在线模拟考试系统的设计与实现

结束语

通过这次项目实训设计,对很多东西有了新的认识和新的见解,认识问题的和思考

解决办法有了本质上的进步,特别是对一个系统开发的模式有了更深的认识,对专业技

能的运用更熟练。

网上考试系统的开发过程中也遇到了很多问题,开始做需求时不确定考试系统到底

应该具备那些功能,只知道主要功能就是有试题能考试,但具体流程,怎样实现这些功

能就很模糊,所以查看了很多资料才理清楚。数据库设计也是个难点,不明确要实现哪

些功能就不能很好的把数据库设计好。设计数据库就是开发一个系统的核心。设计数据

库一定要思路清晰,各个数据的流向各个表之间的关系一定要弄清楚,透彻。数据库设

计出错了对以后整个系统的影响是最直接的。所以做需求时一定要做好需求分析,考虑

完善,数据库设计要谨慎。总之需求分析时能做好就能降低需求变更,再加上设计时考

虑到的技术可行性就可以大幅度的降低需求变更。

最终还是完成了预定的需求功能。看到自己独立完成并可以使用的系统给了我很大

信心。在本系统的设计过程和论文编写过程中,很多老师、同学都给与了我许多无私的

帮助,尤其是我的导师给我的论文提出了很多宝贵的修改意见,在这里我向这些无私帮

助我的人表示衷心的感谢。

网上考试系统给我获得了实践中再学习的机会。通过独立完成网上考试系统后,了

解了其实自己还有很多很多的东西还不知道,还需要再学习。以为四年的学习时间很长,

可以学到很多知识,其实老师所教的知识还远远不够,但老师给了我们学习新知识新技

术的方法,让我们能自己学习,自己去摸索,这一点是最重要的。

所以感谢每一位任课的老师,是他们对我们高度负责的态度,含辛茹苦的教导才使

得我们学到了将会受益终生的知识教诲。特别要感谢的是我的毕业设计指导老师XXX老

师,在此致以万分感谢!

最后,感谢曾给过我帮助的同学和朋友,愿他们心想事成。

38

Java Web应用开发——在线模拟考试系统的设计与实现

参考文献

[1]孙鑫.Java Web开发详解:XML + XSLT + Servlet +JSP深入剖析与应用实例[M].北京:电子工

业出版社,2006.

[2]计磊,李里,周伟.精通J2EE整合应用案例[M].北京:人民邮电出版社,2006.

[3]孙卫琴,李洪成. Tomcat与Java Web开发技术详解[M].北京:电子工业出版社,2004.

[4]唐有国,湛洪波.编著.JSP网站开发详解[M].北京:清华大学出版社,2008

[5]王红.Java Web应用开发技术实用教程[M].北京:水利水电出版社,2008.

[6]林建素,孟康健.Eclipse开发学习笔记[M].北京:电子工业出版社,2008.

[7]孙卫琴.Tomcat与Java Web开发技术详解(第2版)[M].北京:电子工业出版社,2009.

[8]卢菊平,郭江杰.精通JSP+XML+CSS网络开发混合编程[M].北京:电子工业出版社,2006.

[9]封超,晁阳.Tomcat与Java Web开发技术详解[M].北京:清华大学出版社,2008.

[10]梁立新.项目实践精解:JAVA Web应用开发[M].北京:电子工业出版社,2007.

[11] Bruce Eckel. Thinking in Java (3rd Edition)[M].机械工业出版社,2009.

[12] Bruce Tate. Bitter Java[M]. Manning Publications,2002

39

2024年5月29日发(作者:练天亦)

在线考试

题 目:

Java Web应用开发——

在线模拟考试系统的设计与实现

学 院: 软件工程与服务外包学院

专 业: 软件技术

学生姓名: XXX 班级/学号 软工XXXXXXXXX

指导老师/督导老师: XXX

摘要

摘 要

随着网络技术的发展,远程教育和网上考试成为网络应用的一个重要

方面。近几年,在线考试特别是基于Web 的在线考试系统受到越来越多的

人青睐。

本次项目实训的题目是在线模拟考试系统的设计与实现,系统采用浏

览器/服务器模式开发,包括登录注册、在线考试、试卷设置、试题管理、

分数的统计以及成绩查询等功能。系统运行在Windows 操作系统上,以

Tomcat作为Web服务器,使用SSH+JSP技术和MySQL 数据库实现。

关键词:在线考试;浏览器/服务器;JSP;MySQL;JDBC;

I

目录

目录

摘 要 ............................................................................................................................................................ I

第一章 项目概述 ........................................................................................................................................... 1

1.1 开发背景 ................................................................................................................................................. 1

1.2 开发意义 ................................................................................................................................................. 1

1.3开发工具 .................................................................................................................................................. 2

第二章 系统分析 ........................................................................................................................................... 6

2.1 现状分析 ................................................................................................................................................. 6

2.2 可行性分析 ............................................................................................................................................. 6

2.3 设计目标 ................................................................................................................................................. 7

2.4 功能要求 ................................................................................................................................................. 8

2.5 系统开发环境配置 ................................................................................................................................. 9

第三章 系统设计 ......................................................................................................................................... 10

3.1数据库设计 ............................................................................................................................................ 10

3.2系统结构设计 ........................................................................................................................................ 13

3.3用户界面设计 ........................................................................................................................................ 14

第四章 系统实现 ......................................................................................................................................... 17

4.1 数据库连接的实现方法 ....................................................................................................................... 17

4.2 登陆注册模块 ....................................................................................................................................... 18

4.3考生模块 ................................................................................................................................................ 21

4.4 教师模块 ............................................................................................................................................... 26

4.5 管理员模块 ........................................................................................................................................... 34

第五章 系统测试 ......................................................................................................................................... 36

5.1什么是软件测试 .................................................................................................................................... 36

5.2软件测试的目标与方法 ........................................................................................................................ 36

5.3测试内容 ................................................................................................................................................ 36

5.4系统的不足和展望 ................................................................................................................................ 37

结束语 ........................................................................................................................................................... 38

参考文献 ....................................................................................................................................................... 39

II

目录

III

Java Web应用开发——在线模拟考试系统的设计与实现

第一章 项目概述

1.1 开发背景

随着我国计算机技术和通讯技术的发展,互联网的普及程度已经很广

泛了,但是,现在的教育教学检验方式,还是停留在过去的纸质考试层面

在,而传统的教育教学检验方式中,要进行一次考试,至少需要经过教师

出题、学生考试、教师阅卷等几步,这是一个繁杂的过程,需要大量人力、

物力与时间的投入,同时也让教师的工作量越来越大;现在远程教育类学

校的增多,虽然利用了网络拉近了教师与学生的距离,但学生的分布过广,

导致了不易统一集中安排考试,考生成本的增加等诸多难题的出现,给校

方和学生带来了很多的不便,因此,传统的考试方式已经不能适应现在新

兴的教育教学方式的考试需要了。可以解决这些诸多难题的一种方式,就

是利用Internet无国界的特点,在互联网上在线考试。

在线考试系统可以减轻教师的工作负担、提高工作效率,也减少了因

考试而消耗不必要的人力和物力。在线考试的题目由计算机从题库中随机

抽取,提高了考试的质量,考试的评判由计算机自动完成,这样使考试更

趋于公证、客观。随着社会的发展和我国互联网的普及,我们的生活中的

已经有很多方面都运用到了网络,比如网上购物,网上交友等,甚至现在

很多人看新闻都是通过网络阅读的,在阅读新闻这个事件上,已经不仅仅

局限于纸质化的报纸上了;而要把考试趋于无纸化的模式,需要在线模拟

考试系统来完成,这个也是现在高等教育发展的一个需求。

在国内,试题库系统理论与技术的研究在最近几年取得了很大的进步。

我国许多企业和高校都投入量大量的人力物力到各门课程的试题库中,并

取得了一定的成就。现在的生活中已经有越来越多的等级考试运用了在线

考试系统,比如会计的电算化考试、计算机等级考试、银行资格证考试等,

这些已经充分说明,在线考试系统是今后我们的考试生涯中的一个发展趋

势。

1.2 开发意义

考试是教育中一个非常重要的环节,但在以前的很长时间里,全球所有

的国家都是以笔试的方式来检查焦距教学成果的,随着网络的发展,互联

网已经普及的非常广泛,随着这些周围环境的改变,人们开始去寻找新的

方式来去达到更客观,更方便快捷的去达到考试的目的。近些年来,在国

外,已经投入使用的考试系统有著名的TOEFL,GRE网上考试系统,还有微软、

思科等大公司的国际认证考试等,这些考试系统在全球范围内有众多的使

1

Java Web应用开发——在线模拟考试系统的设计与实现

用者。网络化考试系统对节约考试成本,实现远距离的同步考试,提高考试

效率,确保考试结果的公平、公正、科学、及时等具有重要的意义,不仅

可以动态地管理考试信息,而且还提高了教学的灵活性,相信随着技术的

不断发展和网络覆盖面的不断扩大,在不断完善该考试系统的同时也会在

更大的范围上应用。

1.3开发工具

本系统是基于Tomcat为服务器,SSH+JSP+MySQL数据库技术实现的一个

简单的在线考试系统.

1.3.1动态网页开发技术—JSP(Java Server Page)

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司

参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是

在传统的网页HTML文件中插入Java程序段和JSP标记,从而形成JSP文

件。 用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其

他操作系统上运行。

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装

产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于

服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可

重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将

执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序

段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。

JSP与Java servlet一样,是在服务器端执行的,通常返回该客户端的就

是一个HTML文本,因此客户端只要有浏览器就能浏览。

JSP页面由HTML代码和嵌入其中的Java代码所组成。Java servlet 是

JSP的技术基础,而且大型的Web应用程序的开发需要Java servlet和JSP

配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有

平台无关性且安全可靠,主要面向因特网的所有特点。

1.JSP技术的强势

(1)一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之

外,代码不用做任何更改。

(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在

任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是

现而易见的。

2

Java Web应用开发——在线模拟考试系统的设计与实现

(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行servlet/JSP,

到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,

消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。

(4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有

了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经

可以顺利的运行于多种平台之下。

2. JSP技术的弱势

(1) 与ASP一样,Java的一些优势正是它致命的问题所在。正是由于为

了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。

(2) Java的运行速度是用class常驻内存来完成的,所以它在一些情况

下所使用的内存比起用户数量来说确实是“最低性能价格比”了。从另一

方面,它还需要硬盘空间来储存一系列的.java文件和.class文件,以及

对应的版本文件。

1.3.2 数据库—MySQL

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,

在2008年1月16号被Sun 公司收购。MySQL被广泛地应用在Internet上

的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放

源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL

作为网站数据库。如雅虎、阿尔卡特—朗讯、Google公司、诺基亚公司、

百度等公司就采用了MySQL数据库。MySQL数据库可以称得上是目前运行速

度最快的SQL语言数据库。除了具有许多其它数据库所不具备的功能和选

择之外,MySQL数据库是一种完全免费的产品,用户可以直接从网上下载.

MySQL数据库主要有以下特点:

1、可移植性

使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移

植性。

2、可扩展性和灵活性

MySQL可以支持UNIX、Linux和SUN OS以及Windows等多种操作系统

平台。在一个操作系统中实现的应用可以很方便地移植到其他操作系统。

MySQL作为开源性质的 数据库服务器,可以为那些想要增加独特需求的用

户提供完全定制的功能。

3、强大的数据保护功能

MySQL有一个非常灵活且安全的权限和密码系统。为确保只有获授权用

户才能进入该数据库服务器,所有的密码传输均采用加密形式,同时也提

供了 SSH和SSI。支持,以实现安全和可靠的连接。MySQL强大的数据加密

和解密功能,可以保证敏感数据不受未经授权的访问。

4、支持大型的数据库

3

Java Web应用开发——在线模拟考试系统的设计与实现

虽然对于用PHP编写的网页来说,只要能够存放数百条以上的记录数

据就是够了,但MySQL可以方便地支持上千万条记录的数据库。作为一个

开放源代码的数据库,MySQL可以针对不同的应用进行相应的修改。

5、超强的稳定性

MySQL拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持

续使用而不必担心其稳定性。线程是轻量级的进程,它可以灵活地为用户

提供服务,而不占用过多的系统资源。用多线程和C语言实现的MySQL能

很容易地充分利用CPU。

6、强大的查询功能

MySQL支持查询的select和where语句的全部运算符和函数,并且可

以在同一查询中混用来自不同数据库的表,从而使得查询变得快捷、方便。

1.3.3 Tomcat介绍

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,是Apache

软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一

些学校及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet

和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet

2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而

深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流

行的Web 应用服务器。

Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩

展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还

在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中

加入新的功能。

Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用

户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一

个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可

利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器

的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个

与Apache 独立的进程单独运行的。

自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成

GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提

供Web服务的JSP服务器,当然同时也支持Servlet, 这样Tomcat就诞生了。

Tomcat是jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑

选为2001年度最具创新的java产品,同时它又是sun公司官方推荐的

servlet和jsp容器,因此其越来越受到软件公司和开发人员的喜爱。

servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。其次,

4

Java Web应用开发——在线模拟考试系统的设计与实现

Tomcat也是完全免费的软件,任何人都可以从互联网上自由地下载。

5

Java Web应用开发——在线模拟考试系统的设计与实现

第二章 系统分析

2.1 现状分析

传统的考试方式是教师提前命题、印刷试卷、组织学生考试、学生在

统一时间和地点考试、收卷后教师阅卷、成绩统计。如图2.1

教师提前命题

印刷试卷

组织学生考试

成绩统计

教师阅卷

学生统一考试

图2.1 传统考试模式

这种模式存在有较多的问题:

命题:由于是同意的时间进行考试,所以考生的试卷都是一样的,这

样对教师命题带来的很大的麻烦,即:试题太难或者太容易,都达不到考

试的目的。如果是大型的考试,比如英语四级考试,还要担心试题是否被

泄漏的等问题(现在已经有类似问题的出现,才会有现在说的花卷)。

印刷试卷:组织考试,印刷试卷费工费时,成本高,而且对于纸张资

源也是一种浪费,而且印刷的时候,也会担心试题被泄漏的问题。

组织学生考试:监考人资源的浪费,和教师资源的匮乏,如何调配也

是一个难题,如果是全国统一考试,还要涉及不同区域同时考试的问题。

学生统一考试:由于是同一时间,同一地点,同一张试题,考生作弊

问题便会出现,而且是非常难解决的问题,再加上每个监考员监考的严格

程度不同,这些人为因素难控制,使考试难公平,公正。

教师阅卷:教师阅卷比较容易出错,会造成人为的不公正性。

成绩统计:当成绩录入时,数字的混乱会导致录入者输入错误或者看

错。

2.2 可行性分析

可行性分析也称为可行性研究,即是在系统调查的基础上,针对新系

统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、管理

的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行

性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解

决。该系统的可行性分析包括以下几个方面的内容。

6

Java Web应用开发——在线模拟考试系统的设计与实现

2.2.1经济可行性

在线考试必然会在今后的教学管理上成为主要的考试形式。开发一套

能满足一般考试的需要,并实现试卷生成、评判自动化的在线考试系统。

在减少由于人为原因导致试卷阅卷的不公正的同时,也可以让教师的工作

量得以减少,有更多的时间去备课教学。本系统如果用在一些辅助教育类

的网站上,那经济效果是很明显的;如果是用在学校的教学管理上,会得

以发挥其潜在的经济效益,比如印刷试卷的费用等。因此,本系统在经济

上是可行的。

2.2.2 技术可行性

技术上的可行性分析主要分析技术条件是否能顺利完成开发工作,硬、

软件能否满足开发者的需要等。

硬件方面,硬件的更新速度之快,可靠性越来越高,目前一般的硬件

平台均能满足次系统的需要。

软件方面,编程的软件以及Web服务器等均已具备,并且环境变量已

经搭好,数据库用MySQL存储大量的数据,MySQL开源化,目前已经很成熟,

在灵活、安全和易用方面均能提供良好的支持。因此,系统的软件开发平

台已经成熟可行。

2.3 设计目标

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

1.

本系统提供给管理员类用户、教师类用户及学生类用户使用。不同的用

户类型所能完成的功能不同。管理员类用户可以对于已经注册的考生及

系统中已经存在的教师进行删除操作,对于未注册过的考生及系统中未

存在的教师进行添加操作;教师类用户可以创建试题、删除试题、修改

试题,也可进行试题维护、修改密码以及对成绩的统计;学生类用户主

要是参与考试,完成试卷,查询成绩。

2.

考试数据的存放和处理过程必须保密,需要一定的安全性保障若考生需

要查卷,经审核方可以。

3.

题目的选择具有稳定性、随机性。稳定性就是每张试卷总体的难易程度

要近似一样,保证每一次考试对每一个考生是公平的,随机性可以避免

作弊的发生。

4.

适时的试题题库更新,试题题型包括判断题、选择题类型。试题库的更

新由管理员类用户完成。学生类用户不允许对试题进行更新。

5.

实现现代考试网络化。

7

Java Web应用开发——在线模拟考试系统的设计与实现

2.4 功能要求

系统具备的基本功能:

1.用户登录及注册-对用户进行识别、验证;没有注册的用户跳转到用户

注册页面;

2.考试模块-考生选择自己想要参加的考试类别,并进行考试,考试完成

以后可以获得当

考试成绩。

3.历史成绩模块-考生可以看到自己以前参加的考试成绩。以对自己的进步

状况进行一次把握。

4.试题维护模块-教师选择试题的类别,然后针对该试题分类中的所有试题

进行维护,可以添加新题目,也可以对现在有的题目进行修改或者删除

处理。

5.试卷设置模块-教师对题库中的题目按照一定分类标准存放,包括分类的

添加、修改和删除操作等。

6.历史成绩管理模块-教师可以看到模式体分类的整体考试情况,考试成绩

分布情况,可以判断出题库中的题目难以水平,并可以在以后的维护中

做出适当调整。

7.考生管理-系统管理员可以对已经注册的考生进行删除操作,对于未注册

的考生进行增加操作。

8.教师管理-系统管理员可以对系统已经存在的教师进行删除操作,对于未

在系统中存在的教师进行增加操作。

9.修改密码模块-教师和考生可以在已经登录成功的页面点击修改密码,可

以修改本人登录此考试系统的登录密码。

除了实现上述功能以外,在线考试系统还应该具有简洁、易用的界面,

安全性要高,稳定性要强。

根据以上的需求分析,画出本系统的Use Case图,如图2.2所示:

考生

注 册 试题维护

考生管理

登 录

教师管理

管理员

教师

在线考试

试卷设置

8

历史成绩

Java Web应用开发——在线模拟考试系统的设计与实现

图2.2 在线考试系统的Use Case图

修改密码

历史成绩

管理

2.5 系统开发环境配置

1. 操作系统:Windows xp

2. 内存:4G

3. CPU:2.00GHZ

4. Java平台:JDK 5.0

5. Web服务器:Tomcat6.0

6. 数据库服务器:MySQL

7. 开发平台: MyEclipse6.0

9

Java Web应用开发——在线模拟考试系统的设计与实现

第三章 系统设计

3.1数据库设计

在对网上考试系统数据库部分进行设计的过程中,通过对系统功能进

行需求分析得到系统的基本信息表,详细设计过程如下介绍。

3.1.1 数据库需求分析

需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户

的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否

合理和实用。对于本系统而言,系统的角色分为管理员、教师、学生,这

需要3个表,而考生考试,需要一个存放题库的表,考试的类别不同,也

需要一个存放类别的表,考生考试完毕后,需要一个存放考试成绩的表。

综合以上分析,要实现上面的所有功能模块,数据库共要设计六个表,

它们分别是:试卷类别表、用户表、用户成绩表、教师表、管理员表、题

库表。

3.1.2 数据库表设计

用户信息表,用来存放考生信息,如表3-1所示:

表3-1用户信息表

字段名 类型 长度 是否为主可否为说明

键 空

user_id int 11 是 否 用户的id

username varchar 20 否 否 登录用户

password varchar 20 否 否 用户登录

密码

realname varchar 20 否 否 用户真实

姓名

教师信息表,存放教师信息,如表3-2所示:

表3-2教师信息表

字段名 类型 长度 是否为主可否为说明

键 空

teacher_id int 11 是 否 教师的id

teachername varchar 20 否 否 教师登录

10

Java Web应用开发——在线模拟考试系统的设计与实现

password

realname

varchar

varchar

20

20

教师登录

密码

教师真实

姓名

管理员信息表,存放管理员信息,如表3-3所示:

表3-3管理员信息表

字段名 类型 长度 是否为主可否为说明

键 空

adusername varchar 20 是 否 管理员登录

password varchar 20 否 否 管理员登录

密码

realname varchar 20 否 否 管理员真实

姓名

题库信息表,存放考试题目以及答案等信息,如表3-4所示:

表3-4题库信息表

字段名 类型 长度 是否为主可否说明

键 为空

question_id int 10 是 否 试题编号

category_id int 10 否 否 试题分类编

subject varchar 300 否 否 题目

choice_a varchar 100 否 否 选项A

choice_b varchar 100 否 否 选项B

choice_c varchar 100 否 否 选项C

choice_d varchar 100 否 否 选项D

answer char 10 否 否 正确答案

成绩表,存放考生考试时间以及成绩等信息,如表3-5所示

11

Java Web应用开发——在线模拟考试系统的设计与实现

字段名

record_id

类型

int

表3-5成绩表

长度 是否为主

10 是

20

10

username varchar

category_id char

test_time char 14 否

test_result int 11 否

试卷类别表,存放试卷类别信息,包括试卷分类名称、试卷题目等,如表

3-6所示

表3-6试卷类别表

字段名 类型 长度 是否为主可否为说明

键 空

category_id int 11 是 否 试题分类

编号

category_name varchar 20 否 否 试题分类

名称

question_number int 10 否 否 试题数目

3.1.3数据库逻辑结构设计

1. 关系图

可否为说明

否 考试记录编

否 考试用户名

否 试题分类编

否 考试时间

否 考试成绩

本系统各表之间的关系如下图3-1示:

12

Java Web应用开发——在线模拟考试系统的设计与实现

图3-1关系图

2.完整性设计

完整性要求用于描述各种信息之间的制约关系以及关联关系,各个数据

项的取值范围以及各个数据项是否可以取值。根据实际需要,采取一定的

手段来满足用户的完整性需求。域完整性约束要求属性值必须在域中。实

体完整性约束要求主键必须唯一且不能为空。如用户信息表中的用户名设

置为主键,并且要求唯一且不能为空。

3.2系统结构设计

网上考试系统是一个典型的数据库应用程序,主要有管理员、教师和

学生三大模块组成,各模块功能如下:

管理员模块:该模块包含2个功能,一个为考生管理,系统管理员可以

对已经注册的考生进行删除操作,对于未注册的考生进行增加操作;另一

个为教师管理,系统管理员可以对教师进行增加、删除操作。

教师模块:该模块包含4个功能,分别为试卷设置、试题维护、历史成

绩、修改密码。教师成功登录该系统后,能够进行修改个人信息,添加、

修改、删除试题、试卷类别操作,也可对考生的成绩进行统计。

学生模块:该模块包含3个功能,分别为开始考试、历史成绩、修改密

码。学生成功登录该系统后,能够进行考试、查询成绩、修改密码。

系统功能结构如图3-2所示:

学生模块 教师模块

管理员模块

系统功能

图3-2系统功能结构图

13

Java Web应用开发——在线模拟考试系统的设计与实现

3.3用户界面设计

页面上部采用一个Logo图片和适当的标识,表明当前的系统名称。接

下来是帮助连接和退出系统的连接。然后下部页面的主题分为左右两部分,

左边是导航模块部分,其中放置迁移到不同功能模块的链接按钮,右边是

页面的主要操作区域,不同页面的不同显示主要在此体现。

学生角色的模版页面如图3-3所示:

在线考试系统

Logo图片。。。。。。。

帮助 退出登录

欢迎您!XXX

开始考试

历史成绩

修改密码

图3-3 学生角色模版

每个模块都包含多个页面,再次挑选几个比较低型或者重要的页面进行

详细描述。其他的页面结构比较类似或者比较简单,不一一详述。

学生开始考试的时候,首先需要选择试卷类型,或者也可以叫做试题分

类。在此页面中采用下拉列表框的形式进行,如图3-4所示:

在线考试系统

Logo图片。。。。。。。

帮助 退出登录

欢迎您!XXX 请选择试题的分类:

开始考试

历史成绩

14

会计基础 确定

Java Web应用开发——在线模拟考试系统的设计与实现

修改密码

图3-4 试题分类选择页面草图

选择试题分类以后,即是学生答题页面。答题页面的主体应该是试题和

试题的选项。考虑到本系统需要在题目结束以后立即知道考试结果,所以

决定采用所有试题的形式都是ABCD型的选择题,页面应该针对这些题目选

项设置单选按钮。

在答题内容的上方,应该能够给考生信息,说明当前的题目是全部题目

的第几道,以及总共有几道题,使得考生可以把握整个考试进度。

同时考虑到考生在时间允许的情况下,需要在题目间前后迁移,所以在题

目的下方,还应该有前后翻页的按钮。

对应教师角色的模版略有不同,模块多了几个,而且页面顶端的标识

也有所区别。对应的模版页面如图3-5所示。

在线考试系统(管理界面)

Logo图片。。。。。。。

帮助 退出登录

欢迎您!XXX

试题维护

15

Java Web应用开发——在线模拟考试系统的设计与实现

试卷设置

成绩查询

修改密码

图3-11 教师角色模版页面

图3-5 管理员角色模版页面

16

Java Web应用开发——在线模拟考试系统的设计与实现

第四章 系统实现

本系统包括3个不同的角色,即学生、教师、管理员。不同角色的功

能有所不同,学生的功能包括:考试模块,修改密码,成绩查询模块。教

师的功能包括:试卷类别管理、试题管理、修改密码、成绩管理。管理员

的功能包括:教师管理和考生管理。

4.1 数据库连接的实现方法

从系统功能模块划分中可以看出,各模块虽然是独立的,但又统一于同

一数据库中,便于管理员管理维护数据库,同时也便于教师和学生的操作。

在介绍系统各模块的实现方法之前,首先介绍系统与MySQL数据库的连接

方法,再介绍系统主要部分的实现方法。

创建与数据库的连接:

①:首先要将mysql的驱动包放在tomcat/lib目录下;

②:利用语句进行对数据库的操作,以下仅是对用户表查询的语句:

<%@page contentType="text/html;charset=gb2312" %>

<%@page language="java" import=".*" %>

<%

//声明数据库连接对象,初始化为空

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

try

{

//载入MySQL的JDBC驱动类

e("");

//获得数据库连接

String sConn =

"jdbc:mysql://localhost/Myexam?user=root&password=890427";

conn = nection( sConn );

//创建Statement对象

stmt = Statement();

//执行SQL语句

String query = "select * from user";

rs = eQuery( query );

%> catch(Exception e)

17

Java Web应用开发——在线模拟考试系统的设计与实现

{

//获得数据库连接出错

n("error occured!!");

}

finally

{

//释放数据库连接

();

();

();

}

%>

4.2 登陆注册模块

4.2.1 登录模块

用户登录页面比较简单,为防止用户登录的操作错误,应设置错误处理

页面,在登录操作过程中,一般发生的错误有:用户输入了错误的用户名

或密码、用户直接单击了登录按钮,对上述情况的判断就要通过Servlet

文件来实现。当用户登录的时候,输入的帐号或者密码有其中一项为空时,

会有提示框提示,提示您帐号或者密码不能为空。实现这个功能的是用

javascript实现的,具体代码如下所示:

验证输入不为空的脚本代码

在登录页面时,当用户提交了登录资料后,就由“”这个

页面进行验证,它的工作主要是连接到数据库,从数据中找出输入的用户

名和密码并判断其是否一致。如果用户输入了错误的用户名和密码,就会

跳出一个登录失败的页面。

用户可以点击返回按钮回到其刚才登录的界面,然后重新输入用户名

及密码进行再次登录。若用户提交正确的用户和密码后,如果记录验证无

误,就通过JSP重定向语句direct()跳转到相应的主界面。

教师以及管理员的登录验证跟考生相似,只是查询条件和连接的数据

库表不同,以及登陆成功之后,跳转的页面不同。

4.2.2 考生注册模块

在此模块,考生需要填写用户名、密码、确认密码、真实姓名。如若

填写中缺少一项,那么会有提示,其功能也是由上面所说的一样,通过调

用javascript实现的,这里只提供下截图,主要代码如上,如图4-1所示:

图4-1 注册提示页面

当用户填写的内容完全符合注册标准后,点击注册按钮,会转到注册

成功的页面;如若用户名已经被注册,会转到注册失败页面,提醒注册用

户可能是该用户名已经注册。在此只以注册成功的页面为例,如图4-2所

示:

19

Java Web应用开发——在线模拟考试系统的设计与实现

图4-2 注册成功页面

完成注册模块的主要代码如下所示:

首先获取上个页面传过来的数据,用户名、密码、真实姓名

String username = ameter("username");

String password = ameter("password");

String realname = ameter("realname");

n(username); //打印出username

其次开始连接数据库

try{

e( "" ).newInstance();

Connection

conn=nection("jdbc:mysql://localhost:3306/my

exam?user=root&password=890427&useUnicode=true&characterEncoding

=gbk");

Statement stmt=Statement();

ResultSet rs=null;

查询user表,看用户名是否存在

String sql="select * from user where username like

'"+username+"'";

rs=eQuery(sql);

如果存在,提示“ 您好,您注册的用户名已经存在,请重新输入 ”,如

果不存在,把接收过来的值付给新的变量:

String s_username=ameter("username");

String s_password=ameter("password");

String s_realname=ameter("realname");

执行SQL插入语句,把得到的值插入到user表中

sql = "insert into user(username,password,realname)

value('"+username+"','"+password+"','"+r

20

Java Web应用开发——在线模拟考试系统的设计与实现

ealname+"')";

如果插入成功,提示:“恭喜您注册成功!”

4.3考生模块

考生登录系统并且用户名也密码正确后,会直接跳转到学生主页,本

页面中,考生可以在左侧选择自己下一步要做的事情,有开始考试、历史

成绩查询、修改密码。在页面中间,有提示语,告诉考生每个按钮都可以

操作什么功能;若考生对考试流程不太熟悉,可以点击帮助,来查询相关

问题的答案。如图4-3所示:

图4-3考生主页

4.3.1 开始考试模块

考生点击开始考试,会首先弹出关于所选考试科目的一些介绍,比如

考试时间和总共有多少道题目等,然后点击开始考试,倒计时开始,考生

选择上一题,下一题进行答卷,当考生答到最大题数时,下一题变成完成

答卷按钮。点击完成答卷,进入成绩页面,考生可以知道自己的成绩,并

且,成绩通过后台,插入到数据库中。如图4-4所示:

21

Java Web应用开发——在线模拟考试系统的设计与实现

图4-4 考生考试页面

执行的具体代码如下所示:

<%

HttpSession sess=(HttpSession)sion(true);

int category = (Integer)ribute("category");

String username = ameter("username");

MysqlDjtDao md = new MysqlDjtDao(); //引进包

int valid = TestRecordByuser(username,category);//去test_record

表查询有无考试记录

valid=0;//控制返回值,自己可以自由修改。

if( valid==0 ){

Calendar cl = tance();//java util 包 表提供的系统时间

Calendar

long starttime = eInMillis();//得到当前时间的毫秒数

long endtime = starttime+1800000;

InactiveInterval(3600); //设置session的存活时间

ribute("username",username);

ribute("endtime",endtime);

List tmid = new ArrayList();//指定传入的类型 建立

一个集合 准备存放抽到的题目的ID号

(0);//设置默认值0

ribute("tmid",tmid);

int fenshu =0;

ribute("fenshu",fenshu);

List ddcount = new ArrayList();

ribute("ddcount",ddcount);

List allwts = new ArrayList();//建立问题question

22

Java Web应用开发——在线模拟考试系统的设计与实现

对应的实体类 来存放查到的题目信息

List listsId = QInfoCount(category);//某个科有多少

个问题

int qnum = QNum(category);//共需要几个问题

ribute("qnum",qnum);

Random rand = new Random();//Java提供的得到数字的类

for( int a=0;a

int hao = t(()-1);//取一个随机数,不超过题目的

总数 t()取一个随机数

for( Integer vd:tmid ){//去掉重复的题 泛型循环 if( vd==hao ){

hao = t(()-1);//如果重复再重新抽,即重新生

成一个随机数

}

}

int bcid = (hao);//根据抽到的数得到该题目的Id号

Question qs = QInfoByid(bcid);//根据Id号查询题目的信息

(qs);//把查到的题目的信息插入到allwts集合中

(hao);//把已经用过的随机数放入集合,防止重复抽题

}

ribute("allwts",allwts);

%>

<%

}else{

ribute("errorInfo","已经答过题了,不能重复答题!

");

%>

<%

}

%>

4.3.2 历史成绩模块

考生点击历史成绩,会先迁移到考试科目选择页面,当考生通过下拉

列表,选中要查询的科目,然后点击确认,会从数据库中提取出考生的成

绩,然后在表格中显示。点击左下角的返回按钮,回到考试科目选择页面,

继续查询其他科目成绩,如图4-5所示:

23

Java Web应用开发——在线模拟考试系统的设计与实现

图4-5 考生成绩查询页面

成绩查询页面主要代码如下所示:

接收上个页面传过来的值

String category = ameter("category");

String[] result = null;

int count = 0;

开始连接数据库

e( "" ).newInstance();

Connection

conn=nection("jdbc:mysql://localhost/Myexam?user=root&password=890

427&useUnicode=true&characterEncoding=gbk");

Statement stmt=Statement();

数据库结果集的数据表

ResultSet rs=null;

ResultSet rr = null;

执行sql语句,查询test_record表中是否有与接收的值相同项

String sqlcount = "select count(*) from test_record where

(category_id='"+category+"' and username ='"+s+"')";

rr = eQuery(sqlcount);

24

Java Web应用开发——在线模拟考试系统的设计与实现

if(()){

将ing字符类型数据转换为Integer整型数据

count = nt(ing(1));

}

定义一个新的字符串数组

result = new String[count];

执行sql语句,查询test_record表

String sql = "select * from test_record where (category_id='"+category+"'and

username ='"+s+"')";

执行刚建立的SQL语句,并把结果返回到结果集对象中

rs = eQuery(sql);

int i=0;

把结果集数据表中的数据附到数组中

while(()){

result[i++] =

ing(1)+":"+ing(2)+":"+ing(3)+":"+ing(4)+":"+

String(5);

循环输出所有项

<% for(int k=0;k<;k++) { %>

查询category表,显示出科目名称

<%String sql2 = "select category_name from category where category_id ='"+category+"'";

执行刚建立的SQL语句,并把结果返回到结果集对象中

rs = eQuery(sql2);

String rs1=null;

if(()){

rs1= ing(1);

n(rs1);

} %>

<%n(rs1);%>

取出表的第4列并显示出来

<%=result[k].split(":")[3] %>

25

打印出结果

Java Web应用开发——在线模拟考试系统的设计与实现

取出表的第5列并显示出来

<%=result[k].split(":")[4] %>

4.3.2 修改密码模块

考生可以通过修改密码模块,来修改自己登录本考试系统的登录密码。

在修改页面中,需要填写原密码、新密码和确认新密码。当考生忽略其中

一项没有填写或者输入的新密码和确认密码不一致,会有提示信息,某项

不能为空或密码不一致;当考生都输入完毕后,点击修改按钮,系统通过

后台,连接数据库来确认考生输入的原密码和用户名是否匹配,如果匹配,

那么更新数据库,把原密码替换掉,然后转到修改密码成功页面;若不匹

配,则直接转到修改密码失败页面,修改密码页面如图4-6所示:

图4-6 考生修改密码页面

4.4 教师模块

教师登录系统后,若用户名和密码正确,直接跳转到教师首页,在此

页面,教师可以选择试题维护、试卷设置、历史成绩、修改密码;根据页

面中间的操作提示,可以知道每个选项都可以进行什么操作。如试题维护

可以对试题进行添加、修改、删除操作。如下图4-7所示:

26

Java Web应用开发——在线模拟考试系统的设计与实现

图4-7教师主页

4.4.1 试题维护模块

教师点击试题维护,首先需要选择要维护的试卷类别,也就是科目名称,

选择好后,点击确认,页面会显示您选择的类别下的所有题目,在该页面

下,教师可以进行对试题的修改,删除和添加操作,当点击不同的操作,

会跳转到不同的页面中,下面是教师对题目进行增、删、改的具体界面以

及执行的主要代码。图4-8为试题列表页面:

图4-8 试题列表页面

1.教师对题目的修改页面:

点击修改,会弹出提示框等待确认,这样减少因为

27

Java Web应用开发——在线模拟考试系统的设计与实现

误点而带来的不必要的麻烦。点击确定后,如果修改成功,会出现修改成

功页面,在该页面中,您可以选择下一步的操作,如点击进入教师主页或

点击进入试题列表页面。如图4-9所示:

图4-9 教师修改试题页面

修改试题操作主要代码:

接收上一个页面传过来的值

String question_id = ameter("question_id");

通过session把question_id传到下个页面

ribute("question_id",question_id);

接收传过来的值并付值给新的变量

String category = ameter("category");

String[] result = null;

int count = 0;

开始连接数据库

e( "" ).newInstance();

加载JDBC驱动程序

Connection

conn=nection("jdbc:mysql://localhost/Myexam?user=root&password=890

427");

Statement stmt=Statement();

结果集初始化为空

ResultSet rs=null;

ResultSet rr = null;

28

Java Web应用开发——在线模拟考试系统的设计与实现

执行sql语句,查询question表

String sqlcount = "select count(*) from question where question_id='"+question_id+"'";

rr = eQuery(sqlcount);

if(()){

count = nt(ing(1));

}

建立一个新的字符串数组

result = new String[count];

执行sql查询语句

String sql = "select * from question where question_id='"+question_id+"'";

rs = eQuery(sql);

int i=0;

把结果集数据表中的数据附到数组中

while(()){

result[i++] =

ing(1)+":"+ing(2)+":"+ing(3)+":"+ing(4)+":"+

String(5)+":"+ing(6)+":"+ing(7)+":"+ing(8)+":"+ing

(9);

}

验证页面接收上个页面传来的值

String s = (String)ribute("question_id");

String category_name = ameter("category_name");

String choice_a = ameter("choice_a");

String choice_b = ameter("choice_b");

String choice_c = ameter("choice_c");

String choice_d = ameter("choice_d");

String answer = ameter("answer");

开始连接数据库

try{

e( "" ).newInstance();

Connection

conn=nection("jdbc:mysql://localhost:3306/myexam?user=root&passwor

d=890427&useUnicode=true&characterEncoding=gb2312");

Statement stmt=Statement();

ResultSet rs=null;

执行sql更新语句

String sql ="update question set

29

Java Web应用开发——在线模拟考试系统的设计与实现

choice_a='"+choice_a+"',choice_b='"+choice_b+"',choice_c='"+choice_c+"',choice_d='"+ch

oice_d+"',subject='"+subject+"',answer='"+answer+"' where question_id ='"+s+"'";

如果修改成功,会提示:“修改试题成功!”

2.教师对题目的删除操作:

点击删除,依旧会有提示框弹出,点击确定,后台

会直接连接数据库,删除选中的项,当删除成功后,会直接跳转到成功页

面。以下是删除的sql语句:

String sql="delete from question where question_id='"+question_id+"'" ;

3.教师对题目的添加操作:

当点击添加新问题按钮,会跳转到试题添加页面,

在此页面,先选中要添加的试卷类别,然后依次输入题目,选项,正确答

案,点击提交按钮,后台会搜索题库,如果该题目没有出现过,那么将其

添加到数据库,并且跳转到添加成功页面,反之,会跳转到添加失败页面。

如图4-10所示:

图4-10 教师添加试题页面

执行添加试题的主要代码如下:

接收上个页面传过来的值

String category_id = ameter("category");

String subject = ameter("subject");

String choice_a = ameter("choice_a");

String choice_b = ameter("choice_b");

String choice_c = ameter("choice_c");

String choice_d = ameter("choice_d");

30

Java Web应用开发——在线模拟考试系统的设计与实现

String answer = ameter("answer");

开始连接数据库

try{

e( "" ).newInstance();

加载JDBC驱动程序

Connection

conn=nection("jdbc:mysql://localhost:3306/myexam?user=root&passwor

d=890427&useUnicode=true&characterEncoding=gb2312");

Statement stmt=Statement();

ResultSet rs=null;

执行查询sql语句,验证在该类别下该题目是否存在

String sql="select * from question where category_id like '"+category_id+"'and

subject like'"+subject+"'";

rs=eQuery(sql);

如果存在,提示:“您好,该题目已经存在 ,请确定后再次加入试题!”,如果表中不存在,那

么执行插入SQL语句

sql ="insert into

question(category_id,subject,choice_a,choice_b,choice_c,choice_d,level,answer)

values('"+category_id+"','"+subject+"','"+choice_a+"','"+choice_b+"','"+choice_c+"','"

+choice_d+"','"+level+"','"+answer+"')";

int temp = eUpdate(sql);

插入成功后,提示:“恭喜您添加试题成功!”

4.4.3 历史成绩模块

教师点击历史成绩模块,会先选择要查看的试卷类别,选择好后点击确

定,会有成绩统计表,包含科目、分数段和各个分数段下的人数统计,教

师可以通过该表来判断下教学成果如何,如图4-11所示:

31

Java Web应用开发——在线模拟考试系统的设计与实现

图4-11 教师成绩统计页面

执行成绩统计主要代码如下:

接收上个页面传过来的值

String as = ameter("category");

e( "" ).newInstance();

开始连接数据库

加载JDBC驱动

Connection

conn=nection("jdbc:mysql://localhost/Myexam?user=root&password=890

427");

Statement stmt=Statement();

结果集初始化为空

ResultSet ra=null;

ResultSet rb = null;

ResultSet rc = null;

ResultSet rd = null;

ResultSet re = null;

ResultSet rs = null;

执行查询语句统计小于60分的人数

String sqlcount = "select count(*) from test_record where category_id = '"+as+"' AND

test_result<'60'";

ra = eQuery(sqlcount);

String result = null;

while(()){

32

Java Web应用开发——在线模拟考试系统的设计与实现

result = ing(1);

}

执行查询语句并统计大于等于60分小于等于69分的人数

String sqlcount1 = "select count(*) from test_record where category_id = '"+as+"'

AND test_result<='69'and test_result>='60'";

rb = eQuery(sqlcount1);

String result1 = null;

while(()){

result1 = ing(1);

}

执行查询语句并统计大于等于70分小于等于85分的人数

String sqlcount2 = "select count(*) from test_record where category_id = '"+as+"'

AND test_result<='85'and test_result>='70'";

rc = eQuery(sqlcount2);

String result2 = null;

while(()){

result2 = ing(1);

}

执行查询语句并统计大于等于86分小于等于99分的人数

String sqlcount3 = "select count(*) from test_record where category_id = '"+as+"'

AND test_result<='99'and test_result>='86'";

rd = eQuery(sqlcount3);

String result3 = null;

while(()){

result3 = ing(1);

}

执行查询语句并统计大于等于100分的人数

String sqlcount4 = "select count(*) from test_record where category_id = '"+as+"'

AND test_result='100'";

re = eQuery(sqlcount4);

String result4 = null;

while(()){

result4 = ing(1);

}

显示各成几段的人数

60分以下

<%=result %>

33

Java Web应用开发——在线模拟考试系统的设计与实现

60~69分

<%=result1 %>

70~85分

<%=result2 %>

86~99分

<%=result3 %>

100分

<%=result4 %>

4.5 管理员模块

管理员验证密码成功登录系统后,进入管理员首页如下图4-12所示:

图4-12管理员主页

管理员登录到管理员主页后,会看到有2个权限,一个为考生管理,另

一个为教室管理。在页面中央,管理员可以看到相关操作的一些说明,对

系统的操作有个初步的了解。

34

Java Web应用开发——在线模拟考试系统的设计与实现

4.5.1 考生管理

管理员在该模块中,可以对已经注册过的考生进行删除操作,对还未注册

的,可以直接添加该考生。如图4-13所示:

图4-13 考生管理页面

点击删除,会弹出提示框,点击确定按钮,后台连接数据库,从user表中删除该

考生,执行代码与教师删除试题类似,只是连接数据库表不同。

删除学生的sql语句:

String sql="delete from user where user_id='"+user_id+"'" ;

删除教师的sql语句:

String sql="delete from teacher where teacher_id='"+teacher_id+"'" ;

点击添加新用户按钮,会跳转到添加页面,在此页面中,需要管理员填写用户名、

密码、确认密码、真实姓名,该页面与注册页面基本相同,其主要执行代码也与注册页

面执行的代码类似。在此就不列举了。

执行添加的sql语句是:

sql = "insert into user(username,password,realname)

value('"+username+"','"+password+"','"+realname+"')";

35

Java Web应用开发——在线模拟考试系统的设计与实现

第五章 系统测试

5.1什么是软件测试

软件测试是在软件投入运行前,对软件需求分析、设计规格说明书和编

码的最终的复审,是软件质量保证的关键步骤。确切的说,软件测试就是

为了发现错误而执行的过程。一般分为两个阶段:

1.单元测试:在编完模块后进行测试;

2.综合测试:在开发完软件后进行综合测试。

5.2软件测试的目标与方法

G. Myers 给出了关于测试的一些规则,这些规则可以看作是测试的

目标或定义:

1.测试是为了发现程序中的错误而执行程序的过程;

2.好的测试方案是极可能发现迄今为止尚未发现的错误的测试;

3.成功的测试是发现了至今为止尚未发现的错误的测试。

测试任何软件都有两种方法:黑盒测试和白盒测试法。

黑盒测试法(又称功能测试法)是把程序看成一个黑盒子,完全不考虑

程序的内部结构和处理过程,是在程序接口进行的测试,它只检查程序功

能是否按照规格说明书的规定正常使用。

白盒测试法(又称结构测试法)是把程序看成装在一个透明的白盒子里,

也就是完全了解程序的结构和处理过程,这种方法按照程序内部的逻辑测

试程序,检验程序中的每条通路是否都能按照预定要求正确工作。

5.3测试内容

考生注册功能-点击注册按钮,跳转到注册页面,输入一个已经注册成

功的用户名,填写完其他项,点击注册,提示该用户名已经存在,与预期

效果相同。

考生修改密码功能-在修改页面填写原密码,新密码和确认新密码项填

写不同,但是也提示修改成功,与预期效果不同,经查询代码发现,sql语

句的限制条件出现问题,导致最后这种效果,最终经修改、测试,达到预

期效果。教师修改密码的测试与考生类似,不一一列举。

考生成绩查询功能-先选择要查询的试卷类别,然后在页面中显示出考

试的成绩以及考试时间,与预期效果相同。

教师对题目的增加、删除、修改功能-填写好题目的内容,然后进行添

加,但是当插入数据库的时候,跳转的页面显示不出提示信息,经查阅资

料后得知,是因为插入中文问题,修改了数据库的字符类型后,成功添加,

36

Java Web应用开发——在线模拟考试系统的设计与实现

达到预期效果。删除和修改功能与预期效果相同。

管理员对考生的删除功能-点击删除,出现提示框,是否确认删除,点

击确定后,实现删除,与预期效果相同;对教师的删除功能也是按照此步

骤,与预期效果相同。

其他的功能的测试也如上面一样进行,测试结果与预期结果一致。

5.4系统的不足和展望

对于本次做的网上考试系统有很多的不足和不完善的地方。比如系统的

有些功能操作不够人性话,提示不够准确,对管理信息的设置很不完善。

在系统模块的实现上,由于本人学业不精,导致做的都非常复杂;没有设

置公共页面,在修改的时候会非常的繁琐,是以后提升的重要点。在页面

美化上,没有做的很好,只是基本功能能够实现了,但在今后的学习上,

会更加注意这一点。在教师成绩统计的页面,没有考虑到不同时期考试的

成绩累加问题,这个也需要我再继续完善下该系统。在数据库表方面,表

的关联性运用的不是很好,只是一些内容得到了关联,使用了外键,由于

前期设计是没有想的很全面,导致了到最后的复杂性,需要在今后的工作

和学习中不断的积累经验,要有个全局的思想。

在当今信息时代,计算机技术与网络技术越来越广地成熟的应用于各个

领域,同时也影响了教育领域的重大变革,网上考试系统也将更多更好的

应用在教育教学领域中。以后的网上考试系统将会更加完善使用。

37

Java Web应用开发——在线模拟考试系统的设计与实现

结束语

通过这次项目实训设计,对很多东西有了新的认识和新的见解,认识问题的和思考

解决办法有了本质上的进步,特别是对一个系统开发的模式有了更深的认识,对专业技

能的运用更熟练。

网上考试系统的开发过程中也遇到了很多问题,开始做需求时不确定考试系统到底

应该具备那些功能,只知道主要功能就是有试题能考试,但具体流程,怎样实现这些功

能就很模糊,所以查看了很多资料才理清楚。数据库设计也是个难点,不明确要实现哪

些功能就不能很好的把数据库设计好。设计数据库就是开发一个系统的核心。设计数据

库一定要思路清晰,各个数据的流向各个表之间的关系一定要弄清楚,透彻。数据库设

计出错了对以后整个系统的影响是最直接的。所以做需求时一定要做好需求分析,考虑

完善,数据库设计要谨慎。总之需求分析时能做好就能降低需求变更,再加上设计时考

虑到的技术可行性就可以大幅度的降低需求变更。

最终还是完成了预定的需求功能。看到自己独立完成并可以使用的系统给了我很大

信心。在本系统的设计过程和论文编写过程中,很多老师、同学都给与了我许多无私的

帮助,尤其是我的导师给我的论文提出了很多宝贵的修改意见,在这里我向这些无私帮

助我的人表示衷心的感谢。

网上考试系统给我获得了实践中再学习的机会。通过独立完成网上考试系统后,了

解了其实自己还有很多很多的东西还不知道,还需要再学习。以为四年的学习时间很长,

可以学到很多知识,其实老师所教的知识还远远不够,但老师给了我们学习新知识新技

术的方法,让我们能自己学习,自己去摸索,这一点是最重要的。

所以感谢每一位任课的老师,是他们对我们高度负责的态度,含辛茹苦的教导才使

得我们学到了将会受益终生的知识教诲。特别要感谢的是我的毕业设计指导老师XXX老

师,在此致以万分感谢!

最后,感谢曾给过我帮助的同学和朋友,愿他们心想事成。

38

Java Web应用开发——在线模拟考试系统的设计与实现

参考文献

[1]孙鑫.Java Web开发详解:XML + XSLT + Servlet +JSP深入剖析与应用实例[M].北京:电子工

业出版社,2006.

[2]计磊,李里,周伟.精通J2EE整合应用案例[M].北京:人民邮电出版社,2006.

[3]孙卫琴,李洪成. Tomcat与Java Web开发技术详解[M].北京:电子工业出版社,2004.

[4]唐有国,湛洪波.编著.JSP网站开发详解[M].北京:清华大学出版社,2008

[5]王红.Java Web应用开发技术实用教程[M].北京:水利水电出版社,2008.

[6]林建素,孟康健.Eclipse开发学习笔记[M].北京:电子工业出版社,2008.

[7]孙卫琴.Tomcat与Java Web开发技术详解(第2版)[M].北京:电子工业出版社,2009.

[8]卢菊平,郭江杰.精通JSP+XML+CSS网络开发混合编程[M].北京:电子工业出版社,2006.

[9]封超,晁阳.Tomcat与Java Web开发技术详解[M].北京:清华大学出版社,2008.

[10]梁立新.项目实践精解:JAVA Web应用开发[M].北京:电子工业出版社,2007.

[11] Bruce Eckel. Thinking in Java (3rd Edition)[M].机械工业出版社,2009.

[12] Bruce Tate. Bitter Java[M]. Manning Publications,2002

39

发布评论

评论列表 (0)

  1. 暂无评论