您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页汽车站售票信息系统分析与设计

汽车站售票信息系统分析与设计

来源:筏尚旅游网


信息系统分析与设计

课程设计报告

课 程 信息系统开发与设计 课 题 汽车站售票管理信息系统 班 级 信息管理与信息系统11—1班

指导教师 XXXXXXXXXXXXXXXXXXXXXXXX 制作人员 XXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXX 完成日期 2014年7月10日

1

目 录

前 言

第1章 系统概述

1.1现状描述

1。2系统目标 1.3系统开发方法 1。4开发计划 1。5可行性分析 1.6 设计目的

第2章 系统分析 2.1系统需求分析

2。2业务流程分析 2.3数据流程分析 2。4数据字典 2. 5面向对象分析 2.6系统测试计划

第3章 系统设计

3.1模块结构设计 3。2数据库设计 3.3详细设计

第4章 系统主要界面和代码展示

附录 收获和体会

2

前言

随着IT的发展,人们消费模式等方面发生着巨大的变化.现在,人们坐在家里就能购物、订车票和酒店等等。当然,需求也同样刺激着IT行业的发展.就拿买汽车票来说,尤其是春运期间,买票是件很麻烦的事情,在窗口排队甚至会花掉你一天的时间,甚至有时候还因为信息的缺乏,不能及时有效的了解车票的销售情况,白跑一趟汽车站。利用网上汽车售票系统,旅客可以通过网络查询车票的销售情况并订购汽车票,这极大的提高了订票的效率,节省了订票的时间,缓解了售票窗口拥挤的现状,网上订票系统的成功实施,提高了车站的信息化管理水平,减少了车站工作人员的工作量,为旅客节约了时间。

分工

3

第一章 系统概述

1。1现状描述

目前我国各地区的汽车售票信息化水平差异较大,虽然大部分二级以上的客运站实现了区域内联网售票,但在经济不发达地区和大多数三级以下客运站,还是采用传统的售票方式.在没有实现联网售票的地区,旅客购票是十分不便的。互相之间的发车信息沟通缺乏渠道,互相之间不能实现互售。出行者购票,并不知道各站的具体班次,也不知道去哪个站可以买到,加之公路客运的特点是一段时期内变化较大,班次和发班时间往往根据季节和客流量大小有所调整,出行人更是难以把握。而在南方一些城市密集地区,客运比较发达,售票的信息化水平相对较高。

汽车售票管理系统主要用于车站日常的票务处理.车售票管理系统在正常运行中需要对使用该系统的主要是汽车站售票人员、汽车站售票工作的管理人员与系统管理员。现今的社会发展迅速,汽车成为了人们在交通方面不可缺少的交通工具为了给人们带来方便快捷的交通环境,公路系统采取提高汽车的速度,增加客运汽车等等从而来满足大量的旅客的乘车需求。如此的情况之下,售票系统的需要自然是相当必要的。目前,售票系统在国内外都已经得到了广泛的应用,无论是在飞机场,火车站,还是汽车站,都是借助于售票系统进行售票的。

1。2系统目标

实现方便、快速售票;使汽车客运中心管理手段现代化,减轻工作人员的工作强度,提高工作效率,减少在售票工作中的人为差错;保证售票员和售票窗口可灵活增减;帮助工作人员掌握每天的客票收入情况实现对业务信息的高效管理。

1。3系统开发方法

此次设计主要采用MyEclipse加Tomcat后台服务器进行,设计过程中页面主要使用JSP技术完成,下面对MyEclipse、Tomcat和SqlServer数据库进行简要介绍。MyEclipse MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。

Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。可以这样认为,当在一台机器上配置好

4

Apahce服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是运行的,所以当运行tomcat 时,它实际上作为一个与Apache 的进程单独运行的。

SqlServer提供TCP/IP、ODBC和JDBC等多种数据库连接途径;可以处理拥有上千万条记录的大型数据库.对于一般的个人使用者和中小型企业来说,SqlServer提供的功能已经绰绰有余,而且由于SqlServer是开放源码软件,因此可以大大降低总体拥有成本。

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网 页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑.JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易. Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端就是一个HTML文本,因此客户端只要有浏览器能浏览.JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成.JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。 JSP技术的优点:

