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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构航空客运订票系统Word文档格式.docx

1、void main()初始化;Do 输入指令;处理指令;while(指令!=”退出”);(2)已买票的乘客的链表模块实行对买票乘客信息的管理 (3)排队买票乘客的队列模快实行对排队买票乘客信息的管理 3、各模块之间的调用关系 Insertline()more()三、详细设计 1、为简化问题,本系统假设只有五条航线#define MAX 5/定义航线量的最大值 2、客户的存储信息:结点中保存的信息包括,订票量,舱位等级 typedef struct book char name10;/客户 int amount;/订票量 int level;/舱位等级 book*next;linklist;3、

2、航班的存储信息:结点中保存的信息包括终点站名,航班号,飞机号,飞行日期,乘员定额,余票量。struct airline char fin_name10;/终点站名 char air_name10;/航班号 char plane_name10;/飞机号 char date10;/飞行日期 int ticket_amount;/乘员定额 int ticket_left;/余票量 linklist*book;linkqueue wait;linkinfo;为了便调用乘员的信息和排队等候的客户信息,设置指针分别指向乘员和等候替补的客户。4、根据客户提出的要求查询航班信息 struct airline*

3、find_fin()/根据客户提出的终点站名输出航线信息 struct airline*info;char name10;int i=0;info=start;coutname;while(ifin_name)info+;i+;else break;if(iMAX)cout对不起,该航线未找到!n;else cout终点站名t航班号t飞机号t飞行日期t乘员定额tfin_name),若有相同的则输出该条航线的信息,若没有则返回。struct airline*find_air()/根据客户提出的航班号查询航班信息 struct airline*info;char number10;coutnumb

4、er;while(iair_name)info+;else return info;cout对不起,该航线未找到n;return 0;struct airline*find_plane()/根据客户提出的飞机号查询航班信息 struct airline*info;char a10;cout请输入飞机号:;cin.getline(a,10);while(iplane_name)info+;struct airline*find_date()/根据客户提出的飞行日期查询航班信息 struct airline*info;int i;coutdate)info+;5、办理订票业务 void order

