资源描述
*****大学
毕 业 论 文(设计)
题 目:基于JAVA在线考试系统设计及实现
姓 名:
学 院: 理学及信息科学学院
专 业: 通信工程
班 级:
学 号:
指导教师:
年 月 日
目录
摘要...... I
ABSTRACT: II
第一章引言 1
1.1课题背景 1
1.2课题目和意义 1
1.3对于该项目描述 1
1.4 系统设计思想 2
1.5可行性分析 3
第二章 系统设计相关技术介绍及开发环境要求 3
2.1MVC模式介绍 4
2.1.1MVC模式概述 4
2.1.2MVC强势及劣势 4
2.2 JAVA组件JAVABEANS 4
2.2.1 什么是JavaBeans 4
2.3 JAVASE概述 4
2.4关于STRUTS 5
2.4.1 Struts简介 5
2.4.2 Struts主要功能 5
2.4.3 Struts工作原理 5
2.5 关于SWING 6
2.5.1 Swing简介 6
2.5.2 为什么需要Swing 6
2.5.3 Swing带给我们什么 7
2.6 关于开发环境概述 7
2.6.1操作系统 7
2.6.2开发语言 7
2.6.3开发环境 8
2.7关于布局概述 8
2.7.1BorderLayout 8
2.7.2FlowLayout 8
2.7.3GridLayout和GridBagLayout 8
2.8小结 9
第三章系统需求分析和总体设计 9
3.1 系统功能需求 9
3.2 系统设计总体框架 10
3.2.1软件层次结构 10
3.2.2界面及控制器关系 10
3.2.3业务层介绍 10
3.2.4数据层介绍 11
3.3系统用例图 11
3.3.1 总体用例分析 11
3.3.2 用户管理用例分析 12
3.3.3 考试管理用例分析 12
3.3.4 考试题目管理用例分析 13
3.3.5 成绩管理用例分析 13
3.4小结 14
第四章系统详细设计 14
4.1客户机类 14
4.2服务器类 15
4.3实体类部分 15
4.4工具类 16
4.5读取配置文件类 16
4.6系统运行详细描述 16
4.7系统运行图以及主要实现代码 20
4.8小结 28
第五章总结及展望 28
5.1工作总结 28
5.2后续工作展望 29
致谢 ............................................................................................................30
参考文献: 31
37 / 44
基于JAVA在线考试系统设计及实现
摘要:当今节约已经成为一个命题,在线考试系统设计意在响应这个话题,努力构建无纸化管理。所谓在线考试就是将考试安排在网上进行,方便了考试组织安排工作;节省了大量时间及资源。在线考试系统适合考生分布范围广不容易集中远程教育。本文通过对试题导出,在线用户登录,答题,以及考试结果输出进行设计,完成一个简单在线考试系统。本文基于JAVA,通过MVC结构,swing进行布局。综上技术,能够将系统功能实现。
关键字:远程教育、在线考试、MVC、JAVA、Swing
Design and implementation of online examination based on java
Abstract: Today's conservation has become a proposition, online examination system design is intended to respond to this topic and build a paperless management. The so-called online exam is conducted online examination arrangements will facilitate the examination of the organizational arrangements; saves a lot of time and resources. Online examination system is suitable for a wide range of candidates is not easy to focus on the distribution of distance education. Based on the examination of export, online user's login, answer, and the output of test results to design, to complete a simple online examination system. Based on JAVA, through the MVC structure, swing the layout. To sum up technology, the ability to implement system functions.
Keywords: distance learning, online examinations, MVC, JAVA, Swing
第一章引言
1.1课题背景
随着近些年来网络蓬勃发展使得网络教育也得到了一定认可,代表了现代教育重要发展趋势,推动了教育更新换代。在这种形式下,网络教育所伴随在线考试必定能在将来教育事业上作用明显。到目前为止,包括教育部在内教育执行机构等都在积极制定在线考试机制,使得教育事业更上一层楼。所以,如今很多研发机构都在响应时代命题对网络教育以及附属产业进行探讨和研发。伴随着网页技术对日常生活渗透,开发一个在线考试系统已经势在必行。
1.2课题目和意义
根据现有情况,教育机构和学校都还是采用以往考试方式,即纸质答卷。但是传统纸质考试步骤很繁琐,考试组织机构要组织人员更具自己需求出试题;安排考生在所在考场考试;安排监考人员监考;安排阅卷人员对试题进行评阅;最后安排阅卷结束后总结大会并对考试情况作出分析报告。不只是这样,其工作也将会是十分繁琐并且非常容易出错。换句话说,传统考试方式已经在一定程度上不太适合现代考试需求。在计算机应用迅猛发展前提下,网络应用也伴随着蓬勃发展。所以,无论是考试机构还是考生都迫切需求一个应用来减轻工作量。不仅减轻了考生负担,而且也提高了考试质量。从而使考试更接近公平,公正,客观,更能激发考生学习积极性。现在这种技术已经得到初步推广,得到了各种认证考试认可。综上需求,我们做出这个在线考试系统能够在考试和学习过程中起到便捷、提高考试质量、减少阅卷工作量作用。
1.3对于该项目描述
对计算机应用,使得生产效率得到了极大提高,同时也使一部分生产力得到了解放。在信息化飞速发展今天,计算机应用来解决实际生产生活中问题已经相当普遍。鉴于传统考试中使用纸质试卷带来效率低下,信息滞后等诟病,我们迫切需要一个应用解决这些问题。本文设计这个在线考试系统,采用了JAVA编程语言实现考试系统。
本文介绍这个在线考试系统,考生通过系统许可。在用户登录界面输入自己账户和密码,进入考试系统。然后根据系统提示,完成考试作答并得到自己分数。上述这个过程全部都是在网络上进行并且解决了纸质答卷繁琐过程。
本文论述在线考试系统主要分成两个部分,即服务器部分及客户端部分。这两者之间是通过网络连接起来,服务器一个线程和客户端是连着。
首先,在服务器部分,这部分首先启动。然后,服务器开始读取系统所需配置文件。上述操作能够使考试所用到试题提交到服务器;接着读取学生信息、学号、姓名、密码等都要出现在服务器中。将上述信息读取到服务器中之后,将上述信息封装在某个类中,紧接着等待客户端发送请求。当客户端有请求发送,然后服务器就会及客户端进行连接。然后等待请求结束,该连接才会断开。在这个过程中,服务器不断监听客户端请求,控制运行进程。
其次,客户端部分,设计比较简单。因为要给学生操作,所以为了方便学生进行操作,这里用到了图形界面操作。上边提到图形界面总共有三个界面构成。第一个就是用于学生考试用户登录界面:考生需要正确输入自己账号和密码才能登录该系统;第二个就是学生选择考试科目界面,在这个窗口出现之前先将前面一个窗口关闭,然后再创建新窗口;第三个界面是考生考试界面窗口,进入此界面也要关闭前一个窗口,紧接着当考生完成考试,提交试题,分数自动显示,然后关闭窗口。在此同时,服务器同时要断开连接,线程结束。综上所述,就是客户端三个窗口。
在这个在线考试系统中,本文涉及到两个主要类:即试卷类和学生类。这两个类信息,都是以配置文件形式保存。上述信息都可以用工具类读取。
1.4 系统设计思想
本文所描述在线考试系统是以服务器和客户端连接为中心,下述就是该系统设计思想。
首先,服务器先启动,服务器然后读取配置文件。接着,将考试所需考题以及规定格式写入配置文件;然后,把考生账号密码等信息写入另一个配置文件中。服务器需要读取试题信息,所以在设计时要定义学生类,试卷类以及题目类。当客户端及服务器之间连接时需要数据请求,这里包括多种请求类型。这里包含请求有连接请求,考生登录请求,试题发送请求,答题请求。为满足上述需求,我们要定义请求类,并且要求服务器不断读取请求信息。为了减少代码量,我们这里需要几个工具类:一个是创建套接字连接;另一个就是用来读取配置文件工具类。这样就出来了服务器基本框架。
在客户机这边,我们只需考虑一个线程就行了。并且涉及到四个类,这之中有三个窗口类和一个客户机及服务器线程连接类。这个连接类是上述三个窗口类一个属性,这个属性用来使三个窗口类及服务器进行数据通信。三个窗口也只能通过上述连接类及服务器之间进行通信。这样这个客服器整体设计也就呈现出来了。
此外还要说一下就是,客户机及服务器进行连接是通过IP和端口号数据通信。客户机及服务器对应关系如下:一个客户机对应一个服务器;而一个服务器对应多个客户机。服务器及客户机通过线程连接。
1.5可行性分析
鉴于在线考试系统美好前景,本项目设计目标是实现考试系统,并且能够实现其相应业务功能,例如登录功能,考试功能,管理员修改难度系数,考试时间,题目数,考试得分等。此项目需要实现如下功能。
一、 登录功能:用户能够准确无误登录考试系统。二、考试功能:实现基本业务逻辑。三、查看分数:在考试结束后,考生能够看到考试分数。四、管理员可以根据系统定义修改难度系数和题目数。五、题目切换:实现上一题及下一题切换。六、其他功能还有计时功能等。
第二章 系统设计相关技术介绍及开发环境要求
2.1MVC模式介绍
2.1.1MVC模式概述
MVC是 模型(Model),视图(View)和控制(Controller)缩写。其中Model层用来实现系统中业务逻辑,通常可以用JavaBean来实现; View层用于及用户交互; Controller层连接模块及视图,它可以是用户请求得到恰当视图予以显示,同时它也可以是用户输入得到解释并将它们映射为模型层可执行操作[1] 李刚 《疯狂JAVA讲义》 电子工业出版社 2012
。
2.1.2MVC强势及劣势
优点:低耦合性,使得更改视图层代码就不用重新编译模型和控制器代码。高重用性和可适用性,允许你是用各种方式视图来访问同一个服务器端代码。快速部署,使用MVC模式是开发时间得到相当大缩减[2] Bruce Eckel 《JAVA编程思想 第4版》 机械工业出版社 2007
。
缺点:MVC缺点是它没有明确定义,不容易理解。
2.2 Java组件JavaBeans
2.2.1 什么是JavaBeans
JavaBeans是一种企业级开发中技术规范,凡是遵循该规范类都称为JavaBeans类,又叫做pojo类。该规范主要包含以下几点:
1.所有类都必须实现序列化接口。
2.所有属性尽量定义为私有属性。
3.所有方法定义为公有方法。
4.提供属性get和set方法,通过该方法可以访问属性。
2.3 JavaSE概述
JavaSE是java Standard edition缩写。JavaSE就是Java标准版,主要用于桌面应用软件编程。JavaSE 包含那些构成Java语言核心类。比如:数据库连接、接口定义、输入/输出、网络编程[3] 朱仲杰 《JAVA•SE6全方位学习》 机械工业出版社 2008
。
JavaSE具有以下几个特点:第一,它比较容易开发;第二,它启动时间短,内存占用较少;第三,它还有元数据特性。
2.4关于Struts
2.4.1 Struts简介
Struts是开源软件。使用Struts目是为了帮助我们减少在运用MVC设计模型应用时间。Struts已逐步越来越多运用于商业软件,是一种非常优秀JavaSE MVC实现方式[4] Y.Daniel Liang 《JAVA语言程序设计 基础篇(原书第5版)》 机械工业出版社 2008
。
2.4.2 Struts主要功能
1.Struts包含一个controller servlet,能够将客户端请求发送给Action对象。
2.它提供了一系列实用对象:通过Java reflection自动处理JavaBeans属性、提示和消息。Struts提供了它自身控制器组件,并且整合了其他技术,用来提供模型和视图。Struts正逐步被运用,是性能良好MVC实现方式[5] 李钟蔚 《JAVA开发实战宝典》 清华大学出版社 2010
。
2.4.3 Struts工作原理
这里我们先来介绍一下MVC,MVC是Model-View-Controller缩写。它作为称用得设计模式得到了广泛运用。MVC 使数据接口和逻辑接口连接减弱,并且使得视图更加富有变化性。MVC使得程序逻辑清晰,更容易被人理解。
MVC工作原理如下2-1所示:
2-1MVC工作原理
接下来,我们说一下Struts,它作为MVC一种实现。Struts继承了MVC各项特性,具有MVC特点。并根据JavaSE特点,做出了相应更改。Struts工作原理,如下图2-2所示:
2-2Struts工作原理
2.5 关于Swing
2.5.1 Swing简介
Swing是建立在AWT之上组件集。除提供了AWT所缺少、大量附加组件外,Swing还提供了替代AWT重量组件轻量组件。AWT中文含义抽象窗口工具包(Abstract Window Toolkit)功能是Java开发用户界面最初工具包。Swing还包括了一个用于实现插入式界面样式特性图形用户界面下层构件。因此,在不同平台上,Swing组件都能保持组件界面样式特性。例如双缓冲、调试图形和文本编辑包等[6] Cay S.Horstmann&Gary Cornell著 《JAVA核心技术》机械工业出版社 2011
。
2.5.2 为什么需要Swing
Swing设计者采用设计模式:模型——视图——控制器(MVC)模式。该设计模式遵循一个基本原则:它限制一个对象功能数量。防止一个按钮完成所有事情。而应该分配内容,比如说让一个对象负责组件观感,另一个对象负责存储内容。
当程序员想要使用Swing组件来完成开发时,不需要考虑MVC体系结构。每个用户界面元素都有一个包装器类来保存模型和视图。当需要查询所需要内容时,包装器类会向模型询问并且返回所要内容。当想要改变视图时(例如,在一个文本域中改变光标位置时候),包装类会把此请求转发给视图。然而,有时候包装器转发命令并不得力。在这种情况下,就必须直接地及模型进行交互。
2.5.3 Swing带给我们什么
MVC模式吸引广大Swing设计者原因是这种模式允许实现可插观感。每个按钮或者文本域模型是独立于观感。当然可视化表明完全依赖于特殊观感用户界面设计,并且控制器可以改变它。比如,在一个语音控制设备中,控制其需要处理各种事件及使用键盘和鼠标标准计算机完全不同。Swing设计者通分离底层模型及用户界面,这样能够重用模型代码,更甚于在程序运行时对观感进行切换[7] (美)阿诺德,Ken Arnold,等.Java程序设计语言[M].北京:人民邮电出版社,2006
。
对于绝大多数组件,模型类将实现一个以Model命名结尾接口。比如,我们所知道按钮就实现了ButtonModel接口。实现上述接口类可以定义各种按钮状态。上述按钮并不是很复杂,在Swing组件库中就有个叫DefaultButtonModel类就实现了这个接口。在试图对象中,每个Swing组件都有一个相关后缀UI视图对象[8] BruceEckel.Java编程思想[M]. 机械工业出版社,2003
。
2.6 关于开发环境概述
2.6.1操作系统
此在线考试系统开发环境是Windows系统,该系统安全系数比较高而且方便。
2.6.2开发语言
开发语言:jdk1.6.0_10。JDK(Java Development Kit)是Sun 公司针对Java开发员研发产品。
Java就是JDK,它包括了Java运行环境(Java Runtime Envirnment);一堆Java工具和Java基础类库(rt.jar)。所有Java应用程序都有某个版本JDK及其相对应。所以,要学好Java,首先要掌握JDK。最能被程序员接受是Sun公司发布JDK。除了Sun之外,好多公司都开发了自己JDK。例如GNU组织开发JDK;IBM公司开发JDK等[9] 耿祥义,张跃平.JAVA实用教程[M]. 清华大学出版社,2003
。
2.6.3开发环境
开发环境:Eclipse6.0版。Eclipse 是一个基于JAVA开发平台。它源代码是开放。该软件本身是一个框架和一组服务,用于通过插件组件来构建开发环境。其中Eclipse 附带了一个标准插件集,包括了Java开发工具(Java Development Kit,JDK)[10] 飞思科技产品研发中心.JAVA应用开发详解[M].电子工业出版社,2003
。
2.7关于布局概述
2.7.1BorderLayout
BorderLayout用于边框布局布置容器。它可以对容器内组件等进行布局设置。例如,调整大小,调整容器内组件位置。该容器有以下五个区域:东、西、南、北、中。这五个位置,每个位置只允许包含一个组件。并且这些位置都有自己标志:EAST、WEST、SOUTH、NORTH、CENTER[11] 赛奎春.JAVA工程应用与项目实践[M]. 机械工业出版社,2002
。
2.7.2FlowLayout
FlowLayout外观管理器功能就是把系统程序中所用各个组件按照先后顺序由上到下,由左及右依次排开[12] [美]Rogers Cadenhead. Java编程入门经典.梅兴文译.第4版.人民邮电出版2007
。
2.7.3GridLayout和GridBagLayout
GridLayout作用是将该窗口分成大小不等均匀网格,然后使得组件能够依次按格放入组件。
GridBagLayout功能是根据设计者想法,改变组件大小,使它们能够摆在想要位置[13] 雍俊海编著.Java程序设计习题集.北京:清华大学出版社,2006
。
2.8小结
本章主要介绍了该在线考试系统关键技术和工具,对系统模式简介MVC,以及串联Struts。使得模型——视图——控制器直接进行恰当交互,完成各自职能。用Swing布局器进行布局,使得用户界面设计更加人性化。
第三章系统需求分析和总体设计
3.1 系统功能需求
这个在线考试系统设计目标是实现考试系统,让考生能够自主考试完成答卷以及查分。并附带实现相应业务功能,如登录功能、考试功能、查分功能等。项目中需实现功能如下。
1.登录功能。考生能够自主登录该考试系统,再输入考生账号密码后能够准确无误进入考试系统。为考试完成做好充分前提。
2.考试功能。它主要业务逻辑就是考试功能。考试功能,顾名思义,考试点击该按钮能够打开试题进行作答。进入考试后系统为考生自动分配考题,考生只需对试卷中出现考题进行作答即可。
3.查看分数。考生能够在考试结束后查看考试分数。当考生对自己分配到试题做大完毕并确认无误后,提交试卷。系统会对考生对试题作答准确及否进行判断,进而对考生作答给出得分。
4.查看考试规则。该考试系统能够查阅考试规则。考试组织者根据具体情况对考试规进行编写。考生在考试前能够阅读该规则,以免出现不该发生失误。
5.题目切换。实现上一题、下一题切换。是考生能够在做题过程中进行题目选择,或者切换题目进行答案纠正,题目检查。
6.计时功能。考试科目都有规定一定作答时间,该考试系统具有倒计时功能。考生能够时刻看到自己作答时间以及剩余时间。不至于因为时间问题影响自己答题,计时功能能够督促考生快速完成试题作答。
除此之外,该系统下管理员还可以修改难度系数和倒计数时间修改设定以及考题题目增减来适应不同情况。
3.2 系统设计总体框架
3.2.1软件层次结构
loginframe
clientcontext
menuframe
控制层
EntityContext
ExamServiceImplpl
examfranme
视图层 业务层 数据层
3-1软件层结构
在线考试系统软件层次结构大致以上述图片进行连接。首先,登陆窗体,菜单窗体,测试窗体共同构成了用户客户端。用户客户端连接业务层,业务层连接数据层,三者共同构成了该考试系统软件层结构。
3.2.2界面及控制器关系
Client Context
考试界面
examframe
登陆界面
LoginFrame
选择界面
MenuFrameMenuFrame
3-2界面及控制器关系
界面及控制器关系大致由上图就能够表述出来,客户端就是这里控制器。它能够控制选择进入各个界面。它根据考生信息输入请求,响应进入不同考试界面。例如:登陆界面,选择界面,和考试界面。综上,呈现出控制器及界面关系。
3.2.3业务层介绍
在这个在线考试系统开发中,业务层采用接口加实现方式制作。其中项目中业务层主要有以下几个功能:
1.验证用户信息正确性。当用户来到登陆界面,用户需要输入本人账号和密码方能进入该考试系统完成考试作答。当输入账号或者密码不准确时,系统会做出报错信息。以免考试出现问题。
2.从数据层抽取试题,生成试卷,为表现层提高考试所需要信息及试题。使考生能够得到考试试题并完成考试。
3.验证用户答案是否正确并且给出分数。在考生完成试题作答后能够获取自己得分。
3.2.4数据层介绍
在本次在线考试系统开发中,数据层主要实现功能是读取用户信息,考题信息,考试信息等。
读取用户信息:数据层接收到登录请求时,数据层要调出用户信息并且读取。从而响应请求,进而用户能够顺利进入考试系统。
考题信息:当用户登录考试系统成功,考生要进行考试,必须发送考试请求。这时,数据层要调出考题信息,形成考题。这样,考生就能进入考试界面并完成考试作答。
考试信息:当考生开始答卷,数据层要不断地更新考试信息。并通过考生答案提交判断考生得分。当考生提交试卷,数据层提交考生得分。
3.3系统用例图
3.3.1 总体用例分析
用户管理部分
在线考试系统
考试管理部分
管理者
成绩管理部分
试题管理部分
3-3总体用例图
由上图我们可以看出该考试系统分为以上五个部分即:用户管理部分,考试管体部分,成绩管理部分以及试题管理部分。其中,用户管理部分是对用户个人信息进行统一管理,使用户能够登陆该在线考试系统。考试管理部分是指考生再登陆考试系统后,对考试进行所有操作,比如,查看考试规则、进行考试、试卷提交等,都贵考试管理部分统一作出处理。成绩管理系统就是当用户提交试卷,系统给出分数后,它要对数据进行处理并能够在用户界面呈现出来。试题管理部分是管理者将试题导入该考试系统,并将试题进行分类。当用户点击考试请求,试题管理部分自动分配考题供用户作答。上述使用者分为两部分,其中一部分是管理者;另一部分是用户。
3.3.2 用户管理用例分析
通过下图我们能够看到用户管理分为以下四部分,当用户登陆考试系统后可以进行以下五个操作即:考试开始,分数,考试规则,试题提交以及离开。当考生点击考试开始,系统就为用户分配好试题。当然在开始考试前最好看一下考试规则,以免出现非受获性失误。当用户提交考题时要进行试卷提交操作,接着用户会得到考试结果即考试分数。最后用户进行离开操作,离开考试系统。这样,一次完整在线考试就结束了。这就是用户所能体验在线考试系统用户所有操作。
在线考试系统
开始
分数
用户
考试规则
试题提交
离开
3-4用户管理
3.3.3 考试管理用例分析
考试管理
考试规则
准备考试
开始考试
用户
自动阅卷
查看成绩
3-5考试管理
综上图,我们可以得到考试管理部分包括以下五个管理项目。就是考试规则修订填充;考试系统曾是正常时刻准备用户考试;开始考试,对考试进行计时,以及监督用户进行考试操作,进行整错判断;用户提交试卷后,考试管理自动判断用户所做出答案并进行评分;最后考试管理提供用户分数。这些都能被用户体验。
3.3.4 考试题目管理用例分析
题目管理
增加题目
删除题目
管理者
答案设置
3-6题目管理
上图所描述是管理者对题目进行管理操作。它包含五部分:题目增加、题目删除以及答案设置。增加题目和删除题目是管理者对试题库试题进行数量修订,以满足用户对该考试系统需求。答案设置就是对试题正确结果作出明确标出。综上来实现管理者对题目管理。
3.3.5 成绩管理用例分析
成绩管理
成绩查询
用户
管理者
3-7成绩管理
上图是该系统成绩管理用例。管理者对用户成绩进行管理,用户能够查询自己成绩。完成系统成绩显示职能。
3.4小结
这一章通过对系统功能需求、设计框架以及总体用例图来分析系统需求和总体设计。由系统功能需求够做出系统基本框架,通过框架让我们更能了解考试系统基本构造。最后通过系统整体用例图来说明用户及管理者所需操作以及在此考试系统中起到作用。为在线考试系统构造做出更详细说明,为下边在线考试系统具体编写做好坚实铺垫。
第四章系统详细设计
前边几章我们已经介绍过,本文所描述在线考试系统主要有两部分组成:客户机部分和服务器部分。此外,该系统还涉及到一些实体类和一些工具类。这些类在系统中都是以包形式存在,下边我们来介绍一下考试系统设计方式。按照包形式。
4.1客户机类
客户机类包含LginFrame类、SelectSubjectFrame类、ExamMainFrame类、Client类。各个类在此考试系统中都扮演着不同角色,下面我就来介绍一下。
首先是登陆界面。该界面有登录窗口、学号输入框、密码输入框、确定进入考试系统按钮、取消按钮等。这些都是都是使用LginFranme类来编写实现。
而SelectSubjectFrame类用来编写选择科目窗口、一个选择科目标签、一个选择科目下拉菜单和一个确定按钮以及一个取消按钮。
下边这些都属于ExamMainFrame类:学生考试窗口、考试窗口标题即在线考试系统、显示题目文本框、试题四个选项可选项、显示题号框和剩余题目数标签、上一题,下一题试题切换以及交卷按钮、显示剩余剩余时间标签。
以上就是本次考试系统中客户机类。
4.2服务器类
服务器中只用到了ServeletMainClass类,下边我们属性、方法和内部类这个顺序来介绍一下。
首先,ServelettMainClass类属性有以下内容。ss是ServerSocket缩写,其表示服务器套接字;stuDao是由StudentDao缩写而来,它表示学生信息;pro是Properties缩写,其含义是一个键值对,通信时传输信息用;pDao由PaperDao缩写而来,它表示试卷信息。
接着,我们介绍一下它方法。其中,init()void表示初始化函数;而main() void表示服务器启动入口函数。
最后,我们来介绍一个内部类ServerThread,它有以下属性。S是Socket缩写,它表示及客户机连接套接字;oos是由ObjectOutputStream缩写而来,它表示对象输出流。接着来描述一下它方法,begin void是表示开始考试请求;login void用来表示登陆请求;其中send void表示结束考试请求发送;run() void来表示线程运行。
4.3实体类部分
其中实体类包含四个类:一个学生类;一个试卷类;一个试题类;还有一个请求类。下面我们依次来看一下这些类属性和方法。
首先,来看一下学生类。Student类,该类中有以下属性:id是int整型,它表示学生学号;name和passwd都是字符串型,前一个表示学生学号,后一个表示学生密码。
接下来,介绍一下试卷类。该类有以下三个属性:subject String来表示考试科目;allQusstion List 用来表示所有题目集合;answers List能够表示出学生选择答案集合。实现方法有如下,toString() void 是将试卷转换成字符串格式;而addQusetion() void 是表示向试卷中添加题目。
最后,来介绍一下试题类。此类包含以下属性和方法。Question类,属性如下:title是String字符串类型,它表示题目标题;answer是char字符类型,它 表示题目正确选项;items是List<String>(只能存储字符串类型集合)一个集合,它表示题目选项。Question类用到方法如下:toString() void它表示将题目转换成字符串格式。
4.4工具类
QuestionReader类和SocketUtil类是该考试系统用到工具类,前一个是表示封装一些读取磁盘文件方法,后一个是表示封装一些创建套接字连接基本格式。
4.5读取配置文件类
配置文件有以下两个接口:StudentDao接口和PaperDao接口。分别需要运用方法getStudent()和getPaper()。为了实现上述接口和方法,分别用StudentDaoFromTextFile类和PaperDaoFromFile类来实现上述接口和方法。最终能够读取配置文件。
4.6系统运行详细描述
在4.1至4.5已经介绍了系统中各种类属性以及方法。然而各种类之间存在着调用和依赖关系,下边就来分析一下这些关系。
PaperDaoFromFile
SelectSubjectFrame
ExamMainFrame
LoginFrame
服务器
服务器线程
client
SocketUtil
QuestionReader
StudentDaoFromTextFile
配置文件
4-1系统运行详细图
上图是这个在线考试系统整体框架图。从上边例图我们可以看出,该系统最关键就是服务器通过服务器线程及client直接连接关系。该在线考试系统是在整个连接才使得客户机及服务器发生联系并完成整个在线考试过程。服务器及客户机之间数据交换和通信都是以服务器及client之间连接作为铺垫。系统在初始运行时需要将配置文件中数据读取并传送到到服务器中,然后,客户机才能收到服务器传送来数据。客户机每个窗口数据传输都是以服务器及client连接为前提。
那么,接下来要介绍一下几个重要类具体设计说明:
1.服务器线程类
服务器线程类,它是服务器主类一个内部类。因为它只是服务器类,只作为内部类使用,因而它只被设计在服务器内部。当服务器接收到来自客户端请求时该连接继续进行。服务是程序创建一个服务进程及服务器连接而成,它适合运行run()方法。该方法用来判断客户端发送请求类型,并且判断调用何种方法。服务器然后发送相应数据。下面我们来详细了解一下这个过程:
首先,服务器在初始化init()方法是个while()死循环,此时,服务器不断地监听客户机套接字请求,当有请求到来时,系统继续往下运行;接着,服务器构建一个服务线程,这个服务线程源自线程类。它直接调用start()方法,让服务器继续往下运行,建立于client之间连接。此时,客户端及该服务器线程就建立起了连接。然后,服务线程创建一个输出流,这个输出流是用来给客户机发送信息。紧接着又是一个while()死循环,不断地从上述输出流中读取数据,直到有判断请求道来。
下面我们要介绍一下判断请求类型。这个请求类型要使用到一个Request请求类,这里涉及到四个静态常量。这里要使用到一个switch、case 语法,来匹配所要调用方法。如果调用静态常量是1,这里用到login_request,程序就调用login()方法。如果是静态常量2,就要调用begin方法。如果是静态常量3,就会调用交卷信息send()方法。如果静态常量4,就表示学生要退出考试界面,这时候,客户端关闭,服务器接收到退出请求之后,就要直接跳出循环,然后关闭及之连接流和套接字连接。
综上所述,这就是考试系统运行基本过程。
这里简单描述一下上边提到几个方法作用。首先,login()就是发送用户信息及考题给客户端程序,然后进入下一个进程,继续监听其他请求;begin()方法是根据用户反映信息对用户进行分发试题,然后继续监听请求;send()是告诉服务器用户考试结束。
2.客户端窗口类
客户类窗口类,是实现用户由对这个系统进行第一步操作开始,到操作结束为止所有过程。从用户登录该系统开始,输入用户名密码进入考试界面,对考试规则等进行阅览,进入考试一直到考试结束,提交考卷并得到考试分数,
展开阅读全文