民航订票管理系统.doc

上传人:b****1 文档编号:163819 上传时间:2022-10-04 格式:DOC 页数:7 大小:520KB
下载 相关 举报
民航订票管理系统.doc_第1页
第1页 / 共7页
民航订票管理系统.doc_第2页
第2页 / 共7页
民航订票管理系统.doc_第3页
第3页 / 共7页
民航订票管理系统.doc_第4页
第4页 / 共7页
民航订票管理系统.doc_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

民航订票管理系统.doc

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

民航订票管理系统.doc

实验十三数据库管理系统综合应用

-------民航订票管理系统

一、实验目的:

通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步了解和掌握所讲解的内容。

二、实验简述:

民航订票系统主要分为机场、航空公司和客户三方的服务。

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

客户又可以分为两类,一类是普通客户,对于普通客户只有普通的查询功能和订票功能,没有相应的机票优惠,另一种是经常旅客,需要办理注册手续,但增加了里程积分功能和积分优惠政策。

机场还要紧急应对措施,在航班出现延误时,要发送相应的信息。

三、实验要求:

完成该系统的数据库设计;

用SQL实现数据库的设计,并在SQLServer上调试通过。

四、参考答案:

1、需求分析

(1)航空公司

航空公司的操作流程如图C.1所示。

(2)客户

客户的操作流程如图C.2所示。

(3)机场

机场的任务是根据航空公司提供的航线和飞机,安排航班,以及航班的机票。

如果出现晚点等情况,要记录并发送信息,对特殊客户记录其消费信息,并相应提供优惠。

(4)客户订票

客户订票涉及到多个因素:

由客户提出订票申请;由机场管理航班机票;对于特殊客户,除给予票价优惠以外,还要累计里程;订票后需判断是否超员。

这些因素涉及到客户资料、航班资料以及由航空公司提供的航线(里程)和飞机(座位数)资料中所提供的相关数据。

客户订票的操作流程如图C.3所示。

2、概念模型设计

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

(1)航空公司信息

(2)客户信息

(3)飞机信息

(4)航线信息

(5)航班信息

(6)订票信息

(7)特殊客户积分

可以用E/R模型表述该模型的设计,E/R图如图C.4所示。

3、逻辑设计

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

(1)Airline(AID,Name,Addr,Cont)

(2)Customer(CID,Name,Cont,IsSpec,Points)

(3)Plane(PID,Type,SeatsNum,AID)

(4)Line(LID,SPosition,EPosition,Distance,AID)

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

(6)BookTicket(BID,FID,CID,Pay)

每个关系模式的键码都用下划线标出。

外键码用斜体标出。

4、物理设计

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

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

(1)Airline(AID)

(2)Customer(CID)

(3)Plane(PID)

(4)Line(LID)

(5)Flight(FID)

(6)BookTicket(BID)

5、用SQL实现设计

(1)建立航空公司表

CREATETABLEAirline(

AIDvarchar(20)PRIMARYKEY,

Namevarchar(100)NOTNULL,

Addrvarchar(100),

Contvarchar(200)

);

(2)建立客户表

CREATETABLECustomer(

CIDvarchar(20)PRIMARYKEY,

Namevarchar(50)NOTNULL,

Contvarchar(200),

IsSpecchar

(1)NOTNULLDEFAULT‘N’,

PointsintNOTNULLDEFAULT0

);

(3)建立飞机信息表

CREATETABLEPlane(

PIDvarchar(20)PRIMARYKEY,

Typevarchar(50)NOTNULL,

SeatsNumintNOTNULL,

AIDvarchar(20),CONSTRAINTFK_PLANE_AID

FOREIGNKEY(AID)REFERENCESAirline(AID)

);

(4)建立航线表

CREATETABLELine(

LIDvarchar(20)PRIMARYKEY,

SPositionvarchar(100)NOTNULL,

EPositionvarchar(100)NOTNULL,

DistancerealNOTNULL

AIDvarchar(20),CONSTRAINTFK_LINE_AID

FOREIGNKEY(AID)REFERENCESAirline(AID)

);

(5)建立航班表

