收藏 分销(赏)

民航订票管理系统.doc

上传人:人****来 文档编号:9871486 上传时间:2025-04-11 格式:DOC 页数:13 大小:528.50KB
下载 相关 举报
民航订票管理系统.doc_第1页
第1页 / 共13页
民航订票管理系统.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述
民航订票管理系统 13 2020年4月19日 文档仅供参考,不当之处,请联系改正。 实验十三 数据库管理系统综合应用 -------民航订票管理系统 一、 实验目的: 经过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步了解和掌握所讲解的内容。 二、 实验简述: 民航订票系统主要分为机场、航空公司和客户三方的服务。航空公司提供航线和飞机的资料,机场则对本机场起飞和降落的航班和机票进行管理,而客户能得到的服务应该有航班线路和剩余票数的查询,以及网上订票等功能。客户又能够分为两类,一类是普通客户,对于普通客户只有普通的查询功能和订票功能,没有相应的机票优惠,另一种是经常旅客,需要办理注册手续,但增加了里程积分功能和积分优惠政策。机场还要紧急应对措施,在航班出现延误时,要发送相应的信息。 三、 实验要求: 完成该系统的数据库设计; 用SQL实现数据库的设计,并在SQL Server上调试经过。 四、 参考答案: 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) 建立航空公司表 CREATE TABLE Airline( AID varchar(20) PRIMARY KEY, Name varchar(100) NOT NULL, Addr varchar(100), Cont varchar(200) ); (2) 建立客户表 CREATE TABLE Customer( CID varchar(20) PRIMARY KEY, Name varchar(50) NOT NULL, Cont varchar(200), IsSpec char(1) NOT NULL DEFAULT ‘N’, Points int NOT NULL DEFAULT 0 ); (3) 建立飞机信息表 CREATE TABLE Plane( PID varchar(20) PRIMARY KEY, Type varchar(50) NOT NULL, SeatsNum int NOT NULL, AID varchar(20), CONSTRAINT FK_PLANE_AID FOREIGN KEY(AID) REFERENCES Airline(AID) ); (4) 建立航线表 CREATE TABLE Line ( LID varchar(20) PRIMARY KEY, SPosition varchar(100) NOT NULL, EPosition varchar(100) NOT NULL, Distance real NOT NULL AID varchar(20), CONSTRAINT FK_LINE_AID FOREIGN KEY(AID) REFERENCES Airline(AID) ); (5) 建立航班表 CREATE TABLE Flight( FID varchar(20) PRIMARY KEY, Ftime datetime NOT NULL, PID varchar(20), CONSTRAINT FK_FLIGHT_PID FOREIGN KEY(PID) REFERENCES Plane(PID) LID varchar(20), CONSTRAINT FK_FLIGHT_LID FOREIGN KEY(LID) REFERENCES Line(LID) Price real NOT NULL ); (6) 建立订票表 CREATE TABLE BookTicket ( BID int IDENTITY(1,1) PRIMARY KEY, FID varchar(20), CONSTRAINT FK_BOOKTICKET_FID FOREIGN KEY(FID) REFERENCES Flight(FID) CID varchar(20), CONSTRAINT FK_ BOOKTICKET _CID FOREIGN KEY(CID) REFERENCES CustomerCID) Pay real NOT NULL ); (7) 航空公司操作 1) 注册 INSERT INTO Airline(AID, Name, Addr, Cont) VALUES(#AID, #Name, #Addr, #Cont); 这里的#AID必须是惟一的,否则不能够插入到数据库中. 2) 注销 DELETE FROM Airline WHERE(AID = #AID); 3) 修改公司信息 UPDATE Airline SET Name=#Name, Addr= #Addr, Cont= #Cont WHERE(AID = #AID); 4) 增加飞机 INSERT INTO Plane(PID, Type, SeatsNum, AID) VALUES(#PID, #Type, #SeatsNum, #AID); 5) 删除飞机 DELETE FROM Plane WHERE(PID = #PID); 6) 修改飞机 UPDATE Plane SET Type= #Type, SeatsNum= #SeatsNum WHERE(PID = #PID); 7) 增加航线 INSERT INTO Line(LID, SPosition, EPosition, Distance, AID) VALUES(#LID, #SPosition, #EPosition, #Distance, #AID); 8) 删除航线 DELETE FROM Line WHERE(LID = #LID); 9) 修改航线 UPDATE Line SET SPosition=#SPosition, EPosition=#EPosition, Distance= #Distance WHERE(PID = #PID); (8) 客户 1) 注册 INSERT INTO Customer(CID, Name, Cont) VALUES(#CID, #Name, #Cont); 客户注册的时候,CID必须是惟一的,否则不能够插入数据库。 2) 注销 DELETE FROM Customer WHERE(CID = #CID); 3) 修改个人信息 UPDATE Line SET Name= #Name, Cont= #Cont WHERE(CID = #CID); 4) 订票 CREATE PROC Book_Ticket @FID varchar(20), @CID varchar(6) AS DECLARE @TransName VARCHAR(20) SELECT @ TransName=’Book_Ticket’ BEGIN TRANSACTION @TransName DECLARE @booked int, @seat int, @IsSpec char(1) DECLARE @distance real, @discount real, @dist real, @price real ----查看客户是否为特殊客户,如果不是,票价不打折扣。 ----否则如果客户累计航程超过10万公里,票价打九折;超过20公里,打八折。 ----下面的程序用来计算折扣 SELECT @IsSpec=IsSpec, @distance=Points FROM Customer WHERE CID=@CID SELECT @discount=1 IF @IsSpec=’Y’ BEGIN IF @distance> 00 SELECT @distance=0.8 ELSE IF @distance>100000 SELECT @distance=0.9 END ----选择出票价 SELECT @price= Price FROM Flight WHERE FID=@FID ----加入客户订票信息 INSERT INTO BookTicket(FID, CID, Pay) VALUES(@FID, @CID, @price*@discount) ----将客户新订票里程的信息累计到用户信息里面 SELECT @dist= Distance FROM Line WHERE LID=(SELECT LID FROM Flight WHERE FID=@FID) UPDATE Customer SET Points= Points+@dist WHERE(CID = #CID); ----查看客户订票后,是否超过可容纳的座位数目,如果超过,取消所有操作。 SELECT @seats=SeatsNum FROM Plane WHERE PID=(SELECT PID FROM Flight WHERE FID=@FID) SELECT booked=count(*) FROM BookTicket WHERE FID=@FID IF @booked>@seats ROLLBACK TRANSACTION @TransName ELSE COMMIT TRANSACTION @TramsName GO 订票过程一定要做成事务,因为订票的操作应该同时只能有一个人进行。 (9) 机场 1) 航班安排 INSERT INTO Flight(FID, PID, LID, Ftime, Price) VALUES(#FID, #PID, #LID, #Ftime, #Price); 2) 通知客户航班变化 SELECT [Name],Cont FROM Customer WHERE CID=IN ( SELECT CID FROM BookTicket WHERE FID=#FID ); 6、 实验总结 (请读者结合自己的实际情况,认真总结自己的收获、体会以及有待改进之处。)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服