ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:196.10KB ,
资源ID:5325677      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5325677.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(航空售票系统报告书.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

航空售票系统报告书.docx

1、航空售票系统报告书数据结构课程设计报告选题名称: 航空售票管理系统 系(院): 计算机工程学院 专 业: 计算机科学与技术 班 级: 姓 名: 学号: 指导教师: 学年学期: 2009 2010 学年 第 2 学期 2010 年 6 月 19 日设计任务书课题名称航空售票系统设计目的本课程设计的目的是通过实践使学生经历一个数据结构系统开发的全过程并受到一次综合的训练,以便能较全面地理解、掌握和综合运用所学的知识去分析、解决实际问题。实验环境1、Windows2000及以上2、Visual C+ 6.0任务要求任务:完成航空售票系统的分析设计工作,并选用适当的开发工具完成系统的开发。要求:1、完

2、成需求分析;2、进行数据结构的概要设计;3、进行数据结构的详细设计;4、进行应用程序设计;5、编程实现;6、调试分析。工作进度计划序号起止日期工 作 内 容12010.6.142010.6.15需求分析22010.6.152010.6.16概要设计32010.6.162010.6.17详细设计与实现42010.6.172010.6.18调试与操作说明52010.6.182010.6.19课程设计报告纂写指导教师(签章): 2010 年 6 月 25 日 摘要:在当今经济和商务交往日益频繁的状况下,航空服务行业正面临客流量骤增的压力。越来越多的航空公司都认识到传统的售票方法已经不能适合当今社会的

3、需要,必须借助先进的计算机信息技术对售票服务进行管理。“航空售票系统”可以说是整个航空售票计算机信息系统的中心子系统,因为航空售票最主要的功能就是为旅客提供订票退票。设计航空售票这样一个系统,可以涉及到大多数数据结构的重要对象、重要功能和特性,比如:储存过程、查找过程等。由此,通过这个课程设计可以加深对这些数据结构知识的学习、理解,积累在实际工程应用中运用各种数据结构对象的经验,使学生掌握使用应用软件开发工具开发数据结构系统的基本方法。在实用性方面,航空售票系统是很普遍的一种应用,选择该系统作为课程设计也可以为学生以后可能遇到的实际开发提供借鉴。关键词:航空系统;售票管理;数据结构1需求分析本

4、次课程设计利用C+语言来编写,其运行平台为Visual C+。1. 问题描述:航空客运订票业务活动包括:查询航线、客票预定和办理退票等。设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。2. 基本要求:任务:通过此系统可以实现如下功能:(1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)(2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);(3)可以输入起飞抵达城市,查询飞机航班情况;(4)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可

5、选择航班;(5)退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。(6)修改航班信息:当航班信息改变可以修改航班数据文件。3. 查询能实现的操作和功能如下:查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。若需要,可登记排队候补;承办退票业务:根据客户的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队,首先询问排在第

6、一的客户,若所退票数满足他的要求,则为他办理订票手续,否则一次询问其他排队候补的客户。2概要设计本次数据结构课程设计所制作的航空客运订票系统主要运用了链式存储结构来实现。我们知道线性表以及队列的存储结构主要用到了链式结构存储,因而此系统也应考虑使用这两种存储方式。在航班信息方面,要对航班进行添加、删除、查询等操作。由于链表的优势就在于便于进行添加、删除和查找,因此有关航班信息方面的部分可以由链表来实现。但是为了更便于添加和删除,因此为链表设置了首、尾指针。而对于订票、退票来说,其中要讲一个先来后到的道理。基于这一点的要求,队列的存储方式再合适不过了,其“先进先出”的特点恰恰可以满足订票、退票的

7、要求。在结构定义方面,本系统定义了四个结构,分别用来储存航班信息、乘客信息、替补乘客信息以及结点信息。而在航班信息定义中,分别将乘客信息、替补乘客信息引入其中,以供储存乘客信息和替补乘客信息。根据本系统中的功能以及所定义的数据结构,特编写如下函数:1. FlightInsert() /添加航班信息2. FlightSearch() /查询航班信息3. FlightRework() /修改航班信息4. FlightBuyticket() /订票5. FlightCancelticket()/退票6. Buyticket(PFlight q,int Ticket_Amount) /利用队列买票7.

8、 Buyreplace(PFlight q,int Ticket_Amount,int n)/利用队列进行替补买票8. MainMenu() /主菜单9. Main() /主函数各个函数间的关系如下:图2.1 函数关系图3详细设计本航空客运售票系统分为两个文件:一个是头文件Ticket.h,用来存放系统中数据结构的结构体,以及所要到的方法及函数。另一个是C+文件 Ticket.cpp.,本文件主要是本系统的主函数,其中调用头文件,来实现系统的功能。具体实现如下:3.1 头文件Ticket.h,:在前文中已介绍过,本文件是头文件,将售票系统的数据中的结构体定义在其中,并且利用所定义的结构来编写函

9、数、方法来实现系统的功能。首先采用链式结构,定义出三个结构体:1. 航线的结构体:typedef struct Flight /航线信息 char Des10; /终点站名 char FlightNum10; /航班号 char PlaneNum10; /飞机号 char Week; /飞行周日 int Ration; /乘员定额 int FreeTicket; /剩余票数 float Price3; /舱位等级的价格 int ReplacePas; /候补乘客数 Replace *ReplName; /该航班的候补乘客名单 Customer *CustName; /该航班的已定票乘客名单 s

10、truct Flight *next; /指示下一航线结点 Flight,*PFlight;2. 乘客结构体:typedef struct Customer /已定票乘客信息 char Name10; /姓名 int Amount; /定票数 int Level; /舱位等级 int SeatNum; /座位号 char FlightNum10; /所定航班号 struct Customer *next;Customer;3. 替补乘客结构体:typedef struct Replace /替补乘客信息 char Name10; /姓名 int Amount; /定票数 int Level;

11、/舱位等级 char FlightNum10; /所定航班号 struct Replace *next;Replace;以上三个结构体是以乘客信息、替补乘客信息为基础、再此之上有定义了飞机航线的结构体以及结点类型指针的结构体。并在后者结构中引入了前两种结构体。并且单独定义了两个指向Flight的指针,作为头只指针和尾指针:Flight *head; /建立航线头结点Flight *rear; /建立航线尾结点 以及乘客队列的指针: Customer *Cusrear; Replace *Reprear;为今后的程序设计奠定了基础。其次,编写实现各个功能的函数与方法:1. MainMenu()系

12、统主菜单此函数设计了本系统的界面,是程序的开始,具体实现如下:void MainMenu() char i=0; while (i!=7) cout*航空公司客运定票系统V1.0*endl; cout * 1、增加航线 4、预订机票 *endl; cout * 2、查询航线 5、退订机票 *endl; cout * 3、修改航线 6、清空系统 *endl;cout * 7、退出系统 *endl; cout*i; switch(i) case 1:FlightInsert();break; case 2:FlightSearch();break; case 3:FlightRework();br

13、eak; case 4:FlightBuyticket();break; case 5:FlightCancelticket();break; case 6:Flightclean();break; case 7:;break; default:couterrorn;break; 2. void FlightInsert()添加航班信息此方法主要用到链表的思想,类似于链表中的插入属性。与一般链表不同的是,此方法设置了一个表尾指针,便于航班信息的添加,具体实现如下:void FlightInsert() /添加航班信息 Flight *p; p=new Flight; cout请输入终点站名:p

14、-Des; cout请输入航班号:p-FlightNum; cout请输入飞机号:p-PlaneNum; cout请输入飞行周日:p-Week; cout请输入乘员定额:p-Ration; p-FreeTicket=p-Ration; cout请输入舱位等级的价格:endl; cout头等舱价格p-Price0; cout普通舱价格p-Price1; cout经济舱价格p-Price2; p-ReplName=new Replace; p-CustName=new Customer; p-CustName-next=NULL; p-ReplName-next=NULL; p-ReplacePa

15、s=0; rear-next=p; rear=p; rear-next=NULL;3. FlightLookup()查询航班信息其实,查询航班的原理与删除原理相似,最中心的环节就是现对指定的航班进行定位。与删除不同的是,查询不涉及到指针的变换,仅仅输出要查询的信息就可以了,具体实现如下:void FlightLookup() /查询航班 Flight *p,*q; char FlightNum10; p=head; int i=0; while (i!=1) cout请输入需要查询的航班号:FlightNum;while (p-next&strcmp(p-next-FlightNum,Flig

16、htNum) p=p-next; q=p-next; if (q=NULL) cout对不起不存在此航班endl; else cout航班号:FlightNumendl; cout飞机号:PlaneNumendl; cout目的地:Desendl; cout飞行周日:Weekendl; cout成员定额:Rationendl; cout剩余票数:FreeTicketendl; cout候补乘客数:ReplacePasendl; cout头等舱价格:Price0endl; cout普通舱价格:Price1endl; cout经济舱价格:Price2endl; cout1、返回主菜单 2、继续i;

17、 4. FlightRework()修改航线信息在修改航线信息方面,中心思想依旧类似于删除和查找。只不过定位到所需信息之后要做的是重新给这些信息赋值。在功能方面,为了使用户便于操作,因此需要一个界面来使程序更直观化一些,具体实现如下:void FlightRework() /修改航线信息 int Customer_Number ; Flight *p,*q; char FlightNum10; char i=0; p=head; cout请输入需要修改的航班号:FlightNum; while (p-next&strcmp(p-next-FlightNum,FlightNum) p=p-nex

18、t; q=p-next; if (q=NULL) cout对不起不存在此航班endl; else while(i!=9) cout *请输入需要修改的数据*endl; cout *1、航班号 2、飞机号 *endl; cout *3、目的地 4、飞行周日 *endl; cout *5、成员定额 6、头等舱价格*endl; cout *7、普通舱价格 8、经济舱价格*endl; cout * 9、退出 *endl; cout *i; switch(i) case 1:cout请输入航班号:q-FlightNum;break; case 2:cout请输入飞机号:q-PlaneNum;break;

19、 case 3:cout请输入目的地:q-Des;break; case 4:cout请输入飞行周日:q-Week;break; case 5:cout请输入乘员定额:Ration-q-FreeTicket;cinq-Ration;q-FreeTicket=q-Ration-Customer_Number;break; case 6:cout请输入头等舱价格:q-Price0;break; case 7:cout请输入普通舱价格:q-Price1;break; case 8:cout请输入经济舱价格:q-Price2;break; case 9: break; default:couterro

20、rn;break; 5. FlightBuyTicket()订票订票是本系统的核心功能,本系统的一切功能都是围绕“订票”这个关键词来进行的。用户确定所要乘坐的航班之后,进行订票,如果航班中的空余票数大于用户所要订的票数,则订票成功。否则询问用户是否进入候补乘客名单。其原理是运用链表的来添加乘客信息,运用队列来使替补乘客入队。其中,还调用了另外两函数:BuyTicket()和Buyreplace()来实现订票成功和进入替补乘客名单。具体实现如下:void FlightBuyTicket() /订票 int Ticket_Amount; void BuyTicket(PFlight ,int );

21、 void Buyreplace(PFlight ,int ,int ); Flight *p,*q; char Des10; int i=2; while (i!=1) cout请输入目的地:Des; p=head; while (p-next&strcmp(p-next-Des,Des) p=p-next; q=p-next; if (q=NULL) cout对不起不存在此航班endl; else while(i!=1) cout输入需要够买的票数Ticket_Amount; while(Ticket_Amount=0) cout请输入一个非零数:Ticket_Amount; if (Ti

22、cket_AmountFreeTicket) BuyTicket(q,Ticket_Amount); /买票,详细介绍见下文 else int n; cout剩余票数小于定票数,是否需要列入候补名单?(1、是 2、否)n; Buyreplace(q,Ticket_Amount,n); /进入替补名单,详细介绍见下文 cout1、返回主菜单 2、继续i; 6. FlightCancelTicket()退票作为人性化的航空客运订票系统,不但要实现订票,还要实现退票。在退票方面,仍旧是利用链表,将乘客信息删除。但删除之后,如若有替补乘客,还要使其依照进入替补乘客的队列的次序出队来实现订票。其具体实现

23、代码如下:void FlightCancelTicket() /退票 void BuyTicket(PFlight ,int ); Flight *p,*q; Customer *h,*j; char FlightNum6; char Customer_Name10; int Replace1_Amount; /候补第一个人的定票数 int i; while (i!=1) cout请输入需要退定的航班号:FlightNum; p=head; while (p-next&strcmp(p-next-FlightNum,FlightNum) p=p-next; q=p-next; if (q=NU

24、LL) cout对不起不存在此航班endl; else while (i!=2) cout请输入姓名:Customer_Name; h=q-CustName; while (h-next&strcmp(h-next-Name,Customer_Name) h=h-next; j=h-next; if(j=NULL) cout查无此人next=NULL) /当删除最后一个结点 Cusrear=h; h-next=h-next-next; q-FreeTicket+=j-Amount; delete j; cout删除成功!ReplName-next!=NULL) Replace1_Amount=

25、q-ReplName-next-Amount; if (Replace1_AmountFreeTicket) Replace *rep; rep=q-ReplName-next; Customer *Cus2; Cus2=new Customer; Cus2-SeatNum=q-Ration-q-FreeTicket+1; strcpy(Cus2-FlightNum, q-FlightNum ); strcpy(Cus2-Name, rep-Name ); Cus2-Amount=rep-Amount; Cus2-Level=rep-Level; cout乘客Name已经成功买票 endl; cout座位号为:; for(int i=1;i=(r

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1