机动车驾驶员考试辅导系统 - 论文

更新时间:2024-05-28 16:47:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 绪论

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。随着计算机网络技术发展,Web数据库技术已经成为应用最为广泛的网站架构基础技术在应用系统中,Web提供了与用户进行通信联络的有效手段,利用Web技术,实现Web服务器与数据库系统的连接,完成对数据的处理与查询,用户可以通过操作简单易学的浏览器来查询处理所需要的各种数据。

1.1 题目的背景

随着信息技术的飞速发展和社会信息化程度的不断提高,特别是进入刚强信息代化的时代,网络应用范围不断扩大,发展以互联网为主要手段的网上考试己成为当今考试模式发展的趋势。在线考试系统是通过网络进行考试的平台。在线考试在现实中有着广泛的应用。像一些公司、企业、学校都建立了自己的网络考试平台。随着经济的发展,越来越多的人拥有了私家车,但如何成功考取驾驶证成了很多人面对的难题。为了适应驾驶员培训教育发展的新需要,提高学员考试的通过率,探索适合于驾驶员理论考试网上模拟新模式已经出现了。该系统不受时间和空间的限制,考生可以在任何闲暇时间进行练习和自我考查。考生不需金钱的投入;阅卷人员可以大大减轻工作量。

1.2 课题的现状和发展趋势

计算机在管理中的应用开始于1954年,当时美国首先用计算机处理工资单。40多年来,计算机在处理管理信息方面发展迅速。例如,60年代美国计算机在管理中应用项目不到300项,到了1975年达到2670项。而现在,美国在财务会计上90%的工作由计算机完成;物资管理中80—100%的信息处理由计算机完成;计划管理中是80—90%。据计算机应用方面发展较快的国家统计,计算机用于经济管理的约占80%;用于科技运算的占8%;用于生产过程控制的占12%。我国在全国范围内推广计算机在管理中的应用,是在70年代末开始的,虽然起步较晚,近几年发展却较快,特别是微型计算机的出现和普及为信息处理提供了物美价廉的手段,对于推动我国考试信息处理的现代化起了重要的作用。

驾校是考试非常频繁的单位。每次的考试工作人员都会进行试题整理、复印卷子、批判卷等一系列的繁琐工作,对工作人员造成诸多不便。试题整理会浪费时间;复印卷子还要核对考试人数;判卷更是一件麻烦的事。所以驾驶员在线考试系统就这样诞生了,它的出现就是要方便学员的理论考试。

1.3 目的意义

现阶段,学校与社会上的各种考试大都采用传统的考试方式,在此方式下,组织一次考试至少要经过五个步骤,即人工出卷,考生考试,人工阅卷,成绩评估和试卷分析。显然,随着考试类型的不断增加及考试要求的不断提高,驾校员工的工作量将会越来越大,并且其工作将是一件十分烦琐和非常容易出错的事情,可以说传统的考试方式已经不能适应现代考试的需要。随着计算机应用的迅猛发展,网络应用不断扩大,如远程教育和虚拟大学的出现等等,且这些应用正逐步深入到千家万户。在线考试系统,正是信息化建设的产物,它是传统考场的延伸。它可以利用互联网络和局域网,随时随地的对学生进行考试,加上数据库技术的利用,大大简化了传统考试的过程,因此在线考试是电子化教学的不可缺少的辅助手段。将计算机与网络技术应用于现代教育考试中,是现代考试发展的需要,人们迫切要求利用这些技术来进行在线考试,以减轻教师的工作负担及提高工作效率,是提高管理水平的必要手段。

第二章 可行性研究

该机动车驾驶员考试辅导系统主要采用JSP、Java、HTML、SQL数据库等技术和工具,以及整合当今流行的网页程序开发集成工具DreamWeaver和Java开发环境MyEclipse整体设计遵循软件工程的方法,经过需求分析、总体设计、文档和代码的编制、模块测试和系统实现几个阶段。下面就对这几种技术和方法做一个概述。

2.1 技术可行性

基于浏览器的机动车驾驶员考试辅导系统,关键技术在于网页的动态显示和管理,即从数据库中取得相应的试卷数据,并收集用户输入数据,能够对考试过程进行控制。采用最新的Jsp与SQL技术开发,管理端和用户界面全部采用B/S模式构建,系统的部署,应用,维护更加方便。同时,开源数据库MySql提供了数据库管理的能力,因此技术方案是成熟的和可行的。

