网上订票管理系统.docx

上传人:b****7 文档编号:10682032 上传时间:2023-02-22 格式:DOCX 页数:25 大小:76.55KB
下载 相关 举报
网上订票管理系统.docx_第1页
第1页 / 共25页
网上订票管理系统.docx_第2页
第2页 / 共25页
网上订票管理系统.docx_第3页
第3页 / 共25页
网上订票管理系统.docx_第4页
第4页 / 共25页
网上订票管理系统.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

网上订票管理系统.docx

《网上订票管理系统.docx》由会员分享,可在线阅读,更多相关《网上订票管理系统.docx(25页珍藏版)》请在冰豆网上搜索。

网上订票管理系统.docx

网上订票管理系统

网上订票管理系统

1问题描述

网上订票管理系统是在网络环境下实现飞机的订票业务的管理系统。

系统改变了传统的手工订票、送票、柜台支付方式,具有广泛的实用性。

网上订票系统的总目标是:

在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的网上订票系统。

该系统是为机场、航空公司和客户提供订票退票等与机票相关内容的管理系统,方便机场工作人员对机票的管理,以提高机场工作人员对机票管理工作的效率。

当前飞机订票问题:

手工订票所产生的客座率低。

而我们的目标是:

建立一个网上飞机订票系统数据库

航空公司提供航线和飞机的资料,机场则对在本机场起飞和降落的航班和机票进行管理,而客户能得到的服务应该有查询航班航线、班次、票价和剩余票数以及网上订票功能

2需求分析

功能性需求

用户类

功能性需求

航空公司

1)增加航线

2)修改航线

3)删除航线

4)修改公司信息

机场

1)根据航空公司提供的航线,安排航班以及航班的机票

2)如果出现晚点等情况,要记录并发送信息

3)管理航空公司提供的航线和飞机(座位数)资料中所提供的相关数据

4)管理航班机票

5)管理客户资料

客户

1)注册

2)查询航班

3)查询余票和票价

4)预定机票

5)修改个人信息

6)退票

7)注销

非功能性需求

为了保证系统能够长期、安全、稳定、可靠、高效的运行,网上订票系统应该满足以下的性能需求:

系统处理的准确性和及时性

系统处理的准确性和及时性是系统的必要性能。

在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足企业对信息处理的需求。

由于网上订票管理系统的查询功能对于整个系统的功能和性能完成举足轻重。

作为系统的很多数据来源,而机票数量和时间又影响企业的决策活动,其准确性很大程度上决定了网上订票管理系统的成败。

在系统开发过程中,必须采用一定的方法保证系统的准确性。

系统的开放性和系统的可扩充性

网上订票管理系统在开发过程中,应该充分考虑以后的可扩充性。

例如用户查询的需求会不断的更新和完善。

这些都要求系统提供足够的手段进行功能的调整和扩充。

而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。

通过软件的修补、替换完成系统的升级和更新换代。

系统的易用性和易维护性

网上订票管理系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。

这就要求系统能够提供良好的用户接口,易用的人机交互界面。

要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。

网上订票管理系统中涉及到的数据是航空公司和机场的相当重要的信息,系统要提供方便的手段供系统维护人员进行数据的备份,日常的安全管理,系统意外崩溃时数据的恢复等工作。

系统的标准性

系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。

所有这些都要符合主流国际、国家和行业标准。

同时,在自主开发本系统时,要进行良好的设计工作,制订行之有效的软件工程规范,保证代码的易读性、可操作性和可移植性。

系统的先进性

目前计算系统的技术发展相当快,作为网上订票管理系统工程,应该保证系统在相当长的时间内仍旧是先进的,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。

这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。

另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。

系统的响应速度

网上订票管理系统在日常处理中的响应速度为秒级以及时反馈信息。

根据所需数据

量的不同而从秒级到分钟级,原则是保证操作人员不会因为速度问题而影响工作效率

数据需求

顶层数据流图

0层数据流图

 

3概念设计

局部视图设计

概念结构设计的第一步就是对需求分析阶段收集到的数据按照E-R模型的要求进行分类、组织,形成实体、实体的属性,标识试题的码,确定实体之间的联系类型(1:

11:

nmn),设计分E-R图。

将航空公司提供资料部分提取出来,如下图所示:

航线信息

经分析之后得到的分E-R图如下所示:

对每个实体的属性定义如下:

航空公司{编号,名称,地址,联系方式}

飞机{编号,型号,座位数}

航线{起点,终点,编号}