CREATETABLEFlight(

FIDvarchar(20)PRIMARYKEY,

FtimedatetimeNOTNULL,

PIDvarchar(20),CONSTRAINTFK_FLIGHT_PID

FOREIGNKEY(PID)REFERENCESPlane(PID)

LIDvarchar(20),CONSTRAINTFK_FLIGHT_LID

FOREIGNKEY(LID)REFERENCESLine(LID)

PricerealNOTNULL

);

(6)建立订票表

CREATETABLEBookTicket(

BIDintIDENTITY(1,1)PRIMARYKEY,

FIDvarchar(20),CONSTRAINTFK_BOOKTICKET_FID

FOREIGNKEY(FID)REFERENCESFlight(FID)

CIDvarchar(20),CONSTRAINTFK_BOOKTICKET_CID

FOREIGNKEY(CID)REFERENCESCustomerCID)

PayrealNOTNULL

);

(7)航空公司操作

1)注册

INSERTINTOAirline(AID,Name,Addr,Cont)

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

这里的#AID必须是惟一的,否则不可以插入到数据库中.

2)注销

DELETEFROMAirlineWHERE(AID=#AID);

3)修改公司信息

UPDATEAirline

SETName=#Name,Addr=#Addr,Cont=#ContWHERE(AID=#AID);

4)增加飞机

INSERTINTOPlane(PID,Type,SeatsNum,AID)

VALUES(#PID,#Type,#SeatsNum,#AID);

5)删除飞机

DELETEFROMPlaneWHERE(PID=#PID);

6)修改飞机

UPDATEPlane

SETType=#Type,SeatsNum=#SeatsNumWHERE(PID=#PID);

7)增加航线

INSERTINTOLine(LID,SPosition,EPosition,Distance,AID)

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

8)删除航线

DELETEFROMLineWHERE(LID=#LID);

9)修改航线

UPDATELine

SETSPosition=#SPosition,EPosition=#EPosition,Distance=#DistanceWHERE(PID=#PID);

(8)客户

1)注册

INSERTINTOCustomer(CID,Name,Cont)

VALUES(#CID,#Name,#Cont);

客户注册的时候,CID必须是惟一的,否则不可以插入数据库。

2)注销

DELETEFROMCustomerWHERE(CID=#CID);

3)修改个人信息

UPDATELine

SETName=#Name,Cont=#ContWHERE(CID=#CID);

4)订票

CREATEPROCBook_Ticket

@FIDvarchar(20),

@CIDvarchar(6)

AS

DECLARE@TransNameVARCHAR(20)

SELECT@TransName=’Book_Ticket’

BEGINTRANSACTION@TransName

DECLARE@bookedint,@seatint,@IsSpecchar

(1)

DECLARE@distancereal,@discountreal,@distreal,@pricereal

----查看客户是否为特殊客户,如果不是,票价不打折扣。

----否则如果客户累计航程超过10万公里,票价打九折;超过20公里,打八折。

----下面的程序用来计算折扣

SELECT@IsSpec=IsSpec,@distance=Points

FROMCustomerWHERECID=@CID

SELECT@discount=1

IF@IsSpec=’Y’

BEGIN

IF@distance>

SELECT@distance=0.8

ELSEIF@distance>

SELECT@distance=0.9

END

----选择出票价

SELECT@price=PriceFROMFlightWHEREFID=@FID

----加入客户订票信息

INSERTINTOBookTicket(FID,CID,Pay)

VALUES(@FID,@CID,@price*@discount)

----将客户新订票里程的信息累计到用户信息里面

SELECT@dist=DistanceFROMLine

WHERELID=(SELECTLIDFROMFlightWHEREFID=@FID)

UPDATECustomer

SETPoints=Points+@distWHERE(CID=#CID);

----查看客户订票后,是否超过可容纳的座位数目,如果超过,取消所有操作。

SELECT@seats=SeatsNumFROMPlane

WHEREPID=(SELECTPIDFROMFlightWHEREFID=@FID)

SELECTbooked=count(*)FROMBookTicketWHEREFID=@FID

IF@booked>@seats

ROLLBACKTRANSACTION@TransName

ELSE

COMMITTRANSACTION@TramsName

GO

订票过程一定要做成事务,因为

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

当前位置:首页 > 党团工作 > 党团建设

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

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