2.1.1 Java技术简介

Java是一种简单易用、完全面向对象、具有平台无关性且安全可靠的主要面向Internet的开发工具,同时Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。自从1995年正式问世以来,Java的快速发展已经让整个Web世界发生了翻天覆地的变化。在早期,Java比较多的用在浏览器上,插入到网页中(即是Java Applet程序),成为最灵活、最强大的网页多媒体的载体,但由于Java虚拟机相对于个人电脑而言,有占用资源大,安全性相对较差等缺点,Applet逐渐的被后起之秀Flash所替代,但随着Java Servlet的推出,Java在电子商务方面开始崭露头角,最新的JSP(Java Server Page)技术的推出,更是让Java成为基于Web的应用程序的首选开发工具,目前的Java技术已成为所有大型web项目的必然选择。

Java程序可以获取网络上结点的图象、声音、HTML文档及文本等资源,并可以对获得的资源进行处理。例如Java程序可以每隔一定时间读取某结点提供的最新数据,并以图表的形式显示出来。在编程处理上,一般先生成一个URL类型的对象,然后用 Java中相应的方法(method)获取该对象所代表的资源。

2.1.2 JSP技术简介

JSP可以一次编写,到处运行。在这一点上Java比其它的更出色,除了系统之外,代码不用做任何更改,基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统

部署,在任意环境中扩展。相比其它的局限性是显而易见的,从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。 同时Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。

当Web服务器上的JSP页面第一次被请求执行时,JSP引擎先将JSP页面文件转译成一个Java文件,即Servlet,Java Servlet是基于服务器端编程的API,用Java Servlet编写的Java程序称为servlet,servlet通过HTML与客户交互。服务器将前面转译成的Java文件编译成字节码文件,再执行这个字节码文件来响应客户的请求。当这个JSP页面再次被请求时,只要该JSP文件没有被改动,JSP引擎就直接调用已装载的Servlet。 如下图所示。

2.1.3 Tomact、SQLServer和MyEclipse简介

(1)Tomact

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参

与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,本系统的开发使用的Tomcat6.0。

Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 (2)SQLServer

SQLServer是一个快速的、多线程、多用户和健壮的SQL数据库服务器。SQLServer服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。

SQLServer是一个数据库管理系统,一个数据库是一个结构化的数据集合。它可以是从一个简单的销售表到一个美术馆、或者一个社团网络的庞大的信息集合。如果要添加、访问和处理存储在一个计算机数据库中的数据,你就需要一个像MySQL这样的数据库管理系统。从计算机可以很好的处理大量的数据以来,数据库管理系统就在计算机处理中和独立应用程序或其他部分应用程序一样扮演着一个重要的角色。

SQLServer是一个关系数据库管理系统关系数据库把数据存放在分立的表格中,这比把所有数据存放在一个大仓库中要好得多,这样做将增加你的速度和灵活性。“MySQL”中的SQL代表“Structured Query Language”(结构化查询语言)。SQL是用于访问数据库的最通用的标准语言,它是由ANSI/ISO定义的SQL标准。SQL标准发展自1986年以来,已经存在多个版本:SQL-86,SQL-92,SQL:1999,SQL:2003,其中SQL:2003是该标准的当前版本。

(3)MyEclipse

MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。