将机场安排航班部分提取出来,如下图所示:

经分析之后得到的分E-R图如下所示:

对每个实体的属性定义如下:

飞机{编号,型号,座位数}航线{起点,终点,编号}

将客户的查询部分提取出来,如下图所示:

经分析之后得到的分E-R图如下所示:

在数据流图中的“客户信息”都可以作为属性来对待。

对每个实体和联系的属性定义如下:

航班安排{编号,时间,票价}

客户{编号,姓名,性别,年龄,联系方式}

将客户的订票、退票部分提取出来,如下图

经分析之后得到的分

E-R图如下所示:

 

 

对每个实体和联系的属性定义如下:

订票信息{编号,票价}

客户{编号,姓名,性别,年龄,联系方式}

视图集成

各子系统的分E-R图设计好后,下一步就是将所有的分E-R图综合成一个系统的总

E-R图。

则集成后的总E-R图如下所示:

其中对每个实体和联系的属性定义如下:

航班安排{编号,时间,票价}

航空公司{编号,名称,地址,联系方式}客户{编号,姓名,性别,年龄,联系方式}飞机{编号,型号,座位数}

航线{起点,终点,编号}

订票信息{编号,票价}

再将属性加到上页所示的E-R图上,最后得到的E-R图如下所示:

 

地址

联系方式

1

座位数

提供

型号

m

n

机场

飞机

航线

起点

终占

"二八、、

m

时间

票价

m

1

订票

1

年龄

客户

订票信息

1

姓名

退票

联系方式

性别

航班安排

编号

编号

/

航空公司

名称

 

4逻辑设计

概念结构独立于任何DBM数据模型的信息结构。

逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用的DBMS产品所支持的数据模型相符合的逻辑结构。

E-R图向关系模型的转换

E-R图向关系模型的转换要解决的问题是如何将实体和实体型间的联系转换成为关系模式,如何确定这些关系模式的属性和码。

关系模型的逻辑结构是一组关系模式的集合。

E-R图则是由实体型、实体型的属性和实体之间的联系3个要素组成的。

所以将E-R图转换成关系模型实际上就是要将实体型、实体型的属性和实体之间的联系转换成一组关系模式。

这种转换一般遵循如下原则:

(1)一个1:

1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为该关系的属性,每个实体的码均是该关系的候选码。

如果与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。

(2)—个1:

n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。

如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。

(3)—个mn联系转换为一个关系模式。

与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。

(4)3个或3个以上实体间的一个多元联系可以转换为一个关系模式。

与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合

(5)具有相同码的关系模式可合并。

根据以上的原则,通过E/R模型到关系模型的转化,可以得到如下关系模式:

(1)“航空公司”实体型所对应的关系模式:

Airline(AID,Name,Addr,Cont)

(2)“客户”实体型所对应的关系模式:

Customer(CID,Name,Sex,Age,Cont)

(3)“飞机”实体型所对应的关系模式:

Plane(PID,Type,SeatsNum,AID)

此关系模式已包含了联系“提供”

(4)“航线”实体型所对应的关系模式:

Line(LID,SPosition,EPosition,AID)

此关系模式已包含了联系“提供”

(5)“航班安排”联系所对应的关系模式:

Flight(FID,PID,LID,Ftime,Price)

(6)“订票信息”实体型所对应的关系模式:

BookTicket(BID,FID,CID,Price)

此关系模式已包含了联系“订票”和“退票”

其中,以上的每个关系模式的键码都用下划线标出,外键码用斜体标出。

数据模型的优化

数据库逻辑设计的结果不是唯一的。

为了提高数据库应用系统的性能,还应该根据应用需要适当的修改、调整关系模式,这就是个数据模型的优化。

确定数据依赖:

(1)关系模式Airline(AID,Name,Addr,Cont)中的数据依赖

AID->Name,AID->Name,AID->Addr,AID->Cont

(2)关系模式Customer(CID,Name,Sex,Age,Cont)中的数据依赖

CID->Name,CID->Sex,CID->Age,CID->Cont

(3)关系模式Plane(PID,Type,SeatsNum,AID)中的数据依赖

PID->Type,PID->SeatsNum,PID->AID

(4)关系模式Line(LID,SPosition,EPosition,AID)中的数据依赖LID->SPosition,LID->EPosition,LID->AID

(5)关系模式Flight(FD,PID,LID,Ftime,Price)中的数据依赖

FID->PID,FID->LID,FID->Ftime,FID->Price

