数据库课程设计机票预订系统.docx
《数据库课程设计机票预订系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计机票预订系统.docx(46页珍藏版)》请在冰豆网上搜索。
数据库课程设计机票预订系统
《数据库原理》课程设计
机票预订管理系统
学院:
计算机与信息科学学院
专业:
计算机科学与技术
班级:
计科1303
姓名学号:
XXX********XX
指导教师:
高金华职称讲师
完成时间:
2015年12月
1系统概述
随着全球进入信息化时代,航空公司为了适应当前越来越激烈的竞争,增强公司的信息化程度,提高公司的售票管理的效率,就建立起了相应的航空预订票系统,成功实现提高了航空系统的售票效率和管理水平。
在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的机票预定系统,实现航空公司的机票销售的自动化的计算机系统,为企业的决策层提供准确、精细、迅速的机票销售信息。
根据可行性研究的结果和客户的要求,分析现有情况及问题。
随着社会发展的不断地进步,人民消费水平的不断地提高,致使民航事业不断壮大,乘坐民航的消费者越来越多,因此机票的预定也越显重要,航空公司为方便客户出行,需开发一个机票预定系统。
根据预定机票的客户信息,包括姓名、性别、身份证号码、出行时间、出行目的地等,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班
2数据库设计
2.1需求分析
2.1.1数据流图
2.1.2数据词典
表2-1 plane飞机信息表
表中列名
数据类型
可否为空
说明
flightNum
varchar2
primarykey
飞机编号
seats
number
notnull
座位数
表2-2 flight航班信息表
表中列名
数据类型
可否为空
说明
flightNum
varchar2
primarykey
航班编号
planeNum
varchar2
notnull
飞机编号
startPoint
varchar2
notnull
出发地
detination
varchar2
notnull
目的地
startTime
varchar2
notnull
起飞时间
endTime
varchar2
notnull
到达时间
表2-3 ticket机票表
表中列名
数据类型
可否为空
说明
flightNum
varchar2
primarykey
航班号
grade
varchar2
notnull
机舱等级
seatNum
varchar2
notnull
座位号
ticketPrice
number
notnull
机票价格
presell
varchar2
notnull
预售状态
表2-4 passenger旅客表
表中列名
数据类型
可否为空
说明
name
varchar2
primarykey
旅客名
sex
varchar2
notnull
旅客性别
idNum
varchar2
notnull
身份证
phoneNum
varchar2
notnull
手机号
password
varchar2
notnull
密码
表2-5 buy购买表
表中列名
数据类型
可否为空
说明
name
varchar2
foreignkey
旅客名
flightNum
varchar2
foreignkey
航班号
gread
varchar2
notnull
机舱等级
seatNum
varchar2
notnull
座位号
paymoney
number
notnull
机票价格
buyNum
varchar2
notnull
购买数量
表2-6 manager管理员表
表中列名
数据类型
可否为空
说明
mname
varchar2
notnullunique
管理员编号
mpwd
varchar2
notnull
管理员姓名
2.1.3加工说明
我们的系统需要六个实体:
(1)飞机实体
实体名:
plane
角色:
关于飞机的信息
属性:
飞机编号,座位数
主键:
飞机编号
(2)航班实体
实体名:
flight
角色:
航班信息
属性:
航班编号,出发地,目的地,起飞时间,到达时间
主键:
航班编号
(3)机票实体
实体名:
ticket
角色:
机票信息
属性:
航班号,机舱等级,座位号,机票价格,余票数
主键:
座位号
(4)旅客实体
实体名:
passenger
角色:
旅客信息
属性:
旅客名,旅客性别,身份证,手机号,密码
主键:
旅客名
(5)机票购买实体
实体名:
buy
角色:
旅客购买机票后的信息
属性:
旅客名,航班号,机舱等级,座位号,机票价格,购买数量
(6)管理员实体
实体名:
manager
角色:
管理员信息
属性:
管理员名,密码
2.2概念结构设计
2.2.1E-R图
根据需求分析抽象出信息结构,可得该系统的E-R图。
(1)航班实体属性图,航班的信息由航班号、飞机编号、出发地、目的地、起飞时间、到达时间等属性组成如图所示。
图
(1)航班信息实体属性图
(2)飞机是实体属性图,飞机信息由飞机编号和座位数属性组成如图所示。
图
(2)飞机信息实体属性图
(3)管理员实体属性图,管理员信息由姓名和登录密码属性组成如图所示
图(3)管理员信息实体属性图
(4)机票实体属性图,机票信息有:
航班号、机舱等级、座位号、票价、预售状态等属性如图所示。
图(4)机票信息实体属性图
(5)旅客属性图,旅客信息有:
身份证号、姓名、性别、联系方式、密码等属性如图所示。
图(5)旅客信息实体属性图
(6)订单属性图,订单信息有:
姓名、航班号、座位号、机舱等级、金额、订单数等属性如图所示。
图(6)订单信息实体属性图
根据属性图和需求分析,可得到总E-R图,如图所示。
图(7)总的E-R图
2.3逻辑结构设计
2.3.1关系模式
将总体概念结构E-R图转化成关系模型。
(主键用下划线标出)
飞机(飞机编号,座位数)
航班(航班编号,飞机编号,出发地,目的地,起飞时间,到达时间)
管理员(管理员姓名,密码)
机票(航班编号,机舱等级,座位号,票价,当前预售状态)
旅客(身份证号,姓名,性别,密码,联系电话)
购买(姓名,航班号,座位号,机舱等级,实付款,数量)
2.4物理结构设计
根据总体结构图设计机票预定系统基本表结构,其相应标的定义如下:
表1飞机信息
中文名称
类型
长度
是否非空
主关键字
备注
飞机编号
varchar2
10
Y
座位数
number
N
总座位
表2航班信息
中文名称
类型
长度
是否非空
主关键字
备注
航班号
varchar2
10
Y
飞机编号
varchar2
10
N
机舱等级
varchar2
10
N
起飞地
varchar2
10
N
目的地
varchar2
10
N
起飞时间
varchar2
年月日/时分
到达时间
varchar2
年月日/时分
表3管理员信息
中文名称
类型
长度
是否非空
主关键字
备注
管理员姓名
char
10
Y
登陆密码
char
10
N
表4机票信息
中文名称
类型
长度
是否非空
主关键字
备注
航班号
char
10
N
机舱等级
char
10
N
座位号
char
10
Y
票价
float
(2)
N
元
当前预售状态
char
10
N
Y/N
表5旅客信息
中文名称
类型
长度
是否非空
主关键字
备注
旅客姓名
char
10
Y
身份证号
char
10
N
性别
char
10
N
联系方式
char
10
N
密码
char
15
N
表4-6购买信息
中文名称
类型
长度
是否非空
主关键字
备注
旅客姓名
char
10
Y
座位号
char
10
N
航班号
float
(1)
机舱等级
float
(2)
N
N
实付款
int
N
N
购买数量
char
10
N
数据库实现:
--飞机信息表plane
createtableplane
(
flightNumvarchar2(10),--航班号
seatsnumber(8)notnull--座位数
);
insertintoplanevalues('航班1',5);
insertintoplanevalues('航班2',5);
insertintoplanevalues('航班3',5);
insertintoplanevalues('航班4',5);
select*fromplane;
--航班表flight
createtableflight
(
flightNumvarchar2(10)primarykey,--航班编号
planeNumvarchar2(10),--飞机编号
startPointvarchar2(20)notnull,--出发地
detinationvarchar2(10)notnull,--目的地
startTimevarchar2(20)notnull,--起飞时间
endtimevarchar2(20)notnull--到达时间
);
--插入数据到航班表(flight)中
insertintoflightvalues('航班1','长沙','武汉','2015-12-2908:
00','2015-12-2910:
00');
insertintoflightvalues('航班2','北京','台湾','2015-12-3008:
30','2015-12-2911:
00');
insertintoflightvalues('航班3','北京','上海','2016-01-0111:
30','2016-01-115:
00');
insertintoflightvalues('航班4','广州','杭州','2016-01-1009:
00','2016-01-0210:
00');
select*fromflight;
--航班表的flightNum作为飞机信息表flightNum的外键
altertableplaneaddconstraintfk_fnforeignkey(flightNum)referencesflight(flightNum);
--创建机票表ticket
createtableticket
(
flightNumvarchar2(10)notnull,--航班号
gradevarchar2(10)notnull,--机舱等级
seatNumvarchar2(10)primarykey,--座位号
ticketPricefloat
(2)notnull,--机票价格
presellvarchar2(10)notnull--余票数
);
--插入数据到机票表(ticket)中
insertintoticketvalues('航班1','头等舱','1-01','500','1');
insertintoticketvalues('航班1','公务舱','1-02','400','1');
insertintoticketvalues('航班1','公务舱','1-03','400','1');
insertintoticketvalues('航班1','经济舱','1-04','300','1');
insertintoticketvalues('航班1','经济舱','1-05','300','1');
insertintoticketvalues('航班2','头等舱','2-01','500','1');
insertintoticketvalues('航班2','公务舱','2-02','400','1');
insertintoticketvalues('航班2','公务舱','2-03','400','1');
insertintoticketvalues('航班2','经济舱','2-04','300','1');
insertintoticketvalues('航班2','经济舱','2-05','300','1');
insertintoticketvalues('航班3','头等舱','3-01','500','1');
insertintoticketvalues('航班3','公务舱','3-02','400','1');
insertintoticketvalues('航班3','公务舱','3-03','400','1');
insertintoticketvalues('航班3','经济舱','3-04','300','1');
insertintoticketvalues('航班3','经济舱','3-05','300','1');
insertintoticketvalues('航班4','头等舱','4-01','500','1');
insertintoticketvalues('航班4','公务舱','4-02','400','1');
insertintoticketvalues('航班4','公务舱','4-03','400','1');
insertintoticketvalues('航班4','经济舱','4-04','300','1');
insertintoticketvalues('航班4','经济舱','4-05','300','1');
select*fromticket;
--航班表的flightNum作为机票表flightNum的外键
altertableticketaddconstraintfk_tfnforeignkey(flightNum)referencesflight(flightNum);
--创建旅客表
createtablepassenger
(
namevarchar2(10)primarykey,--旅客名
sexvarchar2(10)notnull,--旅客性别
idNumvarchar2(20)notnull,--身份证
phoneNumvarchar2(15)notnull,--手机号
passwordvarchar2(10)notnull--密码
);
--插入数据到旅客表(passenger)中
insertintopassengervalues('张三','男','1220101','1316060001','zs');
insertintopassengervalues('李四','男','1220102','1316060002','ls');
insertintopassengervalues('王五','女','1220103','1316060003','ww');
insertintopassengervalues('赵六','男','1220104','1316060004','zl');
select*frompassenger;
--创建购买表
createtablebuy
(
namevarchar2(20),--旅客名
flightNumvarchar2(10),--航班号
greadvarchar2(10)notnull,--机舱等级
seatNumvarchar2(10)notnull,--座位号
paymoneyfloat
(2)notnull,--机票价格
buyNumnumber(8)notnull--购买数量
);
--插入数据到购买表(buy)中
insertintobuyvalues('张三','航班1','公务舱','1-02',400,1);
insertintobuyvalues('李四','航班2','经济舱','3-01',400,1);
insertintobuyvalues('王五','航班3','公务舱','3-05',270,1);
insertintobuyvalues('赵六','航班4','经济舱','4-04',270,1);
select*frombuy;
--旅客表的name作为购买表name的外键
altertablebuyaddconstraintfk_bnforeignkey(name)referencespassenger(name);
--管理员表
createtablemanager(
mnamevarchar2(20)notnull,--管理员名
mpwdvarchar2(10)notnull,--管理员登录密码
yuliuvarchar2(20)
);
select*frommanager;
insertintomanagervalues('李华','aaaaaa',null);
select*frommanagerwheremname='李华'andmpwd='aaaaaa';
2.5设计小结
经过这几个星期的努力,本次课程设计终于完成了。
通过这次课程设计,我对数据库这门课程有了更深入的理解,数据库是一门实践性较强的课程,同时我明白了理论与实际应用相结合的重要性,掌握并熟练运用SQL语句,提高了我的综合运用所学知识的能力。
在本次课程设计和过程中,由于时间不是很长,再加上要求独立完成,系统需求分析上可能不是很全面,程序中还存在很多缺,希望老师能给予批评和指导。
经过这次课程设计,我的知识得到了很大,经验也更加丰富。
希望能在今后的不断的学习中和努力中,把程序做得更好。
我们学习并应用了SQL语言,对数据库的创建、修改、删除方法有了一定的了解,通过导入表和删除表、更改表学会了对于表的一些操作,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。
这次课程设计,我更加深入的了解到软件工程的复杂性,以及前期规划分析的重要性。
其实在Java这种面向对象的程序设计中,我的开发模型能力很是一般。
所以一人之力也难以完成。
还得多多感谢同学的帮助,在以后的学习中应该学习一些先进的思想,并多加实践,从写程序和软件架构两个方面都增强自己的能力。
最后,感谢指导老师给予的帮助。
3应用程序设计
3.1需求分析
3.1.1数据流图
3.1.2数据词典
表3-1 plane飞机信息表
表中列名
数据类型
可否为空
说明
flightNum
varchar2
primarykey
飞机编号
seats
number
notnull
座位数
表3-2 flight航班信息表
表中列名
数据类型
可否为空
说明
flightNum
varchar2
primarykey
航班编号
planeNum
varchar2
notnull
飞机编号
startPoint
varchar2
notnull
出发地
detination
varchar2
notnull
目的地
startTime
varchar2
notnull
起飞时间
endTime
varchar2
notnull
到达时间
表3-3 ticket机票表
表中列名
数据类型
可否为空
说明
flightNum
varchar2
primarykey
航班号
grade
varchar2
notnull
机舱等级
seatNum
varchar2
notnull
座位号
ticketPrice
number
notnull
机票价格
presell
varchar2
notnull
预售状态
表3-4 passenger旅客表
表中列名
数据类型
可否为空
说明
name
varchar2
primarykey
旅客名
sex
varchar2
notnull
旅客性别
idNum
varchar2
notnull
身份证
phoneNum
varchar2
notnull
手机号
password
varchar2
notnull
密码
表3-5 buy购买表
表中列名
数据类型
可否为空
说明
name
varchar2
foreignkey
旅客名
flightNum
varchar2
foreignkey
航班号
gread
varchar2
notnull
机舱等级
seatNum
varchar2
notnull
座位号
paymoney
number
notnull
机票价格
buyNum
varchar2
notnull
购买数量
表3-6 manager管理员表
表中列名
数据类型
可否为空
说明
mname
varchar2
notnullunique
管理员编号
mpwd
varchar2
notnull
管理员姓名
3.1.3加工说明
我们的系统需要六个实体:
(1)飞机实体
实体名:
plane
角色:
关于飞机的信息
属性:
飞机编号,座位数
主键:
飞机编号
(2)航班实体
实体名:
flight
角色:
航班信息
属性:
航班编号,出发地,目的地,起飞时间,到达时间
主键:
航班编号
(3)机票实体
实体名:
ticket
角色:
机票信息