航空客运订票系统课程设计(数据结构)_第1页
航空客运订票系统课程设计(数据结构)_第2页
航空客运订票系统课程设计(数据结构)_第3页
航空客运订票系统课程设计(数据结构)_第4页
航空客运订票系统课程设计(数据结构)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品文档欢迎下载X XX XX XX XX XX XX XX XX X计计算算机机技技术术系系工程名称: 航空客运订票系统 学生姓名: 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 查询航

2、班函数的功能测试.114.4 订票功能地测试.12致谢致谢.17参考文献参考文献.18附录:源程序清单附录:源程序清单.19精品文档欢迎下载1.1.系统需求分析系统需求分析1.1 问题分析这次的课程设计是设计一个航空系统。由于存储的数量较大且不固定,因此选择用链表来保存根本信息:终点站名、航班号、飞机号、飞行时间、乘员定额、余票量、已经订票的客户名单(包括姓名、订票量)、等候替补的客户名单(包括姓名、所需票量)等等。由于在航线这个主链表上,每个航班上的已经订票名单这个链表和等候替补的名单这个链表队列,所以建立一个十字交叉链表,在纵行上开辟一个链表存储所有航班的根本信息,再在各个航班节点横向展开

3、一个链表和一个链表队列,展开的链表存储已经订票的客户名单,展开的链表队列存储等候替补的客户名单。同时,由于预约人数无法预计,队列也应以链表作存储结构。系统主要实现的操作和功能是:添加航线、查询航线、订票功能、退票功能。要实现这些功能,首先要使程序能实现查找功能,在查找出到有效信息的前提之下,通过链表的赋值,更新信息和删除退票人信息,满足客户的要求。1.2 任务意义飞机场每天要接受大量的订票退票效劳,对于这些数量巨大的数据,需要一个专门的软件来进行管理和操作。软件至少需要具备的根本功能包括:接受订票,处理退票,查询航班信息等等。面对这些实际问题,航空客运系统的制作无疑要全面的考察一个学生的知识及

4、能力。在全面理解客户的需求下面,来进行设计出最能够满足客户的程序出来,并且能够根据不同的要求来将其进行改动,最能考察到对代码活用的程度。精品文档欢迎下载2.2. 数据结构设计及用法说明数据结构设计及用法说明 数据结构的存储结构,中间纵列,为各个航班的根本信息,用一链表存储,其中一个节点为一个航班,其中包括终点站名、航班号、飞机号、飞行时间、乘员定额、余票量、已经订票的客户名单(包括姓名、订票量)、等候替补的客户名单(包括姓名、所需票量)等等。横向是各个航班的情况,即从该指定的航班中用链表的形式横向存储这个航班的根本信息,纵向为已经订票了的客户信息和药等候替补的客户的信息,其中包括客户姓名和相应

5、的需票量。相应的存储结构如下struct Passenger char name20;int bnum; /bnum 记录某人买的票数struct Passenger *next;typedef struct Air /记录飞机信息int ticket; /飞机票数char des20; /des 记录飞机的终点char flight8; /flight 记录航班号int num; /记录飞机号Passenger *wait;Passenger *book;Time time;struct Air *next;AirPlane;精品文档欢迎下载3.3. 详细设计和编码详细设计和编码3.1.主菜

6、单进入主菜单,必须先录入航班信息,客户可以根据自己需要选择,选择自己想要的航班,然后进行一系列自己选择的操作,具体菜单流程图如下所示航空系统录入信息查询信息订票退票 图 3-1 主菜单功能模块图3.2.录入航空信息录入航空信息包括终点站名、航班号、飞机号、飞行时间、乘员定额,根据用户的需要选择航班,输出航班信息,如果可以再进行订票操作,录入航空信息的流程图如下图 3-2 录入航空信息流程图精品文档欢迎下载3.3 输出航空信息客户可以根据自己的需要选择是按目的地查询还是按航班查询,如果按航班查询,必须要知道航班号,如果按目的地查询,只需输入终点站,如果一个终点站有多个航班,客户可以根据自己的需要

7、选择一个航班进行操作,具体流程图如下。图 3-3 按航班输出信息的流程图精品文档欢迎下载图 3-4 按目的输出航空信息的流程图3.4 订票在客户订票前需要先查询航班是否存在,所以在订票的模块中会要求客户输入航班信息,再调用航班查询的函数,查询是否存在这个航班,如果存在这个航班,那么客户可以订票,客户在订票的时候,如果所需票量超过剩余票数,那么会提示客户是否需要排队候票,如果不排队候票,那么选择要么重新输入所需票量,要么退出订票。订票流程图如下图 3-5 订票流程图3.5 退票客户在退票操作时,也是要先输入是否存在那个航班,如果存在,就查询这个航班是否存在这个客户,如果不存在,就退票失败,如果存

