民航订票管理系统_第1页
民航订票管理系统_第2页
民航订票管理系统_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、实验数据库管理系统综合应用民航订票管理系统、实验目的:通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步 了解和掌握所讲解的内容。二、实验简述:民航订票系统主要分为机场、航空公司和客户三方的服务。航空公司提供航 线和飞机的资料,机场则对本机场起飞和降落的航班和机票进行管理,而客户能 得到的服务应该有航班线路和剩余票数的查询,以及网上订票等功能。客户又可以分为两类,一类是普通客户,对于普通客户只有普通的查询功能和订票功能,没有相 应的机票优惠,另一种是经常旅客,需要办理注册手续,但增加了里程积 分功能和积分 优惠政策。机场还要紧急应对措施,在航班出现延误时,要发送相 应的信

2、息。实验要求:完成该系统的数据库设计;用SQL实现数据库的设计,并在SQL Server 调试通过。四、参考答案:1、需求分析(1) 航空公司航空公司的操作流程如图C. 1所示。图C.1航空公司操作分类表(2) 客户客户的操作流程如图C. 2所示。图C. 2客户操作分类表注册注销(3) 机场机场的任务是根据航空公司提供的航线和飞机,安排航班,以及航班的机票。如果 出现晚点等情况,要记录并发送信息,对特殊客户记录其消费信息,并相应 提供优惠。(4) 客户订票客户订票涉及到多个因素:由客户提出订票申请;由机场管理航班机票;对于特殊 客户,除给予票价优惠以外,还要累计里程;订票后需判断是否超员。这

3、些因素涉及到 客户资料、航班资料以及由航空公司提供的航线(里程)和飞机(座位数)资料中所提 供的相关数据。客户订票的操作流程如图C. 3所示。-17 )/ 17 17 )/ 17 1 2 3 4 5 6 7 /(X /(X /(X /| /(X /(X /2、概念模型设计数据库需要表述的信息有以下几种: 航空公司信息 客户信息 飞机信息 航线信息 航班信息 订票信息 特殊客户积分图C. 4模型的E-R图3、逻辑设计通过关系 化, 下关Airline (AID , Name, Addr, Cont) Customer (CID, Name, Co nt, IsS pec, nts) Plan e

4、 (PIP, Type, SeatsNumAID) Line (LID , SPosition, EPosition,P oiDistance, AID) Flight (FID, PID, LID , Ftime,Price) BookTicket (BID, FID, CID, P ay)E/R模型到 模型的转 可以得到如 系模式:(1)(2)(3)4、物理设计为了提高在表中搜索元组的速度,在实际实现的时候应该基于键码建立索下 引。面各表中建立索引的表项。(1) Airli ne(AID)(2) Customer(CID)(3) Pla ne(P ID) Lin e(LID)(5) Fli

5、ght(FID)(6) BookTicket(BID)(5)(6)每个关系模式的键码都用下划线标出。外键码用斜体标出。 用SQL实现设计(1)建立航空公司表CREATE TABLE Airli ne(AID varchar (20) P RIMARY KEY,Name varchar (100) NOT NULL,Distance real NOT NULLAddr varchar (100),Cont varchar (200);0 (2)建立客户表CREATE TABLE Customer(CID varchar (20) PRIMARY KEY,NameContIsSpecPoints)

6、;);(4) 建立航线表CREATE TABLE Line (LID varchar(20) PRIMARY KEY,SPosition varchar(100) NOT NULL,EPosition varchar(100) NOT NULL,varchar(50) NOT NULL, varchar (200), char(l) NOT NULL DEFAULT N , int NOT NULL DEFAULT (3)建立飞机信息表CREATE TABLE Plane(PID varchar (20) PRIMARY KEY, Type varchar(50) NOT NULL, Seat

7、sNum int NOT NULL,AID varchar (20), CONSTRAINT FK_PLANE_AID FOREIGN KEY (AID) REFERENCES Airline(AID)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 FL

8、IGHT 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 (BIDFIDint IDENTITY (1,1) PRIMARY KEY, varchar (20), CONSTRAINT FK_BOOKTICKET_FIDFOREIGN KEY (FID) REFERENCES Flig

9、ht (FID)CID varchar (20), CONSTRAINT FK_ BOOKTICKET _CIDFOREIGN 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 Airlin

10、eSET Name二#Name, Addr二 #Addr, Cont二 #Cont WHERE (AID 二 #AID);增加飞机3) INSERT INTO Plane(PID, Type, SeatsNum, AID)VALUES (#PID, #Type, #SeatsNum, #AID);4) 删除飞机5) UPDATE PlaneSET Type二 #Type, SeatsNum ttSeatsNum WHERE (PID 二 #PID);增加航线 INSERT INTO Line(LID, SPosition, EPosition, Distance, AID)6) VALUES(

11、#LID, #SPosition, #EPosition, #Distance, #AID);删除航线DELETE FROM Line WHERE (LID = #LID):修改航线8)DELETE FROM Plane WHERE (PID = #PID);修改飞机9) UPDATE LineSET SPosition=#SPosition, EPosition=#EPosition, Distance二 #Distance WHERE(PID = #PID);(8) 客户1)注册 INSERT INTO Customer (CID, Name, Cont) VALUES (#CID, #N

12、ame, #Cont):客户注册的时候,CID必须是 惟一 注销 DELETE FROM Customer WHERE (CID 二 #CID);修改个人信息UPDATE LineSET Name二 #Name, Cont二 ttCont WHERE (CID 二 #CID);订票的,否则不可以插入数据库。2)4)CREATE PROC Book Ticket FID varchar (20), CID varchar (6)ASDECLARE TransName VARCHAR (20)SELECT TransName=z,Book_Ticket BEGIN TRANSACTION Tran

13、sNameDECLARE booked int, seat int, IsSpec char(1)DECLARE distance real, discount real, dist real, price real 查看客户是否为特殊客户,如果不是,票价不打折扣。否则如果客户累计航程超过10万公里,票价打九折;超过20公里,打八折。 下面的程序用来计算折扣SELECT IsSpec二IsSpec, distance二PointsFROM Customer WHERE CID=CIDSELECT discouIF IsSpec= Y BEGINIF distance200000SELECT d

14、istance=0. 8ELSE IF distance100000SELECT distance=0. 9END-选择出票价SELECT price= Price FROM Flight WHERE FID=FID-加入客户订票信息INSERT INTO BookTicket (FID, CID, Pay)VALUES (FID, CID, price*discount) 将客户新订票里程的信息累计到用户信息里面SELECT dist二 Distance FROM LineWHERE LID= (SELECT LID FROM Flight WHERE FID=FID)UPDATE Cust

15、omerSET Points二 Points+dist WHERE (CID 二 #CID);查看客户订票后,是否超过可容纳的座位数目,如果超过,取消所有操作。SELECT seats二SeatsNum FROM PlaneWHERE PID= (SELECT PID FROM Flight WHERE FID=FID)SELECT booked二count(*) FROM BookTicket WHERE FID=FIDIF bookedseatsROLLBACK TRANSACTION TransNameELSECOMMIT TRANSACTION OTramsNameGO订票过程一定要做成事务,因为订票的操作应该同时只能有一个人进行。(9)

温馨提示

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

评论

0/150

提交评论