SQL民航售票系统数据库课程设计 - 图文

更新时间:2024-01-16 10:24:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

.课程设计目的

近年来,国内外的一些学者对中国航空业的竞争力进行了讨论,例如胡鞍钢对比分析了中美航空市场的开放度和国际竞争力。认为我国空中市场开放程度低下,其国际竞争能力十分薄弱,美国的航空市场开放程度最大,美国的航空运输国际竞争力最强,这表明空中市场越开放,其国际竞争力就越强。刘世锦和冯飞在民航业国内外市场的开放和竞争严重不对称的情况下,对竞争的考虑首先是如何提高本国企业的国际市场竞争力。Tae Hoon Oum和Chunyan Yu研究比较了世界主要航空公司获利能力。在数据方面,他们利用了从1986~2009年的22个航空公司的年度数据,研究生产率增长的变化以及在成本以上提高价格的能力。他们认为和北美的竞争者来相比,欧洲航空运营商在投入价格方面的增长更为快速,而在航空票价方面的下跌更为迅速。这主要归功于在欧洲范围内竞争的加剧,所以导致他们比较高的生产增长率。 为了增加航空公司的国际竞争力,提升生产增长率,国内一些航空公司也开发了网上售票系统。

网上售票系统是一个取代过去由人工处理的售票系统,在一定程度上提高了购票的透明性和自主性,但网站在方便消费者的同时,仍存在许多不足的地方。例如,航空公司网站只能提供公司自有航班的机票信息,客观上限制了人们的选择范围。

所以,为了解决网上售票系统以上的诸多不足,本次课程设计的目的就是开发一种新的民航售票系统,实现网上查询航班,订票与售票等诸多功能。它是为了适应现代社会人们高度强烈的时间观念而开发出来的能够为用户提供可靠的信息存储,信息查询信息操作的民航售票管理软件。它是基于Internet/Intranet网络环境下,再用B/S工作模式,级会员管理和售票查询预定处理统于一体网络信息管理平台。在此信息平台下,可灵活的处理民航公司的售票管理业务,实现管理控制一体化,为公司创造了方便、快捷的工作环境。

客户能随时随地通过因特网查询航班的详细信息,并预定最满意的航班。客户无需来往于机场和家、办公室之间,不比在售票点排队买票或订票,只要有一根网线就能轻松搞定从查询航班到订票到取票等一系列过程。

1

2.课程设计题目描述和要求

此次课设,只是设计一个数据库系统,来简单的模拟民航售票系统的运行,从而达到熟悉课本知识,熟练数据库操作及T-SQL语言的目的。为此,此系统设计按照需求分析、概念设计、逻辑设计、物理实现的步骤,将实现会员管理,机票管理,航班管理,公告栏管理等功能。整个系统设计时,票务这个关系模型为一个数据库,而航务关系模型(实际E-R图中并未列出)是一个数据库,管理管理模型又是一个数据库。这三个独立的数据库通过应用程序相连,单独存在,这样可以减少系统的出错率,并增加系统安全性。但是,实际课设中,由于精力有限,把这三个独立的数据库只能放在一个数据库中,成为表对象。实为一大遗憾。

课程设计要求为(最低):1、对象的创建:实体(5个)、关系模型(8个)表(5个)、视图(5个)、索引(5个)、存储过程(5个)、触发器(5个)。2、T-SQL语句(最低):数据库创建(1个)、表创建(5个)、插入数据(3个)、修改数据(3个)、删除数据(3个)、条件查询(10个)、排序查询(5个)、分组查询(3个)、连接查询(3个)、权限设置(3个)。

2

3.民航售票系统数据库设计 3.1确定实体与概念设计

根据需求分析,确定了应有实体并画E-R图,如下:

图3-1 民航售票系统E-R图

3.2逻辑设计

根据上一节图3-1,现转换关系模型,实体会员与机票的关系是1:N,并且联系票务有多项自己的属性,则转换为3组关系:会员、票务、机票。实体航空公司与航班的关系是1:N,座舱与航班关系是1:N,其联系航务无自己的属性,则转换关系为:航空公司、航班、座舱。实体公告栏与后台管理人员的关系是1:N,则转换关系为公告栏、后台管理人员。实体后台管理人员与工资关系1:1,则转换关系为工资发放、工资。所有转换后的关系模式如下所示:

