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

目 录

摘 要 I
Abstract II
引 言 1
1 相关技术 3
1.1 Java简介 3
1.2 JSP技术 3
1.3 MySQL数据库 4
1.4 B/S结构 4
1.5 本章小结 4
2 系统分析 5
2.1 需求分析 5
2.2 可行性分析 6
2.2.1 技术可行性 6
2.2.2 操作可行性 6
2.2.3 经济可行性 7
2.2.4 法律可行性 7
2.3 系统性能分析 7
2.4 系统功能分析 7
2.5 本章小结 8
3 系统设计 9
3.1 系统流程设计 9
3.1.1 操作流程 9
3.1.2 添加信息流程 9
3.1.3 修改信息流程 10
3.1.4 删除信息流程 10
3.2 系统结构设计 11
3.3 系统模块设计 11
3.4 数据库设计 12
3.4.1 数据库实体关系图设计 12
3.4.2 数据库表设计 13
3.4 本章小结 14
4 系统实现 15
4.1 开发环境 15
4.2 开发规范 15
4.2.1 命名与编程规则 15
4.2.2 书写规则 15
4.2.3 程序注释 15
4.3 系统和数据库的配置 15
4.4 各个功能模块的详细设计 16
4.5 本章小结 24
5 系统测试 25
5.1 测试定义 25
5.2 测试目的 25
5.3 测试用例 25
5.4 压力测试 26
5.5 测试结论 27
5.6 本章小结 27
结 论 28
致 谢 29
参考文献 30

摘 要

新世纪的到来,伴随着计算机信息化的不断发展,以及校园网的广泛应用,考试的不断增多,传统的考试模式已经满足不了现在学校的发展。计算机的出现带动了信息化的发展,越来越多的系统正在通过在线审核创建。世界各国对教育的发展给予了前所未有的重视,并努力将教育置于未来信息社会的前列,并向前迈进了一步。根据美国政府于上世界九十年代初发起的主动教育倡议,美国几乎所有教室和图书馆都将在21世纪初与数据高速公路连接,如此每个学生都将会成为“21世纪教师”网络的一部分。上世纪九十年代初,澳大利亚公共资源办公室建立了一个教育网络,不仅覆盖全国所有高等教育机构,而且涵盖所有基础教育和中等教育机构。
该在线考试系统的具体实现是以B/S为核心框架结构,结合Java语言的高效性和MySql数据库语言的简洁性具体完成的。运用这个系统可以节省许多人力资源并提高考核审计工作的效率。项目完成之后,根据国际软件开发标准对系统进行全面且具体的系统测试,测试数据显示,该系统具有很多的数据吞吐性,对使用者充满了友好性,系统具有完整的攻防机制。在线考试系统会对管理模块和学生操作模块进行详细的实现,从而使考核管理工作高效率化、科学和标准化。

关键词:在线考试系统;JSP技术;MySQL数据库;B/S结构

Abstract

With the advent of the new century, along with the continuous development of computer informatization and the widespread application of campus networks, the number of examinations is increasing, and the traditional examination model can no longer meet the development of schools. The emergence of computers has driven the development of informatization, and more and more systems are being created through online audits. Countries around the world have given unprecedented attention to the development of education, and strive to put education at the forefront of the future information society, and have taken a step forward. According to the initiative education initiative launched by the US government in the early 1990s, almost all classrooms and libraries in the United States will be connected to the data highway in the early 21st century, so that every student will become a “21st century teacher” network. portion. In the early 1990s, the Australian Public Resources Office established an education network that covers not only all higher education institutions across the country, but also all basic and secondary education institutions.
The specific implementation of the online examination system is based on B/S as the core framework structure, combined with the efficiency of Java language and the simplicity of MySql database language. Using this system can save a lot of human resources and improve the efficiency of assessment and audit work. After the project is completed, the system is tested comprehensively and specifically according to international software development standards. The test data shows that the system has a lot of data throughput and is user-friendly. The system has a complete offensive and defensive mechanism. The online examination system will implement the management module and the student operation module in detail, so as to make the assessment management work more efficient, scientific and standardized.

Keywords: Online examination system; JSP technology; MySQL database; B/S structure

引 言

随着科学与技术的发展、计算机的应用,人们生活的过程都和互联网紧密相关。电脑的普及让人们的生活变得更加方便快捷,网络也遍布到生活的每个角落,为工作、学习和生活带来了特别大的方便之处。例如考试的管理,题目信息、试卷信息、科目信息等,数据信息处理工作量大,数据繁多,使得在线考试系统的设计与开发就显得尤为重要。因此,具有现代的互联网多媒体信息技术的在线考试系统的建设,对于学校教学的发展具有非常重要的意义。
这几年,很多的学校都已经尝试使用电脑来提高学生们的考试效率。在线考试系统的应用会让考试变得更具有快捷性与高效性,与传统考试模式相比具有很大的优势。在线考试系统具有独特的准确性、及时性、快捷性,并且保密性高,能够为学校营造一个全新的、良好的教育环境,因此学校的教学水平可以的到一定地步的提高。
通过对考试方式的调查,发现如今很多的学校还使用传统考试方式,即费时又费力,已经不能满足当前学校发展需要,所以急需对学校考试方式进行修改,依次提高考试效率,还能够提高学校考试效率和教学水平,设计开发出一套界面友好,应用广泛,实用型的在线考试系统已经刻不容缓。
本在线考试系统是为了方便学生进行考试,也方便学校管理人员的管理。在线考试系统的建立就会使考试管理变得具有实用性、先进性和高效性。在线考试系统的实施具有如下现实意义:
第一,快速便捷,提高管理人员对考试信息的管理效率。
第二,改变了以前基于文本的考试方式,使用电脑进行管理更加方便快捷。
第三,实现了考试的计算机化。
本在线考试系统主要实现了学生模块和管理员模块两大部分。系统采用如今市面上常见的B/S(浏览器/服务器)结构和JSP技术,并且是基于MySQL数据库开发设计的。具体研究内容如下:
(1)针对课题内容,研究学习在线考试系统的整个工作,在学习的过程中掌握系统的开发方法,明确系统设计原则和目标。
(2)对现有的考试系统进行研究分析,学习他们的方法思路,并且在原有的基础上完善本在线考试系统的功能。
(3)根据学习关于JSP的相关书籍,对该系统的功能模块进行全面具体的设计实现。
(4)测试功能的具体实现,检测功能是否稳定等。