(6)关系模式BookTicket(BID,FID,CID,Price)中的数据依赖

BID->FID,BID->CID,BID->Pay

对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。

分析后可知,关系模式BookTicket(BID,FID,CID,Price)和关系模式Flight(FID,PID,LID,Ftime,Price)有Price的数据冗余,于是将关系模式BookTicket改成

BookTicket(BJD,FID,CID)。

修改后的各个关系模式均没有冗余的联系。

按照规范化理论对关系模式逐一进行分析,考查是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式。

由于以上的关系模式的主码只有一个,所以不会存在部分函数依赖。

分析后可知也不存在传递依赖和多值依赖,以上的各关系模式都是3NF

按照需求分析阶段得到的信息要求和处理要求,分析这些模式是否满足这些要求,确

定是否要对某些模式进行合并或分解。

(1)关系模式Airline(AID,Name,Addr,Cont)能满足“修改公司信息”“增加航线”“修改航线”“删除航线”功能。

(2)关系模式Customer(CID,Name,Sex,Age,Cont)能满足“管理客户资料”“修改个人信息”功能。

(3)关系模式Plane(PJD,Type,SeatsNum,AID)能满足“管理飞机(座位数)资料中所提供的相关数据”功能。

(4)关系模式Line(LID,SPosition,EPosition,AID)能满足“管理航空公司提供的航线”功能。

(5)关系模式Flight(FD,PID,LID,Ftime,Price)能满足“根据航空公司提供的航线,安排航班以及航班的机票”“如果出现晚点等情况,要记录并发送信息”“管理航班机票”功能。

(6)关系模式BookTicket(BJD,FID,CID)能满足“注册”“登录”“查询航班”“查询余票和票价”“预定机票”“退票”“注销”

数据库的模式定义

数据库需要表述的信息有以下几种:

航空公司信息

客户信息

飞机信息

航线信息

航班信息

订票信息

根据以上的关系模式可以建立如下的表:

航空公司信息表

列名

数据类型

可否空

说明

AID

Varchar

Notnull

航空公司编号

Name

Varchar

Notnull

航空公司名称

Addr

Varchar

航空公司地址

Cont

Varchar

航空公司联系方式

 

客户信息表

列名

数据类型

可否空

说明

CID

Varchar

Notnull

客户编号

Name

Varchar

Notnull

客户姓名

Sex

Varchar

客户性别

Age

Int

客户年龄

Cont

Varchar

客户联系方式

 

飞机信息表

列名

数据类型

可否空

说明

PID

Varchar

Notnull

飞机编号

Type

Varchar

Notnull

飞机型号

SeatsNum

Varchar

Notnull

飞机座位数

AID

varchar

航空公司编号

 

航线信息表

列名

数据类型

可否空

说明

LID

Varchar

Notnull

航线编号

SPosition

Varchar

Notnull

航线起点

EPosition

Varchar

Notnull

航线终点

AID

varchar

航空公司编号

 

航班安排信息表

列名

数据类型

可否空

说明

FID

Varchar

Notnull

航班编号

PID

Varchar

飞机编号

LID

Varchar

航线编号

Ftime

Datetime

Notnull

航班时间

Price

Real

Notnull

票价

订票信息表

列名

数据类型

可否空

说明

BID

Varchar

Notnull

机票编号

FID

Varchar

航班编号

CID

Varchar

客户编号

5物理设计

数据库在实际物理设备上的存储结构和存取方法成为数据库的物理结构。

对于设计好的逻辑数据模型选择一个符合应用要求的物理结构就是数据库的物理设计。

为了提高在表中搜索元组的速度,在实际实现的时候应该基于键码建立索引。

下面各表中建立索引的表项。

(1)Airline(AID)

(2)Customer(CID)

(3)Plane(PID)

(4)Line(LID)

(5)Flight(FID)

(6)BookTicket(BID)

6数据库实现

用SQL实现建表

建立航空公司表

CREATETABLEAirline(

AIDvarchar(20)PRIMARYKEY,

Namevarchar(100)NOTNULL,

Addrvarchar(100),

Contvarchar(200)

);

建立客户表

CREATETABLECustomer(

CIDvarchar(20)PRIMARYKEY,

Namevarchar(50)NOTNULL,

Sexvarchar

(2),

Ageint,

Contvarchar(200)

);建立飞机信息表CREATETABLEPlane(

PIDvarchar(20)PRIMARYKEY,

Typevarchar(50)NOTNULL,SeatsNumintNOTNULL,

AIDvarchar(20),CONSTRAINTFK_PLANE_AIDFOREIGNKEY(AID)REFERENCESAirline(AID));

