1、内蒙古科技大学数据库原理及应用课程设计说明书题 目:机票预订系统学生姓名学 号:专 业:计算机科学与技术班 级:4班指导教师:余金林内蒙古科技大学课程设计任务书课程名称 数据库课程设计设计题目 机票预订系统(题目等级60)指导教师余金林时间15周-16周一、教学要求1从附录一中选择一个题目进行数据库应用系统设计。2功能设计:用Visual FoxPro,Visual Basic、PB等开发工具与数据库管理系统SQL-SEVER或Access制作一个小型管理系统。所设计的小型管理系统应包含输入输出、查询、插入、删除等基本功能。设计课题可以从候选的项目中选出,根据题目的基本需求,画出流程图,编写程
2、序,并写出详细的设计说明书。(本项实际系统设计与实现可选,但必须有功能设计过程)3数据库的设计:根据数据库应用系统设计过程,通过需求分析和系统分析,进行数据库的概念结构设计、逻辑结构设计等工作:l 概念结构设计的ER图l 数据库逻辑结构设计是以表格的形式说明数据库中有几个表,每个表的表名以及每个表的各字段名,类型和约束(主、外码);l 确定表之间的关联(一对一、一对多、多对多)l 运用数据库理论确定每个表至少属于3NF。二、设计资料及参数1、订单编号2、航班编号、出发地、目的地、出发时间到达时间3、机票编号、座位号、机舱等级4、旅客编号、姓名、性别、身份证号三、设计要求及成果1按照数据库应用系
3、统设计步骤进行数据库结构设计。2使用开放工具及数据库管理系统开放应用系统(可选)。3书写论文(具体要求见论文模板)。四、建议参考资料数据库系统教程(第三版) 施伯乐等著 高等教育出版社 目录内蒙古科技大学课程设计任务书2目录3第一章 绪论41.1课题简介41.2设计目的41.3设计内容5第二章 需求分析52.1 需求分析的任务52.2 需求分析的过程52.3数据字典与流程图8第三章 ER模型图123.1实体属性图123.2总体ER模型图15第四章 逻辑结构设计174.1 E-R图向关系模型的转换174.2 数据模型的优化17第五章 功能实现185.1查询功能的实现185.2多条件查询功能的实现
4、185.3添加功能的实现195.4删除功能的实现195.5更改功能的实现205.6视图的建立21第六章 源代码22第七章 总结26第八章 参考文献27附录28 第一章 绪论1.1课题简介随着时代的发展,计算系软件和系统的成熟,机票如果简单方面预定成为一个影响多数人生活的问题。而建立机票预定系统是一个很好的解决办法。经过三年的学习,我们对计算机方面的知识有了很大的提升,本着理论联系实际的宗旨,通过学校提供的这次课程设计实践的机会,在指导教师的帮助下,历经两周时间,我自行设计一套机票预定管理系统,在下面的各章中,我将以这套机票预定系统信息系统为例,谈谈其开发过程和所涉及到的问题。1.2设计目的应用
5、对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。1.3设计内容 选择课题并且对课题的相关信息有一定的了解,对于我选的课题来说,我必须了解机票预定系统的构造以及购票人的信息还有机票的相关信息。通过这些信息制成表格,输入到数据库中,使之能够进行查询、修改、删除并且与机票预定系统执行相同的操作。需求分
6、析阶段就是要研究我所作的机票预定系统的具体分类和实施过程流图。概念设计阶段要完成数据抽象与局部视图设计还有视图的集成。逻辑结构设计阶段要把E-R图转化为关系模式。最后就是要运行和实施数据库。 第二章 需求分析2.1 需求分析的任务调查机票预定系统应用领域涉及的内容,对涉及到领域的各个应用的信息要求和操作要求进行详细分析,形成需求分析说明书。最重要的是调查、收集信息、分析购票人信息和飞机预定流程。处理要求、数据的安全性与完整性要求。要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。2.2 需求分析的过程航空公司为方便旅客,需开发一个
7、机票预定系统。为便于旅客由旅行社代替航空公司负责为旅客定票,旅行社把预定机票的旅客信息,包括姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。如果某方面出现问题,旅客可以持有效证件去飞机场退票。要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。经过综合分析,确定了机票预订管理系统主要包括以下功能:(1)订单信息管理功能主要是实现管理员对订票信息的
8、管理,包括对航班基本信息如航班号、起飞地、目的地、起飞时间等,旅客基本信息如旅客姓名、性别、电话号码、身份证号、座位号、订票数量的添加、修改、删除和查询功能。 订单信息管理系统图2-1(2) 旅客信息管理功能 主要是实现管理员对旅客一些基本信息,如旅客姓名、性别、电话号码、身份证号的添加、修改、删除和查询功能。 旅客信息管理系统图2-2(3) 航班信息管理功能主要实现管理员对航班的一些基本信息,航班号、起飞地、目的地、起飞时间的添加、修改、删除查询和功能。 航班信息管理系统图2-3(4) 机票信息管理功能主要实现管理员对机票的一些基本信息,如航班号、座位号、座位信息、机票类型的添加、修改、删除
9、和查询功能。 机票信息管理系统图2-4(5) 退票信息管理功能主要是实现管理员对退票信息的管理,包括对订单号、旅客姓名、电话号码、身份证号的添加、修改、删除和查询功能。 退票信息管理系统图2-52.3数据字典与流程图2.3.1数据字典数据字典是用来规范描述数据具体内容的工具,也是对数据汇总分析的一个总结。一般来说,可为每个数据建立一张二维表。在本系统中,分别为旅客信息、旅客订票信息、航班机票信息、旅客与机票的联系、退票信息建立了数据字典,具体如表2-1到表2-6所示。主键:蓝色外键:下划线表2-1 订单信息的数据字典字段名描述数据类型长度是否允许为空Booking_Number订单的编号VAR
10、CHAR50否Flight_Number航班编号VARCHAR20否Seat_Number座位编号VARCHAR50否Passenger_Number旅客编号VARCHAR50否Ticket_Number机票的编号VARCHAR50否Price金额VARCHAR50否表2-2 航班信息的数据字典字段名描述数据类型长度是否允许为空Flight-Number航班编号VARCHAR50否Takeoff_Time起飞时间VARCHAR50否Arrtival_Time到达时间VARCHAR50否Origin出发地VARCHAR50否Destination目的地VARCHAR50否Flight_Type航
11、班型号VARCHAR50否表2-3 机票信息的数据字典字段名描述数据类型长度是否允许为空Ticket_Number机票编号VARCHAR)50否Seat_Number座位号VARCHAR50否Price价格VARCHAR50否Takeoff_Time出发时间VARCHAR50否Destination目的地VARCHAR50否表2-4 旅客信息的数据字典字段名描述数据类型长度是否允许为空Passenger_Number旅客编号VARCHAR50否Passenger_Name旅客姓名VARCHAR50否ID_Number身份证号VARCHAR50否Sex性别VARCHAR50否Telephone电
12、话VARCHAR50否 表2-5 旅客与机票信息的联系数据字典字段名描述数据类型长度是否允许为空Number编号VARCHAR50否Ticket-Number机票编号VARCHAR50否Passenger_Number旅客编号VARCHAR50否表2-6退票信息的数据字典字段名描述数据类型长度是否允许为空Order_Number退票号VARCHAR50否Takeoff_Time时间VARCHAR50否Booking_Number订单编号VARCHAR50否 2.3.2基本流程图 机票预订系统流程图2-6 第三章 ER模型图3.1实体属性图 订单信息实体属性图3-1 航班信息实体属性图3-2 机
13、票信息实体属性图3-3 客户与机票实体属性图3-4 旅客信息实体属性图3-5 座位信息实体属性图3-6 退票信息实体属性图3-73.2总体ER模型图第四章 逻辑结构设计4.1 E-R图向关系模型的转换订单信息(订单号,航班号,座位号,数量,类型)退票信息(订单号,旅客编号,时间)旅客信息(旅客编号,身份证号,姓名,性别,联系电话) 航班信息表(航班编号,起飞地,目的地,起飞时间) 座位信息表(座位号,机票类型)4.2 数据模型的优化将转化的关系模式进行优化,最终达到第三范式。1、确定数据依赖退票信息(订单号,旅客姓名,航班号)根据这个关系写出数据依赖订单号旅客姓名,订单号座位号,订单号航班号旅
14、客(旅客姓名,旅客编号,电话号,性别)旅客姓名身份证号,旅客姓名电话号,旅客姓名性别 航班信息表(航班号,起飞地,目的地,起飞时间)航班号起飞地,航班号目的地,航班号起飞时间座位信息表(座位号,航班号,座位信息,机票类型)(座位号,航班号)座位信息,(座位号,航班号,座位信息)机票类型2、 对各关系模式间数据依赖进行极小化处理,消除冗余 订单号旅客编号,订单号座位号,订单号机票编号,订单号机票编号3、 看这些模式是否符合要求,确定是否要对某些模式进行合并或者分解 最终分解成第三范式: (订单号,机票编号,机票类型)(订单号,旅客编号)(旅客编号,旅客姓名,性别)(旅客姓名,座位号)(航班号,座
15、位号,机票类型)(航班号,起飞地,目的地,起飞时间) 第五章 功能实现5.1查询功能的实现通过查询功能我们可以找到相关的信息。USE MARKET SELECT * FROM Seat 查询功能图5-15.2多条件查询功能的实现 使用多条件查询功能可以增加查询的限制条件,这样可以使查询的结果更准确。USE MARKETSELECT * FROM Passenger WHERE Sex=女AND Passenger_Name=小青 多条件查询功能图5-2 5.3添加功能的实现通过添加功能实现对数据的增加,录入需要的信息。USE MARKET INSERT INTO Passenger VALUE
16、S(00001,大卫,1234566,男,); 添加功能图5-35.4删除功能的实现可以实现对一些变更的信息删除,从而能够达到一定的效果。USE MARKET DELETE FROM Booking_Ticket WHERE Booking_Number=B00001 删除功能图5-45.5更改功能的实现通过更改功能我们可以对其信息修改,比如机票座位类型,目的地等做相应的修改USE MARKET SELECT * FROM Flight WHERE Flight_Number=A01Update FlightSET Destination=呼和浩特 where Flight_Number=A0
17、1SELECT * FROM Flight Where Flight_Number=A0 更改功能图5-55.6视图的建立视图就是创建一个可以实现添加创建的续表,从而实现效果。 视图5-6 第六章 源代码建库:create database MARKET on primary(name = ticket_db, = E:数据库课程设计ticket.mdf,size = 5mb,maxsize = 30mb, = 5%)log on(name = ticket, = E:数据库课程设计ticket_log.ldf,size = 1mb,maxsize = 10mb, = 10%)建表:CREAT
18、E 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 MARKETCREATE TABLE Fligh
19、t/-航班信息表的创建-/(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 MARKETCREATE TABLE Passenger/-旅客信息表的创建-/
20、(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 MARKETCREATE TABLE Seat/-座位信息表的创建-/(Seat_Number varchar(50) primary key,/-设置主键-/Seat_Type varchar(50) not null,Ticket_Numb
21、er varchar(50) not null,Destination varchar(50) not null);USE MARKETCREATE TABLE Ticket(Ticket_Number varchar(50) primary key,/-设置主键-/Destination varchar(50) not null,Price varchar(50) not null,Takeoff_Time varchar(50) not nullSeat_Number varchar(50) not null);USE MARKETCREATE TABLE Relation/-关系的创建-
22、/(Number varchar(50) primary key ,/-设置主键-/Ticket_Number varchar(50) not null,Passenger_Number varchar(50) not null,);USE MARKETCREATE TABLE Refund/-退票信息表的创建-/(Order_Number varchar(50) primary key,/-设置主键-/Passenger_Number varchar(50) not null,Booking_Number varchar(50) not null,);设置外键:use MARKETgoalt
23、er table Booking_Ticketadd constraint fk_storeDI foreign key(Seat_Number) references Seat(Seat_Number)use MARKETgoalter table Booking_Ticketadd constraint fk_storeADI foreign key(Flight_Number) references Flight(Flight_Number)use MARKETgoalter table Booking_Ticketadd constraint fk_storeI foreign key
24、(Passenger_Number) references Passenger(Passenger_Number)use MARKETgoalter table Refundadd constraint fk_storI foreign key(Passenger_Number) references Passenger(Passenger_Number)use MARKETgoalter table Refundadd constraint fk_sorI foreign key(Booking_Number) references Booking_Ticket(Booking_Number
25、)use MARKETgoalter table Booking_Ticketadd constraint fk_sosI foreign key(Ticket_Number) references Ticket(Ticket_Number)use MARKETgoalter table Relationadd constraint fk_sowsI foreign key(Ticket_Number) references Ticket(Ticket_Number)use MARKETgoalter table Relationadd constraint fk_saI foreign ke
26、y(Passenger_Number) references Passenger(Passenger_Number)use MARKETgoalter table Booking_Ticketadd constraint fk_saiI foreign key(Ticket_Number) references Ticket(Ticket_Number)设置约束条件:use MARKETgoalter table Passengeradd check (Sex in(男,女);/-设置外键约束-/数据的插入:use MARKETINSERT INTO Flight VALUES(A01,12:
27、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 MARKETINSERT INTO Ticket VALUES(0
28、001,北京,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 Pass
29、enger VALUES(00002,小明,1234567,女,);INSERT INTO Passenger VALUES(00003,小张,1234568,男,);INSERT INTO Passenger VALUES(00004,小青,1234569,女,);INSERT INTO Passenger VALUES(00005,小白,1234560,男,);/-旅客信息的插入-/use MARKETINSERT INTO Booking_ticket VALUES(B00001,A01,C001,00001,1,325,2小时分,0001);INSERT INTO Booking_ti
30、cket 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 MARKETINSERT IN
31、TO 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 MARKETINSERT INTO Relation VALUES(E001,0001,00001);INSERT INTO Relation VALUES(
32、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 MARKETINSERT INTO Seat VALUES(C001,A,0001,北京);INSERT INTO Seat VALUES(C002,B,0002,天津);INSERT INTO Seat VALUES(C003,C,0003,上海);INSERT INTO Seat V
33、ALUES(C004,D,0004,河北);INSERT INTO Seat VALUES(C005,E,0005,南京);/-座位信息的插入-/第七章 总结本次数据库的课程设计总共用了两个星期,总的来说最困难的地方是设计分析阶段,我选择的是飞机票预定系统的数据库设计。开始不太了解情况,为了更加深入的了解,我在网上登录几个大的民航订票网站,我发现只有支付过机票钱才能提交订单,所以我没有看到订单的具体情况,只根据自己的理解写的订单的情况。之后关于机票的信息,所以我觉得电子机票里应该包括了所有信息,订单信息里面也有旅客信息,航班信息,机票信息等。本来机票还可以退票和改签,网上我知道能退票,我本来想
34、再设计可以在网上改签的功能,但是改签机票需要考虑许多因素,要考虑机票是否是打折的,和所在舱位,还有是否换航空公司等,不是一个因素决定的。如果时间再长一些,会仔细研究改签的问题。通过本次实验,更加熟练的掌握了相关工具,还可以熟练的使用Visio来画ER图。也知道了如何搜索信息,对于画图也增加了审美感。虽然现在的许多系统看似很好,但是还有许多需要完善的地方,我们也要努力学习,有创新的思想,来完善未来的系统,虽然现在是模仿阶段,但应该会走的更远。 第八章 参考文献1. 王英英 张少军 刘增杰. SQL SERVER 从零开始学,清华大学出版社,20122. 数据库系统教程 (第三版) 施伯乐 丁宝康
35、 汪卫 编著 高等教育出版社附录SQL编程规范一、sql书写规范: 二、书写优化性能建议 三、其他经验性规则一、sql书写规范: 1、sql语句的所有表名、字段名全部首字母大写,系统保留字、内置函数名、sql保留字大写。 2、连接符or、in、and、以及、=等前后加上一个空格。 3、对较为复杂的sql语句加上注释,说明算法、功能。 注释风格:注释单独成行、放在语句前面。 (1) 应对不易理解的分支条件表达式加注释; (2) 对重要的计算应说明其功能; (3) 过长的函数实现,应将其语句按实现的功能分段加以概括性说明; (4) 每条SQL语句均应有注释说明(表名、字段名)。 (5) 常量及变量
36、注释时,应注释被保存值的含义(必须),合法取值的范围(可选) (6) 可采用单行/多行注释。(- 或 /* */ 方式) 4、SQL语句的缩进风格 (1) 一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进 (2) where子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符开始,连接符右对齐。 5、多表连接时,使用表的别名来引用列。 6、供别的文件或函数调用的函数,绝不应使用全局变量交换数据; 如例(1) 二、书写优化性能建议 1、避免嵌套连接。例如:A = B and B = C and C = D 2、where条件中尽量减少使用常量比较,改用主机变量 3、系统可能选
37、择基于规则的优化器,所以将结果集返回数据量小的表作为驱动表(from后边最后一个表)。 4、大量的排序操作影响系统性能,所以尽量减少order by和group by排序操作。 如必须使用排序操作,请遵循如下规则: (1) 排序尽量建立在有索引的列上。 (2) 如结果集不需唯一,使用union all代替union。 5、索引的使用。 (1) 尽量避免对索引列进行计算。如对索引列计算较多,请提请系统管理员建立函数索引。 (2) 尽量注意比较值与索引列数据类型的一致性。 (3) 对于复合索引,SQL语句必须使用主索引列 (4) 索引中,尽量避免使用NULL。 (5) 对于索引的比较,尽量避免使用
38、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、MINU
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。