1 相关技术

1.1 Java简介
由SUN公司推出的Java语言是一种现今在世界上比较主流的面向对象的语言 [1]。它是可以在多种平台上运用的,兼容性比较强,适应市面上大多数操作系统,不会出现乱码的现象,其扩展性和维护性都更好,具有分析问题和解决问题的能力,是面向过程的程序设计方便编写的代码更强壮。Java相对其它语言来说,比较简单,编译起来更方便一些,安全可靠性高。不完全统计,现在全世界大约有2000多万人在使用它,Java既可以镶嵌使用又可以独力的使用。Java大致可以分成两个部分,一种部分是Java负责的编译,另一种是Java负责的运行。Java和C++语言很相像,但Java在编程时是一种以对象为导向的方式来进行编译的,使得编出来的软件可以单机使用,也可以在互联网上使用,检查出错更为方便。Java分布式、体系结构中立的特点也使得其存储更快,编译更简单。面向对象包括四个特点,一是封装,就是说在定义类的时候可以实现一定的功能和属性。二是抽象,属于类的一种,可以把一个具有共同属性的类封装在一个抽象里,便于简单编译。三是继承,顾名思义就是带有前者的特性。还有一个就是多态的特点,可以多种一起运用,表现了它可扩展性好。
1.2 JSP技术
JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准[2]。JSP是能够独立使用的编程语言,能够嵌入在html语言内运行,由于JSP参照了很多编程语言的特性,所以JSP在web的脚本技术当中占有很重要的位置,对于编程行业的初学者来说,JSP这种编程语言是容易学习,并且具备许多高级的特性[3]。在程序的开发过程中,使用JSP也不失为一种正确的选择,像表单数据的收集操作以及字符串信息的处理方面等等,JSP都能很轻松地解决,帮助程序开发者省下许多时间。所以就此看来,使用JSP可以自由的选择Web服务器、操作系统和合适的数据库管理系统。设计开发时,有两种选择,一种是面向过程,另一种是面向对象,或者两种都使用,可被称为混和方式设计。
优点:(1)一次编写,到处运行。(2)系统的多平台支持。(3)强大的可伸缩性。(4)多样化和功能强大的开发工具支持。
1.3 MySQL数据库
网络应用程序中最重要的一种技术就是数据库。添加数据、删除数据,检索数据并管理数据,是每个软件开发人员都面临的一个问题。与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL必然会有它的不足之处,但是这丝毫也没有减少它受欢迎的程度[4]。MySQL目前阶段所具有的功能已经完全可以满足一些中小企业和个体消费者的需求。MySql对所有用户采用开放原则,所有的开发者可以根据自身的具体需求对MySql提供的相关功能进行调整,已达到完成自己项目的目的,因此,MySql是及其的受开发者的关注的。所以人们认为它是处理数据的最清晰选择。
1.4 B/S结构
B/S(浏览器/服务器)结构是主流网络结构,它能够帮助开发者一定程度上的减少不必要的操作,其核心处理点已经转移到服务器上,对于开发者来说是极其有好的。而使用该模式只需要安装浏览器即可。并且安装上SQLServer、MySQL数据库等数据库[3]。启用的浏览器与服务器数据库互动几乎所有的信息数据。许多特殊软件能够完成的事情,也可以通过B/S结构模式被应用,结合多种技术,就能够帮助程序开发者节约很多的开发成本。目前B/S结构成为程序开发主流结构,它最好的地方就是没有地点限制还不用专门安装软件,笔记本或者电脑能够上网就能访问系统。系统使用B/S进行开发在后期系统维护上面就会很省事,不用什么问题都在服务器上面操作,简单的客户端处理就解决部分问题,开发出来的程序与用户交互性上面也会增强,还可以实时刷新浏览器进行程序局部的数据信息更新。
在这里插入图片描述

图1-1 B/S模式三层结构图
1.5 本章小结
这一章重点的地方是本课题中用来解决进行系统开发的编程语言的特点以及为什么选择此种语言。其次介绍了实现系统功能所用到的技术、框架结构、数据库访问技术等以及上述技术所涉及到的相关问题。

2 系统分析

2.1 需求分析
如果一个开发好但不能满足需求可行性得系统不能像原先设想的那样有效的话,它就会导致开发失败。开发系统是否有用,能否完整之前讨论的要求[6]。接下来是对此系统进行的实际需求分析。
基于J2EE的在线考试系统是一个可以应用在全国各地的在线考试系统,本课题是从当前全国高校考试难为切入点,以满足各类学校的考试需求为核心目标设计开发了该项目。本系统旨在服务于各地高校,用户使用本系统可在线进行测试考试测评等。
本系统具有一定的社会价值和实用价值,能够通过多种方式呈现高校成绩数据,可有效减轻教师与学生的压力,使广大用户完成省心省力的测试考试测评过程。
本系统总共分为两种身份,分别是管理员身份与普通用户身份,如下图2.1所示。
在这里插入图片描述