会员(会员编号、会员名、密码、真实姓名、性别、年龄、电话、电子邮件) 机票(机票号、乘客姓名、乘客身份证号、联系电话)

票务(性质、会员编号、机票号、座舱编号、航班号、航空公司编号、票价) 航空公司(航空公司编号、航空公司名、负责人、联系电话)

航班(航班号、机型、出发城市、目的城市、起飞时间、到达时间、飞行时间)

3

座舱(座舱编号、座位数、成人票价、儿童票价) 公告栏(公告编号、管理人员编号、公告内容、公告日期)

后台管理人员(管理人员编号、管理人员姓名、管理人员性别、管理人员年龄、职务代码、职务)

工资(工资单编号、工资等级、工资金额) 工资发放(工资单编号、管理人员编号、发放日期)

表3-1 中英文命名对照

中文 英文 中文 会员名 年龄 英文 Una1 Uage 中文 密码 电话 座位数 英文 Upas Utel Cnum 中文 英文 会员表-Users 会员编号 Uno 性别 Usex 座舱表-Cabin 座舱编号 Cno 儿童票价 Cpri2 航班表-Fight 航班号 Fno 机型 Ftype 飞行时间 Ftim 到达时间 Time2 联系电话 Atel 出发城市 City1 飞行时间 Ftim 负责人 Aman 目的城市 City2 航空公司表-Airline 航空公司号 机票号 Ano 航空公司名 Ana 起飞时间 Time1 座舱类型 Ctype 成人票价 Cpri1 真实姓名 Una2 电子邮件 Umes 机票表-Ticket Tno 乘客姓名 Tna 乘客身份证 Tpos 乘客联系电话 Ttel 票务-Twork 性质 航班号 Nature Fno 机票号 航空公司编号 管理人员编号 姓名 职务 Tno Ano 会员编号 Uno 票价 Pri 座舱编号 Cno 公告栏-Notice 公告编号 Nno 后台管理人员-People 编号 Pno Pna ZW 性别 Psex 年龄 Page 职务编号 Zno 工资-Money 工资单编号 工资单编号 Mno 工资等级 Mlev 工资金额 Mnum Mno 公告内容 Nsay 公告日期 Ntim 工资发放-Gmoney Mno 管理人员编号 Pno 发放日期 Gtim 4

数据库表结构:

表3-2 会员表-Users-1

字段名 Uno Una1 Upas Una2 Usex Uage Utel Umes 字段类型及长度 Char(4) Varchar(20) Varchar(16) Varchar(30) Char(2) Int Varchar(20) Varchar(30) 说明 会员编号 会员名 密码 真实姓名 性别 年龄 联系电话 电子邮件 表3-3 座舱表-Cabin-1

字段名 Cno Ctype Cnum Cpri1 Cpri2 字段类型及长度 Char(2) Varchar(10) Int Int Int 说明 座舱编号 座舱类型 座位数 成人票价 儿童票价 表3-4 航班表-Flight-1

字段名 Fno Ftype City1 City2 Time1 Time2 Ftim 字段类型及长度 Char(5) Varchar(6) Varchar(10) Varchar(10) Varchar(20) Varchar(20) Varchar(20) 说明 航班号 机型 出发城市 目的城市 起飞时间 到达时间 飞行时间 备注 非空(主键) 非空 非空 非空 非空 非空 非空 备注 非空(主键) 非空 非空 非空 非空 备注 非空(主键) 非空 非空 非空 可为空 可为空 可为空 可为空 表3-5 航空公司表-Airline-1

字段名 Ano Ana Aman Atel 字段类型及长度 Char(4) Varchar(30) Varchar(10) Varchar(20) 说明 航空公司编号 航空公司名 负责人 联系电话 表3-6 机票表-Ticket-1

字段名 Tno Tna Tpos Ttel 字段类型及长度 Char(6) Varchar(20) Char(18) Varchar(20) 说明 机票号 乘客姓名 乘客身份证 乘客联系电话

5

备注 非空(主键) 非空 可为空 非空 备注 非空(主键) 非空 非空 非空

