收藏 分享(赏)

航空客运订票系统源代码.docx

上传人:j35w19 文档编号:7843865 上传时间:2019-05-27 格式:DOCX 页数:13 大小:27.52KB
下载 相关 举报
航空客运订票系统源代码.docx_第1页
第1页 / 共13页
航空客运订票系统源代码.docx_第2页
第2页 / 共13页
航空客运订票系统源代码.docx_第3页
第3页 / 共13页
航空客运订票系统源代码.docx_第4页
第4页 / 共13页
航空客运订票系统源代码.docx_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、航空客运订票系统源代码#include /dos 控制命令头文件#include /输入输出头文件#include /控制格式头文件#include /getchar()用到#include /字符串函数using namespace std; /标准命名空间#define OK 1 /函数结果状态码#define ERROR 0 /函数结果状态码#define TRUE 1 /函数结果状态码#define FALSE 0 /函数结果状态码typedef int status; /函数结果状态码static int cusnum=1; /顾客数(全局变量)static int airnum=1

2、; /航线数(全局变量)/顾客结构体struct customerchar name9; / 顾客名 char line_num8; / 航班号 int piaonum; / 座位号 struct customer *next; / 下一个结点 ;typedef customer *Linkcustomer;/候补顾客结构体typedef struct houbuNode /候补顾客结构体char name9; /姓名char end_place10; /终点站int pnum; /票数struct houbuNode *next; /指针域* houbucustomer;struct Lin

3、kQueuehoubucustomer front,rear; /队头队尾指针;/航线结构体struct airlinechar line_num8; / 航班号 char plane_num8; / 飞机号 char end_place20; / 目的的 char fly_data20; / 飞行周日 int total; / 座位总数 int left; / 剩余座位Linkcustomer custom; / 订票顾客指针LinkQueue houbucus; / 候补顾客指针struct airline *next; / 下一个结点;typedef airline *Linkairli