图2.1 基于J2EE的在线考试系统设计图
普通用户通过本系统可完成在线测试考试,知道哪些课程都有哪些题目,测试完成后可以查看错题以此来稳固课程知识。能够通过本系统找到课程具体题目信息。管理员通过本系统可完成对班级、课程、题目以及学生信息的编辑。能够通过本系统完成对学生考试结束后的试卷进行在线评审。
2.2 可行性分析
在线考试系统其开发宗旨是针对教师而言的考试过程进行简化,通过互联网的便捷来替代以往模式的复杂,从具体的功能来分析,该系统是具有很大的创新性,值得大范围推广。结合技术的可行性、操作的可行性、经济的可行性和法律的可行性进行全面的分析[7]。
2.2.1 技术可行性
软件方面,该在线考试系统以JSP技术和MySQL数据库管理系统紧密结合。由于JSP的开发平台使用起来非常便利,具有很强大的功能,因此,
完整的开发整个项目是绝对没有任何困难的,该平台也是现阶段主要的常用开发平台。网络传输的速度因为网络技术的飞速进步而变得越来越快,价格也越来越低并且安全性也十分的高,所以其硬件平台能满足本系统的开发需求。技术可行性对于整个在线考试系统的开发是关键环节,在项目需求设计阶段就应该深入的考虑到所用技术是否能够满足后期系统功能的开发。如果该技术不能满足,应该及时的调整所用技术或者对该功能的实现逻辑进行转化。本项目的Web技术已经发展的很成熟。Web技术是传统的B/S架构,它具有稳定性、可扩展性等优点,本项目最终决定选用JSP技术进行具体的实现[8]。
2.2.2 操作可行性
该系统的运作应考虑到管理人员和考生的使用需要,同时应考虑到面对常用功能和易出错功能是可以给与人性化的提示,并可获得对操作结果的反馈。本在线考试系统在线检验系统具备管理和互动的功能,而且操作非常简单。并且系统使用常见的登录界面,系统的开发使用的是JSP技术,这些就会让管理人员和学生不需要花费大量的时间去熟悉系统就能够掌握系统的操作方法。
在系统的开发初期就将系统的操作简单性进行了全面的设计,为了提高操作效率和使用的间接性,所有涉及到输入操作的地方都能够智能选择,整体使用十分便捷。本系统的主要操作方式是鼠标点击按钮方式,在输入与修改信息时涉及到使用键盘,没有其他复杂操作。
2.2.3 经济可行性
经济可行性值得是完成该系统开发所需要的基本资金能力和未来发投资能力是否是有保障的,以及对系统建成后可能取得的社会和经济效益进行估计[9]。本系统不是很复杂,经济支出不大,开发的周期也并不长,能够节省大量的人力物力,但是产生的效益却远远大于开发成本,因此从经济方面来考虑开发此系统也是可行的。
2.2.4 法律可行性
在校考试系统的所有内容都是按照国家软件开发法进行开发的,所涉及到的技术和开发理念都是依据国际软件开发标准严格开发的,不存在法律问题。因此,在线考试系统的法律可行性是完全合格的。
2.3 系统性能分析
(1)安全性:保证系统的安全性、稳定性,防止信息泄露[10]。如果想管理在线考试系统,首先需要凭借用户名和密码在系统中登录,无权限的用户无法通过任何方式登录系统因此也无法对系统的任何信息和数据进行查看,同时系统满足了不同权限用户的功能需求,用户登录后不可越级进行操作。
(2)可扩展性:在开发在线考试系统的功能过程中,首先要考虑到系统的可扩展性,便于将来系统的升级、更新。
(3)可靠性:该环节在软件开发初期的需求阶段和建模阶段已经进行了详细的分析,对网站的可靠性已经充分的有所准备,并且会在后期的软件开发阶段不断地对可靠性进行测试。
(4)数据完整性:所有记录的信息应得到全面的保存,信息记录不能成为空白。信息应该正确的连接起来,坚决不允许出现数据错误显示的问题。
2.4 系统功能分析
项目总体上而言主要是针对于管理员和学生两个领域的人员玩完成的。涉及到的详细功能如下:
(1)管理员功能模块:班级的管理功能、科目的管理功能、题目的管理功能、学生的管理功能、管理员的管理功能、密码的修改功能、注销登录功能、题目的导入功能、阅卷管理功能以及成绩统计功能。管理员用例图如图2.1所示。
在这里插入图片描述

图2.1 管理员用例图
(2)学生功能模块:科目列表功能、个人测试功能,修改密码功能,注、销登录功能。学生用例图如图2.2所示。
在这里插入图片描述

图2.2 学生用例图
2.5 本章小结
本章主要叙述了对基于J2EE的在线考试系统的分析。完成了系统涉及到的需求进行全面的分析。首先分析了系统的分析原则和设计目标,并给出了基于J2EE的在线考试系统的用例图,然后对系统架构进行模块划分[11]。最后对功能实现细节进行了必要描述。

3 系统设计

