视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
机票预订系统
2025-10-06 04:41:26 责编:小OO
文档
 

课 程 设 计 报 告

课程设计名称:  数据库系统概论  

系    部:                       

学生姓名:                       

班    级:                       

学    号:                       

成    绩:                       

****           **           

 开课时间: 2011-2012  学年  2 学期

一、设计题目:

《机票预订系统》

系统功能的基本要求:

每个航班信息的输入、每个航班的坐位信息的输入;

当旅客进行机票预定时,输入旅客基本信息,系统为旅客安排航班;

旅客能够退订机票;

能够查询每个航班的预定情况、统计航班的满座率。

二、主要内容:

(一)、需求分析

随着互联网的不断发展,以及电子商务的不断普及,人们对能够网上预订民航机票的需求越来越大。航空公司为方便旅客出行,需开发一个机票预定系统。预定机票时,通过输入相关信息,包括姓名、身份证号码、旅行时间、旅行始发地、旅行目的地,机票预定系统的客户端程序将查询航空公司内的航班数据库,为旅客安排最合适的航班,并显示订票交易编号。旅客在飞机起飞前至机场自动售票处凭订票单编号付款后取票,系统校对无误后即印出机票给旅客。未付款时若需退订机票,旅客可以凭订单号和身份证号在线退订。

综合分析,我认为机票预订系统至少应包括以下几种功能(如图1):

图1    机票预订系统的总体功能模块

各部分功能如下表1所示:

表1    系统功能模块分析

功能模块名功  能

航班信息管理实现基本航班信息的增删查改
机票信息管理实现基本机票信息的增删查改
旅客信息管理记录乘坐航班的旅客的信息
订票信息管理记录已预订的机票
取消机票预订已预订的机票的预订记录
系统运行的数据流图如图2所示:

图2        顶层数据流图

图3        底层数据流图

部分数据项如下所示:

属性名别名数据类型长度
id身份证号char20
passagername姓名char20
telephone联系方式char20
ordersnumber 订单号char20
flightnumber航班编号char20
placefrom起飞地char20
destination目的地char20
flighttime起飞时间datetime
seatcount总座位数int
price票价int-
ticketnumber机票号char20
seatnumber座位号int-
(二)、概念结构设计

    根据需求分析抽象出所需的实体及其属性,并画出总体概念结构E-R图:

1、旅客实体属性图,如图4所示。

图4        旅客实体属性图

2、航班实体属性图,如图5所示。

图5        航班实体属性图

3、机票实体属性图,如图6所示。

                     图6    机票实体属性图

4、总体概念结构E-R图,如图7所示。

图7        总体概念结构E-R图

(三)、逻辑结构设计

1、E-R图向关系模型的转换(关系的码用下划线标出)

●航班(航班编号,起飞地,目的地,起飞时间,总座位数,票价)

此为航班实体对应的关系模式。航班编号是关系的候选码。

●机票(机票号,航班编号,座位号,身份证号)

此为机票实体的关系模式。该关系模式已经包含了联系“组成”所对应的关系模式。

●旅客(身份证号,姓名,联系方式)

此为旅客实体对应的关系模式。身份证号是关系的候选码。

●订票单(订单编号,机票号,身份证号)

此为联系“预/退订”所对应的关系模式。

2、数据模型的优化

    由前面已给出的关系模式易知,各个关系都满足第一范式(1NF)。且每个关系中的每个非主属性都完全依赖于各自的码。故而关系也满足第二范式(2NF)。

    但在关系模式“订票单”中,存在属性依赖于非主属性(机票号→身份证号)。故关系模式不满足第三范式(3NF)。考虑到订退票操作时需要增删旅客信息,如若去掉订票单表中的身份证号属,在需要退票时,删除旅客信息将需要先进行订票单表和机票表的连接运算才能获得身份证号,这将影响系统的效率。故决定保留身份证号属性,以减少连接运算,提高关系模型的效率。

    最终关系模式满足第二范式(2NF)。

3、设计用户子模式

    为消费者建立视图:

        航班信息(起飞地,目的地,起飞时间,票价)

        订票单表(订单编号,起飞地,目的地,起飞时间,票价,身份证号,姓名,联系电话)

4、各个表的结构如下:

根据总体结构图设计机票预定系统基本表结构,其相应标的定义如下:

表2        旅客信息系统的结构

字段名数据类型长度约束描述
idchar20主码身份证号
passagernamechar20不为空姓名
telephonechar20不为空联系方式
表3        航班信息系统的结构