(1)一次编写,到处运行。除了系统之外,代码不用做任何更改. (2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。

(3)强大的可伸缩性.从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力.

(4)多样化和功能强大的开发工具支持.Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下 (5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。 内部对象说明:request 客户端请求,此请求会包含来自GET/POST请求的参数;

5

response 网页传回客户端的响应;pageContext 网页的属性是在这里管理; session 与请求有关的会话; application servlet正在执行的内容;out 用来传送响应的输出流; config 代码片段配置对象;page JSP网页本身; exception 针对错误网页,未捕捉的例外

1。4开发计划

根据社会上现有的一些汽车售票系统,我们小组打算从其内外部环境、软硬件环境、人员配置情况、对汽车售票系统进行深入研究,进度可划分为:初步调查、可行性分析、详细调查、系统分析、系统设计和系统实施六个阶段.详情可见下面表格: 6.23-6。26 6。27—6.29 初步调查 可行性分析 详细调查 系统分析 系统设计 系统实施

1.5系统可行性分析

6.30-7。1 7。2-7.5 7.6-7。7 7.8—7。10 a。经济可行性

在一定程度上讲汽车票预定系统对汽车运输公司而言在长期利益上看是有很大的收益的,故在某种意义上讲经济上是可行的。 b。社会可行性

6

汽车票预定系统是一个广大旅客出行的系统,它为旅客提供了便捷的服务,

为汽车运输公司减少工作量,故在社会可行性方面是毋庸置疑的。

1.6系统设计目的

设计人员设计售票管理系统的最终目标是使汽车客运中心管理手段现代化,减轻工作人员的工作强度,提高工作效率,减少在售票工作中的人为差错;保证售票员和售票窗口可灵活增减;帮助工作人员掌握每天的客票收入情况实现对业务信息的高效管理;方便旅客对车次、票价等信息的查询,帮助旅客及时了解发车时间、票价、车次等情况。本系统的总体设计原则是:“立足现在,着眼未来;总体规划,分步实施”。即在方案总体的设计和选型中要充分考虑技术的发展,力求所用技术在今后相当长的一段时间内不落后;系统除具有较高的可靠性外,还将有良好的灵活性和可伸缩性,以利于以后系统的扩展;考虑到硬件更新换代周期短,因此所选设备应可靠、经济、实用;软件开发除采用新的开发工具外,还要设计良好的接口,以利于功能模块的增加.总之,系统的设计应遵循科学性、安全性、可靠性、灵活性、实用性和经济性相结合的原则。

第二章 系统分析

2.1系统需求分析

具体内容通过全面收集汽车售票系统资料,进行系统规划,系统分析,进行可行性研究,争取达到以下系统目标:

1.登录功能:系统管理员权限登陆。用户通过输入不同用户名和密码进行身份验证.

2.车票信息查询功能:由汽车站的普通售票人员通过检索入口,查询车票信息,并进行排序.

3.修改功能:系统管理员则能实现系统用户的添加,修改系统管理员的密码,以此确保该系统能够安全操作,避免不必要的损失. 4.汇总功能:对当天车票的信息进行汇总。

5.能够实现车站车次及线路信息的管理,对车次及线路的变动信息及时更新。 6。打印输出(生成曲线图和报表)。

7。统计管理(按时间、站点、线路等不同维度统计售票情况,生成曲线图和报表,分析运营状况分析. 2。2业务流程分析

7

a.登陆业务流程图

登录失败管理员

登录系统管理员信息表登陆成功b.车票信息查询业务流程图

车票信息表管理员查询车票信息显示结果

c.修改车辆信息业务流程图

管理员登陆查询车辆信息添加/删除/修改车辆信息档案

d。.添加管理员业务流程图

管理员

添加用户管理员信息表

2。3数据流程分析

a.登录数据流程图

8

用户名管理员 密码车辆售票系统

管理员名 管理登录汽车售票 员 系统 密码 b.售票过程数据流程图 购票信息 汽车售票系统 顾客

9

P01 D4 管理员信息表

购票信息 管理员

顾管理员 订票失败 汽车售票系统 客 有余票 出票 D1 车票信息表

c。增添管理员账户 P02 P03 信息 管理员 管理员信息系管理员信息核

统录入 对并存档

D修改车辆信息的数据流程图: D2 车辆信息表 增删改查 信息管理 管理 员 管理 车票信息表 D3

10

购票信息 P01 缺票 D01

增删改查 D3 车票信息表

D02

管理

学生信息 D2 车辆信息表 管理员

2.4数据字典 2。4。1数据项

票号、票价、车次、日期、车型、开车时间、起始站、终点站、 2。4.2数据流 数据流名称:车票 简述:车票有关信息

数据流来源:客户执行售票操作结果 数据流去向:购票客户

数据流组成:车票编号+车票类型+车次信息+票价信息 2.4。3数据存储

售票记录:票号,起始站,终点站,票价,车次,日期,

车型,售出时间

订票记录:票号,起始站,终点站,票价,车次,日期,开车时间,

车型

车票记录:票号,起始站,终点站,票价,车次,日期,开车时间,

车型

11

4.处理过程

车票汇总:工作人员将一天所售出的票进行统计,包括票数,票类,形成

确定的车票记录。

查询:将顾客需要的车票信息输入系统,并查询其是否可供应. 查询顾客信息:为订票所设,将顾客的准确信息记录,为其预定所车票。 处理订票:进行订票交易,工作人员为顾客预定其所需车票,并在系统

中作相应记录,确定订票记录.

处理退票:进行退票交易,工作人员为顾客办理退票手续,并在系统中

作相应记录,确定退票记录.

数据字典卡片

数据项 表5—1.1 数据字典(一) No:

_____01_____

编号:I01_01 名称:busID 别名:序列号 简述:车次编号 连续值 类型(char) 长度:10 值域: 与其他值的运算关系: 值 离散值 备注: 含 义 值 含 义

12

数据项 表5—1。2 数据字典(一)

No:____02______

编号:I01_02 名称:busType 别名:型号 简述:汽车型号 连续值 类型(int) 长度:50 值域: 与其他值的运算关系: 值 离散值 备注:

含 义 值 含 义 数据项 表5—1。3 数据字典(一) No:

_____03_____

编号:I01_03 名称:PlateNumber 别名:车牌号 简述:车牌号 连续值 类型(char) 长度:50 值域: 与其他值的运算关系: 值 离散值 备注:

含 义 值 含 义 13

数据项 表5—1.4 数据字典(一)

No:____04______

编号:I01_04 名称:busHolder 别名:责任人 简述:相应车次的责任人 连续值 类型(char) 长度:50 值域: 与其他值的运算关系: 值 离散值 备注: 含 义 值 含 义

数据项 表5—1。7 数据字典(一) No:

____05______

编号: I01_05 名称:lineID 别名:线路号 简述:线路编号 连续值 类型(char) 长度:50 值域: 与其他值的运算关系: 值 离散值 备注:

含 义 值 含 义 14

数据项 表5-1。7 数据字典(一) No:

____06______

编号: I01_06 名称: STime 别名:发车时间 简述:发车时间 连续值 类型(char) 长度:50 值域: 与其他值的运算关系: 值 离散值 备注: 含 义 值 含 义 数据项 表5—1.7 数据字典(一) No:____07______

编号: I01_07 名称:ntime 别名:发车时间 简述:发车时间 连续值 类型(char) 长度:50 值域: 与其他值的运算关系: 值 离散值 备注:

含 义 值 含 义

15

数据项 表5—1.8 数据字典(一) No:

_____08_____

编号:I01_08 名称: Date 别名:日期 简述:当前日期 连续值 类型(nchar) 长度:50 值域: 与其他值的运算关系: 值 离散值 备注: 含 义 值 含 义

数据项 表5—1.13 数据字典(一) No:

____09______

编号:I01_09 名称:start 别名:起始站 简述:汽车起始站 连续值 类型(char) 长度: 值域: 与其他值的运算关系: 值 离散值 备注:

含 义 值 含 义 16

数据项 表5-1。9 数据字典(一) No:

____10_____

编号:I01_10 名称:des 别名:终点站 简述:汽车到达的终点站 连续值 类型(nchar) 长度:10 值域: 与其他值的运算关系: 值 离散值 备注:

含 义 值 含 义 数据项 表5-1。7 数据字典(一) No:

____11______

编号: I01_11 名称:ticketID 别名:票号 简述:车票的编号,和线路号对应 连续值 类型(char) 长度:50 值域: 与其他值的运算关系: 值 离散值 备注: 含 义 值 含 义

17

数据项 表5—1。7 数据字典(一) No:

____12______

编号: I01_12 名称:AllNum 别名:总票数 简述:车票总数 连续值 类型(char) 长度:50 值域: 与其他值的运算关系: 值 离散值 备注: 含 义 值 含 义

数据项 表5-1.7 数据字典(一)

No:____13______

编号: I01_13 名称:leftNum 别名:余票 简述:车票剩余的数量 连续值 类型(char) 长度:50 值域: 与其他值的运算关系: 值 离散值 备注: 含 义 值 含 义

18

数据项 表5-1。10 数据字典(一) No:

____14______

编号:I01_14 名称:Price 别名:价格 简述:汽车票的价格 连续值 类型(int) 长度: 值域: 与其他值的运算关系: 值 离散值 备注:

含 义 值 含 义 数据项 表5-1.7 数据字典(一) No:

____15______

编号: I01_15 名称:mid 别名:管理员的账号 简述:管理员登录帐号 连续值 类型(char) 长度:50 值域: 与其他值的运算关系: 值 离散值 备注: 含 义 值 含 义

19

数据项 表5—1.7 数据字典(一)

No:____16______

编号: I01_16 名称:pwd 别名:管理员密码 简述:管理员密码 连续值 类型(char) 长度:50 值域: 与其他值的运算关系: 值 离散值 备注: 含 义 值 含 义

数据结构 表5—2。1 数据字典(二) No:

____17______

编号:D01_01 名称:dbo。t_bus 别名:汽车表 简述:主要介绍汽车的一些基本信息 组成:车次编号+汽车型号+车牌号+责任人+经营路线+座位限额+发车时间

数据结构 表5—2.2 数据字典(二) No:

____18______

编号:D01_02 名称:dbo.t_line 别名:座位表 简述:线路的基本信息 组成:车次编号+日期+终点站+座位号+线路号+始发站+发车时间+持续时间

20

数据结构 表5—2。3 数据字典(二) No:

____19______

编号:D01_03 名称:dbo。t_Price 别名:价格表 简述:介绍汽车票价格的基本信息 组成:起始站+终点站+车次编号+票价+车票号

数据存储 表5-3 数据字典(三) No:____20______

编号:D1 名称:汽车表 别名:bus 简述:存储汽车相关的信息 组成:汽车编号+汽车型号+车牌号+责任人+经营路线+座位限额 关键字:汽车编号 记录长度: 记录数:

相关处理: 数据量: 数据存储 表5—3 数据字典(三) No:____21______ 编号:D2 名称:线路表 别名:line 简述:存储线路相关的信息 组成:线路号+始发站+终点站+始发时间+持续时间+日期+汽车号 关键字:线路编号 记录长度: 记录数:

相关处理: 数据量: 21

数据存储 表5—3 数据字典(三) No:____22______

编号:D3 名称:车票表 别名:ticket 简述:存储车票相关的信息 组成:车票编号+车票价格+总数量+剩余数量 关键字:车票编号 记录长度: 记录数:

相关处理: 数据量: 数据存储 表5—3 数据字典(三) No:____22______

编号:D4 名称:管理员表 别名:Manager 简述:存储管理员相关的信息 组成:管理员帐号+密码 关键字:管理员帐号 记录长度: 记录数:

相关处理: 数据量: 22

数据流 表5-4。1 数据字典(四) No:___23_______

编号:D01 名称:查询 别名:query 简述:查询相关汽车运营情况 组成:日期+起始站+终点站+汽车编号+座位号+票是否出售+车票价格+车票折扣 若为数据流 峰值流量:

来源:售票系统 去向:客户 数据流 表5-4.2 数据字典(四) No:___24_______

编号:D02 名称:订票 别名:DingPiao 简述:进行订票 组成:日期+起始站+终点站+汽车编号+座位号+车票价格+记录号 若为数据流 峰值流量:

来源:客户 去向:售票系统 23

数据流 表5-4.3 数据字典(四) No:___25_______

编号:D03 名称:退票 别名:TuiPiao 简述:退票相关信息 组成:日期+起始站+终点站+汽车编号+座位号+车票价格+记录号 若为数据流 峰值流量:

来源:客户 去向:售票系统 处 理 表5—5.1 数据字典(五) No:___26_______ 编号: P01 名称: 查阅汽车信息 输入信息:日期,起始站,终点站 数据存储:汽车表 输出信息:汽车发车日期时间,汽车起始站,终点站,汽车编号,座位号,票是否出售,车票价格 激发条件:提交 简要说明: 加工逻辑:系统核实在该日期相应运营路线是否有汽车运营 出错处理: 执行频率:根据实际情况进行处理

24

。5面向对象分析

2.5。1。用例图 管理员用例图

查看登陆增加修改管理员删除2。5。2ER图

25

2

姓名值班时间车站工作人员年龄车次旅客购票车票座位号

姓名2。5。3顺序图 a管理员登陆顺序图

登录对话框主窗口管理员1:运行系统()2:创建对话框()[信息不正确循环1-3]3:输入信息()4:验证()[信息正确]5:创建窗口()

26

b增加车辆信息顺序图:(其他操作类似,不再赘述)

主窗口顶层包::管理员车辆对话宿舍1.添加车辆()2.创建对话框()4.找到车辆()3.添加车辆()5.新建车辆()6.保存()

2。6系统测试计划

包括:功能测试,界面测试,性能测试,性能评价,负载测试,强度测试,压力测试,效率测试,报表测试,安全性测试,多用户测试,容量测试,配置测试,安装\\卸载测试,加密测试

第3章 系统设计

3.1模块结构设计

本系统主要分为五大模块,分别为车次管理,票价管理,票务管理,用户管理,查询管理。其中每个模块下面又包含能够实现基本功能的小模块.

27

汽车站售票管理系统 车次管理票价管理票务管理用户管理查询管理 车次信息编辑票价信息录入票价信息修改票价信息删除前台售票前台退票用户信息添加票价信息修改票价信息删除车次信息查询票价信息查询

字段名称 busID busSize busNum busDriver 字段名称 lineID start end Date sTime nTime busId

3.2数据库设计

各层次模块的数据结构表如下:

表 1 汽车信息表 数据类型 nChar(3) Int nChar(3) varchar(20) 必填字段 Y Y Y Y 主键 Y 3.2.1数据结构设计

数据类型 nchar(4) varchar(20) varchar(20) nchar(10) nchar(5) nchar(5) nchar(3) 表2 线路信息表

Y Y Y Y Y Y Y 表3 售票信息表

Y 必填字段 主键 外键 Y

28

字段名称 ticketID allNum leftNum price

表4 管理员信息表 字段名称 mID pwd 数据类型 varchar(20) varchar(20) 必填字段 Y Y 主键 Y 数据类型 nchar(4) Int Int Int 必填字段 Y Y Y Y 主键 Y 3.2.2数据库设计

1逻辑设计

数据库关系模型如下:

车辆(车辆号,载客量,车牌号,司机)

线路(线路编号,始发站,终点站,发车日期,发车时间,耗时,车辆编号) 售票信息(线路编号,总票数,余票) 管理员(管理员账号,密码) 2物理设计

数据库应存放在服务器端,保证数据库的存储空间在数据量的3倍左右,以方便数据备份和数据恢复操作。

3.2.3外部接口设计

1用户界面

用户界面多为链接操作,插入和修改信息的操作。背景采用浅蓝色,文字采用黑色宋体字,查询结果显示在中间位置. 2软件接口

实现google浏览器或者IE与sql sever 2005的接口(通过Tomcat服务器)。

3.2。4出错处理设计

1出错处理信息

1)输入格式错误,探出提示框显示“请按照固定格式输入信息”等字样; 2)程序数据基本错误,探出提示框显示“系统数据错误”等字样,并安全退出程序; 3)程序严重错误,探出提示框显示“请将问题发送至开发者邮箱”等字样,并强行退出程序. 2出错处理对策