在线考试系统由五大模块组成:登录、信息的添加、信息的删除、信息的修改、信息的查询。学生端由两大模块组成:在线测试、查看科目。管理员由五大模块构成:学生信息的管理、班级信息的管理、课程信息的管理、试卷信息的管理、题目信息的管理。
3.1 系统流程设计
3.1.1 操作流程
使用者打开系统,首先系统整体的登录界面,当完成对用户的账号和密码的验证之后,对用户当前信息进行核实,如果核实无误则进入用户功能界面,用户即可进一步的进行相关操作;如果验证出错,则登录失败,重新开始登录环节。操作流程如图3.1所示。
在这里插入图片描述

图3.1 操作流程图
3.1.2 添加信息流程
当管理员进行信息添加操作的时候,系统自动生成新信息的编号,管理员进入输入数据界面,输入信息完成后,系统检测信息是否合法,若不合法,则提示重新输入,直到输入数据合法,系统将新信息写入数据库。添加信息流程如图3.2所示。
在这里插入图片描述

图3.2 添加信息流程图
3.1.3 修改信息流程
当系统的两个主要使用者想要进行信息的修改操作的时候,第一步要将需要修改的信息关键词进行输入,搜索完成后对信息进行修改。在这个过程中系统会主动检测修改后的数据是否是有意义的,如果数据有意义则对数据进行存储;如无意义则提示错误。修改信息流程图如图3.3所示。
在这里插入图片描述

图3.3修改信息流程图
3.1.4 删除信息流程
删除操作是对于管理员而言的,管理员首先选择需要被删除的数据,系统为保证管理员的错误操作会提示是否确定删除,但确定以后,系统会将该数据和与其相关属性有关的数据进行删除,随后对数据库进行更新。删除信息流程图如图3.4所示。
在这里插入图片描述

图3.4 删除信息流程图
3.2 系统结构设计
在整个设计过程,必须要完成基础的模块功能,进而组合成最终的功能,对于每一个小的目标而言,必须先了解一些相关的需求分析的信息[12]。系统的所有设计应该采用第一阶段设计,第一阶段优化设计,第一阶段最终设计这三个过程。当需要添加新的需求是则进行第二阶段的设计。对于该在线考试系统而言,系统功能结构图如图3.5所示。
在这里插入图片描述

图3.5 系统结构图
3.3 系统模块设计
(1)登录模块时序图
登录其主要目的是为了完成相关人员的身份和权限验证。系统会对用户输入的数据进行核查,如果核查无误将会进入系统;如果出现错误将会进行错误信息的提示。完成处理流程的时候,整个登录模块的逻辑全部完成。登录模块顺序图如图3.6所示。
在这里插入图片描述

图3.6 登录模块时序图
(2)添加信息模块时序图
管理员登录后可选择添加信息操作。管理员输入需要添加的信息,系统验证信息是否合法,验证后返回验证结果,若不合法则需要管理员重新添加信息;若合法则提示添加信息成功,并将新信息添加到数据库。添加信息模块时序图如图3.7所示。
在这里插入图片描述

图3.7 添加信息时序图
3.4 数据库设计
3.4.1 数据库实体关系图设计
数据库模型的建设是对现实世界的客观存在物体进行抽象的行为,对其相关属性进行具体的描述。因此,概念模型是进行数据库设计的重要工具[13]。实体关系图是在概念模式的设计中最常见的设计方法。
根据系统的功能模块划分,具体分析了本系统中主要的实体,本系统的主要实体图如图3.8所示。
在这里插入图片描述

