网上考试系统毕业设计论文.doc_第1页
网上考试系统毕业设计论文.doc_第2页
网上考试系统毕业设计论文.doc_第3页
网上考试系统毕业设计论文.doc_第4页
网上考试系统毕业设计论文.doc_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河南机电高等专科学校毕业论文网上考试系统毕业设计论文1 绪论1.1课题背景随着人们对信息管理及其运用需求的日益迫切及信息技术的迅速发展,信息系统的整合及运用在办公管理中得到越来越广泛和深入的应用。在线考试系统是典型的集管理信息系统以及网络编程技术,是高校教学工作的重要工作内容之一。但随着高等学校管理工作的内容、对象不断变化,烦琐的手工操作和一般的计算机软件已经不能满足现代化考试的需要。运用先进的管理信息系统及友好的界面,对学生息资源以及试题资源进行科学化和系统化管理,己经成为高校考试系统的发展趋势。目前,几乎所有高校的教学工作部门都已经建立了针对日常职能工作的管理信息系统,例如,财务处的财务管理信息系统、教务处综合教务系统、科研处的科研管理信息系统、图书馆的图书检索信息系统等。这些系统在很大程度上提高了部门的工作效率和管理水平。然而,对于高校中的在线考试系统来说,目前还缺乏较为完善的系统化信息管理及其有效利用。正是认识到在线考试系统在整个学校信息化过程中的重要地位,才需要利用先进的系统开发工具和技术,实现管理工作的信息化、科学化管理;真正做到“充分利用现有资源和信息”,开发出对现有信息的充分整合及操作,减少不必要的、繁杂的手工劳动,提高办公效率,加快教育体制改革的进程。因此,建设开发一个功能完备、操作简便的在线考试系统己经迫在眉睫。1.2主要内容及目的在线考试是现阶段研究开发的一个热点。它是建立在国际互联网上的应用系统,客户端的配置可以极为简单,使考试不受地域的局限。一个完备的在线考试系统可以使用户在网上学习过后及时检验自己的学习效果,已发现自己的不足,使得学习效率得到很大提高。在线考试系统中题目的生成、试卷的提交、成绩的批阅等都可以在网络上自动完成。只要形成一套成熟的题库就可以实现考试的自动化。这样一来,教师所要做的只是精心设计题目、维护题库,而不是组织考试,从而大大减轻了教师的负担,这表明其经济性是相当可观的。为了适应新形势的发展,进行了这一系统的初步设计工作,也可以说是做一个初步的探索,希望它能够在各类考试中发挥高效、便捷的作用,把老师从繁重的工作中解脱出来!该系统采用C/S模式来设计,服务器端采用Mysql数据库系统和SWing组件来构成考试的应用服务系统,同时可进行远程系统维护和管理;客户端采用Frame窗口来完成考试全过程。课题研究的内容主要是针对学校考试的实际情况和自身特点,利用数据库管理信息系统技术设计开发出一个基于C/S结构的在线考试系统,提高学生对知识的掌握以及教师对学生学习水平测试。按照系统开发的流程,首先通过详细的系统需求分析,设计出系统的整体框架结构;在此基础上,采用My Sql实现数据库设计,利用服务器端的有好界面实现对试卷以及学生信息信息的录入、删除、修改、浏览、查询等功能。课题研究的主要目的是通过本毕业设计,将数据库理论知识以及Socket网络编程转化为实践经验,并藉此进一步理解数据库理论;掌握数据库应用程序的开发步骤、设计方法及编程技巧,熟练使用SQL语言,学会使用Java进行面向对象的编程;在编程的过程中,提高自己的动手能力,以及分析和解决问题的能力,为将来能够开发出高效信息管理系统打好基础。1.3论文组织结构第一部分:绪论。介绍了论文的选题背景、主要内容和研究意义。第二部分:系统概述。对考试系统的发展趋势和作用的概述。第三部分:需求分析。对系统需要解决的问题和具备功能进行需求分析。第四部分:系统总体设计。从整体上对整个系统的模块进行概述。第五部分:系统实现。对服务器模块实现方法的介绍。第六部分:系统测试。对问题的解决方法以及系统的测试进行概述。第七部分:总结与展望。对整个设计进行归纳总结和对未来的展望。2系统概述2.1国内外网上考试系统研究现状与发展趋势随着计算机应用的迅猛发展,网络应用不断扩大,现在很多国外的大学和社会其他部门都已经开设了远程教育,通过计算机网络实现异地教育和培训,且这些应用正逐步深入到千家万户。人们迫切要求利用这些技术来进行网上在线考试,以减轻教师的工作负担及提高工作效率,与此同时也提高了考试的质量,从而使考试更趋于公证、客观,更加激发学生的学习兴趣。例如目前许多国际著名的计算机公司所举办的各种认证考试绝大部分采用这种方式。在英国,已经实现了英语资格考试的网上学习和水平认证全过程。远程教育包括很多环节,例如教学系统、答疑系统和考试系统等等。其中很重要的一个环节就是网上考试系统,同时它也是最难实现的环节。在我国,虽然远程教育已经蓬勃地发展起来,但是目前学校与社会上的各种考试大都采用传统的考试方式,在此方式下,组织一次考试至少要经过五个步骤,即人工出题、考生考试、人工阅卷、成绩评估和试卷分析。显然,随着考试类型的不断增加及考试要求的不断提高,教师的工作量将会越来越大,并且其工作将是一件十分烦琐和非常容易出错的事情,可以说传统的考试方式已经不能适应现代考试的需要。网上考试系统是建立在国际互联网上的应用系统,客户端的配置可以极为简单,使考试不受地域的局限。2.2网上考试系统的作用一个完备的网上考试系统可以使用户在网上学习过后及时检验自己的学习效果和已发现自己的不足,使得学习效率得到很大提高。在线考试系统中题目的生成、试卷的提交、成绩的批阅等都可以在网络上自动完成。只要形成一套成熟的题库就可以实现考试的自动化。这样一来,教师所要做的只是精心设计题目、维护题库,而不是组织考试,从而减轻了教师的负担及提高工作效率,与此同时也提高了考试的质量,从而使考试更趋于公证、客观,更加激发学生的学习兴趣。3系统需求分析该网络考试系统主要采用Mysql数据库、SQL语言,Java技术,JDBC技术和MyEclipse工具,整体设计遵循软件工程的方法,这几种技术和方法要实现一个软件系统,首先应该进行需求分析,这样才能令设计出的软件满足用户的各项功能。3.1 系统需要解决的主要问题首先,因为考试是面向特定的某些对象的,所以考试者进入系统应该进行身份验证。因为本系统是针对具体科目的考试系统,所以考试者进入考试系统后,不需要选择考试的科目,只能针对本系统规定的科目进行考试。在线考试于一般的单机考试是不同的。鉴于考试环境一般为机房,考试者之间的距离很近,为了在线考试做到规范,对于每个应试者来说,试卷的试题和题量都应是相同的,但试题并不相同。在线考试基于网络环境,试卷应该从服务器的数据库随机抽取试题后动态生成的。另外,系统还应该对考试时间进行控制,时间到了会要求考试者交卷。考试者选择答案提交后,应该由计算机自动判卷,得到成绩后显示出来。考试完毕后,可以返回登录界面或继续考试。此外,应该能够方便、快捷的对在线考试系统管理。3.2 系统相关原理的概述该网络考试系统主要采用Mysql数据库、SQL语言,Java技术,JDBC技术和MyEclipse工具。下面就对这几种技术做一个概述。3.2.1 MyEclipse 6.0概述 MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, JavaScript, SQL, Hibernate。在结构上,MyEclipse的特征可以被分为7类:(1) J2EE模型(2) WEB开发工具(3) EJB开发工具(4) 应用程序服务器的连接器(5) J2EE项目部署服务(6) 数据库服务(7) MyEclipse整合帮助 对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。3.2.2 JDBC概述JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。 有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java 程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商 实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的 目标并且具有简单、严格类型定义且高性能实现的接口。 Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。 JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库。企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。 MIS 管理员们都喜欢 Java 和 JDBC 的结合,因为它使信息传播变得容易和经济。企业可继续使用它们安装好的数据库,并能便捷地存取信息,即使这些信息是储存在不同数据库管理系统上。新程序的 开发期很短。安装和版本控制将大为简化。程序员可只编写一遍应用程序或只更新一次,然后将它放到服务器上,随后任何人就都可得到最新版本的应用程序。对于 商务上的销售信息服务, Java 和JDBC 可为外部客户提供获取信息更新的更好方法。 JDBC API 既支持数据库访问的两层模型(C/S),同时也支持三层模型(B/S)。在两层模型中,Java applet或应用程序将直接与数据库进行对话。这将需要一个JDBC驱动程序来与所访问的特定数据库管理系统进行 通讯。用户的SQL语句被送往数据库中,而其结果将被送回给用户。数据库可以位于另一台计算机上,用户通过网络连接到上面。这就叫做客户机/服务器配置,其中用户的计算机为客户机,提供数据库的计算机为服务器。网络可以是 Intranet(它可将公司职员连接起来),也可以是 Internet。 在三层模型中,命令先是被发送到服务的中间层,然后由它将SQL 语句发送给数据库。数据库对 SQL 语句进行处理并将结果送回到中间层,中间层再将结果送回给用户。MIS 主管们都发现三层模型很吸引人,因为可用中间层来控制对公司数据的访问和可作的的更新的种类。中间层的另一个好处是,用户可以利用易于使用的高级API,而中间层将把它转换为相应的低级调用。最后,许多情况下三层结构可提供一些性能上的好处。 到目前为止,中间层通常都用 C 或 C+ 这类语言来编写,这些语言执行速度较快。然而,随着最优化编译器(它把 Java 字节代码转换为高效的特定于机器的代码)的引入,用 Java 来实现中间层将变得越来越实际。这将是一个很大的进步,它使人们可以充分利用 Java 的诸多优点(如坚固、多线程和安全等特征)。JDBC 对于从Java的中间层来访问数据库非常重要。 简单地说,JDBC 可做三件事:与数据库建立连接、发送 SQL 语句并处理结果。下列代码段给出了以上三步的基本示例: Connection con = DriverManager.getConnection(jdbc:odbc:wombat,login,password);Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(SELECT a, b, c FROM Table1); while (rs.next() int x = rs.getInt(a); String s = rs.getString(b); float f = rs.getFloat(c); 尽管JDBC在Java语言层面实现了统一,但不同数据库仍旧有许多差异。为了更好地实现跨数据库操作,于是诞生了Hibernate项目,Hibernate是对JDBC的再封装,实现了对数据库操作更宽泛的统一和更好的可移植性。3.2.3 My Sql 简介数据库是与日常应用紧密相连的,在没有出现数据库之前,人们通过手工记录处理各种信息。当需要记录处理的信息非常多时,手工处理效率就显得及其低下了。比如病人到医院就医,需要通过挂号、就诊、买药、住院、治疗、康复等一系列程序。挂号就要登记病人姓名、性别、年龄等情况。买药的时候医院依据药单从成千上万种药物中挑出符合要求的药品,需要知道药的品名、具体位置、库存多少、存取多少等等。如果病人很多,医院选药就很复烦了。如果手工处理,工作量大,而且有可能调拿错药。这时如果通过数据库处理,只需简单地输入药品名就马上可以知道具体位置、库存还有多少等详细情况。这样是不是很方便、提高了效率,并且还避免了拿错药的情况。数据库应用系统主要包括数据库(DataBase,简称DB)、数据库管理系统(DataBase Management System,简称DBMS)、数据库应用3大部分。实际的数据库可能相当复杂,对数据库的操作就更加复杂。我了更有效地管理和操作数据库,人们研制出数据库管理系统(DataBase Management System,简称DBMS)。DBMS是人们用于操作数据库的软件产品。我们平常说的数据库Oracle、MS SQL Server、MySQL、Sybase、FoxPro、Access等等,都是属于DBMS范畴。虽然这些DBMS产品的功能各有所异,但是基本功能到大同小异差不多。MySQL是现在流行的关系数据库中其中的一种,相比其它的数据库管理系统(DBMS)来说,MySQL具有小巧、功能齐全、查询迅捷等优点,关键的是它是免费的,可以在Internet上免费下载到,并可免费使用,对于一般中小型,甚至大型应用都能够胜任。3.2.4 多线程概述多线程是与单线程比较而言的,普通的Windows采用单线程程序结构,其工作原理是:主程序有一个消息循环,不断从消息队列中读入消息来决定下一步所要干的事情,一般是针对一个函数,只有等这个函数执行完之后,主程序才能接收另外的消息来执行。比如子函数功能是在读一个网络数据,或读一个文件,只有等读完这个数据或文件才能接收下一个消息。在执行这个子函数过程中你什么也不能干。但往往读网络数据和等待用户输入有很多时间处于等待状态,多线程利用这个特点将任务分成多个并发任务后,就可以解决这个问题。要学会Java中的多线程编程,就得知道如何实现支持多线程的类。Java中实现多线程的类有两种方法:扩展java.lang.Thread类,用它覆盖Thread类的run方法。生成实现java.lang.Runnable接口的类并将其它的实例与java.lang.Thread实例相关联。Thread类是负责向其它类提供线程支持的最主要的类,要使用一个类具有线程功能,在Java中只要简单地从Thread类派生一个子类就可以了扩展Thread类,如printThread.java。Thread类最重要的方法是run方法。run方法是新线程执行的方法,因此生成java.lang.Thread的子类时,必须有相应的run方法。3.3系统用户特点本系统的用户主要有:(1)学生用户。由于本系统是用于学生考试的系统,面向对象是数量众多的学生。(2)老师用户。老师是考试系统中关键的一环,考试系统能否推广,老师起到决定性的作用,因为老师在不但要在考试之前命好题,还要组织考试,对试卷进行回收、批改。一个优秀的考试系统要在不但要考虑到学生的使用方便性,还要顾及到老师的使用简便性。3.4系统设计目标在线考试系统的设计目标是:用标准化的计算机机房,建立安全快捷的考试系统,取代传统的人工出题,人工改卷,人工计分的模式,实现劳动力的解放,提高教育水平,最终设计出一个界面友好、操作简单、便于维护的集成化的考试系统。3.5系统功能需求在线考试系统的开发主要包括客户端的登陆系统,服务端的数据库管理系统。以及考试服务的开启,对于前者要求能耐够通过网络进行数据的通信。而对于后者则要求能够通过有好的界面操作数据实现对学生信息以及试卷信息,和学生成绩的有效管理,以及参加考试科目的发布。本系统主要用来实现对学生信息和考卷综合信息的整合,通过网络编程实现计算机上的考试,避免以往人工操作等繁杂的劳动,其主要功能包括考卷信息录入、修改、删除、浏览、综合查询以及学生信息的录入和设定,以及参加考试信息的设定等工作。根据相关的调查研究以及结合实际工作生活中的体会,此在线考试系统的功能需求如下:(1)系统集成化,界面风格简洁,易于操作;(2)服务端具有对考卷信息的录入、修改、删除、更新等功能;(3)服务端具有对学生信息的插入,浏览和查询功能;管理员通过查看功能实现信息的可视化管理;(4)服务端具有试卷选择和对每个用户发布的试题不相同的功能防止用户之间的抄袭,并且能向各个用户发布交卷提醒的功能;(5)客户端具有用户认证和接收服务端发布的试题以及自动记分并且提交成绩的功能。3.6系统功能模块设计为了实现系统集成化、界面简洁及易于操作的要求,考试系统服务端将功能模块划分为开启服务模块、服务器配置模块、试卷选择功能模块、试卷及试题添加功能模块、在线考试用户查看功能模块、已经持久化的学生信息浏览功能模块和学生信息的录入功能模块。考试系统服务端实现功能如下:(1)开启服务模块:管理员通过友好的操作界面能够开启/停止考试系统的服务。(2)服务器配置模块:该模块为系统管理员操作,通过配置信息持久化的方式以及客户端的连接参数,从而使开启服务模块的功能能够正常运转。(3)试卷选择功能模块:该模块功能的正常实现需要服务器配置模块的正确配置。通过该功能模块能够实现考试科目的选择、所选科目试题的查看、考试题目数的设定以及对其中试题的增加和删除功能;(4)试卷及试题添加功能模块:该功能模块的正常运转也需要服务器配置的成功。通过该模块能够实现添加一个新科目,以及向指定科目添加试题的功能。(5)在线考试用户查看功能模块:该模块的实现需要服务器的正常开启,通过该模块能够实现对正在参加在线考试的学生的查看。从而使教师能够及时了解参加人数的轻快(6)已经持久化的学生信息浏览功能模块:该功能模块的使用需要服务器配置的成功,通过该功能模块能够实现对已经持久化的考生信息和成绩的简单查询。(7)学生信息的录入功能模块:该模块的实现需要服务器配置信息的正确及成功。通过该功能模块能够实现学生信息的持久化存储便于后期的管理和查询。3.7 系统体系结构选择目前流行的应用系统的系统结构主要有两种模式,即客户机/服务器模式(C/S模式)和浏览器/服务器模式(B/S模式)。这两种方式从本质上说,都是基于提供了标准接口的后台数据库来实现的,但在具体实现上,两种开发方法有很大差别。C/S模式是当前数据库应用程序中极为流行的一种方式,尤其是网络技术的充分发展后,当前很多系统都采用这种方式进行构造。它是为了解决传统数据库的弊端,适应网络的发展而产生的。它包括前端和后台两部分,前端是面向用户的人机界面,后台是数据存储与管理部分和文件服务器。其主要优点是交互性强,在客户端有一套完整的应用程序,在管理、统计分析、打印等方面功能较强,能提供安全的存取模式,对相同的任务,C/S模式完成速度更快。由于这种体系结构把数据和对数据的管理都统一放在了服务器上,因此就保证了数据的安全性和完整性,同时也可以充分利用服务器的高性能特点。B/S模式是TCP/IP协议和www服务在C/S方式上的一种应用和扩展,把用户程序、服务器、网络数据库有机地结合起来。其特点是简化了客户端工作,客户端无需连接数据库,系统维护简单,支持利用统一的用户程序访问不同的系统,可以充分利用基于Internet的数据访问方式和新的开发工具。在线考试系统主要为了满足学校对教员学生学习情况掌握的需要。根据对考试系统的功能和特点的分析,考虑到考试系统主要运用在学校机房并且服务器的配置不是很高的特点,所以在在线考试系统中,采用了交互性强,选作服务器的主机性能不要求很高并且通讯开销较低,具有较强的数据操纵和事务处理能力的客户机/服务器模式(C/S模式)实现。3.7.1 C/S模式介绍所谓C/S模式是指具有主从分布与协作处理特征的计算机体系结构。它是指用一个主机连接若干个客户机,主机上安装DBMS,以满足客户机对数据访问的各种要求。客户机具有单独的处理事务的能力,可以对数据的输入进行预处理,也可以对主机返回的结果进行再加工整理,并且与用户进行交互式对话。它采用客户机请求服务方式,即服务器根据请求提供相应的服务。该模式下所有的客户机与数据库服务器相连,服务器负责数据的处理,客户端负责与用户的交互,向后台的服务器发出请求,其数据业务流程如图3-1所示: 客户应用程序数据库服务器数据请求返回数据图3-1 C/S模式结构C/S结构的数据交互性强,能够处理大量的数据流,存取安全,处理速度快,界面友好。根据该特点,C/S模式适合于固定小范围、安全性要求高、处理数据量大的领域。3.7.2 C/S模式的主要技术特征(1)共享资源,节约经费服务器可以同时为多个客户机提供服务,并且具有并发控制、封锁等能力协调多用户对于共享资源的访问。(2)不对称协议在客户机与服务器之间存在着一种多对一的主从关系,客户机是主动的,服务器是被动的。(3)基于消息的交换客户机与服务器是一种一对藕合的系统,它们通过消息传递机制互相协作,消息是服务请求与服务响应的媒介。4总体设计4.1系统结构图根据需求分析,设计出了学生考试子系统和考试管理子系统。考试系统模块如图4-1所示:基于C/S模式的考试系统学生考试子系统考试管理子系统 图4-1 考试系统模块总图学生考试子系统分为三个模块:学生登录模块,选择科目模块和开始考试模块。如图4-2所示:学生考试子系统开始考试学生登陆选择科目图4-2学生考试子系统模块考试管理子系统主要是针对管理员的,管理员可以通过登录考试管理子系统查看学生信息,添加学生信息,添加试题和管理试卷。考试管理子系统的模块如图4-3所示:考试管理子系统系统配置系统服务用户管理在线用户试卷管理试题管理图4-3考试管理子系统模块4.2学生考试子系统本系统采用Java+JDBC+MySQL的C/S模式来实现学生考试。考试界面美观,学生操作方便,主要由以下几个模块组成:(1)用户登陆 验证学生的登陆信息是否合法,登记学生的登陆信息。考试开始时,考生在客户端机器上使用学号和密码登陆进入考试系统。所有考生的信息(包括学号,姓名和密码)都保存在MySQL中的student表中。(2)科目生成 接收服务器传送的考试科目信息,生成科目列表,提供考试选择科目界面,供考生选择考试科目。当学生选择好科目后,点击开始考试就进入了考试界面。(3)考试界面接受服务器端传送的考卷信息,依次将每道题显示出来,供学生进行考试。在考试界面的上面显示出了考生信息,包括学号,姓名,密码,和考试科目。考试界面的左边显示出了剩余的试题数量。考试界面的右边显示出了考生的剩余时间,当时间到时,系统会自动提交考生的试卷,并立刻显示考生的分数。这时,客户端会自动的把考生的分数和考生的答卷发送到服务器端,服务器端会把考生的分数同时保存在MySQL数据库中的xxxsco表中和xxx.sco文件中,供老师查看。(注意:xxx表示考试科目名称,例如考生考试的是Java,他的分数就保存在MySQL中的javasco表中和java.sco文件中。) 考试界面的最下面显示的是试题的选项和考生可以做的操作。学生考试子系统的用例图如图4-4所示: 图4-4 学生考试子系统用例图4.3 考试管理子系统考试管理子系统主要是用来控制考生考试的后台系统,由于面向的操作管理用户较少,又需实现较多、较复杂的功能,故采用较常用的后台管理程序开发方法开发。 本系统主要有以下几个模块组成: 系统配置模块,系统服务模块,用户管理模块,在线用户模块,试题管理模块,试卷管理模块。管理员登陆考试管理子系统后首先需要配置系统参数,接着就可以进行开启考试服务,管理学生,管理试题,设置试卷等操作。如图4-5所示: 图4-5 考试管理子系统用例图 4.4系统包结构及类说明4.4.1系统主要的包和类(1)客户端包结构:exam.model包:AnswerPaper.java类Paper.java类Request.java类Response.java类Student.java类examclient包:LoginFrame.java类SelectSubjectFrame.java类ExamMainFrame.java类QuestionPanel.java类ExamClient.java类FillWidth.java类(2)服务器端包结构:examserver.dao包:StudentDao.java接口StudentDaoFromMySQL.java类CourseDao.java接口CourseDaoFromMySQL.java类PaperDao.java接口PaperDaoFromMySQL.java类JDBCUtil.java工具类examserver.gui包:ServerFrame.java类ServerMain.java类examserver.gui.panel包:ServicePanel.java类ServiceProcessBar.java类ConfigPanel.java类UserManagePanel.java类OnLinePanel.java类QuestionPanel.java类AddQuestionFrame.java类PaperManagePanel.java类MyDefaultTableModel.java类FillWidth.java类QueryWay.java类examserver.tools包:DateDeal.java类GetParameter.java类4.4.2 客户端类图及说明客户端主要的类有LoginFrame,ExamClient,SelectSubjectFrame,QuestionPanel和ExamMainFrame。如图4-6所示: 图4-6客户端类图主要类图说明:(1)LoginFrame, 它是登录的主窗口,同时也包含了main()函数。它是运行客户端的首要类。类说明如表4-1所示: 表4-1 LoginFrame类说明 类名称LoginFrame类描述启动登陆窗口,运行客户端的主类函数描述public static void main ()客户端运行的入口函数public void actionPerformed()监听事件的执行函数 (2)ExamClient类主要用来与服务器端进行交互。它里面的方法都是用来发送和接受数据的。类说明如表4-2所示: 表4-2 ExamClient类说明 类名称ExamClient类描述客户端通过Socket与服务器交互的包装类。函数描述public boolean send()发送学号和密码到服务器public Response receive()接受客户端传过来的Response对象public boolean sendCourseName()发送考生选择的考试科目到服务器端public boolean sendAnswer()发送考生做的试卷答案到服务器端public void closeSocket()关闭客户端使用的套接口 4.4.3 客户端model类说明Student:纯粹的一个javaBean,类里不包含任何业务代码。类里定义的属性有:学号,姓名,班级,密码,在线,登陆时间。这个javaBean对应着MySQL数据库里的student表。Question:试题类。属性有:题号,题目描述,试题选项,正确答案。其中试题选项用了一个ArrayList来存放。Paper:考卷类。只有一个试题属性。使用了一个ArrayList来存放考试试题。这些考试试题都是随机的从MySQL数据库中相应的试题表中的取出的。AnswerPaper:答卷类。用了一个HashMap来存放考生的答案。其中HashMap中的key存放的是题号,value存放的是考生做的答案。4.4.4 服务器端类图及说明服务器端的类主要有ServerMain,ServerFrame,ServerPanel,ConfigPanel,UserManagePanel,OnLinePanel,QuestionPanel。如图4-7所示: 图4-7 服务器端类图主要类图说明:(1)ServerMain,此类只有一个功能。那就是启动服务器端。它只包括一个方法:Main()方法。类说明如表4-3所示: 表4-3 ServerMain类说明类名称ServerMain类描述启动服务器端窗口,运行服务端的主类。函数描述public static void main ()服务器端运行的入口函数(2)ServerFrame,此类就是服务器端的Frame,里面有6个Panel。服务器端的界面设置都在这个类里。类说明如表4-4所示: 表4-4 ServerFrame类说明类名称ServerFrame类描述显示服务器端窗口的主类,包含了服务器端六个模块的Panel。属性描述JTabbedPane panes在各个Panel之间进行切换的组件ServicePanel servicePane系统服务面板ConfigPanel configPane系统配置面板UserManagePanel userPane用户管理面板OnLinePanel onlinePane在线用户面板QuestionPanel questionPanel试题管理面板PaperManagePanel paperPanel试卷管理面板static Properties prop与配置文件相关的属性集static boolean isDBWay数据库读取方式static boolean isSaveLog是否保存系统日志函数描述public void launchFrame()服务端窗口的设置函数public void stateChanged()Panel之间切换时刷新用户 (3)ServerPanel,系统服务模块的Panel。一些系统服务模块的设置都在这个类里进行。里面有开始系统服务,停止系统服务和记录系统日志功能。类说明如表4-5所示: 表4-5 ServerPanel类说明类名称ServerPanel类描述系统服务模块的Panel类,主要负责系统服务。属性描述JButton btnStart开始服务的按钮JButton btnStop关闭服务的按钮ServiceProcessBar bar进度条JTextArea areaLog记录日志的多行文本框ServerSocket server服务器端的套接口Thread thread与用户进行交互的线程static boolean isServiceRun判断服务是否停止String path保存系统日志的路径PrintWriter raf写系统日志的流StudentDao studentDao查询学生的DAOCourseDao courseDao查询课程的DAOPaperDao paperDao查询试卷的DAO函数描述public void initProp()初始化配置文件public void writeSysLog写系统日志public void startServer()开启系统服务public void stopServer()public void actionPerformed()停止系统服务处理监听事件public void run()通过ServerSocket与客户端进行交互的线程运行函数4.4.5 服务器端DAO描述 DAO(Data Access Object)主要用于访问数据库。为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象封装在一个公共API中。用程序设计的语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口在逻辑上对应这个特定的数据存储。通过定义一些DAO接口,可以使程序的扩展性更好,同时也符合面向接口编程的设计模式。DAO包下的接口和实现类说明如表4-6所示: 表4-6 DAO包下的类描述DAODAO功能描述StudentDao通过学号和密码获得学生和增加学生的接口StudentDaoFromMySQLStudentDao的实现类,主要用于通过学号和密码从MySQL数据库中查询学生PaperDao获得考卷的接口PaperDaoFromMySQLPaperDao的实现类,主要用于从MySQL数据库中随机的获得一张考卷CourseDao获得课程名称和试题的DAOCourseDaoFromMySQLCourseDao的实现类,主要用于从MySQL数据库中读取课程名称和存放课程试题的表名称4.4.6 数据库连接的工具类说明工具类JDBCUtil主要用于连接数据库。有了这个工具类后,在程序中用到数据库连接时就不用再每次都重新生成了,避免了许多麻烦,提高了程序的可重用性和可维护性。数据库的连接参数只需要在这个工具类里设置一次就可以了,非常的方便。一般情况下,由于工具类里面的函数是通过工具类直接来调用的,所以都把里面的属性定义为静态属性,把里面的方法定义为静态方法。在使用完资源后,都要求释放资源,所以在工具类JDBCUtil里,不仅有getConnection()方法,还有release()方法用来释放资源。当管理员不设置数据库的连接参数时,系统就会采用在代码里设置的默认连接参数。这些默认的连接参数是在一个静态块里设置的。代码如下:static if(DRIVERNAME=null)DRIVERNAME = com.mysql.jdbc.Driver;if(URL=null)URL=jdbc:mysql:/localhost:3306/exam;if(USERNAME=null)USERNAME = root;if(PASSWORD=null)PASSWORD = 123456;工具类说明如表4-7所示: 表4-7 工具类描述类名称JDBCUtil类描述工具类,主要用于获得数据库的连接属性描述static String DRIVERNAME连接数据库的驱动名称static String URL连接数据库的URLstatic String USERNAME连接数据库的用户名static String PASSWORD连接数据库的密码static Connection con数据库连接对象函数描述static void setURL()设置连接参数static Connection getConnection()注册驱动,获得连接对象static void release(Object obj)释放连接对象5 服务器模块服务器配置模块主要考虑的是关于信息的存储方式的选择及配置,此设计主要实现了基于MySql数据库的持久化存储方式(但是根据Java的开闭设计原则,本设计提供了一个接口通过扩展接口实现多种方式的存储无需更改源代码只需扩展)。由于采用了JDBC技术来连接数据库,所有首先需要管理员配置数据库的连接参数。参数配置好以后需要启动服务,客户端才能连接。5.1系统配置模块该模块主要用来配置数据库的连接参数。(文件方式我们原先制作了,但是后来用了MySQL数据库后,我们感觉有点多余,就又把它给去除了。)连接数据库的参数主要有:驱动程序,连接参数,有户名和密码,数据库名。系统在工具类GetParameter中配置了数据库的默认连接参数,这些参数的参数名和参数值都是保存在一个String类型的数组中:public static String keys = DriverName,ConnParameter, UserName, Password,DBName,DataWay;public static String values = com.mysql.jdbc.Driver,jdbc:mysql:/:3306/,root,123456,exam,0;管理员也可以根据自己的需要配置数据库的连接参数,当管理员设置好数据库的连接参数之后,点击保存配置,就可以将数据库的连接参数保存到服务器端的一个名为perties文件中,管理员可以直接查看这个文件或修改这个文件。保存配置的代码如下:public static boolean saveProp(String keys,String values) throws IOExceptionif(keys.length=values.length)Properties prop = new Properties(); FileOutputStream fos = new FileOutputStream(new File(path); for(int i=0;ikeys.length;i+)prop.setProperty(keysi, valuesi);prop.store(fos, jihuaqiang);fos.flush();fos.cl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论