(Uno char(4) primary key not null, Una1 varchar(20) not null, Upas varchar(16) not null, Una2 varchar(30) not null, Usex char(2) null, Uage int null,

Utel varchar(20) null, Umes varchar(30) null) go

create table Cabin/*创建Cabin表*/ (Cno char(2) primary key not null, Ctype varchar(10) not null, Cnum int not null, Cpri1 int not null, Cpri2 int not null) go

create table Flight/*创建Flight表*/ (Fno char(5) primary key not null, Ftype varchar(6) not null, City1 varchar(10) not null, City2 varchar(10) not null, Time1 varchar(20) not null, Time2 varchar(20) not null, Ftim varchar(20) not null) go

create table Airline/*创建Airline表*/ (Ano char(4) primary key not null, Ana varchar(30) not null, Aman varchar(10) not null, Atel varchar(20) not null) go

create table Ticket/*创建Ticket表*/ (Tno char(6) primary key not null, Tna varchar(20) not null, Tpos char(18) not null, Ttel varchar(20) not null) go

create table Twork/*创建Twork表*/ (Wno char(4) primary key not null, Nature char(4) not null, Tno char(6) not null, Uno char(4) not null, Cno char(2) not null, Fno char(5) not null,

11

Ano char(4) not null, Pri int not null) go

create table Notice/*创建Notice表*/ (Nno char(4) primary key not null, Mno char(4) not null,

Nsay varchar(1000) not null, Ntim varchar(30) not null) go

create table People/*创建People表*/ (Pno char(4) primary key not null, Pna varchar(20) not null, Psex char(2) null, Page int null,

Zno char(2) not null, ZW varchar(20) not null) go

create table Moneys/*创建Moneys表*/ (Mno char(4) primary key not null, Mlev char(2) not null, Mnum int not null) go

create table Gmoney/*创建Gmoney表*/ (Mno char(4) not null, Pno char(4) not null, Gtim varchar(20) not null,

constraint PK_G primary key(Mno,Pno)) go

alter table Notice

add constraint FK_N foreign key(Pno) references People(Pno)

图3-2 表创建效果

12

/*插入记录*/

运用以下语句来插入记录,这里不一一列出 use database_name go

insert into table_name

values(,,……) go

实际操作中,这里用到 insert table1

select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;IMEX=1;HDR=YES;DATABASE=C:\\abc.xls' ,[Sheet1$]) 可以快速导入数据 插入实例:

use minhang go

insert into Ticket

values(20,'刘林',13545091010,420202198807101314) go

insert into Users

values(15,'liulin',00099922,'刘林','男',21,13545091010,'liulin@126.com') go

insert into Twork

values(20,'Sell',20,15,3,'WER56',2,588) go

修改实例:

use minhang go

update Flight set Ftim='7H' where Fno='ABX98' go

update Users set Usex=null where Una2='刘林' go

update Users set Uage=null where Uno=15 go

13

删除实例:

use minhang go

delete Users where Uno=15 go

delete Ticket where Tno=20 go

delete Twork where Wno=20 go

查询实例:

/*查询到广州的航班(条件查询)*/ select*from Flight where City2='广州'

图3-3 查询实例1

/*查询到从成都起飞的航班有哪些(条件查询)*/ select*from Flight where City1='成都'

图3-4 查询实例2

/*查询机型为A380的航班(条件查询)*/ select*from Flight where Ftype='A380'

图3-5 查询实例3

/*查询飞行时间大于小时的航班(条件查询)*/ select*from Flight where Ftim>6

14

图3-6 查询实例4

/*查询姓张的会员(条件查询)*/

select Uno,Una1,Una2 from Users where Una2 like '张%'

图3-7 查询实例5

/*查询年龄在岁以上的会员(条件查询)*/

select Uno,Una1,Una2,Uage from Users where Uage>30

图3-8 查询实例6

/*查询年龄姓李并且名字个字的会员(条件查询)*/ select Uno,Una1,Una2 from Users where Una2 like '李__'

图3-9查询实例7

/*查询不姓李的会员的所有信息(条件查询)*/ select*from Users

where Una2 not like '李%'

15

本文来源:https://www.bwwdw.com/article/m2do.html

Top