图3.8 系统主要实体关系图
3.4.2 数据库表设计
后台的数据存储是通过MySql完成的,共包含20个表。根据系统需求有如下几个表:课程的信息表、班级的信息表、学生的信息表、管理员的信息表、题目的信息表、试卷的信息表等[14]。下面介绍数据库中的部分表的详细信息。表结构如下:
管理员信息表应包含编号、姓名、地址、出生日期、邮箱、性别、用户名、密码和电话。管理员的信息表如表3.1所示。
表3.1 t_sysuser管理员信息表
序号 列名 数据类型 长度 主键 允许空 说明
1 ID Int 11 是 否 编号
2 uname Varchar 20 否 否 姓名
3 userAddress Varchar 100 否 是 地址
4 userBirth Varchar 10 否 是 出生日期
5 userEmail Varchar 50 否 是 邮箱
6 userGender Int 11 否 否 性别
7 userName Varchar 20 否 否 用户名
8 userPassword Varchar 150 否 否 密码
9 userPhone Varchar 255 否 是 电话
题目信息表应包含编号、答案、选项A、B、C、D、类型、分数、题目描述、难度、课程编号与正确率。编号是主键;课程编号是该表的外键。题目的信息表如表3.2所示。
表3.2 t_question题目信息表
序号 列名 数据类型 长度 主键 允许空 说明
1 id Int 11 是 否 编号
2 answer Varchar 255 否 是 答案
3 option1 Varchar 255 否 是 选项A
4 option2 Varchar 255 否 是 选项B
5 option3 Varchar 255 否 是 选项C
6 option4` Varchar 255 否 是 选项D
7 quesType Varchar 255 否 是 类型
8 score Int 11 否 是 分数
9 title Varchar 255 否 是 题目
10 userType Varchar 255 否 是 难度
11 courseId Int 11 否 是 课程编号
12 zqlv Double 否 是 正确率
学生信息表应包含编号、姓名、地址、出生日期、邮箱、性别、用户名、密码、电话、班级编号、类型[15]。主键是这个表的编号不允许为空;班级编号师外键;学生的信息表如表3.3所示。
表3.3 t_student学生信息表
序号 列名 数据类型 长度 主键 允许空 说明
1 ID Int 11 是 否 编号
2 uname Varchar 20 否 否 姓名
3 userAddress Varchar 255 否 是 地址
4 userBirth Varchar 255 否 是 出生日期
5 userEmail Varchar 255 否 是 邮箱
6 userGender Varchar 255 否 否 性别
7 userName Varchar 20 否 否 用户名
8 userPassword Varchar 250 否 否 密码
9 userPhone Varchar 255 否 是 电话
10 clazzId Int 11 是 否 班级编号
11 type Varchar 255 否 否 类型
3.4 本章小结
本章对系统的设计方案进行了全面且细致的阐述。第一步介绍了该考试系统的管理员核心功能模块和普通用户的核心功能模块,然后分别展示了系统管理员以及用户的功能,最后展示了本系统的业务描述。

4 系统实现

4.1 开发环境
在线考试系统使以Windows 7为开发环境;4.00GB的显示内存;4.00 GB的内存;浏览器是Firefox;开发工具是MyEclipse 10;足以满足基于J2EE的在线考试系统的开发需求。
4.2 开发规范
4.2.1 命名与编程规则
制定一个统一的命名规范对于做基于J2EE的在线考试系统这个项目来说是基础,作为程序的开发人员必须要有个良好的编程习惯,还可以增加代码程序的重复利用能力、阅读代码的能力和套用代码的能力,最重要的是能提高程序员开发项目的效率,缩短项目研发周期。每一种变量命名的规则都不完全一样,存在着差异性[16]。
本项目遵循了PEP8 编码规范,如:
变量的命名应该是有意义的,并且在命名的时候应该遵守驼峰规则,命名的时候应该考虑到后期系统优化的时候能让其他开发者看懂。变量名不应该过长,不要引起歧义。代码编写过程中应该将主要功能点加以注释。切莫全文都加注释,则会失去注释的意义。
4.2.2 书写规则
该准则是程序员应该养成的良好编程习惯,这个习惯不仅仅对自己是有益的,对其他的读代码这而言也是尊敬的。要保证每行代码是清晰的,必要的应该使用括号进行包括,保证其所表达的含义是清晰的。
4.2.3 程序注释
任何一个项目程序都要提供相关的必要注释,书写注释是要求规范的,具体规范要求为:注释要使用#进行注释;要注释的内容一定要写在被注释对象的后面,或者是代码的下一行;需要有重要的使用说明、注意事项、如何调用和调试这些类等。
4.3 系统和数据库的配置
基于J2EE的在线考试系统是按照的B/S模式即浏览器与服务器交互进行设计的。B/S模式这种模式相对于C/S的优点有维护和升级方式简单,大大降低了维护与开发的成本,对开发者来说有更多的可能性[17]。如图4.1所示。
在这里插入图片描述

图4.1 B/S结构模式图
4.4 各个功能模块的详细设计
使用者想到进入系统进行功能的使用就必须要进行登录验证。在登录界面输入对相应的信息,该信息将会被系统进行核查操作,根据以往的数据进行核查,如果核查无误则可以进入系统,完成所需要的功能,如果核查出错则意味着登录失败。系统登录界面如图4.2所示。
在这里插入图片描述

图4.2系统登录界面
登录功能核心代码如下:
public Object login(String name, String password, String type) {
Object obj = null;

	if (type.equals(SysUser.class.getSimpleName())) {
		SysUser temp = new SysUser();
		temp.setUname(name);
		temp.setUserPassword(password);
		obj = sysUserMapper.selectOne(temp);
	} else if (type.equals(SimpleUser.class.getSimpleName())) {
		SimpleUser temp = new SimpleUser();
		temp.setUname(name);
		temp.setUserPassword(password);
		obj = simpleUserMapper.selectOne(temp);
	}
	if (obj != null) {
		autoObjectFiled(obj);
	}

	return obj;
}

进入系统后会看到管理员的界面,该界面包括了管理员所有功能,班级的管理,科目的管理,题目的管理,题目的导入,阅卷管理,成绩统计,学生的管理以及管理员管理。管理员主界面如图4.3所示。
在这里插入图片描述

图4.3管理员主界面
管理员可以对学生的信息进行基本的数据操作,包括增删改查,包括班级、学号、姓名、性别、联系电话等。学生管理界面展示如图4.4所示。
在这里插入图片描述

图4.4 学生管理界面
学生管理功能核心代码如下:
public void addSimpleUser(SimpleUser bean) {
MD5 md = new MD5();
bean.setUserPassword(md.getMD5ofStr(bean.getUserPassword()));
mapper.insert(bean);
}

public void updateSimpleUser(SimpleUser bean) {
	SimpleUser temp = mapper.selectByPrimaryKey(bean.getId());
	if (StringUtils.isNotBlank(bean.getUserPassword())) {
		MD5 md = new MD5();
		bean.setUserPassword(md.getMD5ofStr(bean.getUserPassword()));
	} else {
		bean.setUserPassword(temp.getUserPassword());
	}
	super.updateAll(bean);
}

管理员可选择科目进行成绩统计操作,选择科目后,点击统计按钮,即可生成柱状图,可以直观的看到该科目各个分段的人数。管理员还可以选择将成绩统计以Excel表的形式导出。成绩统计界面如图4.5所示。
在这里插入图片描述

图4.5 成绩统计界面
管理员可进行阅卷管理操作,点击阅卷管理按钮后,界面会显示学生参加测试的记录,按时间排序,管理员可选择学生的测试记录后查看学生的测试答案。阅卷管理界面如图4.5、4.6所示。
在这里插入图片描述

图4.5 阅卷管理界面
在这里插入图片描述

图4.6 阅卷管理界面
管理员可查看所有题目信息与题目管理界面,同时可对其进行删除操作。题目管理界面如图4.6所示,添加题目界面如图4.7所示。
在这里插入图片描述

图4.6 题目管理界面
在这里插入图片描述

图4.7 添加题目界面
试卷管理功能核心代码如下:
int index = ran.nextInt(danxuanlist.size());
for (int i = 0; i < danxuan; i++) {
Question question = danxuanlist.get((index + i) % danxuanlist.size());
PaperQuestion pp = new PaperQuestion();
pp.setPaperId(bean.getId());
pp.setQuestionId(question.getId());
pp.setQuestionScore(danxuanfen);
paperQuestionMapper.insert(pp);
}

Collections.shuffle(tiankonglist);
index = ran.nextInt(tiankonglist.size());
for (int i = 0; i < tiankong; i++) {
Question question = tiankonglist.get((index + i) % tiankonglist.size());
PaperQuestion pp = new PaperQuestion();
pp.setPaperId(bean.getId());
pp.setQuestionId(question.getId());
pp.setQuestionScore(tiankongfen);
paperQuestionMapper.insert(pp);
}
Collections.shuffle(jiandalist);
index = ran.nextInt(jiandalist.size());
for (int i = 0; i < jianda; i++) {
Question question = jiandalist.get((index + i) % jiandalist.size());
PaperQuestion pp = new PaperQuestion();
pp.setPaperId(bean.getId());
pp.setQuestionId(question.getId());
pp.setQuestionScore(jiandafen);
paperQuestionMapper.insert(pp);
}

return null;

管理员可进行快速导入题目操作,选择导入题目后,选择要导入的学科,点击选择Excel文件后即可导入题目。导入题目界面如图4.8所示。
在这里插入图片描述

图4.8 导入题目界面
导入题目功能的核心代码如下:
if (fileupload != null && fileupload.getSize() > 0) {//存在文件上传

String extName = "";
String nowTimeStr = "";
SimpleDateFormat sDateFormat;
String savePath = request.getSession().getServletContext().getRealPath("/resource") + File.separator;
File pathdir = new File(savePath);
if (!pathdir.exists()) {
	pathdir.mkdirs();
}
Random r = new Random();

int rannum = (int) (r.nextDouble() * (99999 - 10000 + 1)) + 10000;
sDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
nowTimeStr = sDateFormat.format(new Date());
//fileName = fileupload.getOriginalFilename();
// 获取文件的后缀  
extName = getExt(fileupload.getOriginalFilename());

newFileName = nowTimeStr + rannum + extName;
fileupload.transferTo(new File(savePath, newFileName));
return newFileName;

}
管理员可添加和删除科目信息,选择科目管理后,可选择添加、搜索或删除科目。科目管理界面如图4.9所示。
在这里插入图片描述

图4.9 科目管理界面
学生登录后可进入科目列表查看科目信息,并可进行测试、练习和删除错题操作,科目列表界面如图4.10所示。
在这里插入图片描述

图4.10 科目列表界面
学生登录后可进行在线练习操作,在联系的过程中,学生可对题目进行评论。在线练习界面如图4.11所示。
在这里插入图片描述

图4.11 在线练习界面
学生能够对在线测试功能进行操作。在线测试的界面如4.12所示。
在这里插入图片描述

图4.12 在线测试界面
学生可进入我的测试界面查看个人测试信息,进入个人测试界面后,可通过选择阅卷来查看曾经测试过的试卷。个人测试界面如图4.13所示。
在这里插入图片描述

图4.13 个人测试界面
测试功能核心代码如下:
public StudentExam updateStudentExam(StudentExam exam, List questexamList) {
studentExamMapper.insert(exam);

	int keguan = 0;
	for (StudentExamQuestion bean : questexamList) {
		Question tempq = questionMapper.selectByPrimaryKey(bean.getQuestionId());
		if (!tempq.getQuesType().equals("简答题") && bean.getCorrect()) {
			keguan += bean.getQuestionScore();
		}
		bean.setExamId(exam.getId());
		studentExamQuestionMapper.insert(bean);
	}
	exam.setKeguan(keguan);
	exam.setZong(keguan); 
	studentExamMapper.updateByPrimaryKey(exam);

	return exam;
}

4.5 本章小结
本章对在线考试系统的设计和实现进行全面详细的阐述,首先被介绍的是系统和数据库的配置以及小部分功能。部分核心功能的页面被截取下来作为演示。

5 系统测试

5.1 测试定义
系统测试是为了发现程序中的错误而执行程序的过程,测试的目的就是在软件投入生产性运行之前,尽可能多的发现软件中的错误[18]。软件的测试是在整个软件开发过程中必不可少的核心环节。项目的开发完成不代表这软件开发的完成,测试是对软件能够上市的一个重要判断。测试不单单仅限于系统开发的伊始,而是应该贯穿整个系统的整个生命周期。评估系统质量的方法不局限于系统编码和过程,应该与软件设计工作和历史需求分析密切相关。系统错误,不一定是代码错误,可能是阶段的设计摘要和设计细节存在问题,问题也可能出现在需求分析阶段。
5.2 测试目的
任何系统在开发完成之后都需要进行测试,测试是对项目已经完成的功能进行测试,一个是通过软件开发说明进行项目的检测,检测功能是否全部完成,可以通过对功能内部结构进行测试,也可以输出结果进行测试。成功的测试是为了找到程序还存在的程序问题,进一步的解决。测试的方法也是各种各样的,黑盒测试,白盒测试都是当下主要的测试方法。在测试过程中可以涉及到合理的数据和不合理的数据,这样能够使得系统的处理方面涉及的更多。测试对软件未来上市是非常有必要的,能够保证现阶段软件的正确性和可靠性,当然,即便是在权威的测试也会有一些错误的漏洞,这是不可避免的[19]。
5.3 测试用例
在编写测试用例的时候,应该保证信息是全面具体的:测试用例的编写者,测试用例的审核者,审核日期,所用测试类型,以及程序正确处理的结果值,和其他信息等。系统主要测试用例如表5.1所示。
表5.1 测试用例表
用例名称 测试功能 操作 操作过程 预期结果 测试结果
用户登录模块测试 正确输入用户信息,用户成功登录。 输入用户的信息 1.在密码框输入用户的密码。
2.点击登录按钮。 跳转到各角色的界面 正确
续表5.1
用例名称 测试功能 操作 操作过程 预期结果 测试结果
我的测试信息显示功能模块测试 我的测试信息显示的正常情况 显示我的测试信息 在我的测试界面,查看我的测试信息,点击查看,进入详细介绍界面。 进入我的测试详细信息界面 正确
管理员添加题目功能测试 添加题目成功的情况。 输入新题目的基本信息。 管理员在发布题目界面,填写新题目信息,点击“添加”按钮。 新题目添加成功。 正确
管理员添加题目功能测试 添加题目失败的情况。 管理员不填写题目名称。 管理员在发布题目界面,填写除题目名称以外的新题目信息,点击“添加”按钮。 添加失败,提示“*请填写题目名称!”。 正确
管理员添加题目功能测试 添加题目失败的情况。 管理员不填写题目名称。 管理员在发布题目界面,填写除题目名称以外的新题目信息,点击“添加”按钮。 添加失败,提示“*请填写题目名称!”。 正确
5.4 压力测试
本系统首先釆用Apach开发的的Apache JMeter作为基于Python的租房分析系统的压力测试工具。Apache JMeter这款测试软件内置了很多不同的测试组件,把各个组件相互搭配组合使用,可以从不同方面作为切入点,测试出项目的不同的功能[20]。
从官网下载Apache JMeter解圧后,打开bin文件,选择jmeter. bat进入测试程序的主界面,计入测试界面后选择添加线程组[21]。新建成功后,对线程组界面相关内容进行配置,包括线程数、循环次数等。进入http请求界面进行相关配置,其中包括网络协议、服务器地址、端口号、请求方法、路径、以及内容编码等。在本次的测试中将线程组中没置线程数1500,含义为模拟1500个用户同时使用本系统,访问间隔设置成1秒,循坏次数为1次;请求方法为POST请求;路径为common/users/?action=register。具体配置内容,如图5.1所示[22]。
在这里插入图片描述

图5.1 压力测试图
5.5 测试结论
对基于J2EE的在线考试系统的各个功能进行验证,测试过程中充分考虑了测试的各个功能,并考虑到了整个软件的内部结构及代码,检查基于J2EE的在线考试系统达到了系统设计预期的功能基本上满足了需求[23]。最终显示出样本数量为1500,中值为190,平均值为309,最新样本为66ms,偏离值为328,吞吐量为40504.08/分钟,测试结果比较稳定。最终测试结果如图5.2所示。
在这里插入图片描述

图5.2 压力测试图
测试时用到了接口测试软件对后端接口进行测试并使用谷歌,火狐等浏览器对前端进行了测试,以保证用户的用户体验能足够好[24]。功能和界面的测试已全部被测试完成。项目是符合国际开发标准的。经过对基于J2EE的在线考试系统的界面和各项功能的一系列测试,得出该项目基本可以满足用户需求。
5.6 本章小结
本章主要叙述了基于J2EE的在线考试系统的系统测试的相关步骤。测试计划、测试用例、测试结果。经过对上述的测试结果分析,基于J2EE的在线考试系统满足用户的要求和需求[25]。所有基本功能齐全,操作简单,系统运行性能良好,是一个值得推广的系统。

结 论

本次开发的基于J2EE的在线考试系统已经接近尾声阶段了,在这次独立完成毕业设计的期间体会到了很多的东西,另外想说的就是独立开发软件真的很能让人在开发期间得到锻炼,开发过程中从需求分析开始到最后的项目测试为止,每一步都要小心翼翼的完成,一步一步来,不然任何环节出现了差错,返工起来也很麻烦。开发系统过程中,遇到了很多的难题,比如基于J2EE的在线考试系统需要具有什么样的功能,这个还是思考了很久,后来同学提示了一下,参考别人做好的系统,看看人家设计了什么功能,多多参考下,后来这个问题就很好解决了。最难的就是系统编码了,本人本来就比较粗心,编码出现很多不该出现的错误,不该打空格也不小心键盘空格键多敲了两下,结果老是程序运行出错,找了好久都没有解决,后来无奈找到室友帮忙看看,慢慢检查终于找到问题了,编码过程真的很心塞,还好东拼西凑总算完成了功能要求了。系统整体界面虽然不是很好看,但起码不花哨,用户使用起来整体感觉就是简洁,功能体验虽然有点啰嗦,但是需要的功能都已经具备了。
本人的身份目前还是学生,开发程序肯定是不会考虑周全,程序完成开发后也经过了一系列测试,整体来说还是没有发现明显的操作逻辑错误,本人在毕设制作过程中不仅知识有所增加,独立学习的能力也有所提高了,更重要的就是遇到问题向周边同学寻求帮助,这个是很有必要的。总的来说毕业设计的圆满完成,真的觉得很自豪。

致 谢

在经过基于J2EE的在线考试系统几个月的开发,我的毕业设计文档终于接近了尾声。在这几个月的过程中我把从导师以及图书馆中学到的相关的知识运用到系统的开发过程中。这个过程是对我所学知识的一个完整性的检验。其中发现了诸多的不足和缺点。但是我相信在经过长时间的磨练我会不断的开发出更好的信息管理系统。
能够按时完成这套基于J2EE的在线考试系统的程序设计和相应文档的编写,我首先要感谢的是我的指导老师李朋老师和王凤伟老师,指导老师的态度非常认真,我从指导老师那得到了及时和认真的帮助。指导老师给我指明了撰写的重点,开发的方向,文档编写的方法等各种技巧和知识。有了指导老师热情的帮助我的论文才能够顺利的去完成。经验丰富的指导老师给了我最大的帮助,再次对指导老师表示最忠心的感谢。
其次我还要感谢我的同学,我的父母,我的亲朋好友,感谢你们给与我大量的帮助和指导,是你们一直在默默鼓励我,帮助我。让我在不断的提高自己。
特别感谢计算机科学与技术专业教研室全部老师,尤其是我的指导教师李朋老师和王凤伟老师。他们严谨细致、一丝不苟的作风一直是同学们工作、学习中的榜样;他们循循善诱的教导和不拘一格的思路给予同学们无尽的启迪。
在论文即将完成之际,心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了无言的帮助,在这里请接受诚挚的谢意!
最后,感谢我的母校对我的悉心培养,祝母校的明天会更加美好辉煌!

参考文献

[1] 张孝祥.Java邮件开发详解[M].北京:电子工业出版社,2007:10-300
[2] 雷文华,薛小文.MATLAB和Servlet在网络数据处理中的应用[J].电子测试,2010,(11):81-86
[3] 黄艳峰.在Java语言中实施“案例教学”的研究与探索[J].电脑知识与技术,2010,6(5):1148-1149
[4] 王玉英.基于JSP的MySQL数据库访问技术[J].现代计算机:专业版,2010,19(14):63-66
[5] 赵钢.JSP Servlet+EJB的Web模式应用研究[J].电子设计工程,2013,21(13):47-49
[6] 肖英.解决JSP/Servlet开发中的中文乱码问题[J].科技传播,2011,(1)11-25
[7] 孙卫琴.基于MVC的JavaWeb设计与开发.北京:电子工业出版社2004.
[8] 王雨竹.MySQL入门经典.北京:机械工业出版社2013
[9] 陈Maydene Fisher, Jon Ellis, Jonathan Bruce著. JDBC API Tutorial and Reference, Third Edition. 11 June, 2003
[10] 邓子云.JSP网络编程从基础到实践[M].北京:电子工业出版社,2009
[11] Todd Cook. JSP从入门到精通[W].北京:电子工业出版社,2003
[12] Bruce Eckel. Thinking in Java(English Edition).北京:机械工业出版社,2006
[13] Hsiao I H, Sosnovsky S, Brusilovsky P. Guiding students to the right questions: adaptive navigation support in an e-learning system for Java programming[J]. Journal of Computer Assisted Learning,2010,26(4):270-283
[14] Vegh A. MySQL Database Server[M]. Web Development with the Mac®. Wiley Publishing, Inc.,2011,179-194
[15] Rasoolzadegan A, Barforoush A A. Reliable yet flexible software through formal model transformation (rule definition)[J]. Knowledge & Information Systems,2014,40(1):79-126
[16] Chaojin Lu. Design and Implementation of the Instant Messaging Tool Based on Java[J]. International Journal of Advanced Pervasive and Ubiquitous Computing (IJAPUC),2017,9(2)
[17] 刘颖.基于SOA的大宗农副产品电子商务交易平台[D].河北科技大学,2012.
[18] 陶化仙.潍坊市农业信息服务平台的设计与实现[D].山东大学,2013
[19] 周一殊.云存储系统中的Win8应用的研究和实现[D].华南理工大学,2014
[20] 张容齐.基于云计算平台的服务自动化部署机制研究[D].北京邮电大学,2015
[21] F.M. Dela Cueva, J.S. Mendoza, M.A. Balendres. A new Colletotrichum species causing anthracnose of chilli in the Philippines and its pathogenicity to chilli cultivar Django[J]. Crop Protection,2018,112
[22] K. Koteswara Rao,G. S. V. P. Raju. Reducing interactive fault proneness in software application using genetic algorithm based optimal directed random testing[J]. International Journal of Computers and Applications,2019,41(4)
[23] Mourad Badri,Linda Badri,Oussama Hachemane,Alexandre Ouellet. Measuring the effect of clone refactoring on the size of unit test cases in object-oriented software: an empirical study[J]. Innovations in Systems and Software Engineering,2019,15(2)
[24] Matthias Eckhart,Kristof Meixner,Dietmar Winkler,Andreas Ekelhart. Securing the testing process for industrial automation software[J]. Computers & Security,2019,85
[25] Hollis Robbins. Django Unchained : Repurposing Western Film Music[J]. Safundi,2015,16(3)

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值