大数据库课程设计机票预订系统Word文件下载.docx
- 文档编号:22450056
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:29
- 大小:799.18KB
大数据库课程设计机票预订系统Word文件下载.docx
《大数据库课程设计机票预订系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《大数据库课程设计机票预订系统Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
系统需要管理以下主要信息:
(1)航班基本信息,包括航班的编号、飞机名称、机舱等级等。
(2)机票信息,包括票价、折扣、当前预售状态及经手业务员等。
(3)客户基本信息,包括、联系方式、证件及、付款情况等。
基本要求:
(1)根据需求,补充必要的数据库实体,建立ER模型,通过ER图表示。
(2)在Oracle中创建该系统的数据库,并在数据库中实现各表,写入一定的数据。
(3)从实际查询应用出发,为一些主要的应用模块设计至少3个参数化视图。
(4)从数据检验的角度出发,为相关的表建立至少1个触发器。
(5)从数据更新或修改的角度出发,设计至少1个存储过程。
(6)从安全的角度出发,规划系统的角色、用户、权限,并通过相关的SQL实现。
(7)预计每个表的大致容量和增长速度,指定备份的方案,写出相关的备份命令。
2.3设计环境
(1)WINDOWS2000/2003/XP系统
(2)Oracle数据库管理系统
2.4开发语言
PL/SQL语言
3分析和设计
3.1系统E-R模型
经过分析可以知道,机票预定信息管理系统一共有航空公司、飞行、航班、机舱、机票、乘客和业务员这几个实体,航空公司有公司编号、公司名、公司和公司地址这几个属性;
飞机有飞机编号、飞机名称两个属性;
航班有航班号、出发地、目的地、起飞时刻和飞行时间这几个属性;
机舱有机舱等级、座位数、定价和折扣这几个属性;
机票有机票编号、登机日期、预定状态、座位号这几个属性;
乘客有号、、联系、住址这几个属性;
业务员有业务员编号、业务员、业务员号、联系和住址这几个属性。
一个航空公司有多架飞机和多名业务员,一架飞机可有多个航班,一个航班有多种机舱等级,一个机舱可有多机票;
乘客、业务员和机票之间有售票联系,售票联系有售票日期这一属性。
根据以上分析可以画出系统E-R图,系统E-R图如图3.1所示:
图3.1系统E-R图
3.2表空间及表的设计
(1)表空间的设计。
经过分析可知,乘客表、机票信息表和机票销售表数据量比较大,可单独分配表空间,其他的表数据量较少,可一起使用一个表空间。
创建表分配表空间和添加数据文件,SQL语句如下:
CREATESMALLFILETABLESPACE"
PASSENGER"
DATAFILE'
F:
\APP\ORACLE\ORADATA\ORCL\TICKETSALE\passenger.dbf'
SIZE100MAUTOEXTENDONNEXT5MMAXSIZEUNLIMITED
LOGGINGEXTENTMANAGEMENTLOCALSEGMENTSPACEMANAGEMENTAUTO;
TICKET"
\APP\ORACLE\ORADATA\ORCL\TICKETSALE\ticket.dbf'
SIZE100MAUTOEXTENDONNEXT5MMAXSIZEUNLIMITED
TICKETSALE"
\APP\ORACLE\ORADATA\ORCL\TICKETSALE\ticketsale.dbf'
CREATESMALLFILETABLESPACE"
OTHERS"
\APP\ORACLE\ORADATA\ORCL\TICKETSALE\others.dbf'
表空间结构如图3.2所示:
图3.2表空间结构图
(2)关系模型的设计。
根据E-R模型,可以得出相应的关系模型,关系模型如下:
company(cno,cname,ctel,caddress)
passenger(pID,pname,ptel,paddress)
salesman(sno,sID,sname,stel,saddress,cno)
airplane(ano,aname,cno)
flight(fno,departure,arrival,time,flytime,ano)
cabin(fno,cblevel,seats,price)
ticket(tno,fno,cblevel,flydate,status,seat,discount)
ticketsale(tno,pID,sno,saledate)
(3)表的创建。
对于关系模型的每一个关系,可以得出相应的一表,创建表的SQL语句如下:
CREATETABLE"
SYSTEM"
."
COMPANY"
(
"
CNO"
VARCHAR2(10)NOTNULL,
CNAME"
VARCHAR2(20)NOTNULL,
CTEL"
VARCHAR2(20),
CADDRESS"
VARCHAR2(50),
PRIMARYKEY("
)VALIDATE
)TABLESPACE"
;
(
PID"
PNAME"
PTEL"
PADDRESS"
SALESMAN"
SNO"
SID"
SNAME"
STEL"
SADDRESS"
)VALIDATE,
FOREIGNKEY("
)REFERENCES"
("
)VALIDATE
AIRPLANE"
ANO"
ANAME"
VARCHAR2(10)NOTNULL,
FLIGHT"
FNO"
DEPARTURE"
ARRIVAL"
TIME"
DATENOTNULL,
FLYTIME"
INTERVALDAYTOSECONDNOTNULL,
CABIN"
CBLEVEL"
NUMBER
(1)NOTNULL,
SEATS"
NUMBER(3)NOTNULL,
PRICE"
NUMBER(5)NOTNULL,
"
TNO"
NUMBER(10)NOTNULL,
FLYDATE"
STATUS"
NUMBER
(1)DEFAULT1NOTNULL,
SEAT"
NUMBER(3)NOTNULL,
DISCOUNT"
NUMBER(3,2)NOTNULL,
NUMBER(10)NOTNULL,
SALEDATE"
)VALIDATE,
(4)为表添加数据
由于表company、salesman、airplane、flight和cabin是公司管理员通过应用程序的管理端预先录入的,因此应用程序需要为这些表添加一定数据,应用程序将会执行INSERT语句对表进行插入数据。
company的数据如表3.1所示:
CNO
CNAME
CTEL
CADDRESS
C0001
朝云航空
省市
C0002
航空
市
C0003
表3.1company表的数据
salesman的数据如表3.2所示:
SNO
SID
SNAME
STEL
SADDRESS
CNO
S0001
1
邓春国
省市茂南区
S0002
王军
S0003
2
丁磊
S0004
8
暮云
表3.2salesman表的数据
airplane的数据如表3.3所示:
ANO
ANAME
A0001
波音737
A0002
波音777
A0003
A0004
麦道82
表3.3airplane表的数据
flight的数据如表3.4所示:
FNO
DEPARTURE
ARRIVAL
TO_CHAR(TIME,'
HH-MI-SS'
)
FLYTIME
ANO
F0001
07-50-00
03:
30:
0.0
F0002
12-30-00
F0003
08-00-00
01:
5:
F0004
10-20-00
F0005
09-10-00
02:
50:
F0006
12-50-00
F0007
07-35-00
10:
F0008
10-05-00
表3.4flight表的数据
cabin的数据如表3.5所示:
CBLEVEL
SEATS
PRICE
50
900
80
700
30
500
400
3
70
300
800
600
120
表3.5cabin表的数据
3.3视图设计
应用程序需要查询航班信息,因此需要创建一个航班信息的视图,根据参数航班号或者出发地以及目的地查询航班信息,显示航班号、公司名、飞机名称、出发时间、到达时间、出发地和目的地。
由于oracle的视图不支持参数,但可以利用临时表作为参数进行传递,因此需要创建一个临时表,创建临时表的SQL语句如下:
CREATEGLOBALTEMPORARYTABLE"
INPUT_TO_FLIGHT"
T_FNO"
VARCHAR2(10),
T_DEPARTURE"
T_ARRIVAL"
VARCHAR2(20),
T_FLYDATE"
DATE
)ONCOMMITPRESERVEROWS;
创建参数化视图的SQL语句如下:
CREATEORREPLACEVIEW"
FLIGHT_VIEW_BYFNO"
("
"
ARRIVAL_TIME"
)
ASSELECTfno,cname,aname,time,time+flytime,departure,arrival
FROMflight,company,airplane,input_to_flight
WHEREflight.ano=airplane.ano
ANDo=o
ANDfno=input_to_flight.T_fno;
FLIGHT_VIEW_BYSITE"
ANDdeparture=input_to_flight.T_departure
ANDarrival=input_to_flight.T_arrival;
应用程序还可以根据航班号和航班日期查询余票信息,因此需要创建一个余票信息的视图,显示某一航班某一日期不同机舱等级的剩余座位数、定价和折扣等信息。
因此创建一个参数化的视图,其中计算余票使用函数count_ticket,创建视图的SQL语句如下:
REMAIN_SEATS_VIEW"
COUNT"
ASSELECTDISTINCTfno,flydate,cblevel,count_ticket(fno,flydate,cblevel)
FROMticket,input_to_flight
WHEREfno=input_to_flight.t_fno
ANDflydate=input_to_flight.T_FLYDATE;
假设应用程序要查询“——”的航班信息时,应用程序先执行以下SQL语句:
INSERTINTOinput_to_flightVALUES('
'
'
);
SELECT*FROMflight_view_bysite;
此时系统会返回查询的结果如图3.3所示:
图3.3flight_view_bysite视图查询的数据
这时候假设再想查询航班F0003、日期为2011年6月1日的余票信息,应用程序会执行以下SQL语句:
INSERTINTOinput_to_flight
VALUES('
F0003'
to_date('
2011-6-1'
yyyy-mm-dd'
));
SELECT*FROMremain_seats_viewORERBYcblevel;
此时系统会返回查询的结果如图3.4所示:
图3.4remain_seats_view视图查询的数据
在乘客确定好要预订的机票的时候,系统需要打印机票,机票上需要显示机票编号、航班号、公司名、飞机名称、出发地、目的地、机票日期、出发时间、到达时间、机舱等级、座位号、定价、折扣、售价以及乘客、乘客号和业务员,因此可以创建一个视图,创建视图的SQL语句如下:
TICKET_INFO_VIEW"
FINAL_PRICE"
ASSELECTticket.tno,ticket.fno,ame,aname,departure,arrival,flydate,time,time+flytime,ticket.cblevel,seat,price,discount,price*discount,pname,passenger.pID,sname
FROMticket,flight,airplane,company,passenger,salesman,ticketsale,cabin
WHEREticket.fno=flight.fno
ANDflight.ano=airplane.ano
ANDticketsale.tno=ticket.tno
ANDticketsale.pid=passenger.pid
ANDticketsale.sno=salesman.sno
ANDticket.fno=cabin.fno
ANDticket.cblevel=cabin.cblevel;
应用程序需要查询售票记录,因此可以创建一个视图来查询机票编号、乘客、乘客号、业务员编号、业务员和购票日期,创建视图的SQL语句如下:
SALERECORD_VIEW"
ASSELECTticketsale.tno,pname,ticketsale.pID,ticketsale.sno,sname,saledate
FROMticket,passenger,salesman,ticketsale
WHEREticket.tn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 机票 预订 系统