5、()/办理订票业务 struct airline*info;int amount,level;int flag=0;cout请输入查询航班的式:选择航线查找式查找航线;coutamount;if(票数满足)将客户信息添加到已定票客户;else若满员或余票额少于订票额,询问客户是否需要进行排队等候 根据客户提出的要求先找到航班(search(),再根据客户的订票量与结点中所存储的信息(info-ticket_amount)比较,符合要求,则进行订票,询问客户的,舱位等级,在订票乘员域(addlink()中添加客户信息,得到该客户的座位号后,该航线余票量(info-ticket_left)应为之前

6、的余票量减去该客户的订票量。6、办理退票业务 void return_ticket()/退票 struct airline*info;node*t,*back,*m,*n;int level;linklist*p1,*p2,*head;coutbook;p1=head;while(p1)if(!strcmp(name,p1-name)break;p2=p1;p1=p1-next;if(没找到该客户的信息 L)coutbook=head;/将航线域指向订票单链表的头指针 m=(info-wait).front;/*m 指向排队等候队列的头结点 n=(info-wait).rear;/*n 指向排

7、队等候队列的尾结点 t=m;/*t 为当前满点条件的排队候补域 while(t)if(满足条件者为头结点)为在头结点存储的信息对应的客户订票 back=t;t=t-next;if(满足条件者不为头结点)为满足条件的客户订票 if(排队等候的客户里没有信息)break;根据客户提出的要求先找到航班(search(),再根据客户的与结点中所存储的信息(info-name)比较,符合要求,则进行退票,在订票乘员域(addlink()中删除客户信息,该航线余票量(info-ticket_left)应为之前的余票量加上该客户的订票量。再在排队等候的客户队列(queue()里寻找符合要求的客户(info-

8、ticket_left=info-wait.front-amount),进行订票。四、运行与测试 1、运行程序,显示菜单,见图 1 2、选择“1”浏览航线信息,见图 2 3、选择“2”浏览已订票客户信息,见图 3 4、选择“3”查询航线,见图 4 5、选择“4”办理订票业务,见图 5 6、选择“5”办理退票业务,见图 6 7、选择“6”查看剩余票数并排序。见图 7 8、选择“0”退出程序。五、总结与体会 课程设计是教学中的一个重要环节,对于我们学生来说是一次不可多得的锻炼机会。通过这次的课程设计,我们不仅可以系统地复习、巩固课程的知识,而且还可以学到如把书本上的知识运用于解决实际问题中来。通过

9、这学期的学习,我认为要学好数据结构这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固自我的知识。通过上机实验,我们能对数据结构更加深入了解,并且能够发现平时在书面作业中比较容易令人忽略的细节问题。要做出一个具体问题的解法,需要的不仅仅是老师灌输给我们的知识,在探索的过程中,我们会自觉地去寻找、关注相关面的消息和知识。所以说,这也是我们自身不断积累知识的过程。在这次的数据结构课程设计过程中,我发现之前学过的 C+知识是学习数据结构的基础,之前的 C+学习有些薄弱,对这门课程有了一定的影响,还是要在假期的时候再巩固一下。未来的两年多,还有很多的专业课要学习,知识本来就是相通的

10、,特别是计算机编程中的各种语言,我应该要好好这些学过的知识真正变成自己的知识,才能为以后的学习打好基础。六、附源程序#include#include#include#include#include#define MAX 5/定义航线量的最大值 using namespace std;typedef struct book char name10;typedef struct wait char name10;/int amount;/所需票数 wait*next;node,*ptr;typedef struct queue ptr front;/等候替补的客户的队头指针 ptr rear;/等

11、候替补的客户的队尾指针 linkqueue;/乘员,指向乘员链表的头指针 linkqueue wait;/等候替补的客户,分别指向排队等候队头队尾的指针 linkinfo;struct airline*start;struct airline airMAX=Paris,1,P001,SAT,2,3,Toronto,2,T002,SUN,1,2,New York,3,N003,MON,3,5,HongKong,4,H004,WED,1,2,Cairo,5,C005,TUE,3,4;void show(struct airline*info)/每条航线的基本信息 coutfin_nametair_

12、nametplane_nametdatetticket_amounttticket_leftn;struct airline*find_fin()/根据客户提出的终点站名输出航线信息 struct airline*info;else cout终点站名t航班号t飞机号t飞行日期t乘员定额t余票量n;show(info);void search()/根据客户提出的要求输出航线信息 struct airline*info;cout1n;cout2n;cout3n;for(;!flag;)cini;switch(i)case 1:info=find_air();flag=1;break;case 2:

13、info=find_fin();case 3:info=find_date();default:printf(操作错误,请重新输入n);cout终点站名t航班号t飞机号t飞行日期t乘员定额t余票量n;coutn;void list()/全部航线的信息 struct airline*info;while(iMAX)show(info);info+;void booklist()/订票客户 struct airline*info;linklist*p;if(p!=NULL)cout客户t订票数量t舱位等级n;while(p)coutname,p-amount,p-level;p=p-next;el

14、se cout该航线没有客户信息!linklist*addlink(linklist*head,int amount,char name,int level)/增加订票的客户信息 linklist*p1,*new1;new1=(linklist*)malloc(sizeof(linklist);if(!new1)coutname,name);new1-amount=amount;new1-level=level;new1-next=NULL;head)/原无订票客户信息 head=new1;else head=new1;new1-next=p1;return head;linkqueue pl

15、usqueue(linkqueue q,char name,int amount)/增加排队等候的客户 ptr new2;new2=(ptr)malloc(sizeof(node);strcpy(new2-name,name);new2-amount=amount;new2-next=NULL;if(q.front=NULL)/原排队等候客户为空 q.front=new2;else q.rear=new2;return q;void order()/办理订票业务 struct airline*info;cout操作错误,请重新输入n;if(amountinfo-ticket_amount)/若

16、客户订票额超过乘员定票总额,退出 coutn 对不起,您输入的票的数量已经超过乘员定额!return;if(amountticket_left)/若客户订票额末超过余票量,等记信息 int n=0;coutlevel;info-book=addlink(info-book,amount,name,level);/在订票乘员域中添加客户信息 for(n=0;namount;n+)/输出该订票客户的座位号 cout座位号是:ticket_amount-info-ticket_left+n+1;info-ticket_left-=amount;/该航线的余票量应减掉该客户的订票量 coutn祝您乘坐

17、愉快!else/若满员或余票额少于订票额,询问客户是否需要进行排队等候 char a;coutn请选择操作:排队等候/不排队等候(Y/N)n;cin.get(a);if(a=Y|a=y)/客户进行排队等候 coutname;info-wait=plusqueue(info-wait,name,amount);/在排队等候乘员域中添加客户信息 coutn注册成功!else coutn 欢迎您下次再次订购!void return_ticket()/退票 struct airline*info;)scanf(%d,&i);while(p1)/根据客户提供的到订票客户进行查询 if(!if(p1=NU

18、LL)coutnext;else p2-next=p1-next;info-ticket_left+=p1-amount;level=p1-level;coutbook=head;/*t 为当前满点条件的排队候补域 while(t)if(info-ticket_left=info-wait.front-amount)/满足条件者为头结点 int i;info-wait.front=t-next;cout订票成功!for(i=0;iamount;i+)/输出座位号 cout座位号是:ticket_left-i;info-ticket_left=t-amount;info-book=addlink

19、(info-book,t-amount,t-name,level);/插入到订票客户链表中 free(t);back=t;if(info-ticket_left)=(t-amount)&t!=NULL)/若满足条件者不为头结点 int i;back-next=t-next;info-ticket_left-=t-amount;if(m=n)break;void sort_ticket()/按剩余票数排序 struct airline t,*info,*p,*q;p=info=air;for(p=info;(p+1)-ticket_left;p+)for(q=p+1;q-ticket_left;

20、q+)if(p-ticket_left)ticket_left)t=*p;*p=*q;*q=t;cout终点站名t 航班号t 飞机号t 飞行日期t 乘员定额t 余票量n;for(int i=0;iMAX;i+)show(info);int guide()/菜单界面 char s20;int a;coutn-航空客运订票系统-n;cout 1.浏览航线信息n;cout 2.浏览已订票客户信息n;cout 3.查询航线n;cout 4.办理订票业务n;cout 5.办理退票业务n;cout 6.查看剩余票数并排序n;cout 0.退出系统n;do couta;while(a7);return a;void main()start=air;do switch(guide()case 1:list();booklist();search();case 4:order();case 5:return_ticket();case 6:sort_ticket();case 0:coutn欢迎使用本系统,再见!exit(0);while(1);coutn请按上面指引操作:t;图 1 图 2 图 3 图 4 图 5 图 6 图 7

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

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