1、精品文档欢迎下载XXXXXXXXXXXXXXXXXX计计算算机机技技术术系系工程名称:航空客运订票系统学生姓名:XX学号:班级:10801指导教师:年月日精品文档欢迎下载目目录录1.1.系统需求分析系统需求分析.31.1问题分析.31.2任务意义.32.2.数据结构设计及用法说明数据结构设计及用法说明.43.3.详细设计和编码详细设计和编码.53.1.主菜单.53.2.录入航空信息.53.3输出航空信息.63.4订票.73.5退票.74.4.实验结果实验结果.94.1菜单函数的功能测试.94.2录入函数的功能测试.94.3查询航
3、一个链表和一个链表队列,展开的链表存储已经订票的客户名单,展开的链表队列存储等候替补的客户名单。同时,由于预约人数无法预计,队列也应以链表作存储结构。系统主要实现的操作和功能是:添加航线、查询航线、订票功能、退票功能。要实现这些功能,首先要使程序能实现查找功能,在查找出到有效信息的前提之下,通过链表的赋值,更新信息和删除退票人信息,满足客户的要求。1.2任务意义飞机场每天要接受大量的订票退票效劳,对于这些数量巨大的数据,需要一个专门的软件来进行管理和操作。软件至少需要具备的根本功能包括:接受订票,处理退票,查询航班信息等等。面对这些实际问题,航空客运系统的制作无疑要全面的考察一个学生的知识及
5、的需票量。相应的存储结构如下structPassengercharname20;intbnum;/bnum记录某人买的票数structPassenger*next;typedefstructAir/记录飞机信息intticket;/飞机票数chardes20;/des记录飞机的终点charflight8;/flight记录航班号intnum;/记录飞机号Passenger*wait;Passenger*book;Timetime;structAir*next;AirPlane;精品文档欢迎下载3.3.详细设计和编码详细设计和编码3.1.主菜
7、选择一个航班进行操作,具体流程图如下。图3-3按航班输出信息的流程图精品文档欢迎下载图3-4按目的输出航空信息的流程图3.4订票在客户订票前需要先查询航班是否存在,所以在订票的模块中会要求客户输入航班信息,再调用航班查询的函数,查询是否存在这个航班,如果存在这个航班,那么客户可以订票,客户在订票的时候,如果所需票量超过剩余票数,那么会提示客户是否需要排队候票,如果不排队候票,那么选择要么重新输入所需票量,要么退出订票。订票流程图如下图3-5订票流程图3.5退票客户在退票操作时,也是要先输入是否存在那个航班,如果存在,就查询这个航班是否存在这个客户,如果不存在,就退票失败,如果存
9、查询航班函数的功能测试用户可以选择是按目的地查询信息或者是按航班查询信息,一个目的地可能有几个不同的航班,但是一个航班只能到一个目的地图4-3查询航班的截图精品文档欢迎下载4.4订票功能地测试用户在订票时需要输入航班,然后再查询是否存在这个航班,如果存在,那么可以订票,否那么不能订票,在订票的时候如果余票足够,那么可以成功订票,否那么提示用户是否需要排队候补如图4-4,订票成功可以将客户信息输出,图4-5,是余票缺乏,提示用户是否需要排队候补,图4-6,客户选择候补,那么会将客户信息输出图4-4订票成功的截图精品文档欢迎下载图4-5余票缺乏的截图图4-6候补成功
10、的截图精品文档欢迎下载4.5退票函数的功能测试用户在退票的时候需要输入航班,查找这个航班是否存在,如果存在,再查看退票信息是否正确,输出客户信息,退票后查询这个航班的剩余票数是否变化,是否足够候补人所需要的票数图4-7是查询这个航班的客户信息,图4-8是找到要退票的客户且输出客户信息,图4-9退票后查询这个航班,是否退票成功图4-7查询客户的截图精品文档欢迎下载图4-8找到要退票的客户的信息图4-9查询是否退票成功的截图精品文档欢迎下载5.5.体会体会这次课程设计我用链表设计的,我之前的想法是用一个结构体存储航班信息,再用一个结构体存储已经订票的客户信息,再用一个
11、结构体存储候补的客户信息,然后在已经订票的客户信息中定义一个指针存储已经订票的客户的航班,在候补的客户中定义一个指针存储已经排队候补的客户的航班,用这个指针和航班信息联系起来,再进行操作,可是在退票中链表就出现问题了,只要有人候补,那么已经订票的客户信息就输不出来,好不容易把候补搞好了,可是订票模块就出现问题了,总的来说是结构的问题,所以我就重新写了,用了十字链表的思想,不过在退票后,把退票给候补的客户有问题,就没有写这个了。这次课程设计写完后,我发现我对于指针是越来越糊涂了,原来在写作业的时候还有点清楚指针的指向,现在时越来越不清楚了。所以在存储空间上总是出现问题,叫同学帮我改了指针的指向,
12、才会好的,所以这次放假一定要把指针弄清楚,然后进一步完善这个程序。精品文档欢迎下载致谢致谢感谢XX老师的耐心指导,感谢XXX老师的悉心教导,感谢XXX同学的帮助。感谢在课程设计中对我帮助过得同学,谢谢你们对我的帮助,让我感受到到同学的友谊和老师对我的关爱精品文档欢迎下载参考文献1严蔚敏,吴伟民.数据结构C语言版.北京:清华大学出版社,1997.2刘大有,唐海鹰,等.数据结构.北京:高等教育出版社,2001.3黄扬铭.数据结构.北京:科学出版社,2001.4黄刘生.数据结构.北京:科学经济出版社,2000.精品文档欢迎下载附录:源程序清单#include#include#inclu
14、ar.time.month.time.day.time.hour:time.minute:name,s-name);voidPrintPassenger(constPassenger*p)cout*endl;cout姓名订票量endl;cout*endl;coutnamebnumendl;typedefstructAir/记录飞机信息intticket;/飞机票数chardes20;/des记录飞机的终点charflight8;/flight记录航班号intnum;/记录飞机号精品文档欢迎下载Passenger*wait;Passenger*book;T
15、imetime;structAir*next;AirPlane;voidWaitticket(Passenger*&p)/输入候补乘客的信息Passenger*w=p;Passenger*s=newPassenger;couts-name;couts-bnum;voidDisplayWait(Passenger*passenger)/输出要候补的乘客的信息Passenger*q=passenger-next;if(!q)return;while(q)coutNameBNumendl;coutsetiosflags(ios:left)setw(10)names
16、etw(10)bnumnext;精品文档欢迎下载intInputPassenger(Passenger*&passenger,AirPlane*flight)/输入订票的乘客的信息Passenger*p=passenger;Passenger*q=newPassenger;Passenger*s=flight-wait;Passenger*w;intchioce;coutq-name;coutq-bnum;if(q-bnumflight-ticket)cout现在航班中还有:ticket张票!ticket)cout请选择:1.将差票转为候补票2.只定剩余票3.取
17、消订票chioce;if(chioce=1)w=newPassenger;q-next=p-next;精品文档欢迎下载p-next=q;PassengerCpy(w,q);w-next=s-next;s-next=w;w-bnum=q-bnum-flight-ticket;q-bnum=flight-ticket;flight-ticket=0;elseif(chioce=2)q-next=p-next;p-next=q;q-bnum=flight-ticket;flight-ticket=0;elsereturnNULL;elseq-next=s-next;s-next=q;精品文档欢
18、迎下载elseq-next=p-next;p-next=q;flight-ticket-=q-bnum;voidDisplayClient(Passenger*p)/输出已经订票的乘客信息Passenger*q=p-next;if(!q)return;while(q)coutNameBNumendl;coutsetiosflags(ios:left)setw(10)namesetw(10)bnumnext;voidCreatFlight(AirPlane*&flight)/创立一个空的结点AirPlane*s=newAirPlane;s-next=NULL;精品文档
19、欢迎下载flight=s;Passenger*p=newPassenger;p-next=NULL;flight-book=p;Passenger*w=newPassenger;w-next=NULL;flight-wait=w;AirPlane*Displayflight(AirPlane*flight,charf)/按航线输出航班AirPlane*p=flight-next;intflag=0;while(p)if(strcmp(p-flight,f)=0)system(cls);cout*endl;coutNumDestinationFlightTicketT
20、imeendl;coutsetiosflags(ios:left)setw(10)numsetw(10)dessetw(10)flightsetw(10)ticket;PrintDate(p-time);精品文档欢迎下载coutn*endl;cout*已定乘客*book);cout*候补乘客*wait);returnp;p=p-next;returnNULL;voidDisplaydes(AirPlane*flight,chard)/按目的地输出航班AirPlane*p=newAirPlane;p=flight;intflag=0;while(p)if(strcmp(p-d
21、es,d)=0)flag=1;coutNumDestinationFlightTicketTimeendl;coutsetiosflags(ios:left)setw(10)numsetw(10)des精品文档欢迎下载setw(10)flightsetw(10)ticket;PrintDate(p-time);coutnext;if(flag=0)coutSorry!notfindtheinformation!next=NULL;w-next=NULL;p-book=b;p-wait=w;精品文档欢迎下载system(cls);coutp-flight;coutp-ticket
22、;coutp-des;InputDate(p-time);coutp-num;coutifcontinue,pleasechoose(y/Y),ifnot,pleaseinputchoose(N/n):ch;system(pause);p-next=s-next;s-next=p;while(ch=y|ch=Y);voidDisplay(AirPlane*flight)/输出航线intn;cout1.按终点查询2.按航班查询endl;coutn;精品文档欢迎下载if(n=1)chard20;coutpleaseinputthedestinationyouwoul
23、dlookup:d;Displaydes(flight,d);elseif(n=2)coutf;Displayflight(flight,f);elsecoutinputiserror!null);voidBook(AirPlane*&flight)/订票AirPlane*p=newAirPlane,*f=NULL;charline20;coutline;精品文档欢迎下载system(cls);f=Displayflight(flight,line);/查找乘客要订的航班是否存在if(f)InputPassenger(f-book,f);Displayflight(flight,line);elsecoutSorry!Notfindtheflight!endl;voidReturnTicket(AirPlane*&flight)/退票AirPlane*p=newAirPlane,*f=NULL;charline20;charname20;coutline;f=Displayflight(flight,line);if(f)Passenger*p=f-book-next;P