在结构上,MyEclipse的特征可以被分为7类: (1. JavaEE模型 (2. WEB开发工具

(3. EJB开发工具

(4. 应用程序服务器的连接器 (5. JavaEE项目部署服务 (6. 数据库服务 (7. MyEclipse整合帮助

对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。

简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,本系统在开发过程中使用的是MyEclipse6.0.1。

2.1.4 Java Jsp 与数据库访问

我使用Hibernate 这个开源框架来和数据库建立持久化对象模型。Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了轻量级的对象封装,使 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从 Java 类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用 JDBC 和 SQL 来手工操作数据库,Hibernate 可以大大减少操作数据库的工作量。 另外 Hibernate 可以利用代理模式来简化载入类的过程,这将大大减少利用 Hibernate QL 从数据库提取数据的代码的编写量,从而节约开发时间和开发成本 Hibernate 可以和多种Web 服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。

2.2 经济可行性

系统的经济可行性指的是对组织的经济状况和投资能力进行分析,对系统建设、运行和维护费用进行估算,对系统建成后可能取得的社会及经济效益进行估计。

本模块简单易开发,且开发需要资金少,系统开发运行后,可以实现学生信息管理的计算机化,节省了人力、物力,将人从繁重的工作业务中解脱出来,减少了信息管理中无意的错误,节省了大量的时间,管理效率也大幅度提高,因此,在经济上是可行的。所带来的效益远远大于系统软件的开发成本。在经济上完全可行

2.3 操作可行性

目前,大多数PC机和局域网能够软件系统运行该系统,该系统的安装、调试、运行不会改变原计算机系统的设置和网络的布局,并且大多数用户几乎不用做任何培训都能够方便的操作软件。

对于用户来说,本系统只要求使用者掌握一定的上网经验,经过仔细设计和测试之后的系统具有操作简单,方便灵活等优点,足可以满足各种用户的不同需求,同时也方便了公司的内部管理。管理人员及用户一定会在短时间内掌握并熟练使用。只要动一动鼠标键盘就可以达到想要的效果。

第三章 需求分析

在需求分析确定之后需要对系统进行整体分析和设计。这包括系统功能模块的划分和系统功能的分析以及数据流图和数据字典。

3.1. 系统功能模块划分

模块划分时描述一个系统需求的一个过程,需要将需求分析中的感性描述进行抽象,提取出要实现的功能,这是整个系统开发中一个关键过程。分析的根本目的时在开发者和提出需求的人员之间建立一种理解和沟通的机制。因此机动车驾驶员考试辅导系统的驾驶员所需需求分析也是根据开发者和实际用户需求一起来完成的。根据驾驶员考试的业务逻辑把系统划分如图3-1下:

图3-1 系统功能模块图

3.2 系统功能分析

1、法律规定:国家历年来颁布的各种交通法规和措施的原文。

内容包括:道路交通安全法、道路交通安全法实施条例、道路运输条例、道路交通安全违法行为处理程序规定、交通事故处理程序规定、机动车驾驶证申领和使用规定、机动车驾驶证业务工作规范、机动车登记规定、机动车登记工作规范、机动车驾驶员培训管理规定、机动车驾驶员培训教学大纲、公安部三十条便民利民措施。

2、标志标线:国标 GB5768-1999《道路交通标志和标线》中的各种交通标志、标线。

内容包括:警告标志、禁令标志、指示标志、指路标志、辅助标志、旅游区标志、道路施工安全标志和道路交通标线。

3、汽车构造:根据分类详细介绍汽车的基本构造以及汽车的发展历程。

内容包括:汽车发展历史概述、汽车名词解释大全、汽车引擎相关知识、汽车底盘相关知识、汽车电子设备知识、汽车安全装备知识、汽车车身构造知识。

4、理科练习:用户根据选择的题目类型进行答题:选择,判断两种类型。 内容包括:试题分类管理、练习范围设置、顺序出题练习、随机出题练习、有的放矢练习和模拟考试热身。

5、术科要点:关于术科场地考与道路考的一些相关内容。

内容包括:各类准驾车型及代号、考试内容及合格标准、术科考试的车辆要求、术科考试的实践基础、场地考线路及其要求、场地桩考的操作要点、道路考场内驾驶项目、场地路考的过关技巧、道路考驾驶评判标准、道路考车辆操作要点、道路考场外行车指南、交通违法行为记分值。

第四章 系统设计

4.1.考试系统总体结构设计

4.1.1 网站风格

考虑:

1、如果只用一句话来描述站点,应该是:有创意,专业,有(技术)实力,有美感; 2、看到站点,可以联想到的色彩是:幻想的草绿色; 3、看到站点,可以联想到的画面是:一份早报; 4、如果网站是一个人,他拥有的个性是:思想成熟;

5、作为站长,希望给人的印象是:敬业,认真投入,有深度,负责; 6、用一种动物来比喻,这个网站最象:鹰(目光锐利);

7、浏览者觉得和其他网站的不同是:可以信赖,信息最快,交流方便; 8、浏览者和你交流合作的感受是:师生、朋友。 色彩:

9、深色背景配浅色字体或者是浅色背景配深色字体,这样给人的感觉会比较清晰、自然、易接受;

10、图像与背景,图像与字体等之间的互配,颜色不能相差太悬殊,因为作为页面上的主要视觉元素来讲,颜色相差太远会影响整体的效果,给人不统一、一气呵成的感觉,不实在;

11、不同色彩之间的对比会有不同的效果,当两种色同时在一起时,这两种色各自走向自己的极端是比较普遍的用法;

12、色彩间的对比也有纯度对比,举个例子,黄色是夺目的色,但是加入灰色会失去其夺目的光彩,通常可以用混入黑、白、灰色来对比纯色,这样可以减低其纯度。纯度的对比会使色彩的效果更明确肯定;

13、色彩所处的位置的不同,也会造成色彩对比的不同效果;

14、暗色中含高亮度的对比会给人清晰、激烈,很有强烈的刺激,如深黄到刺黄色,暗色中间含高亮度的对比,会给人沉着、稳重、深沉的感觉,中性色与低高度的对比,给人模糊、朦胧、深奥的感觉,如草绿中间是浅灰,纯色与高亮度的对比,给人跳跃舞动的感觉,如黄色与白色的、纯色与低亮度的对比,给人轻柔、欢快的感觉,如浅蓝色与白色、纯色与暗色的对比,给人强硬、不可改变的感觉;

15、一般说来,普通的底色应柔和些,素一些,淡一些,配上黑色字体,读起来自然、流畅,不易疲劳;本系统主要采用草绿色为底色、左右框架式。

4.1.2 登陆与导航模块

登录模块分为用户注册与用户登录两大部分,已经有帐号的用户可以直接登录访问我们的网站,第一次访问我们站点的用户需要由注册系统来注册一个帐号。导航模块就是站点的相关的链接,我们设计了一些与考试相关知识的文章以及各种驾驶相关信息,可以方面大家学习。

4.1.3 理科练习模块

理科练习模块是本系统中的一个重要部分,它可以让用户在线考试练习测试,自动评分。让用户了解自己掌握情况。

4.1.4 管理模块

管理模块也是本系统的另一个重要部分,主要有法律法规管理、标志标线管理、术科要点管理、汽车构造管理、理科练习管理等功能。

4.2.数据库的设计

4.2.1 基本概念

管理模块也是本系统的另一个重要部分,主要有法律法规管理、标志标线管理、术科要点管理、汽车构造管理、理科练习管理等功能。在系统中利用数据库是为了更方便的管理试题的数据,而建立一个考试系统一定要大量的的考试题目做为被用,因此一定要有数据库来管理这些数据,那么就一定要有个数据库来管理。在考试系统中的数据库主要用于存储试题、答案、组卷信息、考生信息、考场信息、系统管理信息、模块维护信息等等。

而考试系统中的系统管理员主要是系统管理员来做的,而且维护起来简单安全。下面将介绍下数据库的基本概念和数据库的发展。

数据(Data):数据实际上就是描述事物的符号记录。

数据库(Database,简称DB):数据库是长期存储在计算机内有结构的大量的共享的数据集合。

数据库管理系统(Database Management System,简称DBMS):数据库管理系统是位于用户与操作系统之间的一层数据管理软件。

数据库系统(Database System,简称DBS):数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。

数据库系统管理员(Database Administrator,简称DBA):负责数据库的建立、使用和维护的专门的人员。

4.2.2 数据模型

通过下面的三个数据模型的比较和特点的介绍就知道,我们为什么要在系统的数据库中引用关系模式,关系模式的特点使我们在考试系统的管理上更加快捷方便,适合现在大多数的数据库设计工具。

数据模型,主要包括网状模型、层次模型、关系模型等,它是按计算机系统的观点对数据建模。

一、数据结构:数据结构用于描述系统的静态特性,研究与数据类型、内容、性质有关的对象,例如关系模型中的域、属性、关系等。

二、数据操作:数据库主要有检索和更新(包括插入、删除、修改)两大类操作。数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言。

三、数据的约束条件:数据的约束条件是一组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的制约和储存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。此外,数据模型还应该提供定义完整性约束条件的机制。

层次数据模型的结构:层次模型用树形结构来表示各类实体以及实体间的联系。每个结点表示一个记录类型,结点之间的连线表示记录类型间的联系,这种联系只能是父子联系。每个记录类型可包含若干个字段,这里,记录类型描述的是实体,字段描述实体的属性。

任何一个给定的记录值只有按其路径查看时,才能显出它的全部意义,没有一个

子女记录值能够脱离双亲记录值而独立存在。只有一个结点没有双亲结点,称之为根结点。根以外的其它结点有且只有一个双亲结点,用层次模型表示多对多联系,必须首先将其分解成一对多联系。分解方法有两种:冗余结点法和虚拟结点法。

网状数据模型的结构:网状数据模型是一种比层次模型更具普遍性的结构,它去掉了层次模型的两个限制,允许多个结点没有双亲结点,允许结点有多个双亲结点,此外它还允许两个结点之间有多种联系(称之为复合联系)。

1、关系数据模型的数据结构:在用户看来,一个关系模型的逻辑结构是一张二维表,它由行和列组成。有关概念:

关系:对应通常说的表。

元组:表中的一行即为一个元组。 属性:表中的一列即为一个属性。

主码(Key):表中的某个属性组,它可以唯一确定一个元组。 域(Domain):属性的取值范围。

分量:元组中的一个属性值;关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,?,属性n)。

2、关系数据模型的操纵与完整性约束:

关系数据模型的操纵主要包括查询、插入、删除和更新数据。这些操作必须满足关系的完整性约束条件。关系模型中的数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合。关系模型把存取路径向用户隐蔽起来,用户只要指出“干什么”,不必详细说明“怎么干”,从而大大地提高了数据的独立性,提高了用户生产率。

3、关系数据模型的存储结构:

关系数据模型中,实体及实体间的联系都用表来表示。在数据库的物理组织中,表以文件形式存储,每一个表通常对应一种文件结构。

4、关系数据模型的优缺点:

优点:关系模型是建立在严格的数学概念的基础上的。无论实体还是实体之间的联系都用关系来表示。对数据的检索结果也是关系(即表),因此 概念单一,其数据结构简单、清晰。关系模型的存取路径对用户透明,从而具有更高的数据独立性,更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。缺点:由于存取路径对用户透明,查询效率往往不如非关系数据模型。因此为了提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的负担。

4.2.3 数据库设计方法概述

十余年来,人们努力探索,提出了各种数据库设计方法,这些方法运用软件工程的思想和方法,提出了各种设计准则和规程,都属于规范设计方法。

规范设计方法中比较著名的有新奥尔良方法。它将数据库设计分为四个阶段:需求分析(分析用户要求)、概念设计(信息分析和定义)、逻辑设计(设计实现)和物理设计(物理数据库设计)。

基于E-R模型的数据库设计方法,基于3NF(第三范式)的设计方法,基于抽象语法规范的设计方法等,是在数据库设计的不同阶段上支持实现的具体技术和方法。规范设计法从本质上看仍然是手工设计方法,其基本思想是过程迭代和逐步求精。

4.2.4 数据库设计的基本步骤

按照规范设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为以下六个阶段:

1)需求分析阶段 :进行数据库设计首先必须准确了解与分析用户需求(包括数据与处理)。需求分析是整个设计过程的基础。

2)概念结构设计阶段 :概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。

3)逻辑结构设计阶段 :逻辑结构设计是将概念结构转换为DBMS所支持的数据模型,并对其进行优化。

4)数据库物理设计阶段: 数据库物理设计是为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。

5)数据库实施阶段 :在数据库实施阶段,设计人员运用DBMS提供的数据语言及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。

6)数据库运行和维护阶段: 数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整和修改。

