您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 绩效管理 > 孟永吉1071304115航空售票系统
目录1需求分析........................................................12概要设计........................................................23详细设计........................................................33.1头文件Ticket.h,:.......................................................33.2头文件Ticket.cpp,:....................................................194调试与操作说明.................................................19总结..........................................................25致谢..........................................................26参考文献........................................................2711需求分析本次课程设计利用C++语言来编写,其运行平台为VisualC++。1.问题描述:航空客运订票业务活动包括:查询航线、客票预定和办理退票等。设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。2.基本要求:任务:通过此系统可以实现如下功能:(1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)(2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);(3)可以输入起飞抵达城市,查询飞机航班情况;(4)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;(5)退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。(6)修改航班信息:当航班信息改变可以修改航班数据文件。3.查询能实现的操作和功能如下:查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。若需要,可登记排队候补;承办退票业务:根据客户的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队,首先询问排在第一的客户,若所退票数满足他的要求,则为他办理订票手续,否则一次询问其他排队候补的客户。22概要设计本次数据结构课程设计所制作的航空客运订票系统主要运用了链式存储结构来实现。我们知道线性表以及队列的存储结构主要用到了链式结构存储,因而此系统也应考虑使用这两种存储方式。在航班信息方面,要对航班进行添加、删除、查询等操作。由于链表的优势就在于便于进行添加、删除和查找,因此有关航班信息方面的部分可以由链表来实现。但是为了更便于添加和删除,因此为链表设置了首、尾指针。而对于订票、退票来说,其中要讲一个先来后到的道理。基于这一点的要求,队列的存储方式再合适不过了,其“先进先出”的特点恰恰可以满足订票、退票的要求。在结构定义方面,本系统定义了四个结构,分别用来储存航班信息、乘客信息、替补乘客信息以及结点信息。而在航班信息定义中,分别将乘客信息、替补乘客信息引入其中,以供储存乘客信息和替补乘客信息。根据本系统中的功能以及所定义的数据结构,特编写如下函数:1.FlightInsert()//添加航班信息2.FlightSearch()//查询航班信息3.FlightRework()//修改航班信息4.FlightBuyticket()//订票5.FlightCancelticket()//退票6.Buyticket(PFlightq,intTicket_Amount)//利用队列买票7.Buyreplace(PFlightq,intTicket_Amount,intn)//利用队列进行替补买票8.MainMenu()//主菜单9.Main()//主函数各个函数间的关系如下:3图2.1函数关系图3详细设计本航空客运售票系统分为两个文件:一个是头文件Ticket.h,用来存放系统中数据结构的结构体,以及所要到的方法及函数。另一个是C++文件Ticket.cpp.,本文件主要是本系统的主函数,其中调用头文件,来实现系统的功能。具体实现如下:3.1头文件Ticket.h,:在前文中已介绍过,本文件是头文件,将售票系统的数据中的结构体定义在其中,并且利用所定义的结构来编写函数、方法来实现系统的功能。首先采用链式结构,定义出三个结构体:1.航线的结构体:typedefstructFlight//航线信息Main()FlightInsert()FlightSearch()FlightRework()FlightBuyticket()FlightCancelticket()MainMenu()Buyticket()Buyreplace()4{charDes[10];//终点站名charFlightNum[10];//航班号charPlaneNum[10];//飞机号charWeek;//飞行周日intRation;//乘员定额intFreeTicket;//剩余票数floatPrice[3];//舱位等级的价格intReplacePas;//候补乘客数Replace*ReplName;//该航班的候补乘客名单Customer*CustName;//该航班的已定票乘客名单structFlight*next;//指示下一航线结点}Flight,*PFlight;2.乘客结构体:typedefstructCustomer//已定票乘客信息{charName[10];//姓名intAmount;//定票数intLevel;//舱位等级intSeatNum;//座位号charFlightNum[10];//所定航班号structCustomer*next;}Customer;3.替补乘客结构体:typedefstructReplace//替补乘客信息{charName[10];//姓名intAmount;//定票数5intLevel;//舱位等级charFlightNum[10];//所定航班号structReplace*next;}Replace;以上三个结构体是以乘客信息、替补乘客信息为基础、再此之上有定义了飞机航线的结构体以及结点类型指针的结构体。并在后者结构中引入了前两种结构体。并且单独定义了两个指向Flight的指针,作为头只指针和尾指针:Flight*head;//建立航线头结点Flight*rear;//建立航线尾结点以及乘客队列的指针:Customer*Cusrear;Replace*Reprear;为今后的程序设计奠定了基础。其次,编写实现各个功能的函数与方法:1.MainMenu()——系统主菜单此函数设计了本系统的界面,是程序的开始,具体实现如下:voidMainMenu(){chari='0';while(i!='7'){cout************航空公司客运定票系统V1.0********endl;cout*1、增加航线4、预订机票*endl;cout*2、查询航线5、退订机票*endl;cout*3、修改航线6、清空系统*endl;cout*7、退出系统*endl;cout*********************************************endl;cini;switch(i){6case'1':FlightInsert();break;case'2':FlightSearch();break;case'3':FlightRework();break;case'4':FlightBuyticket();break;case'5':FlightCancelticket();break;case'6':Flightclean();break;case'7':;break;default:couterror\n;break;}}}2.voidFlightInsert()——添加航班信息此方法主要用到链表的思想,类似于链表中的插入属性。与一般链表不同的是,此方法设置了一个表尾指针,便于航班信息的添加,具体实现如下:voidFlightInsert()//添加航班信息{Flight*p;p=newFlight;cout请输入终点站名:endl;cinp-Des;cout请输入航班号:endl;cinp-FlightNum;cout请输入飞机号:endl;cinp-PlaneNum;cout请输入飞行周日:endl;cinp-Week;cout请输入乘员定额:endl;cinp-Ration;p-FreeTicket=p-Ration;7cout请输入舱位等级的价格:endl;cout头等舱价格endl;cinp-Price[0];cout普通舱价格endl;cinp-Price[1];cout经济舱价格endl;cinp-Price[2];p-ReplName=newReplace;p-CustName=newCustomer;p-CustName-next=NULL;p-ReplName-next=NULL;p-ReplacePas=0;rear-next=p;rear=p;rear-next=NULL;}3.FlightLookup()——查询航班信息其实,查询航班的原理与删除原理相似,最中心的环节就是现对指定的航班进行定位。与删除不同的是,查询不涉及到指针的变换,仅仅输出要查询的信息就可以了,具体实现如下:voidFlightLookup()//查询航班{Flight*p,*q;charFlightNum[10];p=head;inti=0;while(i!=1){8cout请输入需要查询的航班号:endl;cinFlightNum;while(p-next&&strcmp(p-next-FlightNum,FlightNum)){p=p-next;}q=p-next;if(q==NULL){cout对不起不存在此航班endl;}else{cout航班号:q-FlightNumendl;cout飞机号:q-PlaneNumendl;cout目的地:q-Desendl;cout飞行周日:q-Weekendl;cout成员定额:q-Rationendl;cout剩余票数:q-FreeTicketendl;cout候补乘客数:q-ReplacePasendl;cout头等舱价格:q-Price[0]endl;cout普通舱价格:q-Price[1]endl;cout经济舱价格:q-Price[2]endl;cout1、返回主菜单2、继续endl;cini;}}4.FlightRework()——修改航线信息9在修改航线信息方面,中心思想依旧类似于删除和查找。只不过定位到所需信息之后要做的是重新给这些信息赋值。在功能方面,为了使用户便于操作,因此需要一个界面来使程序更直观化一些,具体实现如下:voidFlightRew
本文标题:孟永吉1071304115航空售票系统
链接地址:https://www.777doc.com/doc-6007808 .html