1)输入不合法错误,给予正确的格式提示;

29

2)由于程序造成的基本错误,在保护数据库安全的情况下退出程序并重新自启动,再根据日志来恢复 4)定期对数据库进行备份;

3.3详细设计

3.3。1代码设计

服务器端:存放数据库,开启服务器Tomcat,等待管理员那边PC端的请求,根据请求内容查询数据库把查询的内容传回管理员的PC端进行显示。执行一个请求结束后继续等待下一个请求。

管理员PC端:首先要通过登陆界面的验证,输入密码用户号检验成功进入操作界面,所有操作以树型结构显示界面的左边栏,数据显示在右边栏目中;点击具体操作的链接点后会把接收到的的数据显示在右边栏目中.

3.3。2程序设计

1模块设计 1)登录模块

功能:管理员输入密码和用户名点击登入,服务器检验密码和用户是否正确,正确则可以入操作界面。

性能:方便快捷;相应速度快;界面友好,带有错误提示。 输入项目:账号和密码。

输出项目:跳到登入失败或者进入操作界面。 2)车辆信息管理

功能:可以添加汽车信息,删除汽车信息,修改汽车信息,查询所有的汽车信息。 性能:方便快捷;相应速度快;界面友好,带有错误提示。 输入项目:汽车编号,载客量,车牌号,司机。