需要指出的是,这个设计步骤既是数据库设计的过程,也包括了数据库应用系统的设计过程。在设计过程中把数据库的设计和对数据库中数据处理的设计紧密结合起来,将这两个方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计。

4.3.机动车驾驶员考试辅导系统建表及其说明

考虑到整个系统的需要,我们一共设计了以下几个数据库表:选择题表,判断题表,法律法规表,标线类型表,标线表,汽车类型表,汽车表,术科要点表。其中,我们没有采取以往的直接建表方式建立数据库。而是采用面向对象思想设计对象关系模型,然后通过hibernate技术实现数据库设计。比以往方式更面向对象,更容易理解。

表名:Choice 说明:保存选择题信息 字段名 数据类型及长度 id int timu varchar (225) a b c d daan varchar (225) varchar (225) varchar (225) varchar (225) varchar (20) 中文名:选择题表 中文含义 编号 题目 约束 主键 备注 表名:PuanDuan 说明:保存判断题信息 字段名 数据类型及长度 id int timu varchar (225) daan varchar (20) A 选项内容 B 选项内容 C 选项内容 D 选项内容 答案 图4-3-1选择题表

中文名:判断题表 中文含义 编号 题目 答案 图4-3-2判断题表

约束 主键 备注 表名:ShuKe 说明:保存术科信息 字段名 数据类型及长度 id int tongguo varchar (225) phototongguo image mudi varchar (225) shezhi varchar (225) pingfen varchar (225) 中文名:术科表 中文含义 编号 通过要求 要求信息图片 目的 设置设计 评分标准 约束 主键 备注

