火车售票数据库系统设计_第1页
火车售票数据库系统设计_第2页
火车售票数据库系统设计_第3页
火车售票数据库系统设计_第4页
火车售票数据库系统设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、目录一、绪论. 3二、需求分析. 3 2.1数据流图. 3 2.2数据字典. 7三、系统设计.103.1概念结构设计.10 3.11 E-R图.113.2逻辑结构设计.13 3.21 E-R图向关系模型的转化.13 3.22 二维表.14 3.23 数据模型的规范化.14 3.24 数据模型的优化.16 3.25 视图的建立.163.3概要设计.18四、数据库的实现.184.1数据的载入.184.2功能的实现和系统调试.20五、课程总结.27附录参考文献一、绪论 铁路票务管理是一件比较负责但又非常重要的事情,它是涉及国家铁路运输的正常工作、国民经济的发展和人民生活水平及质量的大事情。随着经济的

2、发展,交通运输越来越便捷,为了提高效率,减轻劳动强度,设计开发高效的铁路信息查询系统就显得颇为重要。春运、旅游使得铁路客运量大幅度的提高,各大省市的列车都显著的增加,这些都对列车票务管理系统提出了更高的要求,所以要不断的完善更新列车票务管理系统,提高列车售票系统的工作效率。基于全国有大量的人员通过搭乘火车到达目的地;而与火车的特殊性及可能经过多个城市,每个城市的车站可以出售此火车的车票;而且同一车站可能有多辆车经过;每个乘客都希望以最快的方式选择自己想乘坐的那一趟列车,因此以人工的方式是无法实现的。 一种可行的方案是基于客户端服务器的体系结构,服务器为数据库系统,存储所有必要的信息。客户可以在

3、任一个火车售票点方便地购买符合自己要求的车票。列车票务管理系统的实施,将会在一定程度上促进铁路客运生产力和生产关系的变革,增强市场竞争能力,提高铁路部门的工作效率,提升管理水平,减少劳动强度,方便广大旅客购票,有一定的社会和经济效益。二、需求分析2.1数据流图 数据流图(Data Function Diagram),又名数据功能图表,简称DFD,就是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。为了得到数据流图,首先需要分析系统需要具备哪些功能。系统具应备的功能和操作如下:(1) .查询:可以通过起

4、点站与终点站在进行查询,也可根据具体的车次输入进行查询,同时每次查询都会显示车次号,点击即可显示该趟列车的详细信息,其中包括列车的起始站、终点站、发车时间、到达时间等。 (2) .售票业务:每一个售票点都可以通过输入车次以及站点来找到客户需要的车票,然后确定日期、座位类型,以及是否半票,付款后即可出票,同时在数据中进行更新。 (3).退票业务:根据客户提供的情况(车次、时间、)为客户办理退票手续,退票时按票价的80%退给客户金额,若所退票额能满足他的要求,则为他办理退票手续,同时在数据库中进行更新。 (4).更新功能:该系统随时跟据车辆的变化情况进行更新,增加车辆时可以在系统中插入该车的详细信

5、息,当某趟车停止运行时可以删除该趟车的信息。包括对列车信息、站点信息的更新功能。以下是需求分析后得到的数据流图(DFD): 顶层数据流图 一层数据数据流图 二层更新系统 二层查询系统 二层购票系统 二层退票系统 2.2 数据字典 数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程5个部分。数据字典在数据库设计中占有很重要的地位,它是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。1. 数据项 数据项是数据结构中讨论的最小单位,是数据记录中最基本的、不可分的有名数据单位。数据项可以是

6、字母、数字或两者的组合。通过数据类型(逻辑的、数值的、字符的等)及数据长度来描述。数据项用来描述实体的某种属性。对数据项之间的描述通常包括以下内容:数据项描述=数据项名,数据项含义说明,列名,数据项类型,长度,取值范围, 取值含义,与其他数据项的实际联系,数据项之间的联系改系统主要涉及的数据项有三个:数据项名称数据项列名数据类型说明售票点编号Snochar(10) PK名称Snamechar(30)地址Addresschar(30)联系电话Telchar(11)0-10-9九位数字数据项名称数据项列名数据类型说明车次编号Tnochar(6) PK票类名称Tnamechar(4) PK票价Pri