输出项目:保存添加或者修改后立即刷新界面显示添加后的数据。 3)线路管理

功能:可以添加路线,删除路线,修改路线,显示所有线路. 性能:方便快捷;相应速度快;界面友好,带有错误提示。

输入项目:添加和修改包括线路号、目的地,出发地,出发时间,耗时,使用车辆的编号。

输出项目:线路编号,目的地,出发地,出发时间,行驶时间,余票。 4)管理员信息管理:

功能:可以添加和删除新管理员。

性能:方便快捷;相应速度快;界面友好,带有错误提示.

30

输入项目:添加和修改管理员账号和密码. 输出项目:现有管理员信息。 2 算法设计

登陆部分:首先输入用户号和密码,进行验证,连接服务器的数据库检查输入的用户名是否存在并且密码是否正确,正确则可以操作,不正确显示登入失败。

车辆信息管理:点击汽车信息链接后会发送请求数据库获取所有数据库中的汽车信息,并且再右边栏目中进行显示。输入内容点击保存即可保存到数据库中;如果修改则需要选中修改的行进行修改后保存的数据库中。

线路信息管理:点击线路信息链接后会发送请求数据库获取所有数据库中的线路信息,并且再右边栏目中进行显示。输入内容点击保存即可保存到数据库中;如果修改则需要选中修改的行进行修改后保存的数据库中。