图4-3-3术科表

表名:FaLv 说明:保存法律信息 字段名 数据类型及长度 id int varchar (225) title varchar (225) content varchar (225) time 中文名:法律表 中文含义 编号 法律标题 法律内容 颁布时间

图4-3-4法律表

约束 主键 备注 表名:QiCheType 说明:保存汽车类型信息 字段名 数据类型及长度 id int name varchar (50) 中文名:汽车类型表 中文含义 编号 类型名称

图4-3-5汽车类型表

约束 主键 备注 表名:QiChe 说明:保存汽车信息 字段名 数据类型及长度 id int type int photo image name varchar (225) gouzao varchar (225) lishi varchar (225) 中文名:汽车信息表 中文含义 约束 备注 编号 主键 QiCheType 汽车类型 外键 汽车图片 汽车名称 汽车构造 汽车历史 图4-3-6汽车信息表

中文名:标线类型表 中文含义 编号 类型名称 约束 主键 备注 表名:BiaoXianType 说明:保存标线类型信息 字段名 数据类型及长度 id int name varchar (50) 表名:BiaoXian 说明:保存标线信息 字段名 数据类型及长度 id int type int photo image name varchar (225) varchar (225) content 图4-3-7标线类型表

中文名:标线信息表 中文含义 约束 编号 主键 标线类型 外键 标线图片 标线名称 标线内容 图4-3-7标线信息表