7、cechar(10)额定票数Tamountnumeri(5)数据项名称数据项列名数据类型说明车次编号Tnochar(6) PK列车类型Typechar(20)空调特快,空调快速,动车组,直达特快,零时客车,普快列车起始站名Bstationchar(10)终点站名Estationchar(10)发车时间Btimechar(10)24时制到达时间Etimechar(10)24时制运行时间Ttimechar(10)小时/分钟里程Distancechar(10)2. 数据结构数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合

8、组成。对数据结构的描述通常包括以下内容:数据结构的描述=数据结构名,含义说明,组成:数据项或数据结构该系统主要涉及的数据结构有:售票点、车票、车次、出售数据结构名售票点说明记录售票点的基本信息组成Sno+Sname+Address+Tel备注数据结构名车票说明记录车票的基本信息组成Tno+Tname+Price+Tamount备注数据结构名车次说明记录车次的基本信息组成Tno+Type+Bstation+Estation+Btime+Etime+Ttime+Distance备注数据结构名出售说明记录出售的基本信息组成Sno+Tno+Tname+Ddate+Samount备注3. 数据流数据流是

9、数据结构在系统内传输的路径。对数据流的描述通常包括以下内容: 数据流描述=数据流名,说明,数据流来源,数据流去向, 组成:数据结构,平均流量,高峰期流量该系统主要涉及的数据流有:数据流名车票信息说明记录车票的出售过程数据流来源3.4核实车票信息数据流去向确认付款组成车次编号+票类名称+票价+车票类型+车票日期流量卖出一张票,则发出一张票4. 数据存储数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。对数据存储的描述通常包括:数据存储描述=数据存储名,说明,编号,输入的数据流,输出的数据流,组成:数据结构,数据量,存取频度,存取方式该系统的数据存储主要有:数据存储名售票点信息说明记

10、录售票点的基本信息输入的数据流统计输入输出的数据流售票点基本信息组成售票点数据存储名车票信息说明记录车票的基本信息输入的数据流决定售票输出的数据流确认出票组成车票数据存储名车次信息说明记录车次的基本信息输入的数据流输入车次、站点查询输出的数据流显示车次信息组成车次5. 处理过程处理过程的具体处理逻辑一般用判定表或判定树来描述。数据字典中只需要处理过程的说明性信息,由以下内容组成:处理过程描述=处理过程名,说明,输入:数据流,输出:数据流, 组成:简要说明该系统设计的处理过程有:数据过程名车次查询说明记录车次的全部信息输入车次信息输出车次信息数据过程名买票说明记录车票的全部信息输入车次信息输出车

11、票信息数据过程名退票说明记录与购票时相同的信息输入车票信息输出票价信息数据过程名插入列车说明记录新增加的零时列车输入车次信息输出车次信息数据过程名删除列车说明记录要删除的列车输入车次信息输出车次信息三、系统设计3.1.概念结构设计在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好地、更准确地用某一DBMS实现这些需求。在概念结构设计阶段,首先需要了解概念结构设计的方法和步骤。(1)概念结构设计的方法:本系统采用自底向上的概念结构设计方法。即首先定义各局部应用的概念结构,然后将它们集成起来得到全局概念模式。(2)概念结构设计的步骤: a、抽象数据并设计局部视图。就是对需求分析阶

12、段收集到的数据按照E-R模型的要求进行分类、组织,标识实体的键,确定实体之间的联系类型,设计出E-R图的框架。b、丰富E-R,为其添上属性,得到全局的概念结构。3.11 E-R图E-R图也即实体-联系图(Entity Relationship Diagram),提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。E-R方法是“实体-联系方法”(Entity-Relationship Approach)的简称,它是描述现实世界概念结构模型的有效方法,构成E-R图的基本要素是实体型、属性和联系。首先画出每个实体的属性图以及联系的属性图,即:抽象数据,得到数据的总体E-R:具体的ER图为

13、:售票点:编号,名称,地址,联系电话车票:车次编号,票类名称,票价,额定票数车次:车次编号,列车类型,起始站名,终点站名,发车时间,到达时间,运行时间,里程出售:车次编号,票类名称,编号,车票日期,出售数量3.2 逻辑结构设计3.21 E-R图向关系模型的转化:售票点表(Sale):字段名称数据类型宽度可否为空是否为主键说明Snochar10否是编号Snamechar30否否名称Addresschar30否否地址Telchar11否否联系电话车票表(Ticket):字段名称数据类型宽度可否为空是否为主键说明Tnochar6否是车次编号Tnamechar4否是票类名称Pricechar10否否票