4、ne;/初始化航线链表void init_airline(Linkairline /产生头结点,并始 l 指向此头结点if(!l) /存储分配失败exit(0); /退出l-next=NULL; /头结点的指针域为空/初始化顾客链表(同初始化航线链表)void init_customer(Linkcustomer if(!l)exit(0);l-next=NULL;/初始化候补顾客队列链表(同初始化航线链表)void init_houbucustomer(LinkQueue /if(!Q.front)exit(0);Q.front-next=NULL;/判断 airline 链表是否为空sta

5、tus airLineEmpty(Linkairline L)if(L-next) /非空return FALSE;elsereturn TRUE;/ airline 链表插入操作status insert_airline(Linkairline L,int i,char *line_num,char *plane_num,char *end_place, char *fly_data,int total,int left,Linkcustomer custom,LinkQueue houbucus)int j=0; /计数器Linkairline s,p=L; /p 指向头结点while(p

6、if(!p|ji-1) /i 小于 1 或大于表长return ERROR; /插入失败s=new airlinesizeof(airline); /生成新结点strcpy(s-line_num , line_num); /给新结点赋值strcpy(s-plane_num , plane_num);strcpy(s-end_place , end_place);strcpy(s-fly_data , fly_data);s-total =total;s-left =left;s-custom=custom;s-houbucus=houbucus;s-next=p-next; /新结点指向原第

7、i 个结点p-next=s; /原第 i-1 个结点指向新结点return OK; /插入成功/ customer 链表插入操作(同 airline 链表插入操作)status insert_customer(Linkcustomer L,int i,char *name,char *line_num,int piaonum)int j=0;Linkcustomer s,p=L;while(pif(!p|ji-1)return ERROR;s=new customersizeof(customer);strcpy(s-name , name);strcpy(s-line_num , line_

8、num);s-piaonum=piaonum;s-next=p-next;p-next=s;return OK;/ houbucustomer 入队操作void insert_houbucustomer(LinkQueue p=new houbuNodesizeof(houbuNode);strcpy(p-name , name);strcpy(p-end_place , end_place);p-pnum=pnum;p-next=NULL;Q.rear-next=p;Q.rear=p;/ houbucustomer 出队操作status del_houbucustomer(LinkQueue

9、 p=Q.front-next;strcpy(hbnode.name,p-name);strcpy(hbnode.end_place,p-end_place);hbnode.pnum=p-pnum;Q.front-next=p-next;if(Q.rear=p)Q.rear=Q.front;delete p;return OK;/houbucustomer 输出操作void print_houbucustomer(LinkQueue Q)houbucustomer p=Q.front-next;coutnameend_placepnum;p=p-next;coutnext ;for(;p!=N

10、ULL;p=p-next )coutline_numplane_numend_placefly_datatotallefthoubucus)custom)next;for(;p!=NULL;p=p-next )if(N=1)info=p-end_place;elseinfo=p-line_num;if(info=name)flag=false;coutline_numplane_numend_placefly_datatotalleftcustom)houbucus)next ;for(;p!=NULL;p=p-next )coutnameline_numpiaonumline_num1;co

11、utplane_num1;coutend_place1;coutfly_data1;couttotal1;coutleft1;insert_airline(l,airnum,line_num1,plane_num1,end_place1,fly_data1,total1,left1,custom,houbucus);airnum+;coutnext;for(;p!=NULL;p=p-next )if(strcmp(line_num,p-line_num )=0)p-left+;return OK;coutnext; /p 指向第一个结点Linkcustomer q=c-next; /q 指向第

12、一个结点for(;p!=NULL;p=p-next) /查找if(strcmp(end_place,p-end_place )=0)if(p-left-num =0) /剩余票数大于订票数coutline_num,num);/向顾客链表插入记录p-left-=num; /订票成功,剩余票数减少cusnum+; /顾客数加一return OK;else /剩余票数小于订票数char pd;coutpd;if(pd=Y|pd=y)/需要排队候补insert_houbucustomer(houbu,name,end_place,num);/向候补队列插入记录coutnext,pr=h; /p 指向顾

13、客链表首结点char line_num8;houbuNode hbnode;while(p!=NULL) /循环查找退票顾客if(strcmp(name,p-name )=0)strcpy(line_num,p-line_num );for(int i=0;ipiaonum;i+)/更改该航线的剩余票数modefy_airline(l,line_num);pr-next =p-next ;coutnamenext=NULL)elsedel_houbucustomer(houbu,hbnode);/候补顾客出队if(l-next-left=hbnode.pnum) /剩余票数多于排在第一位的客户

14、订的票数/为排在第一位的客户办理订票业务book(l,hbnode.end_place,h,hbnode.name,hbnode.pnum,houbu);coutnext ;p=pr-next ;cout “;for (k=1;kchoice;switch(choice)case 1: /航班信息录入system(“cls“);addmoreairline(air,customer,houbu); /录入航班信息system(“pause“);break;case 2: /订票system(“cls“);if(airLineEmpty(air) /订票前航班信息为空coutend_place;

15、coutname;coutnum;book(air,end_place,customer,name,num,houbu);/办理订票业务system(“pause“);break;case 3: /退票system(“cls“);coutname;delete_cus(customer,air,name,houbu);/办理退票业务system(“pause“);break;case 4: /查询航班及订票信息system(“cls“);if(airLineEmpty(air) /查询信息前航班信息为空coutyi;switch(yi)case 1:system(“cls“);coutend_

16、name;print_airline(air,end_name,1);/按终点站输出特定航班信息break;case 2:system(“cls“);coutair_line;print_airline(air,air_line,2);/按航班号输出特定航班信息break;case 3:system(“cls“);print_airline(air);/输出全部航班信息break;case 4:system(“cls“);print_airline(air);/输出全部航班信息coutqr;if(qr=Y|qr=y)cout谢谢您的使用!n“;cout“n 正在退出系统.n“;cout“n “;cout“r“;for(int i=0;i72;i+)cout“ “;Sleep(60);coutendl;t=0;system(“cls“);cout“已退出本系统!n“;break;elsebreak;default:system(“cls“);cout“输入有误n“;system(“pause“);return 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报