备注 BiaoXianType 第四章 系统实现

5.1 用户登录

进入系统后,可以看到用户登录界面(其文件为login.jsp)

图5-1用户登录

登录以后可以进行法律法规管理、标志标线管理、汽车构造管理、理科练习管理、术科要点管理等操作。

用户登录后的页面如下图:

图5-2 系统首页

5.2 导航栏

在导航栏中,做了几个对系统信息管理的页面,如图5-6所示:

图5-4 导航栏

5.2 系统功能操作栏

法律法规管理页面如下:

图5-4 法律法规管理

添加法律页面如下:

图5-5添加法律

标志表现管理页面如下:

图5-4 标志标线管理

添加法律页面如下:

图5-5添加法律

第五章 测试与维护

5.1 测试的任务与目标

5.1.1测试的任务

在软件投入生产性运行之前,尽可能多地发现软件中的错误。

5.1.2测试的目标

(1) 测试的目的是为了发现程序中的错误而执行程序的过程。 (2) 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。 (3) 成功的测试是发现了到今为止尚未发现的错误的测试。

5.2 测试方案

设计测试方案是测试阶段的关键技术问题。所谓测试方案包括预定要测试的功能。应该输入的测试数据和预期的结果,目标是设计一组可能发现错误的数据。测试有两种方法:功能测试和结构测试。

功能测试,在程序接口进行,只检查程序功能是否能够按照规格说明书的规定正确使用,程序是否能适当地接收输入数据并发生正确的输出信息,而且要能够保持外部信息的完整性。

结构测试,完全了解程序的结构和处理过程,这种方法按照程序内部的逻辑测试程序,检验程序中每条通路是否都能按照预定要求正确工作。

本系统开发过程进行的测试步骤如下:

5.2.1 模块测试

即单元测试,目的是保证每一个模块作为一个单元能正确运行,本测试所发现的往往是编码和详细设计的错误,主要评价模块的下述五个特点:

(1)模块接口; (2)局部数据结构; (3)重要的执行路径; (4)出错处理通路;

(5)影响上述各方面特性的边界条件.

模块测试主要由代码审查和软件测试两部分组成。

5.2.2 集成测试

包括系统测试和子系统测试。集成测试是组装软件的系统技术,主要目标是发现与接口有关的问题。集成测试有两种方法:非渐增式和渐增式,但比较而言,渐增式方法比较好,因为:编写的测试软件较少,开销较小,较早地发现模块间的接口错误,

