驾校在线考试系统的设计与实现毕业设计.docx
《驾校在线考试系统的设计与实现毕业设计.docx》由会员分享,可在线阅读,更多相关《驾校在线考试系统的设计与实现毕业设计.docx(39页珍藏版)》请在冰点文库上搜索。
驾校在线考试系统的设计与实现毕业设计
驾校在线考试系统的设计与实现毕业设计
1引言
1.1选题背景
现阶段,学校与社会上的各种考试大都采用传统的考试方式,在此方式下,组织一次考试至少要经过五个步骤,即出卷、考生考试、阅卷、成绩评估和试卷分析。
显然,随着考试类型的不断增加及考试要求的不断提高,教师的工作量将会越来越大,并且其工作将是一件十分繁琐和非常容易出错的事情,可以说传统的考试方式已经不能适应现代考试的需要。
随着计算机应用的迅猛发展,网络应用不断扩大,如远程教育和虚拟大学的出现等等,且这些应用正逐步深入到千家万户。
人们迫切要求利用这些技术来进行在线考试,以减轻教师的工作负担及提高工作效率,从而提高了考试的质量,使考试更趋于公证、客观、激发学生的学习兴趣。
例如目前许多国际著名的计算机公司所举办的各种认证考试绝大部分采用这种方式。
1.2课题背景及开展研究的意义
为了适应新形势的发展,目前国内有很多公司团体研究开发了基于Web的考试系统。
而我们知道网络应用软件运行的模式主要有二类:
Client/Server模式、Browser/Server模式。
前者主要的缺点是维护、升级较麻烦,后者是近几年伴随Internet迅速发展而应运而生的一种技术,在这种模式下,客户端需要一个浏览器,服务器端是WebServer,而WebServer是与数据库和应用服务器的紧密结合,可见,这种模式是瘦客户端,即对客户端的要求不高.如今,很多部门的业务系统、企业的MIS系统纷纷采用这种模式,它的主要优点是便于扩充应用、升级维护简便。
然而,随着技术的发展,更先进的模式纷纷被提出并时兴起来,其中J2EE就是比较成熟的一种。
2相关技术分析
2.1JSP技术介绍
JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。
JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。
用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。
网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。
JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。
插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
JSP与JavaServlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。
目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。
JSP页面由HTML代码和嵌入其中的Java代码所组成。
服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。
JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。
2.2三大框架介绍
2.2.1Struts
struts2并不是一个陌生的web框架,它是以Webwork的设计思想为核心,吸收struts1的优点,可以说struts2是struts1和Webwork结合的产物。
struts2的工作原理图如图2.1所示:
图2.1struts2的工作原理图
一个请求在Struts2框架中的处理分为以下几个步骤:
a.客户端发出一个指向servlet容器的请求(tomcat);
b.这个请求会经过图中的几个过滤器,最后会到达FilterDispatcher过滤器。
c.过滤器FilterDispatcher是struts2框架的心脏,在处理用户请求时,它和请求一起相互配合访问struts2的底层框架结构。
在web容器启动时,struts2框架会自动加载配置文件里相关参数,并转换成相应的类。
如:
ConfigurationManager、ActionMapper和ObjectFactory。
ConfigurationManager存有配置文件的一些基本信息,ActionMapper存有action的配置信息。
在请求过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。
过滤器会通过询问ActionMapper类来查找请求中需要用到的Action。
d.如果找到需要调用的Action,过滤器会把请求的处理交给ActionProxy。
ActionProxy为Action的代理对象。
ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类。
e.ActionProxy创建一个ActionInvocation的实例。
ActionInvocation在ActionProxy层之下,它表示了Action的执行状态,或者说它控制的Action的执行步骤。
它持有Action实例和所有的Interceptor。
f.ActionInvocation实例使用命名模式来调用,1.ActionInvocation初始化时,根据配置,加载Action相关的所有Interceptor。
2.通过ActionInvocation.invoke方法调用Action实现时,执行Interceptor。
在调用Action的过程前后,涉及到相关拦截器(intercepetor)的调用。
g.一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。
在表示的过程中可以使用Struts2框架中继承的标签。
2.2.2Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate作为数据持久化的中间件,足以让数据库在业务逻辑层开发中去冬眠。
它通过可扩展标记语言(XML)实现了类和数据表之间的映射,使程序员在业务逻辑的开发中面向数据库而改为面向对象开发。
使整个项目开发分工更加明确,提高了程序开发的效率。
configuration对象:
Configuration类负责管理Hibernate的配置信息。
Hibernate运行时需要获取一些底层实现的基本信息,其中几个关键属性包括:
a.数据库URL
b.数据库用户
c.数据库用户密码
d.数据库JDBC驱动类
e.数据库dialect,用于对特定数据库提供支持,其中包含了针对特定数据库特性的实现,如Hibernate数据类型到特定数据库数据类型的映射等。
以上信息一般情况下由hibernate.cfg.xml或者hibernate.properties文件来配置,实现与不同数据库的连接。
Session对象:
Session是持久层操作的基础,相当于JDBC中的Connection:
实例通过SessionFactory实例构建:
Configurationconfig=newConfiguration().configure();
SessionFactorysessionFactory=config.buildSessionFactory();
Sessionsession=sessionFactory.openSession();
之后我们就可以调用Session所提供的save、find、flush等方法完成持久层操作。
因此Session对象也封装了所有对数据库的操作来实现Hibernate对数据库的操纵功能,如:
Save()方法实现增加和保存;
Delete()方法实现数据的删除;
Update()方法实现数据更新和修改;
Find()方法实现数据的检索;
Hibernate会根据不同的操作自动生成相应的SQL语句,从而实现了程序员对PO对象的操作转化为对数据库关系表的操作。
2.2.3Spring
简单的来说,spring是一个轻量级的开源的控制反转(IOC)和面向切面(AOP)的容器框架。
主要是为了解决企业应用程序开发中的复杂性而创建的。
它的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架(struts、hibernate等)。
Spring由7个定义良好的模块组成,Spring模块构建在核心容器之上(就是我们所说的IOC容器),核心容器定义了创建、配置和管理bean的方式。
组成Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。
spring的目标是实现一个全方位的整合框架,在spring框架下实现多个子框架的组合,这些子框架之间可以相互独立,也可以使用其他框架方案加以替代。
IOC:
控制反转,它是不是什么技术,它是一种设计模式。
所谓控制反转就是由容器控制程序间的关系,而不是传统实现中,由编程代码直接操控。
说白了就是由容器控制对象间的依赖关系。
DI:
DependencyInjection依赖注入,即组件(对象)之间的依赖关系由容器在运行期间决定。
其实依赖注入和控制反转是对同一概念的不同描述。
Spring通过这种控制反转(IoC)的设计模式促进了松耦合。
当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。
不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
我们可以把IoC模式看做是工厂模式的升华,可以把IoC看作是一个大工厂,只不过这个大工厂里要生成的对象都是在XML文件中给出定义的,然后利用Java的“反射”编程,根据XML中给出的类名生成相应的对象。
从实现来看,IoC是把以前在工厂方法里写死的对象生成代码,改变为由XML文件来定义,也就是把工厂和对象生成这两者独立分隔开来。
其实控制反转就是不需要我们手动new一个对象了,它把我们所要实例化的对象都写在了配置文件xml中了,一般这个类都是我们应用的业务类。
框架内部已经将xml中配置的类自动实例化成对象,当我们调用某个类A,并且这个类中存在另一个类B时,我们就说A依赖于B,容器就会将B对象注入到A类中,大多数情况下都是通过A类中的setB()方法注入进来的。
以前是由类中的代码查找类并new对象,现在是xml文件控制的对象的生成,控制权由程序代码转移到了xml文件中。
这样做还是有好处的,假如在A中需要5个对象,那么A类中就会new5个对象,不管以后A中用不用到这5个类,只要用到A类,就会把这5个类全部new出来。
如果我们在xml文件中定义类的话,当类需要用到其中的三个类时,就会用对应的set类()方法将对象注入进来,不用的就不注入进来,由此看来,第一个方法时将类A和5个类紧紧联系起来,不管用不用到5个类都new一下,真浪费,而第二个方法是第一个类你需要我得时候我就注入进来被你用,你不需要就和我没关系。
这样类A和其中的5个类是分别独立的互不干预,当有关系的时候,容器自动注入关系。
3需求分析
3.1课题简要说明
随着学校的不断扩大,有关学校管理的各种信息也成倍增长。
面对庞大的信息量,有必要开发试卷考试系统来提高管理工作的效率。
今天我们使用计算机对试卷考试信息进行管理,具有手工管理所无法比拟的优点。
通过这样的系统,可以做到信息的规范管理、科学统计和快速查询,从而减少管理方面的工作量,有效地提高饭店信息管理的工作效率。
3.2可行性研究
该阶段通过对系统目标的初步调研和分析,提出可行性方案并进行论证。
我们在这里主要从技术可行性、经济可行性和操作可行性等方面进行分析。
2.2.1经济可行性
开发该系统所需的相关资料可以通过已存在的相关系统进行调查采集,所需的其他应用软件、硬件系统也易于获得。
因此,开发成本较低。
而引进使用本系统后,与传统方式相比,具有高效率、低成本、高质量的特点,可以节省不少人力、物力及财力。
所以,从经济的角度来看,该系统可行。
2.2.2技术可行性
技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求等。
本网站用的是JSP开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。
软件方面:
由于目前单机模式相对发展成熟,故软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。
2.2.3运行可行性
运行可行性是对组织结构的影响,现有人员和机构和环境对系统的适应性及人员培训补充计划的可行性。
当前信息化技术已经相当普及,各类操作人员水平都有相当的高度,所以在运行上是可行性的。
本系统的开发,是典型的Mis开发,主要是对数据的处理,包括数据的收集,数据的变换,及数据的各种报表形式的输出。
采用流行的JSP+SQLSERVER2000体系,已无技术上的问题。
2.2.4时间可行性
从时间上看,在两个月的时间里学习相关知识,并开发本饭店管理系统,时间上是有点紧,但是不是不可能实现,通过两个多月的努力功能基本实现。
2.2.5法律可行性
a.所有技术资料都为合法。
b.开发过程中不存在知识产权问题。
c.未抄袭任何饭店管理系统,不存在侵犯版权问题。
e.开发过程中未涉及任何法律责任。
综上所述,本系统的开发从技术上、从经济上、从法律上都是完全可靠的。
3.3在线驾驶员考试系统一般需求分析
在线驾驶员考试系统应具有以下要求:
a.由于考试对应的是特定的对象,所以系统需要经过有效的身份验证才可以登陆。
并且系统需要有可以管理会话的功能。
以便在考试过程中全程跟踪考试状态。
b.系统的权限一般分为两种:
管理员和学生。
不同的身份使用不同的权限和功能。
c.管理员需要对试题和考生进行有效的管理,负责试题的录入及更新和修改,对试题的分类,每次考试前,需要对试场环境和考生状态进行考前初始化工作。
要注意的是,鉴于考试环境一般为机房,考试者之间的距离很近,为了在线考试做到规范,对于每个应试者来说,试卷的试题和题量都应是相同的,但试题并不相同。
系统要有良好的试卷上传和回收功能,确保信息传送的正确性。
系统要有一个友善的界面,确保考生考试的顺利进行。
因为试卷中的主观题需要老师批改,可能需要一段时间才能查询到成绩。
但如果试卷是由客观题型组成的,考生就可以在考试结束后查询到自己的成绩了。
系统提供对考生成绩的统计和查询等管理功能。
系统应具有良好的安全性管理。
3.4当前在线驾驶员考试系统现状分析
当前考试系统中,仍有许多是基于c/s模式的,每一次伴随着系统的升级,都要在每个客户端更新软件,耗时耗力。
可喜的是,随着技术的发展,基于b/s模式的在线驾驶员考试系统越来越多,逐渐占据了主导地位。
它克服了c/s模式下的许多缺点,从传统的基于C/S模式的考试系统转变到基于B/S模式的考试系统,可以使用户在任何一台电脑上,只要可以上网,就可以使用该服务,大大简化了操作,为用户提供了方便。
另一方面,也为教师的管理和批阅工作提供了方便,提高了效率。
但是据我多方的观察和研究,发现大多数的在线驾驶员考试系统都是采用基于页面的模式开发,每个页面中都包含了要用到的所有功能逻辑,导致代码重复率高,结构不够清晰,维护升级起来也很费时间和人力。
鉴于这种情况,所以我们将J2EE的概念加入到在线驾驶员考试系统中来,使得该系统更易于升级和维护。
3.5性能需求
系统对环境的要求
服务起端的最低配置是由建立站点所需要的软件来决定的,在最底配置的情况下,服务器的性能往往不进人意,现在硬件性能已经相当出色,而且价格也很便宜,因此通常应给服务器端配置高性能硬件。
本机器的配置如下:
处理器:
InterPentium41.6Hz或更高。
内存:
512MB
硬件空间:
160GB
题目主要采用的技术
数据库:
MicrosoftSQLServer2000。
编程语言JSP。
服务器:
Tomcat5.5,jdk1.6
开发环境:
WindowsXP
4系统设计
4.1E-R图
图4.1E-R图
4.2数据字典
数据字典是关于数据库中数据的描述,即元数据,而不是数据本身。
针对饭店管理系统的需求,通过对饭店管理工作过程的内容和数据流程分析,设计如下所示的数据项和数据结构:
表4.1allusers表:
管理员表
序号
字段名称
字段类型
大小
允许为空
备注
1
ID
Int
4
自增
编号
2
username
VarChar
50
是
用户名
3
pwd
VarChar
50
是
密码
4
cx
VarChar
50
是
用户
5
addtime
DateTime
是
注册时间
表4.2chengji表:
成绩表
序号
字段名称
字段类型
大小
允许为空
备注
1
ID
Int
4
自增
编号
2
xuehao
VarChar
50
是
学号
3
xzt
Float
是
选择题
4
addtime
DateTime
是
注册时间
5
dxt
Float
是
多选题
6
pdt
Float
是
判断题
7
tkt
Float
是
填空题
表4.3duoxuanti表:
多选题库表
序号
字段名称
字段类型
大小
允许为空
备注
1
ID
Int
4
自增
ID
2
bianhao
VarChar
50
是
编号
3
shiti
Text
Max
是
试题
4
nanyichengdu
VarChar
50
是
难易程度
5
xuanxiangA
VarChar
300
是
A
6
xuanxiangB
VarChar
300
是
B
7
xuanxiangC
VarChar
300
是
C
8
xuanxiangD
VarChar
300
是
D
9
daan
VarChar
50
是
答案
10
addtime
DateTime
是
添加时间
表4.4kaosheng表:
考生信息表
序号
字段名称
字段类型
大小
允许为空
备注
1
ID
Int
4
自增
编号
2
xuehao
VarChar
50
是
学号
3
mima
VarChar
50
是
密码
4
xingming
VarChar
50
是
姓名
5
banji
VarChar
50
是
班级
6
xingbie
VarChar
50
是
性别
7
shenfenzheng
VarChar
50
是
证件号
8
youxiang
VarChar
50
是
邮箱
9
dianhua
VarChar
50
是
电话
10
dizhi
VarChar
50
是
地址
11
addtime
DateTime
是
注册时间
表4.5panduanti表:
判断题库表
序号
字段名称
字段类型
大小
允许为空
备注
1
ID
Int
4
自增
ID
2
bianhao
VarChar
50
是
编号
3
shiti
Text
Max
是
试题
4
nanyichengdu
VarChar
50
是
难易程度
5
daan
VarChar
50
是
答案
6
addtime
DateTime
是
添加时间
表4.6tiankongti表:
填空题表
序号
字段名称
字段类型
大小
允许为空
备注
1
ID
Int
4
自增
ID
2
bianhao
VarChar
50
是
编号
3
shiti
Text
Max
是
试题
4
nanyichengdu
VarChar
50
是
难易程度
5
daan
VarChar
50
是
答案
6
addtime
DateTime
是
添加时间
表4.7xuanzeti表:
选择题库表
字段名称
字段类型
大小
允许为空
备注
1
ID
Int
4
自增
ID
2
bianhao
VarChar
50
是
编号
3
shiti
Text
Max
是
试题
4
nanyichengdu
VarChar
50
是
难易程度
5
xuanxiangA
VarChar
300
是
A
6
xuanxiangB
VarChar
300
是
B
7
xuanxiangC
VarChar
300
是
C
8
xuanxiangD
VarChar
300
是
D
9
daan
VarChar
50
是
答案
10
addtime
DateTime
是
添加时间
4.3在线考试数据流程
考生首先进入登陆页面,输入用户名和密码,系统将该用户名和密码与数据库中考生表的用户名密码一一核对,如果存在该考生且未登陆,则弹出一个考试的主页面正常进入考试,并将该考生置为考试状态。
否则会跳到出错页面要求考生重新登陆。
进入考试页面后,有许多分类的试题要求考生分别完成,考生点击相应页面的超链接,进入做题,在每个分页面的顶部,都将会有对该部分试题的操作提示和注意事项,考生阅读完相关事项后进行做题,每做完该部分试题都必须保存,系统将收集到的考生做题信息上传到数据库中,考生则继续做其他部分试题。
完成所有考试后,考生点击交卷标记,系统保存考生所有的答题信息后正常他退出,并将考生置于离线状态。
具体流程见下图:
图4.2系统流程
4.4在线考试总