民航订票管理系统

阅读: 评论:0

酉阳桃花源景区实验十三数据库管理系统综合应用
-------民航订票管理系统
一、实验目的:
通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步了解和掌握所讲解的内容.
二、实验简述:
民航订票系统主要分为机场、航空公司和客户三方的服务.航空公司提供航线和飞机的资料,机场则对本机场起飞和降落的航班和机票进行管理,而客户能得到的服务应该有航班线路和剩余票数的查询,以与网上订票等功能.客户又可以分为两类,一类是普通客户,对于普通客户只有普通的查询功能和订票功能,没有相应的机票优惠,另一种是经常旅客,需要办理注册手续,但增加了里程积分功能和积分优惠政策.机场还要紧急应对措施,在航班出现延误时,要发送相应的信息.
三、实验要求:
完成该系统的数据库设计;
用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>
V ALUES<#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>
V ALUES<#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>
V ALUES<#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>
V ALUES<#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 V ARCHAR<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>200000
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>
V ALUES<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>
V ALUES<#FID, #PID, #LID, #Ftime, #Price>;
2)通知客户航班变化
SELECT [Name],Cont FROM Customer
WHERE CID=IN
〔SELECT CID FROM BookTicket WHERE FID=#FID
〕;
6、实验总结
〔请读者结合自己的实际情况,认真总结自己的收获、体会以与有待改进之处.〕

本文发布于:2023-08-25 07:16:38,感谢您对本站的认可!

本文链接:http://www.035400.com/whly/1/596335.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:客户   订票   航班   信息   数据库   机场   设计
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2024-2030 Comsenz Inc.Powered by © 文化旅游网 滇ICP备2022007236号-403 联系QQ:1103060800网站地图