错误位置容易判断,测试更彻底。

因此,本系统集成测试采用渐增式测试中的混合法,即对软件结构中较上层使用自顶而下的测试方法,而对软件结构中较下层,使用的是自底向上方法,两者结合,这是对模块较多时测试的一种折衷方法。

5.2.3 验收测试

这一步是验证软件的有效性。目的是向未来的用户表明系统能够象预定的那样工作,验收测试一般使用黑盒测试法,验收测试有两种可能的结果。

(1)功能和特性与用户的要求有差距。

(2)功能和性能与用户要求一致,软件是可以接受的。 这个阶段发现的问题往往和需求分析阶段的差距有关。

5.2.4 平行运行

这个阶段发现的问题往往和需求分析阶段的差距有关。所谓平行运行就是同时运行。新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。目的有:

(1)可以在准生产环境中运行新系统而有不冒风险; (2)用户能有一段熟悉新系统的时间; (3)可以验证用户指南和使用手册之类的文档;

(4)能够以准生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标。

5.3 测试遇到的问题以及解决办法

数据库连接不上,查询结果不能按照想象的输出

解决办法: 首先查看数据库驱动是否安装,JDBC的代码是否正确,一定要保证打开一个连接,一定要在操作完成以后关闭这个链接。

404错误的出现

解决办法:这个错误一般是URL出现了问题,因此首先去分析的你业务流程,理清一条思路,然后去检查在为一个Servlet跳转的时候它所指定的那个URL是否正确。 500错误的出现

出现原因:在我们不考虑服务器有问题的情况下,一般情况是我们的代码中出现语法错误,这样的错误是在解析class文件时导致的错误。

解决办法: 首先去看异常提示,有针对性的在代码中添加断点分步调试。

5.4 系统维护

软件维护是软件生命周期的最后一个阶段,处于系统投入生产性运行以后的时期中,所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。软件的维护有适应性维护;完善性维护;改正性维护;预防性维护。

本系统为适应维护的需要,采用如下措施: (1)软件配置程序源代码; (2)开发过程文档齐全;

(3)设计过程中各模块均考虑或预留完整性和可维护性接口等部分。

(4)本软件的模块化,详细设计的文档、源代码内部的文档有详细说明、注释均可提高可维护性;

(5)尽量松散〈低偶合〉,高内聚。

谢 辞

在整个毕业设计期间,要特别感谢xx老师。毕业设计的整个过程中,xx老师一直都非常认真负责的督促着我的工作,他细心的指导,耐心的教导,并且生活中也非常关心我们。没有他们的指导,也没有我们现在的成果,真诚的感谢他!另外,还要感谢身边的同学支持与鼓励以及各位网友的鼎力帮助。同时感谢同寝室的aaa和bbb两位同学在毕业设计期间给了我莫大的帮助,使我在最后关头顺利地完成毕业设计。最后再次向所有帮助和支持我的老师同学表示真诚的感谢。

参考文献

【1】孙鑫 Servlet/Jsp 深入详解——基于Tomcat的Web开发 电子工业出

版社 2008.8

【2】Cay S. Horstmann、Cary Cornell(美) Java2 核心技术 机械工业出

版社(原书第7版) 2007.4

【3】孙卫琴 精通Hibernate:Java对象持久化技术详解 电子工业出版社 2005.5 【4】唐汉明 深入浅出MySQL数据库开发、优化与管理维护 人民邮电出版社 2008.4

【5】孙卫琴 TOMCAT与JAVA WEB开发技术详解(第2版) 电子工业出版社 2009.1

【6】架构科技 DREAMWEAVER 8中文版完全自学手册 电子工业出版社 2006.7

【7】李刚 轻量级Java EE企业应用实战——Struts 2+Spring+Hibernate整合开发

电子工业出版社 2008.11

附录:程序部分后台代码

Hibernate的配置文件:

jdbc:jtds:sqlserver://localhost:1433;DatabaseName=CarSystem

net.sourceforge.jtds.jdbc.Driver

sa

org.hibernate.dialect.SQLServerDialect

thread

true

\

\

Web.xml的配置文件:

ImageServlet

com.util.ImageServlet xmlns:xsi=\ xsi:schemaLocation=\ http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\>

FaLv

