数据库原理机票预定系统.docx
《数据库原理机票预定系统.docx》由会员分享,可在线阅读,更多相关《数据库原理机票预定系统.docx(14页珍藏版)》请在冰豆网上搜索。
![数据库原理机票预定系统.docx](https://file1.bdocx.com/fileroot1/2023-1/2/2d1e8fc2-abb5-4fd7-aba9-c719a099ff47/2d1e8fc2-abb5-4fd7-aba9-c719a099ff471.gif)
数据库原理机票预定系统
课程设计报告
课程设计名称:
数据库原理与应用
系部:
二系
*******
班级:
09信科2班
学号:
***********
成绩:
指导教师:
沈佑田陈林
开课时间:
2011-2012学年1学期
一、设计题目:
第9题:
机票预订系统
二.主要内容:
系统功能的基本要求:
Ø每个航班信息的输入、每个航班的坐位信息的输入;
Ø当客户进行机票预定时,输入客户基本信息,系统为客户安排航班;
Ø客户能够退订机票;
能够查询每个航班的预定情况、统计航班的满座率。
三.具体要求
1.课程设计的内容独立自主完成,课程设计报告内容完整、格式规范、排版整洁美观;
2.后台数据库采用MSSQLSERVER2005,前台界面语言不限,编写的程序代码,须有较详细的注释说明;
四.进度安排
课程设计安排:
16周
星期一讲解课程设计的内容,安排每一天的具体任务,分配并熟悉题目;
星期二需求分析:
给出系统的功能需求、性能需求,并绘制DFD和DD;
星期三概念结构设计:
绘制实体属性图(可选),局部ER图和全局ER图;
星期四逻辑结构设计:
转换、优化、外模式的设计;
星期五物理结构设计及数据库实施;
17周
星期一应用程序编制调试、整理课程设计报告,并检查;
星期二根据反馈结果修改课程设计;
星期三提交作业
上交的材料:
课程设计的电子稿、打印稿、源码(SQL代码和程序代码)
五.成绩评定
考核方法:
现场验收(占50%),课程设计报告(占50%)。
考核内容:
学习态度(出勤情况,平时表现等)、方案合理性、各阶段的图表与程序编制质量、设计报告质量。
成绩评定:
优,良,中,及格,不及格。
特别说明:
(1)如发现抄袭,按照不及格处理。
(2)材料不齐的,考核等级降一级。
电子稿件以压缩文件的形式上交,压缩命名为:
11位学号+姓名
正文撰写包含的内容:
1、需求分析
2、概念结构设计
3、逻辑结构设计
4、物理结构设计
5、数据库实施及应用程序编制
6、心得体会
7、参考资料
正文
机票预定系统
一需求分析
1.1功能分析
经过分析。
确定了机票预订系统应具备以下主要功能:
(1)航班信息管理功能
主要实现航班的一些基本信息,航班编号,票价,起飞点,目的地,起飞时间的添加,修改,删除,查询。
(2)机票信息管理功能
主要实现航班座位也就是机票的一些基本信息,航班编号,座位号,机票类型的添加,删除,查询和修改功能。
(3)客户信息管理功能
主要实现旅客的基本信息,包括姓名,性别,联系方式,证件号码的查询。
(4)取票信息管理功能
用于取票信息的管理,包括对航班基本信息,航班编号和旅客的基本信息,旅客姓名,座位号,取票时间的查询。
(5)退票信息管理功能
用于对退票信息的管理,包括对订单号,旅客姓名,联系方式,证件号码的查询。
1.2数据字典
1航班信息
定义了航班的所有信息组成有航班号,起飞地,目的地,起飞时间,票价
2机票
定义了机票的有关信息。
组成有航班号,座位号,座位信息,机票类型
3旅客订票信息
定义了旅客有关信息。
组成有旅客姓名,身份证号,性别,电话号码。
4取票和账单信息
定义了取票通知相关信息。
组成有旅客姓名,取票时间,座位号,航班号,机票类型。
5退票信息
定义了退票旅客的有关信息。
组成有旅客姓名,身份证号,订单号,电话号码。
1.3数据流图
订票取票
二概念结构设计
2.1概念结构设计的方法步骤
(1)方法
采用自底向上的方法,即自顶向下进行需求分析,在自底向上进行概念结构设计。
(2)步骤
第一步是实体属性图的设计,第二部是整体E-R图的设计。
2.2下面进行局部实体属性图的绘制
(1)航班信息实体属性图,如图2.1.1
图2.1.1航班信息实体属性图
(2)航班座位信息实体属性图,如图2.1.2
图2.1.2机票信息实体属性图
(3)旅客信息实体属性图,如图2.1.3
图2.1.3旅客信息实体属性图
(4)取票通知实体属性图,如图2.1.4
图2.1.4取票通知实体属性图
(5)退票信息实体属性图,如图2.1.5
图2.1.5退票信息实体属性图
2.2下面进行总体E-R图的绘制
总体E-R图如下图2.2.1
图2.2.1总体E-R图
三逻辑结构设计
(1)根据总的E-R图实体与实体之间的联系和一般的转换原则,得到如下关系模式
退票信息(订单号,旅客姓名,联系方式,身份证号),“订单号”为主码
旅客(旅客姓名,身份证号,联系方式,性别),“旅客姓名”为主码
航班信息(航班号,票价,起飞地。
目的地,起飞时间),“航班号”为主码
取票通知单(旅客姓名,取票时间,身份证号,航班号,座位号),“取票时间”为主码
机票信息(座位号,航班号,座位信息,机票类型),“座位信息”为主码。
退票信息_旅客(订单号,旅客姓名),(订单号,旅客姓名)为主码。
同时“订单号”为引用“退票信息”关系模式的订单号的外码,“旅客姓名”为引用“旅客”关系模式的旅客的外码。
旅客_取票通知和账单(旅客姓名,账单号),(旅客姓名,账单号)为主码。
同时“旅客姓名”为引用“旅客”关系模式的旅客姓名的外码,“账单号”为引用“取票通知和账单”关系模式的账单号的外码。
旅客_航班信息(旅客姓名,航班号),(旅客姓名,航班号)为主码。
同时“旅客姓名”为引用“旅客”关系模式的旅客姓名的外码,“航班号”为引用“航班信息”关系模式的航班号的外码。
机票信息_航班信息(座位号,航班号),(座位号,航班号)为主码。
同时“座位号”为引用“机票信息”关系模式的座位号的外码,“航班号”为引用“航班信息”关系模式的航班号的外码
(2)数据库的结
根据总体E-R图设计基本表结构,其相应的定义如下:
字段名
数据类型
长度
约束
描述
flightnumber
decimal
10
主键
航班号
takeoffplace
varchar
50
NotNull
起飞地
destination
varchar
50
NotNull
目的地
flighttime
time
10
NotNull
起飞时间
price
int
50
NotNull
票价
表3-1航班信息系统的结构
字段名
数据类型
长度
约束
描述
Seatnumber
decimal
50
主键
座位号
Flightnmber
decimal
50
NotNull
航班号
Seatmessage
varchar
50
NotNull
座位信息
Flighttickettype
varchar
50
NotNull
机票类型
表3-2机票信息表
字段名
数据类型
长度
约束
描述
Passagename
varchar
50
主键
旅客姓名
id
decimal
50
NotNull
身份证号
Telephone
decimal
50
NotNull
联系电话
sex
varchar
50
NotNull
性别
表3-3旅客信息表
字段名
数据类型
长度
约束
描述
Passagename
varchar
50
NotNull
旅客姓名
Gettickettime
time
50
主键
取票时间
Fightnumber
decimal
50
NotNull
航班号
Seatnumber
decimal
50
NotNull
座位号
Flighttickettype
varchar
50
NotNull
机票类型
表3-4取票和账单表
字段名
数据类型
长度
约束
描述
Orderform
decimal
50
主键
订单号
Passagename
varchar
50
NotNull
旅客姓名
telephone
decimal
50
NotNull
联系方式
id
varchar
50
NotNull
证件号码
表3-5退票信息表
四物理结构设计
数据库物理结构设计是指设计出数据库的物理结构模型,他是数据库在物理设备上的具体实现。
经过数据库的需求分析和概念模型设计,得到数据可的逻辑结构,现在可以把设计好的逻辑结构在SQL上建立数据库及数据表。
4.1表的建立和载入
需要明确数据库需要建几张表,以及每张表包括的属性。
在建立每张表的过程中,需要对表进行字段属性的设置。
在机票预订系统中,要建立5张表,分别是:
航班信息表,航班座位情况表,旅客订票信息表,取票和账单信息表,退票信息表。
4.2视图的建立
视图是查看数据库的一种方式。
视图提供了存储预定义的查询语句作为数据库中的对象一备以后使用的能力。
视图是一种逻辑对象,是一种虚拟表。
在机票预订系统中,我建立了两个师徒,分别是航班和座位视图旅客和取票视图。
他们分别通过飞机编号也就是flightnumber项和旅客信息也就是passagenumber项联系起来。
4.3索引的建立
索引是一个单独的,物理的数据库结构,他是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据项的逻辑指针清单。
五数据库的实施和代码的编制
登录sqlserver2005management在其中创建名为试卷管理系统的数据库,运用查询设计器创建。
/*创建库*/
createdatabaseplane_Data
useplane_Data
/*创建相应的表*/
创建航班信息表:
CREATETABLE航班信息(
flightnumberdecimalprimarykeyNOTNULLidentity,
takeoffplacevarchar(50)uniqueNULL,
destinationvarchar(50)notNULL,
pricebigintnotNULL
);
机票信息表:
CREATETABLE机票信息(
seatnumberbigintprimarykeyNOTNULLidentity,
flightnumberdecimal(10)uniqueNULL,
seatmessagebigintnotNULL
flightticketypevarchar(50)notnull
);
创建旅客信息表:
CREATETABLE旅客信息(
passagenameintprimarykeyNOTNULLidentity,
idvarchar(20)notNULL,
telephonenumbervarchar(20)notNULL,
sexvarchar(50)notNULL,
);
创建取票和账单信息表:
CREATETABLE取票和账单信息(
gettickettimebigintprimarykeyNOTNULLidentity,
passagenamevarchar(20)notNULL,
flightnumberdecimal(20)notNULL,
seatnumberdecimal(20)notNULL,
flightticketnumbervarchar(20)notNULL,
);
创建退票信息表:
CREATETABLE退票信息(
orderformintprimarykeyNotNULLidentity,
passagenamevarchar(20)uniqueNULL,
telephonenumberdecimalnotNULL,
idvarchar(20)notNULL
);
创建ddl触发器:
createtriggernotdelete
onallsever
fordrop_database
as
print‘不能删除数据’
rollback
go
分别在航班信息表,机票信息表,旅客信息表,取票通知,账单信息表这四个表建立触发器,对于表中的添加和修改数据提示错误信息。
航班信息触发器代码为:
createtriggeraon航班信息
forinsert,update
asrasiserror(‘不能添加和更新数据’,16,1)
rollbacktransaction
go
机票信息触发器代码为:
createtriggerbon机票信息
forinsert,update
asrasiserror(‘不能添加和更新数据’,16,1)
rollbacktransaction
go
旅客信息触发器代码为:
createtriggercon旅客信息
forinsert,update
asrasiserror(‘不能添加和更新数据’,16,1)
rollbacktransaction
go
取票通知和账单触发器代码为:
createtriggerdon取票通知和账单
forinsert,update
asrasiserror(‘不能添加和更新数据’,16,1)
rollbacktransaction
go
六、设计心得
通过此次课程设计,我对数据库原理与应用这门学科有了更深的认识,对其中的各类知识也有了初步的整合,更加认识到此门学科的重要性。
当然,我也认识到自己的不足,有许多学要我去改进的地方。
例如此次课程设计,在创建数据流图,数据字典,和最后的创建数据库的时候,人称姓名我做的比较混乱,这是因为前期没有想清楚整体的思路,对整体进行必要的构思,导致后期思想有些混乱。
整体上的设计我参考了一些别的同学的做法,对他们的做法进行了整合修改和扩充,再加上陈琳老师课程设计前所给我们讲的大体的思路概括,分成六个部分,最终达成此片初稿,但同时也存在一些问题。
由于前面需求分析不够准确,导致在进行编码后还在不断地修改需求,所以进行了不少的重复工作,延误了进度。
这个航空订票系统所需的数据比较繁琐,所以在进行数据和界面的结合需要相当大的功夫,处理更多的异常。
七参考资料
1《数据库原理与应用》第二版编著:
何玉洁梁琦
图2.1.5退票信息实体属性图
2.2下面进行总体E-R图的绘制
总体E-R图如下图2.2.1
图2.2.1总体E-R图
三逻辑结构设计
(1)根据总的E-R图实体与实体之间的联系和一般的转换原则,得到如下关系模式
退票信息(订单号,旅客姓名,联系方式,身份证号),“订单号”为主码
旅客(旅客姓名,身份证号,联系方式,性别),“旅客姓名”为主码
航班信息(航班号,票价,起飞地。
目的地,起飞时间),“航班号”为主码
取票通知单(旅客姓名,取票时间,身份证号,航班号,座位号),“取票时间”为主码