管理员信息管理:点击管理员信息链接后会发送请求数据库获取所有数据库中的管理员信息,并且再右边栏目中进行显示。输入内容点击保存即可保存到数据库中;如果修改则需要选中修改的行进行修改后保存的数据库中

3。3。3程序逻辑

1)登入界面

开始

输入账号和密码 提示失败 否 验证是否合法 是 进入操作界面 结束 图 5登入界面N-S图 31

2)汽车信息管理、线路信息管理、管理员信息的程序逻辑如下:

开始

从服务器获取车辆信息 否 添加 是 获取文本框信息 是 获取文本框信息 修改 否 删除 是 读取主键编号 否 不合法 检验 合法 操作失败 存入服务器 不合法 检验 合法 操作失败 修改服务器 是 删除相关的所有记录 检验是否存在 否 失败 结束

图 6 汽车信息管理、线路信息管理、管理员信息N-S图 3。3。4接口

软件接口:在这里主要考虑软件与操作系统的接口,这里使用java语言开发.Jdk1。7具有较好的跨平台兼容性。除此之外,还要配置服务器端,开启服务器程序Tomcat6.0,等待可无端请求。建立连接后通过SQL语言Tomcat会自动完成对数据库的操作。

硬件接口:可用的网络链接,服务器端有较大的硬盘容量,较好的CPU来提高检索速率。