com.servlet.FaLvServlet

Choice

com.servlet.ChoiceServlet

PuanDuanServlet

com.servlet.PuanDuanServlet

ShuKeServlet

com.servlet.ShuKeServlet

BiaoXianServlet

com.servlet.BiaoXianServlet

QiCheServlet

com.servlet.QiCheServlet

ShuKeOther

com.servlet.ShuKeOther

BiaoXianOther

com.servlet.BiaoXianOther

QiCheOther

com.servlet.QiCheOther

RandomServlet

com.util.RandomServlet

LoginServlet /login

LoginServlet

com.servlet.LoginServlet

RandomServlet /RandomServlet

QiCheOther /QiCheOther

BiaoXianOther /BiaoXianOther

ShuKeOther /ShuKeOther

QiCheServlet /QiChe

BiaoXianServlet /BiaoXian

ShuKeServlet /ShuKe

PuanDuanServlet /PuanDuan

Choice /Choice

FaLv /FaLv

ImageServlet /imageServlet

CharacterEncodingFilter

com.servlet.CharacterEncodingFilter

encoding gbk

CharacterEncodingFilter /*

login.jsp

Manager接口:

package com.manager;

import java.util.List; import com.pojo.User;

@SuppressWarnings(\) public interface ObjectManager { }

public void saveObject(Object object); public List getObjectList(Object object); public Object getObject(Object object, int i); public void updateObject(Object object); public void deleteObject(Object object); public List getUtil(String hql); public boolean checkUser(User user);

Manager接口实现类:

package com.manager;

import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import com.cn.util.HibernateUtils; import com.pojo.User;

@SuppressWarnings(\)

public class ObjectManagerImpl implements ObjectManager {

public void saveObject(Object object) {

Session session = null; try {

session =

session.beginTransaction(); session.save(object);

session.getTransaction().commit(); e.printStackTrace();

session.getTransaction().rollback();

HibernateUtils.getSessionFactory().getCurrentSession();

} catch (Exception e) {

}

}

public void updateObject(Object object) { }

public void deleteObject(Object object) { }

public List getObjectList(Object object) {

Session session = null; List list = null; try {

session =

session.beginTransaction();

Query query = session.createQuery(\

+ object.getClass().getName());

list = query.list();

session.getTransaction().commit(); return list;

Session session = null; try { }

session =

session.beginTransaction(); session.delete(object);

session.getTransaction().commit(); e.printStackTrace();

session.getTransaction().rollback(); Session session = null; try { }

session =

session.beginTransaction(); session.update(object);

session.getTransaction().commit(); e.printStackTrace();

session.getTransaction().rollback();

HibernateUtils.getSessionFactory().getCurrentSession();

} catch (Exception e) {

HibernateUtils.getSessionFactory().getCurrentSession();

} catch (Exception e) {

HibernateUtils.getSessionFactory().getCurrentSession();

}

} catch (Exception e) { }

e.printStackTrace();

session.getTransaction().rollback(); return null;

public Object getObject(Object object, int i) { }

public List getUtil(String hql) { }

public boolean checkUser(User user){

Session session = null; List list = null; try {

session =

session.beginTransaction();

Query query = session.createQuery(\query.setString(0,user.getUsername()); query.setString(1,user.getPassword()); Session session = null; List list = null; try { }

session =

session.beginTransaction();

Query query = session.createQuery(hql); list = query.list();

session.getTransaction().commit(); return list;

e.printStackTrace();

session.getTransaction().rollback(); return null;

Session session = HibernateUtils.getSession(); session.beginTransaction();

object = session.load(object.getClass(), i); session.getTransaction().commit(); return object;

HibernateUtils.getSessionFactory().getCurrentSession();

} catch (Exception e) {

HibernateUtils.getSessionFactory().getCurrentSession();

= ? and password = ?\);

list = query.list();

session.getTransaction().commit(); if(null != list && list.size()>0)

return true;

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

}

用户实体类:

package com.pojo;

public class User { private int id;

private String username; private String password;

public int getId() { return id; }

public void setId(int id) { this.id = id; }

public String getUsername() { return username; }

public void setUsername(String username) { this.username = username; }

public String getPassword() { return password;

}

public void setPassword(String password) { this.password = password; }

}

用户实体类的配置文件:

\

\>

本文来源:https://www.bwwdw.com/article/u137.html

Top