火车站售票系统概要设计1综述.docx
《火车站售票系统概要设计1综述.docx》由会员分享,可在线阅读,更多相关《火车站售票系统概要设计1综述.docx(15页珍藏版)》请在冰豆网上搜索。
![火车站售票系统概要设计1综述.docx](https://file1.bdocx.com/fileroot1/2023-2/1/d806754e-527b-40a1-bf55-53db8606ea08/d806754e-527b-40a1-bf55-53db8606ea081.gif)
火车站售票系统概要设计1综述
火车站售票系统概要设计说明书
1.引言
1.1编写目的
本火车站售票系统项目的前一阶段,即需求分析阶段中已经将系统用户对本系统的需求做了详细的阐述,这些用户需求已经在上一阶段中对网络上的一些铁路局,铁路火车站中获得,并在需求说明书中得到详尽叙述及阐明。
本阶段在系统的需求分析的基础上,对火车站售票系统做概要设计。
主要解决了实现该系统需求的程序模块设计问题。
包括如何把该系统划分成若干个模块、决定各模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。
在以下的概要设计报告中将在本阶段中对系统所做的概要设计进行详细的说明。
在下一阶段的详细设计中,程序设计员可参考概要设计报告,在概要设计对火车票售票系统所作的模块结构设计的基础上,对系统进行详细设计。
在以后的软件测试及软件维护阶段也可参考此说明书,以便于了解在概要设计过程中所完成的各模块设计结构,或在修改时找出本阶段设计的不足或错误。
1.2项目背景
本系统主要用于火车票的销售,提供了以下几个子功能:
用户登录和注册、火车票预订、火车票信息查询、订票查询、售票、取票方式、退票以及后台方面的火车班次信发布、取消火车班次、订票生成、取票号生成等后台功能。
火车站售票系统将由四部分组成:
网上订票客户程序,售票员系统,系统管理员系统以及置于服务器的数据库服务器。
本系统与其他系统的关系如下:
客户程序
售票员系统
数据库服务器
网络
客户程序
系统管理员系统
客户程序
1.3定义
1.3.1专门术语
SQLSERVER:
系统服务器所使用的数据库管理系统(DBMS)。
SQL:
一种用于访问查询数据库的语言。
事物流:
数据进入模块后可能有多种路径进行处理。
主键:
数据库表中的关键域。
值互不相同。
外部主键:
数据库表中与其他表主键关联的域。
ROLLBACK:
数据库的错误回复机制。
1.3.2编写
系统:
若未特别指出,系统指火车站售票系统。
SQL:
StructuredQueryLanguage(结构化查询语言)。
1.4参考资料
a.《实用软件工程》清华大学出版社陆惠恩著2006年5月
b.《软件项目管理案例教程》机械工业出版社韩万江、姜立新著2004年1月
c.中国铁路网
2.任务概述
2.1目标
主要为了解决实现该系统需求的程序模块设计问题。
包括如何把该系统划分成若干个模块、决定各模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。
在以下的概要设计报告阶段中将在本阶段中对系统所作的概要设计进行详细的说明。
2.2运行环境
系统将由四部分组成:
网上订票客户程序,售票员系统,系统管理员系统以及置于服务器的数据库服务器。
该系统能运行在Windows98以上操作系统之上(客户端),且支持各种主流浏览器,也能运行在Unix、Linux等操作系统(服务端),如果还需要运行在其他的操作系统,需要对软件进行重新的编译。
2.3需求概述
为了便于客户预定火车票,客户端把用户预定火车票的订单信息,包括送票方式、乘车日期、车次、始发站、终点站、票种和张数,提交后传输到服务器端,由系统管理员来审核通过,最后确认,返回客户端,告知用户到规定的售票点去领取火车票或者送票员送票上门。
用户要在当天2个小时到网站去确认信息,并记住领取火车票的取证号,凭证件到火车站,经售票员校对无误后即可领取车票。
用户可以直接到火车站通过售票员进行购买车票,如果想要退票应在发车前6小时到火车站由售票员确认进行退票操作。
如果用户想要退订车票应该在开车前1天到火车站或者在本网上进行退订操作。
要求系统能有效、快速、安全、可靠和无误的完成上述操作,并要求用户界面简单明了,易于操作,服务器程序易于维护。
2.4条件与限制
用户订单提交后需在开车前的12小时之前进行确认信息,并且做出相应的决定,如:
退票、换票等。
如果用户的订单是11天之内的,用户应在开车11天内到本网站进行查询。
售票员在开车前一小时不准售票,在开车前6小时不准退票。
改签的天数的范围为1天。
3.总体设计
3.1处理流程
下面将使用(结构化设计)面向数据流的方法对火车站售票系统的处理流程进行分析。
系统可分为两大部分:
一是客户端程序,二是服务器端程序。
以下将分别对系统的这两大部分进行流程分析:
3.1.1客户端的程序流程
客户端的输入信息为用户的基本信息、订单的基本信息、车票的销售信息,输出的信息为打印订单、打印车票和确认或出错信息。
其内部处理流程如下:
3
2
4
用户资料
经网络送服务器程序
7
订票/取票
8
1
6
5
订单号
0
车票销售信息
13
打印订单
12
14
11
输出确定预订信息
服务器经网络送来回答
17
15
10
9
输出错误信息
16
14
18
输出确定预订信息
19
20
打印火车票
下面对各模块(以数字表示)进行功能说明:
1读入并确定(订票/取票),若输入是订票时转入2,输出则转入5。
2读入用户资料,读取所输入的用户资料,并将其格式化,将格式化数据送3。
3检验输入资料,检验格式化输入资料,初步检查输入是否有误,它是一个事务处理中心,有误转2再次读入,检查无误则将数据送4。
4准备服务器数据,由格式化用户资料准备需发送到服务器的数据,将准备好的数据送7。
5读入订单,读取所输入的订单号,并将其格式化,将格式化数据送6。
6准备服务器数据,由格式化订单号准备需发送到服务器的数据,不同于4,它将准备的是订单号,将准备好的数据送7。
0读入车票销售信息,即在火车站购票或退票的信息,将准备好的数据送7。
7准备网络数据包,将数据准备/加密成网络传输数据包。
8网络数据发送,将数据包经网络发送到服务器程序,它是程序与网络的接口。
9网络数据接受,接受由服务器程序经网络传送到客户端的数据包,它是程序与网络的接口。
10解开/判断,解开9所接受的数据包,并判断数据是订票数据、购票数据、退票数据或是取票数据,它是事务处理中心,是订票、购票、退票则将数据送11,是取票则将数据送18。
11订票、购票或退票成功与否,由数据判断订票、购票或退票是否成功,它是事务处理中心,若操作成功则将数据送12,不成功则将数据送15。
12准备输出数据,由接收的服务器数据准备输出数据,其中关于订单的数据将送13,其他车票销售信息和用户相关资料送14。
13打印订单,由订单信息处理订单格式并打印出订单。
14输出定位确定,在屏幕上显示确定定位及其他信息。
15判断错误,由数据判断出错误类型,将类型送到16。
16准备错误语句,由具体错误类型准备错误语句,送17。
17输出错误语句,在屏幕上显示对应错误语句。
18取票核对成功与否,由数据判断取票核对是否成功,若成功则将数据送19,否则送15。
19准备火车票输出数据,由接收的服务器数据准备将打印的火车票数据数,据其中关于订单的火车票的数据送入20,其他包括用户相关资料等送14。
20打印火车票,由订单信息及列车信息处理订单格式并打印出火车票。
3.1.2服务器程序流程
7
6
5
4
客户端经网络送来数据
客户端网络送来的数据
9
8
17
16
3
2
1
数据库(班次、票务)
送客户端
13
来自客户端
12
11
10
14
15
下面对各模块(以数字表示)进行功能说明:
1网络数据接收,接收由客户端程序经网络传送到服务器的数据包,它是程序与网络的接口。
2解开数据,解开加密打包的数据,并将回复的数据格式化送入3。
3判断操作,由数据判断需要做什么数据操作,是事务处理中心,若为订票、购票、退票操作则将数据送4,若为取票操作则将数据送10。
4准备数据库查询语句,由订票、购票、退票数据准备访问SQLSERVER数据库所需的SQL语句,送入5。
5数据库操作,运行SQL语句,查询并存入数据库,获得相应的订票、购票数据,将数据送入6。
它需要包括初步对查询的判断。
它必须为乘客安排可抵达目的地的有座位的班次。
6判断查询是否成功,利用查询所得的数据判断订票、购票、退票是否成功,是事务处理中心,若操作成功则将数据送7,不成功则将数据送8。
7准备回送数据,准备订票、购票成功后需回送客户端程序的数据,送6。
8确定原因,由查询数据判断订票、购票、退票不成功的原因,送9。
9准备回送数据,根据不成功的原因,准备需回送客户端程序的数据,送16。
10准备数据库查询语句,由领票数据、购票数据和退票数据准备访问SQLSERVER数据库所需的SQL语句,送11。
11数据库操作,运行SQL语句,查询并存入数据库,获得相应的取票数据,将数据送入12,它需要包括初步对查询的判断。
12判断查询是否成功,利用查询所得的数据判断取票、购票和退票是否成功,是事务处理中心,若取票操作成功则将数据送13,不成功则将数据送14。
13准备回送数据,准备取票确认后需回送客户端程序数据,送16。
14确定原因,由查询数据判断取票、购票、退票不能确认的原因,送15。
15准备回送数据,根据不成功的原因,准备需回送客户端程序的数据,送16。
16准备网络数据包,将数据准备/加密成网络传输包。
17网络数据传送,将数据包经网络发送到服务器程序,它是程序与网络的接口。
以上显示的各模块由于事务流处理上的便利,将有些功能模块拆分到各事务流中。
3.2总体结构和模块外部设计
下面以结构图来描述火车站售票系统的软件总体结构。
框内标明了模块的名字:
方块之间的直线表示模块的调用关系。
3.2.1客户端部分
订单
3.2.2服务器部分
发送数据到用户端
3.3功能分配
客户端程序主要有三大块:
接收数据、网络通信及输出部分。
服务器程序主要也有三大功能:
接收网络数据、数据库操作及发送网络数据部分。
服务器程序需与已建立的SQL数据库连接。
4.接口设计
4.1外部接口
4.1.1用户界面
在用户界面部分,根据需求分析的结果,用户需要一个用户友善界面。
在界面设计上,做到简单明了,易于操作,并且注意到界面的布局,应突出显示重要及出错信息。
外观上也要做到合理化,考虑到用户多对Windows风格较熟悉,应尽量向这一方面靠拢。
在设计语言上,已决定使用C#进行编程,在界面上可使用ASP.NET技术,其中服务器程序界面要做到操作简单,易于管理。
在设计上采用下拉式菜单方式。
总的来说,系统的用户界面应做到可靠性、简单性、易学习和使用。
4.1.2软件接口
服务器程序可使用.NET提供的与数据库连接的接口,进行数据库的访问。
服务器程序上可使用NavicateforSQL对数据库的备份命令,以做到对数据库的保存。
在网络软件接口方面,使用一种无差错的传输协议,采用滑动窗口式对数据进行网络传输及接收。
4.1.3硬件接口
在输入方面,对于键盘、鼠标的输入,使用标准输入/输出,对输入进行处理。
在输出方面,打印机的连接及使用,也可标准输入/输出对其进行处理。
在网络传输部分,在网络硬件部分,为了实现高速传输,将使用高速ATM。
4.2内部接口
内部接口方面,各模块之间采用函数调用、参数传递、返回值的方式进行信息传递。
具体参数的结构将在数据结构设计的内容中说明。
接口传递的信息将是以数据结构封装了的数据,以参数传递或返回值的形式在各模块间的传递。
5.数据结构设计
5.1数据库数据结构设计
DBMS的使用上系统将采用SQL,系统主要需要维护7张表:
表1管理员信息
字段名称
字段类型
主键
外键
是否为空
默认值
管理员ID
Varchar(10)
是
否
否
001
管理员姓名
Varchar(50)
否
否
否
Admin
管理员密码
Varchar(16)
否
否
否
无
表2员工
字段名称
字段类型
主键
外键
是否为空
默认值
员工ID
Varchar(10)
是
否
否
100
员工姓名
Varchar(50)
否
否
否
无
员工密码
Varchar(16)
否
否
否
无
证件号码
Varchar(20)
否
否
否
无
联系地址
Varchar(50)
否
否
否
无
联系电话
Varchar(20)
否
否
否
无
表3用户信息
字段名称
字段类型
主键
外键
是否为空
默认值
用户ID
Varchar(10)
是
否
否
10000
用户密码
Varchar(16)
否
否
否
无
证件号码
Varchar(20)
否
否
否
无
真实姓名
Varchar(50)
否
否
否
无
联系地址
Varchar(100)
否
否
否
无
邮政编码
Varchar(10)
否
否
否
无
联系电话
Varchar(20)
否
否
否
无
表4订单信息
字段名称
字段类型
主键
外键
是否为空
默认值
订单号
Varchar(10)
是
否
否
10000
乘车日期
Datetime
否
否
是
无
车次
Varchar(10)
否
是
是
无
始发站
Varchar(10)
否
否
是
无
终点站
Varchar(10)
否
否
是
无
席别
Varchar(10)
否
否
是
无
票种
Varchar(10)
否
否
是
无
张数
Varchar(5)
否
否
是
1
备注
Varchar(100)
否
否
是
无
表5列车信息表
字段名称
字段类型
主键
外键
是否为空
默认信息
始发站
Varchar(10)
否
否
是
无
车次
Varchar(10)
是
否
否
无
终点站
Varchar(10)
否
否
是
无
发车时间
Datetime
否
否
是
无
停靠站
Varchar(10)
否
否
是
无
到站时间
Datetime
否
否
是
无
票种
Varchar(10)
否
否
是
无
表6火车票表
字段名称
字段类型
主键
外键
是否为空
默认信息
票种
Varchar(10)
是
否
否
无
车次
Varchar(10)
否
是
否
无
张数
Varchar(10)
否
否
是
1
表7送票者信息表
字段名称
字段类型
主键
外键
是否为空
默认信息
送票者ID
Varchar(10)
是
否
否
无
送票者姓名
Varchar(50)
否
否
否
无
5.1逻辑结构设计
5.2物理结构设计
5.3数据结构与程序的关系
6.运行设计
6.1运行模块的组合
用户端程序在有输入时启动接收数据模块,通过各模块之间的调用,读入并对输入进行格式化。
在接收数据模块得到充分数据时,将调用网络传输模块,将数据通过网络送到服务器,并等待接受服务器返回的信息。
接收到返回信息后随时即调用数据输出模块,对信息进行处理,产生相应的输出。
服务器程序的接收网络数据模块必须始终处于活动状态。
接收到数据后,调用数据处理/查询模块对数据库进行访问,完成后调用网络发送模块,将信息返回用户端。
6.2运行控制
运行控制将严格按照各模块间函数调用关系来实现。
在各事务中心模块中,需对运行控制进行正确的判断,选择正确的运行控制路径。
在网络传输方面,用户端在发送数据后,将等待服务器的确认收到信号,收到后,再次等待服务器发送回答数据,然后对数据进行确认。
服务器在接到数据后发送确认信号,在对数据处理、访问数据库后,将返回信息回送用户端,并等待确认。
6.3运行时间
在需求分析中,对时间的要求必须对作出的操作有较快的反应。
网络硬件对运行时间有最大的影响,当网络负载量大时,对操作反应将受到很大的影响。
所以将采用高速ATM(异步传输模式)网络,实现用户端与服务器之间的连接,以减少网络传输上的开销。
其次是服务器的性能,这将影响对数据库访问时间即操作时间的长短,影响加大客户机操作的等待时间,所以必须使用高性能的服务器。
软件对本系统的速度影响将会大于硬件的影响。
7.出错处理设计
7.1出错输出信息
程序在运行时主要会出现两种错误:
(1)由于输入信息,或无法满足要求时产生的错误,称为软错误。
(2)由于其他问题,如网络传输超时等,产生的问题,称为硬错误。
对于软错误,须在订票、购票、退票和取票操作成功判断及输入数据验证模块由数据进行数据分析,判断错误类型,再生成相应的错误提示语句,送到输出模块中。
对于硬错误,可在出错的相应模块中输出简单的出错语句,并将程序重置。
返回输入阶段。
出错信息必须给出相应的出错原因,例:
“该列火车已满!
”,“查无此信息!
”等等。
7.2出错处理对策
所有的用户端及服务器都必须安装不间断电源以防止停电或电压不稳定造成的数据丢失的损失。
若真断电时,用户端将不会有太大的影响,主要是服务器上:
在断电后恢复过程可采用SQLSERVER的日志文件,对其进行ROLLBACK处理,对数据进行恢复。
在网络传输方面,可考虑建立一条成本较低的后备网络,以保证当主网络断路时数据的通信。
在硬件方面要选择叫可靠、稳定的服务器机种,保证系统运行的可靠性。
8.安全保密设计
由于数据的传输上需要通过网络传输,为了用户资料进行保密,需要在网络的传输过程中对数据进行加密。
这个工作主要是在准备网络包,及解开网络包这两个模块完成,它们对数据进行加密及解密还原工作。
在加密算法选择上将使用RSA加密算法。
9.维护设计
维护方面主要为对服务器上的数据库数据进行维护。
可使用SQLSERVER的数据库维护功能机制。
例如,定期对数据库进行Backup,维护管理数据库死锁问题和维护数据库内数据的一致性问题。