数据库课程设计_网上订飞机票系统目
机票预订:www.161580.com
课程设计
题目
学院
专业班级
学生姓名
指导教师
网上订飞机票系统计算机科学与信息
学院计算机科学与技
术一班赵骏康世瀛
2012年6月5日
重庆工商大学课程设计成绩评定表
指导教师评定成绩:
指导教师签名:年月日
目录
一、引言………………………………………………………………(4)
1(课题背
景……………………………………………………………(4)
2(课程设计目的……………………………………………………(4)
3.课程设计任
务………………………………………………………(4)
二、系统结构分析……………………………………………………(6)
1、需求分
析……………………………………………………………(6)
2、功能模块
图…………………………………………………………(6)
三、系统数据库设计…………………………………………………(8)
1、概念结构设计……………………………………………………(8)
2、逻辑结构设计……………………………………………………(11)
四、数据库表的建立…………………………………………………(13)
五、数据测试………………………………………………………(15)
六、结束语…………………………………………………………(21)
1引言
1.1课题背景
随着社会发展的不断进步,民航事业的壮大,人们消费水平的提高,乘坐民航的消费者也越来越多,旅游也逐渐成为普通老百姓的生活组成部分,飞机票预定查询系统在各机票预定网点中的作用也越显重要。目前,我国一些旅行社和酒店的机票预定还停留在人工处理阶段,这已经严重制约了工作效率,在计算机技术高速发展的今天,有必要引入高效的计算机系统,来协助处理机票预定工作。因此,开发一套具有完整的存储,查询,核对,打印机票功能的实时机票预定系统势在必行。
机票预定系统是为机场工作人员和客户提供订票退票等与机票相关内容和管理的系统,它具有开放体系结构的、易扩充的、易维护的、具有良好人机界面的优点.它除克服了存储乘客信息少,查询效率低下等问题外,更重要的是其安全性,可靠性,实现航空公司的机票销售的自动化。它为企业的决策层提供准确、精细、迅速的机票销售信息,为乘客出行提供方便,便于机场工作人员
对机票信息进行管理,提高了机场工作人员对机票管理的工作效率。
1.2课程设计目的
应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。
实践和巩固在课堂教学中学习的关于数据库的有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。
实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。
1.3课程设计任务
本课程设计任务是通过开发一个数据库机票预订系统,学习数据库系统的设计与开发,SQL相关的软件为开发工具。通过对计算机硬件和软件解决
的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践。在指导老师的帮助下,已经基本上成功地实现了设计任务
的要求,使得设计的数据库系统能够实现一般数据库的管理。
2.1需求分析2系统结构分析
随着社会发展的不断进步,民航事业的壮大,人们消费水平的提高,乘坐民航的消费者也越来越多,机票的预定也越显重要,航空公司为方便旅客出行,需开发一个机票预定系统。预定机票的旅客信息,包括姓名、性别、身份证号码、旅行时间、旅行目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。如果某方面出现问题,旅客可以持有效证件去飞机场退票。
经过综合分析,确定了机票预订系统主要包括以下功能:
(1)航班信息管理功能
主要实现航班的一些基本信息,航班编号、票价、起飞地、目的地、起飞时间的添加、修改、删除和查询。
(2)机票信息管理功能
主要实现机票的一些基本信息,航班编号、座位号、座位信息、
机票类型的添加、修改、删除和查询。
(3)旅客信息管理功能
此模块的主要实现旅客一些基本信息,姓名、性别、联系方式、证件号码、的查询功能。
(4)取票信息管理功能
此模块用于取票信息的管理,包括对航班基本信息,航班编号等,
旅客基本信息,旅客姓名、座位号、取票时间的查询。
(5)退票信息管理功能
此模块用于退票信息的管理,包括对订单号、旅客姓名、联系方式、证件号码的查询。
2.2功能模块图
(1)根据上述的功能,可以设计出系统的总体功能模块,如图2.1
所示。
图2.1机票预订系统功能模块示意图
(2)取票信息管理模块的细化功能模块如图2.2所示。
图2.2取票信息管理模块
(3)退票信息管理模块的细化功能模块如图2.3所示。
图2.3退票信息管理模块
3系统数据库设计
3(1概念结构设计
根据需求分析抽象出信息结构,可得该系统的E-R图。
(1)旅客E-R图,如图3.1所示。
图3.1旅客E-R图
(2)航班信息E-R图,如图3.2所示。
图3.2航班信息E-R图
(3)机票信息E-R图,如图3.3所示。
图3.3机票信息E-R图
(4)取票通知E-R图,如图3.4所示。
图3.4取票通知E-R图
(5)退票信息E-R图,如图3.5所示。
图3.5退票信息E-R图
根据分E-R图和需求分析,可得到总E-R图,如图3.6所示。
图3.6系统总体结构E-R图
3(2逻辑结构设计
(1)E-R图向关系模型的转换
将图3.6总体概念结构E-R图转化成关系模型。
退票信息(订单号,旅客姓名,联系方式,证件号码)旅客(旅客姓名,证件号码,联系方式,性别)
航班信息表(航班号,票价,起飞地,目的地,起飞时间)
取票通知单(旅客姓名,取票时间,证件号码,航班号,座位号)机票信息表(座位号,航班号,座位信息,机票类型)
(2)数据模型的优化
将转化的关系模式进行优化,最终达到第三范式。
?确定数据依赖
退票信息(订单号,旅客姓名,联系方式,证件号码)根据这个关系写出数据依赖订单号?旅客姓名,订单号?联系方式,订单号?证件号码
旅客(旅客姓名,证件号码,联系方式,性别)
旅客姓名?证件号码,旅客姓名?联系方式,旅客姓名?性别
航班信息表(航班号,票价,起飞地,目的地,起飞时间)
航班号?起飞地,航班号?票价,航班号?目的地,航班号?起飞时间
取票通知单(旅客姓名,取票时间,航班号,座位号)
旅客姓名?取票时间,旅客姓名?航班号,旅客姓名?座位号,
机票信息表(座位号,航班号,座位信息,机票类型)
(座位号,航班号)?舱位类型,(座位号,航班号,座位信息)?机票类型?对各关系模式间数据依赖进行极小化处理,消除冗余
订单号?旅客姓名,订单号?联系方式,订单号?证件号码
旅客姓名?性别,旅客姓名?取票时间,旅客姓名?航班号,旅客姓名?座位号,旅客姓名?机票类型
航班号?起飞地,航班号?目的地,航班号?起飞时间
(座位号,航班号)?座位信息
?看这些模式是否符合要求,确定是否要对某些模式进行合并或者分解
最终分解成第三范式:
(订单号,联系方式,证件号码)(订单号,旅客姓名)(旅客姓名,取票时间,性
别,机票类型)(旅客姓名,航班号)(旅客姓名,座位号)(航班号,座位号,票价)(航班号,起飞地,目的地,起飞时间)(3)数据库的结构
根据总体结构图设计机票预定系统基本表结构,其相应标的定义如下:
表3-1旅客信息系统的结构
表3-2退票信息系统的结构
表3-3航班信息系统的结构
表3-4取票通知单系统的结构
表3-5航班座位信息表
4.数据库表的建立
根据数据库的基本表结构分别建立六个基本表,这里给出具体的
SQL语句如下。(1)创建旅客信息表passagercreatetablepassager
(passagernamevarchar(50)primarykey,iddecimalnotnull,
telephonenumberdecimalnotnull,sexvarchar(50)notnull);
(2)创建退票信息表
cancellations_messagecreatetablecancellations_message(orderformdecimalprimarykey,passagernamevarchar(50)notnull,telephonenumberdecimalnotnull,idvarchar(50)notnull);
(3)创建航班信息表flight_message
createtableflight_message
(flightnumberdecimalprimarykey,takeoffplacevarchar(50)notnull,destinationvarchar(50)notnull,flighttimetimenotnull,
flighttypedecimalnotnull,
priceintnotnull
);
(4)创建取票通知表ticket_messagecreatetablegetticket_message
(passagernamevarchar(50)primarykey,gettickettimetimenotnull,
flightnumberdecimalnotnull,seatnumberdecimalnotnull,,
flighttickettypevarchar(50)notnull);
(5)创建座位信息表
flight_seat_messagecreatetableflight_seat_message(seatnumberdecimalprimarykey,flightnumberdecimalnotnull,seatmessagevarchar(50)notnull,flighttickettypevarchar(50)notnull);
4.数据测试
--passager表
--查询所有的乘客信息
select*frompassager
--查询所有男乘客的信息
select*frompassager
wheresex='男
'
--计算总的乘客数
selectcount(*)乘客数
frompassager
--定义视图,显示乘客名为张心的电话号码
createviewpassager_view
as
selecttelephonenumberfrompassagerwherepassagername='张心'
select*frompassager_view
--定义游标,利用游标选取所有的女乘客,并逐行显示游标中的信息declarepassager_infocursorfor
select*frompassager
wheresex='女'
openpassager_info
select'cursor内数据条数'=@@cursor_rows
fetchnextfrompassager_info
while(@@fetch_status<>-1)
begin
select'cursor读取状态'=@@fetch_status
fetchnextfrompassager_info
end
closepassager_info
deallocatepassager_info
--cancellation_message
--查询所有的退票信息表信息
select*from
cancellation_message
--查询orderform为的信息
select*fromcancellation_message
whereorderform='0003'
--查询passagername为张三退票信息
select*fromcancellation_message
wherepassagername='张三
'
--flight_message
--查询所有的航班信息
select*fromflight_messages
--查询航班号为K001的起飞地点、目的地、的价格
selectflightnumber,take_off_place,destination,pricefromflight_mess
ages
whereflightnumber='K001'
--查询起飞地为重庆,目的地为深圳的航班信息
select*fromflight_messages
wheretake_off_place='重庆'anddestination='深圳
'
--定义游标,利用游标选取所有目的地为昆明的航班信息,并逐行显示游标中的信息declareflight_infocursorfor
select*fromflight_messages
wheredestination='昆明'
openflight_info
select'cursor内数据条数'=@@cursor_rows
fetchnextfromflight_info
while(@@fetch_status<>-1)
begin
select'cursor读取状态'=@@fetch_status
fetchnextfromflight_info
end
closeflight_info
deallocateflight_info
--get_ticket_messages
--查询所有取票通知表的信息
select*fromget_ticket_messages
--查询姓名为李四的乘客的取票通知表
select*fromget_ticket_message
wherepassagername='李四
'
--定义游标,利用游标选取乘客名为王灿的订票信息,并逐行显
示游标中的信息declareget_ticket_infocursorfor
select*fromget_ticket_message
wherepassagername='王灿'
openget_ticket_info
select'cursor内数据条数'=@@cursor_rows
fetchnextfromget_ticket_info
while(@@fetch_status<>-1)
begin
select'cursor读取状态'=@@fetch_status
fetchnextfromget_ticket_info
end
closeget_ticket_info
deallocateget_ticket_info
--flight_seat_message
--查询所有的座位信息表
select*fromflight_seat_message
--查询flightnumber为的座位信息select*fromflight_seat_message
whereflightnumber='K001'
5.结束语
经过两周的努力,本次课程设计终于完成了。通过这次课程设计,使我对数据库这门课程有了更深入的理解,数据库是一门实践性较强的课程。通过这次课程设计,我明白了理论与实际应用相结合的重要性,掌握并熟练运用SQL语句以及VB的应用,提高了我的综合运用所学知识的能力。
在本次课程设计和过程中,由于时间不是很长,再加上要求独立完成,系统需求分析上可能不是很全面,程序中还存在很多缺,希望老师能给予批评和指导。经过这次课程设计,我的知识得到了很大提高,经验也更加丰富。希望能在今后的不断的学习中和努力中,把程序做得更好。最后,感谢指导老师所给我的帮助。
参考文献
[1]陈艳峰,高文姬,邵蕴秋(《VisualBasic数据库项目
导航》(北京:清华大学出版社,2004
[2]尹建民,张海卿著(《VisualBasic.NET入门与进阶》(北京:清华大学出版社,2004
[3]郑阿奇,顾韵华,黄群著(《VisualBasic实用教程》(北京:电子工业出版社,2004
[4]王珊,陈红(《数据库系统原理教程》(清华大学出版社,1998,
7