字段名数据类型长度约束描述
flightnumberchar20主码航班编号
placefromchar20不为空起飞地
destinationchar20不为空目的地
flighttimedatatime-不为空起飞时间
seatcountint-不为空总座位数
priceint-不为空票价
表4        机票信息表

字段名数据类型长度约束描述
ticketnumberchar20主码机票号
flightnumberchar20外码航班编号
seatnumberint-不为空座位号
idchar20外码身份证号
表5        预订机票系统的结构

字段名数据类型长度约束描述
ordersnumberchar20主码订单编号
ticketnumberchar20外码 

机票号
idchar20外码身份证号
(四)、物理结构设计

1、索引的建立

    因为有机票预订情况的查询,为提高系统查询效率,可对机票建立聚簇索引;

(五)、数据库实施及应用程序编制

    数据库的建立共有4个基本表,建立数据库的SQL语句如下:

1、创建数据库Airplane

    create database Airplane ;

    2、创建旅客基本表passager

    Use Airplane

create table passager

(

id char(20) primary key ,

passagername char(20) not null ,

telephone char(20) not null

)

3、创建航班基本表flight

use Airplane

Create table flight

(

flightnumber char(20) primary key ,

placefrom char(20) not null ,

destination char(20) not null ,

flighttime datetime not null ,

seatcount int not null ,

price int not null

)

4、创建机票基本表ticket

use Airplane

create table ticket

(

ticketnumber char(20) ,

flightnumber char(20)  ,

seatnumber int ,

id char(20) ,

primary key(ticketnumber) ,

foreign key(flightnumber)references flight(flightnumber) ,

foreign key(id)references passager(id) ,

)  

5、创建订票单基本表

use Airplane

create table orders

(

ordersnumber char(20),

ticketnumber char(20) ,

id char(20) ,

primary key(ordersnumber) ,

foreign key(ticketnumber)references ticket(ticketnumber) ,

foreign key(id)references passager(id) ,

)

    6、旅客查询航班视图:

        Create view v_flight

        As 

        Select flightnumber ,flighttime ,placefrom ,destination ,price

        From flight

    7、旅客个人信息查看的视图:

        Create view v_passager

        As 

        Select flightnumber,id,passagername,flighttime

        From passager,flight

    8、满座率的查询:

Select count/seatcount

        From ticket,flight

        Where ticketnumber like ‘_ _ _ _ _ _ _ _1201_ _ _’

    9、航班预订情况查看:

        Select count *

        From ticket

        Where flightnumber = CA1201

    10、系统界面截图:

图8    系统界面截图

(六)、心得体会

短暂的一个半星期的课程设计转眼就结束了,在这次课程中,我学到了很多与数据库有关的软件编程实用技术,收获不小。一个软件的开发看似简单,其实前前后后十分辛苦。从需求分析到E-R图,从E-R图到逻辑结构设计,从逻辑结构设计到物理结构设计,直至数据库SQL语句的编写以及最后的程序编制。整个过程,充分考验了我们的综合知识的能力。

我这次的课题名是《机票的预订系统》,需求分析中的顶层流程图很简单。但是底层数据流图的数据流就较为复杂。概念设计中实体属性图和E-R图的设计是后期程序是否高效的关键。逻辑结构设计中,将E-R图转换为关系模式时,要区分是实体还是联系转换的。转换为关系后又对其进行优化,并讨论最终范式。我的原本设计的系统已达到第三范式的要求。但考虑到物理设计及存储和存取的效率后,我决定放弃第三范式,转而选择第二范式。方便系统查看机票预订情况的查看,我在“机票号”属性上增加了聚簇索引。关系上定义的索引数不是越多越好,因为系统为维护索引要付出代价,查找索引也要付出代价,因此索引数要适量。我的数据库最终使用的是Microsoft SQL Server2005环境。用SQL语句建立好数据库,输入简单的几个可供检验的数据旋即完成。界面是直接在Dreamweaver8里使用动态页面设计的。期间我通过阅读官方参考手册,一步一步,利用图形化界面编写了简单的软件使用界面。

通过这次课程设计,我学到了很多课本上学不到的软件使用方法,和实用技术。同时也加深了对课本知识的了解。而且我发现,有目标的学习更能促进我高效的投入到学习中来。学习课本知识需要更多的课后实践练手,那样的学习经验对我们来说十分珍贵。

最后,感谢指导老师的认真指导。

(七)、参考资料

    1、王珊,萨师煊,《数据库系统概论》,高等教育出版社,2008年;

    2、徐国志,SQL-Server数据库开发案例精粹,北京电子工业出版社;

    3、《数据库课程设计_机票预定系统》;

    4、Dreamweaver8官方教程;下载本文

显示全文
专题