收藏 分销(赏)

机票预订系统专业课程设计.doc

上传人:a199****6536 文档编号:2685413 上传时间:2024-06-04 格式:DOC 页数:34 大小:845.54KB 下载积分:12 金币
下载 相关 举报
机票预订系统专业课程设计.doc_第1页
第1页 / 共34页
机票预订系统专业课程设计.doc_第2页
第2页 / 共34页


点击查看更多>>
资源描述
内蒙古科技大学 《数据库原理及应用》课程设计阐明书 题 目:机票预订系统 学生姓名 学 号: 专 业:计算机科学与技术 班 级: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 = 'F:\数据库课程设计\ticket.mdf', size = 5mb, maxsize = 30mb, filegrowth = 5% ) log on ( name = 'ticket', filename = 'F:\数据库课程设计\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 

客服