3。3.5测试要点

因为开发的软件较小。可以严个测试录入数据的安全性。准备多个测试用例(实用软件测试的方法)检验系统的健壮性.同时检查形同日志,以及异常后数据库能发保持完整性。

32

3。4性能需求

3。4.1数据精确度

1)查询时保证查全率,所有在相应域中与查询关键字相符的记录都应能查到; 2)查询时保证查准率,所有查询记录都是希望值. 3)修改记录同步,不出现一方有时令一方没有的情况。

3.4.2时间特性

1)小型库中的查询、修改等操作的响应时间应控制在0。5秒钟以内; 2)增加数据量时也应将响应时间控制在2秒以内;

3)当数据多至超出响应时间时,应提供更新以控制响应时间。

3。4.3适应性

1)满足运行环境在允许操作系统之间的安全转换要求; 2)满足与其他应用软件不冲突的运行要求.

3.5运行需求

3.5.1用户界面

1)屏幕格式:多窗口运行,采用B/S,使用myeclipse2013和jdk1.6制作,完全兼容Windows平台。

2)报表格式:符合打印要求,与常规打印机接口匹配。 3)菜单格式:采用选项菜单等方式.

3。5.2硬件接口

1)笔记本电脑

3。9.3软件接口

1)运行于Windows操作系统之上;

2)需要连接小型数据库sql server 2005和系统类库,使用Tomcat服务器。

3.5。4故障处理

1)用户输入错误格式时应给予改正提示; 2)数据库更改错误时应自行缓和关闭并重启;

3)若运行时遇到不可恢复的系统错误时,应保证数据库的完好无损; 4)其它故障问题可与开发人员联系。 3.5.5基本要求

综上可知,基本要求如下: 1)体系结构:B/S 2)操作系统:Windows系列

33

)数据库管理系统:sql server 2005

4)开发工具: myeclipse、jdk1.6、Tomcat 7.0

5)软件需求:操作系统Windows 2000 Advance Server以上,数据库软件sql server 2005,数据库服务器端软件Tomcat 7.0

3.6其他需求

除了基本要求,还应该确保软件的安全性: 1)提供管理员的密码保护、密码修改功能; 2)提供可靠的软件逻辑机制,减少外部侵入的风险。

第四部分 主要界面截图及代码

4。1 数据库截图

34

4。2配置截图(jdk安装和环境变量配置省略)

35

36

4.3运行截图

37

38

39

40

41

4。4相关代码

1 、方法包

package sen;

import java.sql.Connection; import java。sql.DriverManager; import java。sql.ResultSet; import java。sql.Statement; import java.util。ArrayList;