14、价Tamountnumeric5否否额定票数车次表(Train):字段名称数据类型宽度可否为空是否为主键说明Tnochar6否是车次编号Typechar20否否列车类型BstationChar10否否起始站名EstationChar10否否终点站名BtimeChar10否否发车时间EtimeChar10否否到达时间TtimeChar10否否运行时间Distancechar10否否里程出售表(ST):字段名称数据类型宽度可否为空是否为主键说明Tnochar6否是车次编号Tnamechar4否是票类名称Snochar10否是编号Ddatechar20否否车票日期Samountnumeric5否否出

15、售数量3.22 二维表在关系模型中,数据结构表示为一个二维表,一个关系就是一个二维表,但不是任意一个二维表都能表示一个关系,二维表名就是关系名。表中的第一行通常称为属性名,表中的每一个元组和属性都是不可再分的,且元组的次序是无关紧要的。3.23 数据模型的规范化:规范化理论是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。关系数据库中关系是满足一定要求的,满足不同程度要求的为不同范式。一般有1NF,2NF,3NF及BCNF。对于售票点表(Sale),因为每个分量都是不可分的数据项,所以它已满足一范式(1NF),又因为它的主码是售票

16、点编号,唯一决定了每一个非主属性,即每一个非主属性完全函数依赖于主码,达到二范式(2NF)。 名称 地址 编号联系电话由此可以看出,上图是规范化了的BCNF。对于车票表(Ticket),首先它是一范式(1NF), 又它的主码是车次编号(Tno)和票类名称(Tname),可以完全决定其他非主属性,所以达到二范式(2NF)。车次编号票类名称票价额定票数由图可以看出,图中既没有传递依赖,又都是完全依赖,所以达到三范式(3NF)。对于车次表(Train),首先它的每个分量都是不可分的数据项,满足一范式(1NF),又因为它的主码是车次编号,唯一决定了每一个非主属性,即每一个非主属性完全函数依赖于主码,达

17、到二范式(2NF)。车次编号起始站名终点站名列车类型发车时间里程到达时间运行时间由此可以看出,上图是规范化了的BCNF。对于出售表(ST),首先它是一范式(1NF), 又它的主码是车次编号(Tno)、票类名称(Tname)和售票点编号(Sno),可以完全决定其他非主属性,所以达到二范式(2NF)。车次编号票类名称编号车票日期出售数量由图可以看出,图中既没有传递依赖,又都是完全依赖,所以达到三范式(3NF)。3.24数据模型的优化:数据库逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,还应该根据应用需要适当地修改、调整数据模型的结构,这就是数据模型的优化。关系数据模型的优化通常以规

18、范化理论为指导,方法为:1确定数据依赖。在“数据字典”一节中己讲到用数据依赖分析和表示数据项之间的联系,写出每个数据项之间的数据依赖。如果需求分析阶段没有来得及做,可以现在补做,即按需求分析阶段所得到的语义,分别写出每个关系模式内部各属性之间的数据依赖以及不同关系模式属性之间的数据依赖。2对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。3按照数据依赖的理论对关系模式逐一进行分析,考察是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式。4按照需求分析阶段得到的处理要求,分析这些模式对于这样的应用环境是否合适,确定是否要对某些模式进行合并或分解。5对关系模

19、式进行必要的分解,提高数据操作的效率和存储空间的利用率。常用的两种分解方法果水平分解和垂直分解。在我的系统中,用户相当于是游客,只具备查询的功能,而真正使用这个系统的是每一个售票点,对于售票点,它所涉及的表格有三张(售票点基本信息表、车票表、出售表),因为售票点的基本信息在一般情况下不会用到,而只会用到它的编号,所以将其与车票表分开列成两张表,而出售表是售票点表和车票表的综合,因为售票点的基本信息不需用到,所以只需列出它们的主码,即售票点编号、车次编号与票类名称三者,这样则简化了表格也清晰了思路,使每一张表格都能达到最优的状态。3.25 视图的建立从用户角度来看,一个视图是从一个特定的角度来查

20、看数据库中的数据。从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表。从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一般操作都可以应用于视图,例如查询,插入,修改,删除操作等。 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查

