内蒙古科技大学《数据库原理及应用》课程设计说明书题目:机票预订系统学生姓名学号:专业:计算机科学与技术班级:4班指导教师:余金林内蒙古科技大学课程设计任务书一、教学要求1.从附录一中选择一个题目进行数据库应用系统设计。
2.功能设计:用Visual FoxPro,Visual Basic、PB等开发工具与数据库管理系统SQL-SEVER或Access制作一个小型管理系统。
所设计的小型管理系统应包含输入输出、查询、插入、删除等基本功能。
设计课题可以从候选的项目中选出,根据题目的基本需求,画出流程图,编写程序,并写出详细的设计说明书。
(本项实际系统设计与实现可选,但必须有功能设计过程)3.数据库的设计:根据数据库应用系统设计过程,通过需求分析和系统分析,进行数据库的概念结构设计、逻辑结构设计等工作:概念结构设计的E-R图数据库逻辑结构设计是以表格的形式说明数据库中有几个表,每个表的表名以及每个表的各字段名,类型和约束(主、外码);确定表之间的关联(一对一、一对多、多对多)运用数据库理论确定每个表至少属于3NF。
二、设计资料及参数1、订单编号2、航班编号、出发地、目的地、出发时间到达时间3、机票编号、座位号、机舱等级4、旅客编号、姓名、性别、身份证号三、设计要求及成果1.按照数据库应用系统设计步骤进行数据库结构设计。
2.使用开放工具及数据库管理系统开放应用系统(可选)。
3.书写论文(具体要求见论文模板)。
四、建议参考资料《数据库系统教程》(第三版)施伯乐等著高等教育出版社目录内蒙古科技大学课程设计任务书 (2)目录 (4)第一章绪论 ......................................................... 错误!未定义书签。
课题简介 (5)设计目的 (5)设计内容 (5)第二章需求分析 (6)需求分析的任务 (6)需求分析的过程 (6)数据字典与流程图 (8)第三章 ER模型图 (11)实体属性图 (11)总体ER模型图 (13)第四章逻辑结构设计 (13)E-R图向关系模型的转换 (13)数据模型的优化 (13)第五章功能实现 (14)查询功能的实现 (14)多条件查询功能的实现 (15)添加功能的实现 (15)删除功能的实现 (15)更改功能的实现 (15)视图的建立 (16)第六章源代码 (16)第七章总结 (16)第八章参考文献 (23)附录 (24)第一章绪论课题简介随着时代的发展,计算系软件和系统的成熟,机票如果简单方面预定成为一个影响多数人生活的问题。
而建立机票预定系统是一个很好的解决办法。
经过三年的学习,我们对计算机方面的知识有了很大的提升,本着理论联系实际的宗旨,通过学校提供的这次课程设计实践的机会,在指导教师的帮助下,历经两周时间,我自行设计一套机票预定管理系统,在下面的各章中,我将以这套机票预定系统信息系统为例,谈谈其开发过程和所涉及到的问题。
设计目的应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。
实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。
设计内容选择课题并且对课题的相关信息有一定的了解,对于我选的课题来说,我必须了解机票预定系统的构造以及购票人的信息还有机票的相关信息。
通过这些信息制成表格,输入到数据库中,使之能够进行查询、修改、删除并且与机票预定系统执行相同的操作。
需求分析阶段就是要研究我所作的机票预定系统的具体分类和实施过程流图。
概念设计阶段要完成数据抽象与局部视图设计还有视图的集成。
逻辑结构设计阶段要把E-R图转化为关系模式。
最后就是要运行和实施数据库。
第二章需求分析需求分析的任务调查机票预定系统应用领域涉及的内容,对涉及到领域的各个应用的信息要求和操作要求进行详细分析,形成需求分析说明书。
最重要的是调查、收集信息、分析购票人信息和飞机预定流程。
处理要求、数据的安全性与完整性要求。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。
并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。
需求分析的过程航空公司为方便旅客,需开发一个机票预定系统。
为便于旅客由旅行社代替航空公司负责为旅客定票,旅行社把预定机票的旅客信息,包括姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。
旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。
如果某方面出现问题,旅客可以持有效证件去飞机场退票。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。
并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。
经过综合分析,确定了机票预订管理系统主要包括以下功能:(1)订单信息管理功能主要是实现管理员对订票信息的管理,包括对航班基本信息如航班号、起飞地、目的地、起飞时间等,旅客基本信息如旅客姓名、性别、电话号码、身份证号、座位号、订票数量的添加、修改、删除和查询功能。
订单信息管理系统图2-1(2)旅客信息管理功能主要是实现管理员对旅客一些基本信息,如旅客姓名、性别、电话号码、身份证号的添加、修改、删除和查询功能。
旅客信息管理系统图2-2(3) 航班信息管理功能主要实现管理员对航班的一些基本信息,航班号、起飞地、目的地、起飞时间的添加、修改、删除查询和功能。
航班信息管理系统图2-3(4) 机票信息管理功能主要实现管理员对机票的一些基本信息,如航班号、座位号、座位信息、机票类型的添加、修改、删除和查询功能。
机票信息管理系统图2-4(5) 退票信息管理功能主要是实现管理员对退票信息的管理,包括对订单号、旅客姓名、电话号码、身份证号的添加、修改、删除和查询功能。
退票信息管理系统图2-5数据字典与流程图数据字典数据字典是用来规范描述数据具体内容的工具,也是对数据汇总分析的一个总结。
一般来说,可为每个数据建立一张二维表。
在本系统中,分别为旅客信息、旅客订票信息、航班机票信息、旅客与机票的联系、退票信息建立了数据字典,具体如表2-1到表2-6所示。
主键:蓝色外键:下划线表2-1 订单信息的数据字典表2-2 航班信息的数据字典表2-3 机票信息的数据字典表2-4 旅客信息的数据字典表2-5 旅客与机票信息的联系数据字典表2-6退票信息的数据字典基本流程图机票预订系统流程图2-6第三章 ER模型图实体属性图订单信息实体属性图3-1航班信息实体属性图3-2机票信息实体属性图3-3客户与机票实体属性图3-4旅客信息实体属性图3-5座位信息实体属性图3-6退票信息实体属性图3-7总体ER模型图第四章逻辑结构设计E-R图向关系模型的转换订单信息(订单号,航班号,座位号,数量,类型)退票信息(订单号,旅客编号,时间)旅客信息(旅客编号,身份证号,姓名,性别,联系电话)航班信息表(航班编号,起飞地,目的地,起飞时间)座位信息表(座位号,机票类型)数据模型的优化将转化的关系模式进行优化,最终达到第三范式。
1、确定数据依赖退票信息(订单号,旅客姓名,航班号)根据这个关系写出数据依赖订单号→旅客姓名,订单号→座位号,订单号→航班号旅客(旅客姓名,旅客编号,电话号,性别)旅客姓名→身份证号,旅客姓名→电话号,旅客姓名→性别航班信息表(航班号,起飞地,目的地,起飞时间)航班号→起飞地,航班号→目的地,航班号→起飞时间座位信息表(座位号,航班号,座位信息,机票类型)(座位号,航班号)→座位信息,(座位号,航班号,座位信息)→机票类型2、对各关系模式间数据依赖进行极小化处理,消除冗余订单号→旅客编号,订单号→座位号,订单号→机票编号,订单号→机票编号3、看这些模式是否符合要求,确定是否要对某些模式进行合并或者分解最终分解成第三范式:(订单号,机票编号,机票类型)(订单号,旅客编号)(旅客编号,旅客姓名,性别)(旅客姓名,座位号)(航班号,座位号,机票类型)(航班号,起飞地,目的地,起飞时间)第五章功能实现查询功能的实现通过查询功能我们可以找到相关的信息。
USE MARKETSELECT * FROM Seat查询功能图5-1多条件查询功能的实现使用多条件查询功能可以增加查询的限制条件,这样可以使查询的结果更准确。
USE MARKETSELECT * FROM Passenger WHERE Sex='女'AND Passenger_Name='小青'多条件查询功能图5-2添加功能的实现通过添加功能实现对数据的增加,录入需要的信息。
USE MARKETINSERT INTO Passenger VALUES('00001','大卫','1234566','男','');添加功能图5-3删除功能的实现可以实现对一些变更的信息删除,从而能够达到一定的效果。
USE MARKETDELETE FROM Booking_Ticket WHERE Booking_Number='B00001'删除功能图5-4更改功能的实现通过更改功能我们可以对其信息修改,比如机票座位类型,目的地等做相应的修改USE MARKETSELECT * FROM Flight WHERE Flight_Number=A01Update FlightSET Destination='呼和浩特' where Flight_Number=A01SELECT * FROM Flight Where Flight_Number=A0更改功能图5-5视图的建立视图就是创建一个可以实现添加创建的续表,从而实现效果。
视图5-6第六章源代码建库:create database[MARKET]on primary(name='ticket_db',filename='F:\数据库课程设计\',size= 5mb,maxsize= 30mb,filegrowth= 5%)log on(name='ticket',filename='F:\数据库课程设计\',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 MARKETCREATE 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 MARKETCREATE 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 MARKETCREATE 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 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/--------关系的创建---------/(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 MARKETgoalter 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(Passenger_Number)referencesPassenger(Passenger_Number)use MARKETgoalter table Refundadd constraint fk_storI foreign key(Passenger_Number)referencesPassenger(Passenger_Number)use MARKETgoalter table Refundadd constraint fk_sorI foreign key(Booking_Number)referencesBooking_Ticket(Booking_Number)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 key(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: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('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 MARKETINSERT 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 MARKETINSERT 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 MARKETINSERT 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 MARKETINSERT 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','南京');/--------座位信息的插入---------/第七章总结本次数据库的课程设计总共用了两个星期,总的来说最困难的地方是设计分析阶段,我选择的是飞机票预定系统的数据库设计。