8、在,那么可以退票,退票后,再查看是否满足候票数,如果满足那么把票补给候票人,如果不满足,就继续排队候补。退票流程图如下精品文档欢迎下载图 3-6 退票流程图精品文档欢迎下载4.4. 实验结果实验结果4.1 菜单函数的功能测试系统运行后就会自动显示菜单 1.录入航班,2.查询航班,3.订票,4,退票,当用户选择相应的代号就进入相应的功能模块 图 4-1 菜单函数的截图4.2 录入函数的功能测试进入当这个录入模块,用户需要先录入航班的信息,包括航班号,总的票数,目的地,起飞时间,和飞机号,当录入一个航班信息,会提示是否继续录入精品文档欢迎下载 图 4-2 录入航空信息的截图精品文档欢迎下载4.3

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

13、de#include#include#includestruct Time /定义飞机的起飞时间char year8,month8,day8,hour8,minute8,second8;void InputDate(Time &time) /输入飞机的起飞时间coutPlease input the date(year month day hour minute):time.yeartime.monthtime.daytime.hourtime.minutetime.second;void PrintDate(const Time time) /输出飞机的起飞时间couttime.ye

14、ar.time.month.time.day.time.hour:time.minute:name,s-name);void PrintPassenger(const Passenger *p)cout*endl;cout姓名 订票量endl;cout*endl;coutname bnumendl;typedef struct Air /记录飞机信息int ticket; /飞机票数char des20; /des 记录飞机的终点char flight8; /flight 记录航班号int num; /记录飞机号精品文档欢迎下载Passenger *wait;Passenger *book;T

15、ime time;struct Air *next;AirPlane;void Waitticket(Passenger *&p) /输入候补乘客的信息Passenger *w=p;Passenger *s=new Passenger;couts-name;couts-bnum;void DisplayWait(Passenger *passenger) /输出要候补的乘客的信息Passenger *q=passenger-next;if(!q)return;while(q)coutName BNumendl;coutsetiosflags(ios:left)setw(10)names

16、etw(10)bnumnext;精品文档欢迎下载int InputPassenger(Passenger *&passenger,AirPlane *flight) /输入订票的乘客的信息Passenger *p=passenger;Passenger *q=new Passenger;Passenger *s=flight-wait;Passenger *w;int chioce;coutq-name;coutq-bnum;if(q-bnumflight-ticket)cout现在航班中还有:ticket张票!ticket)cout请选择:1.将差票转为候补票 2.只定剩余票 3.取

17、消订票chioce;if(chioce=1)w=new Passenger;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;else if(chioce=2)q-next=p-next;p-next=q;q-bnum=flight-ticket;flight-ticket=0;elsereturn NULL;elseq-next=s-next;s-next=q;精品文档欢

18、迎下载elseq-next=p-next;p-next=q;flight-ticket-=q-bnum;void DisplayClient(Passenger *p) /输出已经订票的乘客信息Passenger *q=p-next;if(!q)return;while(q)coutName BNumendl;coutsetiosflags(ios:left)setw(10)namesetw(10)bnumnext;void CreatFlight(AirPlane *&flight) /创立一个空的结点AirPlane *s=new AirPlane;s-next=NULL;精品文档

19、欢迎下载flight=s;Passenger *p=new Passenger;p-next=NULL;flight-book=p;Passenger *w=new Passenger;w-next=NULL;flight-wait=w;AirPlane* Displayflight(AirPlane *flight,char f) /按航线输出航班AirPlane *p=flight-next;int flag=0;while(p)if(strcmp(p-flight,f)=0)system(cls);cout*endl;coutNum Destination Flight Ticket T

20、ime endl;coutsetiosflags(ios:left)setw(10)numsetw(10)dessetw(10)flightsetw(10)ticket;PrintDate(p-time);精品文档欢迎下载coutn*endl;cout*已定乘客*book);cout*候补乘客*wait);return p;p=p-next;return NULL;void Displaydes(AirPlane *flight,char d) /按目的地输出航班AirPlane *p=new AirPlane;p=flight;int flag=0;while(p)if(strcmp(p-d

21、es,d)=0)flag=1;coutNum Destination Flight Ticket Time endl;coutsetiosflags(ios:left)setw(10)numsetw(10)des精品文档欢迎下载setw(10)flightsetw(10)ticket;PrintDate(p-time);coutnext;if(flag=0)coutSorry!not find the information!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;coutif continue,please choose(y/Y),if not,please input choose(N/n):ch;system(pause);p-next=s-next;s-next=p;while(ch=y|ch=Y);void Display(AirPlane *flight) /输出航线int n;cout1.按终点查询 2.按航班查询endl;coutn;精品文档欢迎下载if(n=1)char d20;coutplease input the destination you woul

23、d look up:d;Displaydes(flight,d);else if(n=2)coutf;Displayflight(flight,f);elsecoutinput is error!null);void Book(AirPlane *&flight) /订票AirPlane *p=new AirPlane,*f=NULL;char line20;coutline;精品文档欢迎下载system(cls);f=Displayflight(flight,line); /查找乘客要订的航班是否存在if(f)InputPassenger(f-book,f);Displayflight(flight,line);elsecoutSorry! Not find the flight!endl;void ReturnTicket(AirPlane *&flight) /退票AirPlane *p=new AirPlane,*f=NULL;char line20;char name20;coutline;f=Displayflight(flight,line);if(f)Passenger *p=f-book-next;P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论