收藏 分销(赏)

机票预订系统优秀课程设计.doc

上传人:快乐****生活 文档编号:2685181 上传时间:2024-06-04 格式:DOC 页数:32 大小:845.54KB 下载积分:12 金币
下载 相关 举报
机票预订系统优秀课程设计.doc_第1页
第1页 / 共32页
机票预订系统优秀课程设计.doc_第2页
第2页 / 共32页


点击查看更多>>
资源描述
内蒙古科技大学 《数据库原理及应用》课程设计说明书 题 目:机票预订系统 学生姓名 学 号: 专 业:计算机科学和技术 班 级:4班 指导老师:余金林 内蒙古科技大学课程设计任务书 课程名称 数据库课程设计 设计题目 机票预订系统(题目等级60) 指导老师 余金林 时间 15周-16周 一、教学要求 1.从附录一中选择一个题目进行数据库应用系统设计。 2.功效设计:用Visual FoxPro,Visual Basic、PB等开发工具和数据库管理系统SQL-SEVER或Access制作一个小型管理系统。所设计小型管理系统应包含输入输出、查询、插入、删除等基础功效。设计课题能够从候选项目中选出,依据题目标基础需求,画出步骤图,编写程序,并写出具体设计说明书。(本项实际系统设计和实现可选,但必需有功效设计过程) 3.数据库设计: 依据数据库应用系统设计过程,经过需求分析和系统分析,进行数据库概念结构设计、逻辑结构设计等工作: l 概念结构设计E-R图 l 数据库逻辑结构设计是以表格形式说明数据库中有多个表,每个表表名和每个表各字段名,类型和约束(主、外码); l 确定表之间关联(一对一、一对多、多对多) l 利用数据库理论确定每个表最少属于3NF。 二、设计资料及参数 1、订单编号 2、航班编号、出发地、目标地、出发时间抵达时间 3、机票编号、座位号、机舱等级 4、旅客编号、姓名、性别、身份证号 三、设计要求及结果 1.根据数据库应用系统设计步骤进行数据库结构设计。 2.使用开放工具及数据库管理系统开放应用系统(可选)。 3.书写论文(具体要求见论文模板)。 四、提议参考资料 《数据库系统教程》(第三版) 施伯乐等著 高等教育出版社 目录 内蒙古科技大学课程设计任务书 2 目录 3 第一章 绪论 4 1.1课题介绍 4 1.2设计目标 4 1.3设计内容 5 第二章 需求分析 5 2.1 需求分析任务 5 2.2 需求分析过程 5 2.3数据字典和步骤图 8 第三章 ER模型图 12 3.1实体属性图 12 3.2总体ER模型图 15 第四章 逻辑结构设计 17 4.1 E-R图向关系模型转换 17 4.2 数据模型优化 17 第五章 功效实现 18 5.1查询功效实现 18 5.2多条件查询功效实现 18 5.3添加功效实现 19 5.4删除功效实现 19 5.5更改功效实现 20 5.6视图建立 21 第六章 源代码 22 第七章 总结 26 第八章 参考文件 27 附录 28 第一章 绪论 1.1课题介绍 伴随时代发展,计算系软件和系统成熟,机票假如简单方面预定成为一个影响多数人生活问题。而建立机票预定系统是一个很好处理措施。经过三年学习,我们对计算机方面知识有了很大提升,本着理论联络实际宗旨,经过学校提供这次课程设计实践机会,在指导老师帮助下,历经两周时间,我自行设计一套机票预定管理系统,在下面各章中,我将以这套机票预定系统信息系统为例,谈谈其开发过程和所包含到问题。 1.2设计目标 应用对数据库系统原理理论学习,经过上机实践方法将理论知识和实践愈加好结合起来,巩固所学知识。 实践和巩固在课堂教学中学习相关关系数据库原理相关知识和数据库系统建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必需得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护和系统评价通常过程,为毕业设计打下基础。 1.3设计内容 选择课题而且对课题相关信息有一定了解,对于我选课题来说,我必需了解机票预定系统结构和购票人信息还有机票相关信息。经过这些信息制成表格,输入到数据库中,使之能够进行查询、修改、删除而且和机票预定系统实施相同操作。需求分析阶段就是要研究我所作机票预定系统具体分类和实施过程流图。概念设计阶段要完成数据抽象和局部视图设计还有视图集成。逻辑结构设计阶段要把E-R图转化为关系模式。最终就是要运行和实施数据库。 第二章 需求分析 2.1 需求分析任务 调查机票预定系统应用领域包含内容,对包含到领域各个应用信息要求和操作要求进行具体分析,形成需求分析说明书。最关键是调查、搜集信息、分析购票人信息和飞机预定步骤。处理要求、数据安全性和完整性要求。 要求系统能有效、快速、安全、可靠和无误完成上述操作。并要求用户机界面要简单明了,易于操作,服务器程序利于维护。 2.2 需求分析过程 航空企业为方便旅客,需开发一个机票预定系统。为便于旅客由旅行社替换航空企业负责为旅客定票,旅行社把预定机票旅客信息,包含姓名、性别、工作单位、身份证号码、旅行时间、旅行目标地,输入机票预定系统用户端程序,系统经过查询航空企业内航班数据服务器后,为旅客安排航班,印出取票通知。旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。假如某方面出现问题,旅客能够持有效证件去飞机场退票。 要求系统能有效、快速、安全、可靠和无误完成上述操作。并要求用户机界面要简单明了,易于操作,服务器程序利于维护。 经过综合分析,确定了机票预订管理系统关键包含以下功效: (1)订单信息管理功效 关键是实现管理员对订票信息管理,包含对航班基础信息如航班号、起飞地、目标地、起飞时间等,旅客基础信息如旅客姓名、性别、电话号码、身份证号、座位号、订票数量添加、修改、删除和查询功效。 订单信息管理系统图2-1 (2) 旅客信息管理功效 关键是实现管理员对旅客部分基础信息,如旅客姓名、性别、电话号码、身份证号添加、修改、删除和查询功效。 旅客信息管理系统图2-2 (3) 航班信息管理功效 关键实现管理员对航班部分基础信息,航班号、起飞地、目标地、起飞时间添加、修改、删除查询和功效。 航班信息管理系统图2-3 (4) 机票信息管理功效 关键实现管理员对机票部分基础信息,如航班号、座位号、座位信息、机票类型添加、修改、删除和查询功效。 机票信息管理系统图2-4 (5) 退票信息管理功效 关键是实现管理员对退票信息管理,包含对订单号、旅客姓名、电话号码、身份证号添加、修改、删除和查询功效。 退票信息管理系统图2-5 2.3数据字典和步骤图 2.3.1数据字典 数据字典是用来规范描述数据具体内容工具,也是对数据汇总分析一个总结。通常来说,可为每个数据建立一张二维表。在本系统中,分别为旅客信息、旅客订票信息、航班机票信息、旅客和机票联络、退票信息建立了数据字典,具体如表2-1到表2-6所表示。 主键:蓝色 外键:下划线 表2-1 订单信息数据字典 字段名 描述 数据类型 长度 是否许可为空 Booking_Number 订单编号 VARCHAR 50 否 Flight_Number 航班编号 VARCHAR 20 否 Seat_Number 座位编号 VARCHAR 50 否 Passenger_Number 旅客编号 VARCHAR 50 否 Ticket_Number 机票编号 VARCHAR 50 否 Price 金额 VARCHAR 50 否 表2-2 航班信息数据字典 字段名 描述 数据类型 长度 是否许可为空 Flight-Number 航班编号 VARCHAR 50 否 Takeoff_Time 起飞时间 VARCHAR 50 否 Arrtival_Time 抵达时间 VARCHAR 50 否 Origin 出发地 VARCHAR 50 否 Destination 目标地 VARCHAR 50 否 Flight_Type 航班型号 VARCHAR 50 否 表2-3 机票信息数据字典 字段名 描述 数据类型 长度 是否许可为空 Ticket_Number 机票编号 VARCHAR) 50 否 Seat_Number 座位号 VARCHAR 50 否 Price 价格 VARCHAR 50 否 Takeoff_Time 出发时间 VARCHAR 50 否 Destination 目标地 VARCHAR 50 否 表2-4 旅客信息数据字典 字段名 描述 数据类型 长度 是否许可为空 Passenger_Number 旅客编号 VARCHAR 50 否 Passenger_Name 旅客姓名 VARCHAR 50 否 ID_Number 身份证号 VARCHAR 50 否 Sex 性别 VARCHAR 50 否 Telephone 电话 VARCHAR 50 否 表2-5 旅客和机票信息联络数据字典 字段名 描述 数据类型 长度 是否许可为空 Number 编号 VARCHAR 50 否 Ticket-Number 机票编号 VARCHAR 50 否 Passenger_Number 旅客编号 VARCHAR 50 否 表2-6退票信息数据字典 字段名 描述 数据类型 长度 是否许可为空 Order_Number 退票号 VARCHAR 50 否 Takeoff_Time 时间 VARCHAR 50 否 Booking_Number 订单编号 VARCHAR 50 否 2.3.2基础步骤图 机票预订系统步骤图2-6 第三章 ER模型图 3.1实体属性图 订单信息实体属性图3-1 航班信息实体属性图3-2 机票信息实体属性图3-3 用户和机票实体属性图3-4 旅客信息实体属性图3-5 座位信息实体属性图3-6 退票信息实体属性图3-7 3.2总体ER模型图 第四章 逻辑结构设计 4.1 E-R图向关系模型转换 订单信息(订单号,航班号,座位号,数量,类型) 退票信息(订单号,旅客编号,时间) 旅客信息(旅客编号,身份证号,姓名,性别,联络电话) 航班信息表(航班编号,起飞地,目标地,起飞时间) 座位信息表(座位号,机票类型) 4.2 数据模型优化 将转化关系模式进行优化,最终达成第三范式。 1、确定数据依靠 退票信息(订单号,旅客姓名,航班号)依据这个关系写出数据依靠 订单号→旅客姓名,订单号→座位号,订单号→航班号 旅客(旅客姓名,旅客编号,电话号,性别) 旅客姓名→身份证号,旅客姓名→电话号,旅客姓名→性别 航班信息表(航班号,起飞地,目标地,起飞时间) 航班号→起飞地,航班号→目标地,航班号→起飞时间 座位信息表(座位号,航班号,座位信息,机票类型) (座位号,航班号)→座位信息,(座位号,航班号,座位信息)→机票类型 2、 对各关系模式间数据依靠进行极小化处理,消除冗余 订单号→旅客编号,订单号→座位号,订单号→机票编号,订单号→机票编号 3、 看这些模式是否符合要求,确定是否要对一些模式进行合并或分解 最终分解成第三范式: (订单号,机票编号,机票类型)(订单号,旅客编号)(旅客编号,旅客姓名,性别)(旅客姓名,座位号)(航班号,座位号,机票类型)(航班号,起飞地,目标地,起飞时间) 第五章 功效实现 5.1查询功效实现 经过查询功效我们能够找到相关信息。 USE MARKET SELECT * FROM Seat 查询功效图5-1 5.2多条件查询功效实现 使用多条件查询功效能够增加查询限制条件,这么能够使查询结果更正确。 USE MARKET SELECT * FROM Passenger WHERE Sex='女'AND Passenger_Name='小青' 多条件查询功效图5-2 5.3添加功效实现 经过添加功效实现对数据增加,录入需要信息。 USE MARKET INSERT INTO Passenger VALUES('00001','大卫','1234566','男',''); 添加功效图5-3 5.4删除功效实现 能够实现对部分变更信息删除,从而能够达成一定效果。 USE MARKET DELETE FROM Booking_Ticket WHERE Booking_Number='B00001' 删除功效图5-4 5.5更改功效实现 经过更改功效我们能够对其信息修改,比如机票座位类型,目标地等做对应修改 USE MARKET SELECT * FROM Flight WHERE Flight_Number=A01 Update Flight SET Destination='呼和浩特' where Flight_Number=A01 SELECT * FROM Flight Where Flight_Number=A0 更改功效图5-5 5.6视图建立 视图就是创建一个能够实现添加创建续表,从而实现效果。 视图5-6 第六章 源代码 建库: create database [MARKET] on primary ( name = 'ticket_db', filename = 'E:\数据库课程设计\ticket.mdf', size = 5mb, maxsize = 30mb, filegrowth = 5% ) log on ( name = 'ticket', filename = 'E:\数据库课程设计\ticket_log.ldf', size = 1mb, maxsize = 10mb, filegrowth = 10% ) 建表: CREATE TABLE Booking_Ticket/--------订单信息表创建---------/ ( Booking_Number varchar(50) primary key,/--------设置主键---------/Flight_Number varchar(50) not null, Seat_Number varchar(50) not null, Passenger_Number varchar(50) not null, Amount varchar(50) not null, Price varchar(50) not null, Time varchar(50) not null, ) ; USE MARKET CREATE TABLE Flight/--------航班信息表创建---------/ ( Flight_Number varchar(50) primary key,/--------设置主键---------/ akeoff_Time varchar(50) not null, ArTrival_Time varchar(50) not null, Flight_Time varchar(50) not null, Origin varchar(50) not null, Destination varchar(50) not null, Flight_Type varchar(50) not null ); USE MARKET CREATE TABLE Passenger/--------旅客信息表创建---------/ ( Passenger_Number varchar(50) primary key,/--------设置主键---------/ Passenger_Name varchar(50) not null, ID_Number varchar(50) not null, Sex varchar(50) not null, Telephone varchar(50) not null ); USE MARKET CREATE TABLE Seat/--------座位信息表创建---------/ ( Seat_Number varchar(50) primary key,/--------设置主键---------/ Seat_Type varchar(50) not null, Ticket_Number varchar(50) not null, Destination varchar(50) not null ); USE MARKET CREATE TABLE Ticket ( Ticket_Number varchar(50) primary key,/--------设置主键---------/ Destination varchar(50) not null, Price varchar(50) not null, Takeoff_Time varchar(50) not null Seat_Number varchar(50) not null ); USE MARKET CREATE TABLE Relation/--------关系创建---------/ ( Number varchar(50) primary key ,/--------设置主键---------/ Ticket_Number varchar(50) not null, Passenger_Number varchar(50) not null, ); USE MARKET CREATE TABLE Refund/--------退票信息表创建---------/ ( Order_Number varchar(50) primary key,/--------设置主键---------/ Passenger_Number varchar(50) not null, Booking_Number varchar(50) not null, ); 设置外键: use MARKET go alter table Booking_Ticket add constraint fk_storeDI foreign key(Seat_Number) references Seat(Seat_Number) use MARKET go alter table Booking_Ticket add constraint fk_storeADI foreign key(Flight_Number) references Flight(Flight_Number) use MARKET go alter table Booking_Ticket add constraint fk_storeI foreign key(Passenger_Number) references Passenger(Passenger_Number) use MARKET go alter table Refund add constraint fk_storI foreign key(Passenger_Number) references Passenger(Passenger_Number) use MARKET go alter table Refund add constraint fk_sorI foreign key(Booking_Number) references Booking_Ticket(Booking_Number) use MARKET go alter table Booking_Ticket add constraint fk_sosI foreign key(Ticket_Number) references Ticket(Ticket_Number) use MARKET go alter table Relation add constraint fk_sowsI foreign key(Ticket_Number) references Ticket(Ticket_Number) use MARKET go alter table Relation add constraint fk_saI foreign key(Passenger_Number) references Passenger(Passenger_Number) use MARKET go alter table Booking_Ticket add constraint fk_saiI foreign key(Ticket_Number) references Ticket(Ticket_Number) 设置约束条件: use MARKET go alter table Passenger add check (Sex in('男','女'));/--------设置外键约束---------/ 数据插入: use MARKET INSERT INTO Flight VALUES('A01','12:00','14:30','2小时分','包头','北京','B0'); INSERT INTO Flight VALUES('A02','12:01','14:31','2小时分','包头','天津','B1'); INSERT INTO Flight VALUES('A03','12:02','14:32','2小时分','包头','上海','B2'); INSERT INTO Flight VALUES('A04','12:03','14:33','2小时分','包头','河北','B3'); INSERT INTO Flight VALUES('A05','12:04','14:34','2小时分','包头','南京','B4'); /--------航班信息插入---------/ use MARKET INSERT INTO Ticket VALUES('0001','北京','325','12:01','C001'); INSERT INTO Ticket VALUES('0002','天津','326','12:02','C002'); INSERT INTO Ticket VALUES('0003','上海','327','12:03','C003'); INSERT INTO Ticket VALUES('0004','河北','328','12:04','C004'); INSERT INTO Ticket VALUES('0005','南京','329','12:05','C005'); /--------机票信息插入---------/ INSERT INTO Passenger VALUES('00001','大卫','1234566','男',''); INSERT INTO Passenger VALUES('00002','小明','1234567','女',''); INSERT INTO Passenger VALUES('00003','小张','1234568','男',''); INSERT INTO Passenger VALUES('00004','小青','1234569','女',''); INSERT INTO Passenger VALUES('00005','小白','1234560','男',''); /--------旅客信息插入---------/ use MARKET INSERT INTO Booking_ticket VALUES('B00001','A01','C001','00001','1','325','2小时分','0001'); INSERT INTO Booking_ticket VALUES('B00002','A02','C002','00002','2','326','2小时分','0002'); INSERT INTO Booking_ticket VALUES('B00003','A03','C003','00003','2','327','2小时分','0003'); INSERT INTO Booking_ticket VALUES('B00004','A04','C004','00004','1','328','2小时分','0004'); INSERT INTO Booking_ticket VALUES('B00005','A05','C005','00005','1','329','2小时分','0005'); /--------订单信息插入---------/ use MARKET INSERT INTO Refund VALUES('D001','00001','0001'); INSERT INTO Refund VALUES('D002','00002','0002'); INSERT INTO Refund VALUES('D003','00003','0003'); INSERT INTO Refund VALUES('D004','00004','0004'); INSERT INTO Refund VALUES('D005','00005','0005'); /--------退票信息插入---------/ use MARKET INSERT INTO Relation VALUES('E001','0001','00001'); INSERT INTO Relation VALUES('E002','0002','00002'); INSERT INTO Relation VALUES('E003','0003','00003'); INSERT INTO Relation VALUES('E004','0004','00004'); INSERT INTO Relation VALUES('E005','0005','00005'); use MARKET INSERT INTO Seat VALUES('C001','A','0001','北京'); INSERT INTO Seat VALUES('C002','B','0002','天津'); INSERT INTO Seat VALUES('C003','C','0003','上海'); INSERT INTO Seat VALUES('C004','D','0004','河北'); INSERT INTO Seat VALUES('C005','E','0005','南京'); /--------座位信息插入---------/ 第七章 总结 此次数据库课程设计总共用了两个星期,总来说最困难地方是设计分析阶段,我选择是飞机票预定系统数据库设计。开始不太了解情况,为了愈加深入了解,我在网上登录多个大民航订票网站,我发觉只有支付过机票钱才能提交订单,所以我没有看到订单具体情况,只依据自己了解写订单情况。以后相关机票信息,所以我认为电子机票里应该包含了全部信息,订单信息里面也有旅客信息,航班信息,机票信息等。 原来机票还能够退票和改签,网上我知道能退票,我原来想再设计能够在网上改签功效,不过改签机票需要考虑很多原因,要考虑机票是否是打折,和所在舱位,还有是否换航空企业等,不是一个原因决定。假如时间再长部分,会仔细研究改签问题。 经过此次试验,愈加熟练掌握了相关工具,还能够熟练使用Visio来画ER图。也知道了怎样搜索信息,对于画图也增加了审美感。即使现在很多系统看似很好,不过还有很多需要完善地方,我们也要努力学习,有创新思想,来完善未来系统,即使现在是模拟阶段,但应该会走更远。 第八章 参考文件 1. 王英英 张少军 刘增杰. SQL SERVER 从零开始学〔D〕,清华大学出版社, 2. 数据库系统教程 (第三版) 施伯乐 丁宝康 汪卫 编著 高等教育出版社 附录 SQL编程规范 一、sql书写规范: 二、书写优化性能提议 三、其它经验性规则 一、sql书写规范: 1、sql语句全部表名、字段名全部首字母大写,系统保留 字、内置函数名、sql保留字大写。 2、连接符or、in、and、和=、<=、>=等前后加上一个空格。 3、对较为复杂sql语句加上注释,说明算法、功效。 注释风格:注释单独成行、放在语句前面。 (1) 应对不易了解分支条件表示式加注释; (2) 对关键计算应说明其功效; (3) 过长函数实现,应将其语句按实现功效分段加以概括性说明; (4) 每条SQL语句均应有注释说明(表名、字段名)。 (5) 常量及变量注释时,应注释被保留值含义(必需),正当取值范围(可选) (6) 可采取单行/多行注释。(-- 或 /* */ 方法) 4、SQL语句缩进风格 (1) 一行有多列,超出80个字符时,基于列对齐标准,采取下行缩进 (2) where子句书写时,每个条件占一行,语句令起一行时,以保留字或连接符开始,连接符右对齐。 5、多表连接时,使用表别名来引用列。 6、供别文件或函数调用函数,绝不应使用全局变量交换数据; 如例(1) 二、书写优化性能提议 1、避免嵌套连接。比如:A = B and B = C and C = D 2、where条件中尽可能降低使用常量比较,改用主机变量 3、系统可能选择基于规则优化器,所以将结果集返回数据量小表作为驱动表(from后边最终一个表)。 4、大量排序操作影响系统性能,所以尽可能降低order by和group by排序操作。 如必需使用排序操作,请遵照以下规则: (1) 排序尽可能建立在有索引列上。 (2) 如结果集不需唯一,使用union all替换union。 5、索引使用。 (1) 尽可能避免对索引列进行计算。如对索引列计算较多,请提请系统管理员建立函数索引。 (2) 尽可能注意比较值和索引列数据类型一致性。 (3) 对于复合索引,SQL语句必需使用主索引列 (4) 索引中,尽可能避免使用NULL。 (5) 对于索引比较,尽可能避免使用NOT=(!=) (6) 查询列和排序列和索引列次序保持一致 6、尽可能避免相同语句因为书写格式不一样,而造成数次语法分析。 7、尽可能使用共享SQL语句。 8、查询WHERE过滤标准,应使过滤统计数最多条件放在最前面。 9、任何对列操作全部将造成表扫描,它包含数据库函数、计算表示式等等,查询时要尽可能将操作移至等号右边。 10、in、or子句常会使用工作表,使索引失效;假如不产生大量反复值,能够考虑把子句拆开;拆开子句中应该包含索引。 三、其它经验性规则 1、尽可能少用嵌套查询。如必需,请用not exist替换not in子句。如例(2) 2、用多表连接替换EXISTS子句。如例(3) 3、少用DISTINCT,用EXISTS替换 如例(4) 4、使用UNION ALL、MINUS、INTERSECT提升性能 5、使用ROWID提升检索速度。对SELECT得到单行统计,需进行DELETE、UPDATE操作时,使用ROWID将会使效率大大提升。 6、使用优化线索机制进行访问路径控制。 7、使用cursor时,显
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服