您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > c语言-航空订票系统代码
#includestdio.h#includestdlib.h#includestring.h#includeconio.h#defineMAXSIZE4/*定义航线量的最大值*/typedefstructwat_ros{charname[10];/*姓名*/intreq_amt;/*订票量*/structwat_ros*next;}qnode,*qptr;typedefstructpqueue{qptrfront;/*等候替补客户名单域的头指针*/qptrrear;/*等候替补客户名单域的属指针*/}linkqueue;typedefstructord_ros{charname[10];/*客户姓名*/intord_amt;/*订票量*/intgrade;/*舱位等级*/structord_ros*next;}linklist;structairline{charter_name[10];/*终点站名*/charair_num[10];/*航班号*/charplane_num[10];/*飞机号*/chardate[7];/*飞行日期(星期几)*/inttkt_amt;/*乘员定额*/inttkt_sur;/*余票量*/linklist*order;/*乘员名单域,指向乘员名单链表的头指针*/linkqueuewait;/*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/}lineinfo;structairline*start;structairlineair[MAXSIZE]={{北京,1,001,SUN,30,15},{上海,2,002,MON,40,10},{武汉,3,003,FRI,50,14},{天津,4,004,TUE,60,20}};voiddisplay(structairline*info)/*打印每条航线的基本信息*/{printf(%8s\t%3s\t%s\t%4s\t\t%3d\t%10d\n,info-ter_name,info-air_num,info-plane_num,info-date,info-tkt_amt,info-tkt_sur);}voidlist()/*打印全部航线信息*/{structairline*info;inti=0;info=start;printf(终点站名\t航班号\t飞机号\t飞行日期\t乘员定额\t余票量\n);while(iMAXSIZE){display(info);info++;i++;}printf(\n\n);}voidsearch()/*根据客户提出的终点站名输出航线信息*/{structairline*info,*find();charname[10];inti=0;info=start;printf(请输入终点站名:);scanf(%s,name);while(iMAXSIZE){if(!strcmp(name,info-ter_name))break;info++;i++;}if(i=MAXSIZE)printf(对不起,该航线未找到!\n);else{printf(终点站名\t航班号\t飞机号\t飞行日期\t乘员定额\t余票量\n);display(info);}}structairline*find()/*根据系统提出的航班号查询并以指针形式返回*/{structairline*info;charnumber[10];inti=0;info=start;printf(请输入航班号:);scanf(%s,number);while(iMAXSIZE){if(!strcmp(number,info-air_num))returninfo;info++;i++;}printf(对不起,该航线末找到!\n);returnNULL;}voidprtlink()/*打印订票乘员名单域的客户名单信息*/{linklist*p;structairline*info;info=find();p=info-order;if(p!=NULL){printf(客户姓名订票数额舱位等级\n);while(p){printf(%s\t\t%d\t%d\n,p-name,p-ord_amt,p-grade);p=p-next;}}elseprintf(该航线没有客户信息!!\n);}linklist*insertlink(linklist*head,intamount,charname[],intgrade)/*增加订票乘员名单域的客户信息*/{linklist*p1,*new1;p1=head;new1=(linklist*)malloc(sizeof(linklist));if(!new1){printf(\nOutofmemory!!\n);returnNULL;}strcpy(new1-name,name);new1-ord_amt=amount;new1-grade=grade;new1-next=NULL;if(head==NULL)/*若原无订票客户信息*/{head=new1;new1-next=NULL;}elsehead=new1;new1-next=p1;returnhead;}linkqueueappendqueue(linkqueueq,charname[],intamount)/*增加排队等候的客户名单域*/{qptrnew1;new1=(qptr)malloc(sizeof(qnode));strcpy(new1-name,name);new1-req_amt=amount;new1-next=NULL;if(q.front==NULL)/*若原排队等候客户名单域为空*/q.front=new1;elseq.rear-next=new1;q.rear=new1;returnq;}voidorder()/*办理订票业务*/{structairline*info;intamount,grade;charname[10];info=start;if(!(info=find()))return;/*根据客户提供的航班号进行查询,如为空,退出该模块*/printf(请输入你订票所需要的数量:);scanf(%d,&amount);if(amountinfo-tkt_amt)/*若客户订票额超过乘员定票总额,退出*/{printf(\n对不起,您输入的票的数量已经超过乘员定额!);return;}if(amount=info-tkt_sur)/*若客户订票额末超过余票量,订票成功并等记信息*/{inti;printf(请输入您的姓名(订票客户):);scanf(%s,name);printf(请输入%s票的舱位等级:,name);scanf(%d,&grade);info-order=insertlink(info-order,amount,name,grade);/*在订票乘员名单域中添加客户信息*/for(i=0;iamount;i++)/*依次输出该订票客户的座位号*/printf(%s的座位号是:%d\n,name,info-tkt_amt-info-tkt_sur+i+1);info-tkt_sur-=amount;/*该航线的余票量应减掉该客户的订票量*/printf(\n祝您乘坐愉快!\n);}else/*若满员或余票额少于订票额,询问客户是否需要进行排队等候*/{charr;printf(\n已经没有更多的票,您需要排队等候吗?(Y/N));r=getch();printf(%c,r);if(r=='Y'||r=='y'){printf(\n请输入您的姓名(排队订票客户):);scanf(%s,name);info-wait=appendqueue(info-wait,name,amount);/*在排队等候乘员名单域中添加客户信息*/printf(\n注册成功!\n);}elseprintf(\n欢迎您下次再次订购!\n);}}voidreturn_tkt()/*退票模块*/{structairline*info;qnode*t,*back,*f,*r;intgrade;linklist*p1,*p2,*head;charcusname[10];if(!(info=find()))return;/*调用查询函数,根据客户提供的航线进行搜索*/head=info-order;p1=head;printf(请输入你的姓名(退票客户):);scanf(%s,cusname);while(p1!=NULL){/*根据客户提供的姓名到订票客户名单域进行查询*/if(!strcmp(cusname,p1-name))break;p2=p1;p1=p1-next;}if(p1==NULL){printf(对不起,你没有订过票!\n);return;}/*若未找到,退出本模块*/else{/*若信息查询成功,删除订票客户名单域中的信息*/if(p1==head)head=p1-next;elsep2-next=p1-next;info-tkt_sur+=p1-ord_amt;grade=p1-grade;printf(%s成功退票!\n,p1-name);free(p1);}info-order=head;/*重新将航线名单域指向订票单链表的头指针*/f=(info-wait).front;/*f指向排队等候名单队列的头结点*/r=(info-wait).rear;/*r指向排队等候名单队列的尾结点*/t=f;/*t为当前满点条件的排队候补名单域*/while(t){if(info-tkt_sur=info-wait.front-req_amt){/*若满足条件者为头结点*/inti;info-wait.front=t-next;printf(%s订票成功!\n,t-name);for(i=0;it-req_amt;i++)/*输出座位号*/printf(%s的座位号是:%d\n,t-name,(info-tkt_sur)-i);info-tkt_sur-=t-req_amt;info-order=insertlink(info-order,t-req_amt,t-name,grade);/*插入到订票客户名单链表中*/free(t);break;}back=t;t=t-next;if((info-tkt_sur)=(t-req_amt)&&t!=NULL)/*若满足条件者不为头结点*/{inti;back-next=t-next;printf(%s订票成功!\n,t-name);for(i=0;it-req_amt;i++)/*输出座位号*/printf(%s'sseatnumberis:%d\n,t-name,(info-tkt_sur)-i);info-tkt_sur-=t-req_amt;info-order=insertlink(info-order,t-req_amt,t-name,grade);/*插入到订票客户名单链表中*/free(t);break;}if(f==r)break;}}voidsort_tkt(){/*按剩余票数排序*/intj;structairlinet,*info,*p,*q;p=info=air;for(p=info;(p+1)-tkt_sur;p++)for(q=p+1;q-tkt_sur;q++){if(p-tkt_surq-tkt_sur){t=*p;*p=*q;*q=t;}}printf(终点站名\t航班号\t飞机号\t飞行日期\t乘员定额\t余票量\n);for(j=0;jMAXSIZE;j++){display(info);info++;}}intmenu_select
本文标题:c语言-航空订票系统代码
链接地址:https://www.777doc.com/doc-2477086 .html