public class DBUtilbus {

//开通新航线添加新票(被addLine调用) {

try{

int num=0;

String update_sql=\"\";

Class。forName(”sun。jdbc.odbc.JdbcOdbcDriver”); Connection

Statement st=con。createStatement();

update_sql=\"select busSize from bus where busID=\"+\"’”+busID+”’\"; System。out.println(update_sql);

ResultSet rs=st.executeQuery(update_sql); rs.next();

num=Integer.parseInt(rs.getString(1)); rs。close(); update_sql=

st.executeUpdate(update_sql); st.close(); con。close(); }

catch(Exception e) { }

e。printStackTrace();

public static void addticket(String lineID,String busID,int price)

con=DriverManager.getConnection(”jdbc:odbc:mydb\",\"sa\",”1234\");

\"insert into ticket values(’\"+lineID+\"’,”+num+\",\"+num+”,\"+price+”)”;

//添加新运营路线

public static void addLine(String lineID,String start,String des,String date,String stime, String ntime,String busID )

42

{

try{ String update_sql= ”insert into line

values('”+lineID+”’,'”+start+\"',’”+des+\"','\"+date+\"’,’\"+stime+\"’,'\"+ntime+”’,’\"+busID+\"')”;

Class。forName(”sun。jdbc.odbc。JdbcOdbcDriver”);

Connection con=DriverManager。getConnection(\"jdbc:odbc:mydb”,”sa”,”1234\");

}

//添加车辆

public static void addbus(String busID,int busSize,String busNum,String {

try{String update_sql=

Statement st=con.createStatement(); st.executeUpdate(update_sql);

st。close(); con。close(); }

catch(Exception e) { }

e。printStackTrace();

busDriver)

”insert into bus values

Class.forName(\"sun。jdbc.odbc.JdbcOdbcDriver”);

Connection con=DriverManager.getConnection(”jdbc:odbc:mydb”,\"sa”, }

//添加管理员

public static void addmanager(String mid,String pwd) {

try{String update_sql=

\"insert into manager values(’”+mid+\"’,'”+pwd+\"')\"; Class。forName(”sun.jdbc。odbc.JdbcOdbcDriver\");

Connection con=DriverManager.getConnection(”jdbc:odbc:mydb”,\"sa\",

Statement st=con.createStatement(); st.executeUpdate(update_sql);

Statement st=con.createStatement(); st。executeUpdate(update_sql); }

catch(Exception e) {e.printStackTrace();}

st.close(); con。close();

('”+busID+\"’,”+busSize+\+busNum+\"',’\"+busDriver+\"’)”;

\"1234\");

\"1234\");

43

}

st.close(); con.close(); }

catch(Exception e) {e。printStackTrace();}

public static ArrayList〈String[]〉 getLinet()

{ArrayList al=new ArrayList();

try{

Class.forName(\"sun.jdbc.odbc。JdbcOdbcDriver\");

Connection con=DriverManager。getConnection(”jdbc:

Statement st=con.createStatement(); ResultSet rs=st。executeQuery(

”select start,des,date,stime,ntime,busID,price,allNum,

odbc:mydb”,”sa\",”1234”);

leftNum from ticket,line where ticket.lineID=line.lineID and ticket。leftNum>0\");

//获取管理员信息

public static ArrayList getManager()

{ ArrayListtry{

Class.forName(”sun.jdbc.odbc。JdbcOdbcDriver”);

Connection con=DriverManager。getConnection(”jdbc:odbc:

Statement st=con。createStatement();

ResultSet rs=st。executeQuery(\"select * from manager”); while(rs.next())

{ String[] rows=new String[2];

for(int i=1;i<=2;i++) {

rows[i—1]=rs.getString(i); } al。add(rows);

}

catch(Exception e) {e。printStackTrace();} return al;

while(rs.next()) { }

rs.close(); st。close(); con。close();

String[] rows=new String[9]; for(int i=1;i<=9;i++) {

rows[i-1]=rs。getString(i); } al。add(rows);

mydb”,\"sa”,\"1234\");

44

}

rs.close(); st.close(); con。close();

catch(Exception e) {e。printStackTrace();} return al;

//获取售票信息

public static ArrayList〈String[]〉 getSalet()

{ ArrayList〈String[]〉 al=new ArrayList();

try{ Class.forName(”sun.jdbc。odbc。JdbcOdbcDriver\"); Connection con=DriverManager.getConnection(”jdbc:odbc: }

//获取车辆信息

public static ArrayList getBusIfor()

{ ArrayList〈String[]〉 al=new ArrayList〈String[]〉();

try{ Class。forName(”sun。jdbc.odbc。JdbcOdbcDriver\"); Connection con=DriverManager。

Statement st=con。createStatement();

ResultSet rs=st.executeQuery(\"select * from bus”); while(rs。next())

{ String[] rows=new String[4];

for(int i=1;i〈=4;i++)

{ rows[i-1]=rs.getString(i); }

catch(Exception e) {e.printStackTrace();} return al;

Statement st=con。createStatement();

ResultSet rs=st。executeQuery(\"select * from ticket”); while(rs。next())

{ String[] rows=new String[4]; }

rs.close(); st。close(); con。close();

for(int i=1;i<=4;i++)

{rows[i-1]=rs。getString(i); } al.add(rows);

mydb\",”sa”,\"1234\");

getConnection(\"jdbc:odbc:mydb”,”sa\",”1234\");

45

}

al。add(rows);

rs。close(); st。close(); con.close();

catch(Exception e) {e.printStackTrace();} return al;

public static void bus(String pid) { }

2、index.jsp

〈%@ page contentType=\"text/html;charset=utf—8” %〉 〈%@ page language=”java” import=”java。sql.*\" %〉

〈html〉 <!-—

body,td,th { }

body {background-image: url(b3fb43166d224f4a5818f9140bf790529822d130.jpg); background—size:cover; color: silver; }

font—weight: bold; font-style: italic; color: #006699;

。STYLE2 {color: #990000}

.STYLE4 {color: #000000} —-〉

。STYLE5 {color: #FF0000}

——〉

46

〈form name=form1 method=”post” action=\"checklogin.jsp”>

#9999FF” class=\"footer\"〉

〈td width=”\">

〈td>〈span class=\"STYLE4 STYLE5”〉密码: 〈/td>

〈/tr〉 〈tr〉

〈span class=”STYLE2”>

〈/form> 〈/html〉

3、checklogin。jsp

〈%@ page contentType=”text/html;charset=UTF—8” %〉 〈%@ page language=\"java\" import=”java.sql。*” %〉 〈%

String path = request。getContextPath();

String basePath = request。getScheme()+\"://\"+request.getServerName()+”:\"+request.getServerPort()+path+\"/”; %>

〈!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN”> 〈html〉 〈head〉

〈base href=\"〈%=basePath%〉\"〉

47

〈meta http—equiv=\"cache-control” content=”no—cache\"〉

〈!--

〈/head> 〈body> 〈%

String mid; String pwd; boolean flag=false; String sql=”\";

if((request。getParameter(”mid”)!=null)&&(request。getParameter(”pwd\")! {

mid =request。getParameter(”mid”); =null))

pwd =request.getParameter(\"pwd\");

response。sendRedirect(”fenp.jsp\");

try {

sql=”select * from [manager] where mid=’\"+mid+\"' and pwd='”+pwd+”’\";

Class。forName(”sun.jdbc.odbc。JdbcOdbcDriver”);

Connection con=DriverManager。getConnection(”jdbc:odbc:Statement st=con。createStatement(); ResultSet rs=st。executeQuery(sql); if(rs。next()) { flag=true; }

rs.close(); st。close(); con.close();

if(flag==true)

mydb”,\"sa\",”1234”);

48

} else {

response。sendRedirect(\"loginfail。jsp”); }

} %〉

catch(Exception e) { }

finally{}

e。printStackTrace(); out.println(e);

〈/body〉 〈/html〉

4、fenp.jsp

〈%@ page language=”java” import=”java.util。*,sen。DBUtilbus\" pageEncoding=\"UTF—8”%〉 〈%

String path = request。getContextPath();

String basePath = request.getScheme()+\"://\"+request.getServerName()+”:”+request.getServerPort()+path+”/\"; %〉

〈!DOCTYPE HTML PUBLIC \"—//W3C//DTD HTML 4。01 Transitional//EN”〉 〈title>My JSP 'MyJsp。jsp' starting page〈/title>

〈/head>

〈meta http—equiv=”pragma\" content=”no-cache”〉 〈meta http-equiv=\"keywords” content=”keyword1,keyword2,keyword3”> 〈meta http-equiv=\"description” content=”This is my page”〉 --〉

49

〈frameset rows=”10%,*\">

〈frame src=”left.jsp” name=”left” 〉 〈frame src=”busline.jsp” name=\"main”〉

〈/frameset>

5、Head。jsp

<%@ page contentType=\"text/html;charset=gb2312\"%>

〈meta http-equiv=\"Content-Type” content=”text/html; charset=gb2312\"〉