建立航线表

CREATETABLELine(

LIDvarchar(20)PRIMARYKEY,

SPositionvarchar(100)NOTNULL,

EPositionvarchar(100)NOTNULL,

AIDvarchar(20),CONSTRAINTFK_LINE_AIDFOREIGNKEY(AID)REFERENCESAirline(AID));

建立航班安排表

CREATETABLEFlight(

FIDvarchar(20)PRIMARYKEY,

PIDvarchar(20),CONSTRAINTFK_FLIGHT_PIDFOREIGNKEY(PID)REFERENCESPlane(PID),

LIDvarchar(20),CONSTRAINTFK_FLIGHT_LIDFOREIGNKEY(LID)REFERENCESLine(LID),

FtimedatetimeNOTNULL,PricerealNOTNULL

);

建立订票信息表

CREATETABLEBookTicket(

BIDintPRIMARYKEYAUTO_INCREMENT,

FIDvarchar(20),CONSTRAINTFK_BOOKTICKET_FIDFOREIGNKEY(FID)REFERENCESFlight(FID),

CIDvarchar(20),CONSTRAINTFK_BOOKTICKET_CIDFOREIGNKEY(CID)REFERENCESCustomer(CID));

用SQL实现操作航空公司操作

注册公司

INSERTINTOAirline(AID,Name,Addr,Cont)VALUES(#AID,#Name,#Addr,#Cont);

这里的#AID必须是惟一的,否则不可以插入到数据库中.使用下列语句建表

insertintoAirline(AID,Name,Addr,Cont)values('CA','中国国际航空股份有限公司','北京','0');

insertintoAirline(AID,Name,Addr,Cont)values('CZ','中国南方航空股份有限公司','广州','950333');

insertintoAirline(AID,Name,Addr,Cont)values('MU','中国东方航空公司','上海','86-21-95108');

insertintoAirline(AID,Name,Addr,Cont)values('HU','中国海南航空股份有限公司','海南','950718');

再用select*fromAirline;语句查看:

删除公司

DELETEFROMAirlineWHERE(AID=#AID);即使用下列语句操作:

deletefromAirlinewhere(AID='HU');再用select*fromAirline;语句查看:

修改公司信息

UPDATEAirline

SETName=#Name,Addr=#Addr,Cont=#ContWHERE(AID=#AID);即使用下列语句操作:

updateAirline

setCont='955333'where(AID='CZ');

再用select*fromAirline;语句查看:

增加飞机

INSERTINTOPlane(PID,Type,SeatsNum,AID)

VALUES(#PID,#Type,#SeatsNum,#AID);即使用下列语句操作:

INSERTINTOPlane(PID,Type,SeatsNum,AID)VALUES('1001','波音737',148,'CA');

INSERTINTOPlane(PID,Type,SeatsNum,AID)VALUES('2001','波音747',360,'MU');

INSERTINTOPlane(PID,Type,SeatsNum,AID)VALUES('1002','波音777',350,'CA');

INSERTINTOPlane(PID,Type,SeatsNum,AID)VALUES('3001','MD-82',145,'CZ');

INSERTINTOPlane(PID,Type,SeatsNum,AID)VALUES('2002','M11',340,'MU');

INSERTINTOPlane(PID,Type,SeatsNum,AID)VALUES('3002','A300',148,'CZ');

INSERTINTOPlane(PID,Type,SeatsNum,AID)VALUES('1003','A300',148,'CA');

再用select*fromPlane;语句查看:

删除飞机

DELETEFROMPlaneWHERE(PID=#PID);即使用下列语句操作:

deletefromPlanewhere(PID='1003');再用select*fromPlane;语句查看:

修改飞机

UPDATEPlane

SETType=#Type,SeatsNum=#SeatsNumWHERE(PID=#PID);即使用下列语句操作:

updatePlane

setSeatsNum=149where(PID='1001');再用select*fromPlane;语句查看:

增加航线

INSERTINTOLine(LID,SPosition,EPosition,AID)

VALUES(#LID,#SPosition,#EPosition,#AID);

即使用下列语句操作:

INSERTINTOLine(LID,SPosition,EPosition,AID)VALUES('BS123','北京','上海','CA');

INSERTINTOLine(LID,SPosition,EPosition,AID)VALUES('BT321','北京','天津','CZ');

INSERTINTOLine(LID,SPosition,EPosi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1