21、询也可用于定义使用多个异类源数据的视图。 视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。 当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。该系统的用户是售票点,因此建立视图时只需从此角度考虑,即建立这一个车次的视图和查看具体车次车票票价的视图。例如:车次:create view sun_Trainas select Tno,Bstation,Estatio

22、nfrom Train具体车次车票票价: create view yy_Ticketasselect Tno,Tname,Pricefrom Ticketwhere Tno=K7763.3 概要设计:概要设计的主要任务是把需求分析得到的DFD转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。在我的设计中,火车站售票系统包括两个模块,一个是售票点模块,一个是客户模块,售票点模块的功能包括更新、查询、售票、退票;客户模块则只包括查询模

23、块。因此,功能图如下: 四、数据库的实现4.1数据的载入 数据的载入有两种方法,一种是在SQL中建立表格,再将数据输入当中;另一种是在excel中先建立好表格,再用SQL将数据导入。(1)在SQL中建立表格,使用查询分析器,代码如下:第一张表,Sale表:create table Sale(Sno char(10) primary key,Sname char(30),Address char(30),Tel char(11);第二张表,Ticket表create table Ticket(Tno char(16) ,Tname char(4) ,Price char(10),Tamount

24、numeric(5)primary key(Tno,Tname);第三张表,Train表create table Train(Tno char(6),Type char(20) ,Bstation char(10) ,Estation char(10),Btime char(10),Etime char(10),Ttime char(10),Distance char(10),primary key(Tno);第四张表,ST表create table ST(Sno char(6),Tno char(20) ,Tname char(10) ,Ddate char(10),Samount nume

25、ric(10),primary key(Sno,Tno);(2)用SQL Server将每张二维表的数据导入(二维表已在3.22中列出),共四张,步骤如下(见截屏):4.2功能的实现和系统调试1. 更新系统火车繁忙时期,插入零时列车L7566:insert into Train(Tno,Type,Bstation,Estation,Btime,Etime,Ttime,Distance)values (L7566,零时列车,广州,广州北,07:08,07:33,25分钟,27公里)繁忙时期已过,删除之前插入的零时列车L7566:delete from Trainwhere Tno=L75662.

26、 查询系统按车次查询(查询车次为T202的列车的详细信息):select *from Trainwhere Tno=T202按站点查询(查询从广州出发到重庆北的所有列车的详细信息):select *from Trainwhere Bstation=广州 and Estation=重庆北查询剩余票数:选取列车车次为K776的列车,先将其额定车票截屏,即:select Tno,Tname,Tamountfrom Ticket where Tno=K776再将其卖出车票数截屏,即:最后编程求出其剩余票数,程序和截屏如下:create table shengyu(Tno char(6),Tname c

27、har(4),剩余票数 char(5)insert into shengyu(Tno,Tname,剩余票数)select Tno,Tname,sum(Samount)from STgroup by Tno,Tnameupdate shengyuset 剩余票数=Tamount-剩余票数from shengyu,Ticketwhere shengyu.Tno=Ticket.Tno and shengyu.Tname=Ticket.Tnameselect shengyu.Tno,shengyu.Tname,剩余票数from shengyu where shengyu.Tno=K7763. 售票系统

28、每出售一张票,ST表发生一次变化,即动用一次触发器。现出售车次为K512,票类名称为硬座,售票点为的一张车票,原表格数据为107,如下:create trigger t1_STon STfor updateasdeclare sun char(5)set sun = (select sun from updated)beginupdate st set Samount = Samount +1 where Sno= and Tno=K512 and Tname=硬座end出售后该车次的票数加一,即为108,表格如下;4. 退票系统现用户退回一张车次为T202,票类名称为软卧,售票点为的一张车票,原表格数据为96,如下:create trigger t2_STon STfor updateasdeclare sun char(5)set sun = (select sun from updated)beginupdate st set Samount = Samount -1 where Sno= and Tno=T202 and Tname=软卧end 退回后的表格如下: 退回后该车次的出售票数减一,即为95,表格如下:五、课程总结对于此次课程设计我感慨很多,从最开始设计DFD到完成整个编程,从理论到实践,在接连的几个星期里,将之前学到的很多理论知识又彻底巩固了一遍,

温馨提示

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

评论

0/150

提交评论