机票退票模块_机票怎么退票
机票退票模块由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“机票怎么退票”。
void return_tkt()/*退票模块*/ { struct airline *a;qnode *t,*back,*f,*r;int grade;linklist *p1,*p2,*head;char cusname[10];if(!(a=find()))return;/*调用查询函数,根据客户提供的航线进行搜索*/ head=a->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;else p2->next=p1->next;a->tkt_sur+=p1->ord_amt;grade=p1->grade;printf(“%s成功退票!n”,p1->name);free(p1);}
a->order=head;/*重新将航线名单域指向订票单链表的头指针 */ f=(a->wait).front;/*f指向排队等候名单队列的头结点*/ r=(a->wait).rear;/*r指向排队等候名单队列的尾结点*/ t=f;/*t为当前满点条件的排队候补名单域*/ while(t){ if(a->tkt_sur>=a->wait.front->req_amt){/*若满足条件者为头结点*/ int i;a->wait.front=t->next;printf(“%s订票成功!n”,t->name);for(i=0;ireq_amt;i++)/*输出座位号*/ printf(“%s的座位号是:%dn”,t->name,(a->tkt_sur)-i);a->tkt_sur-=t->req_amt;a->order=insertlink(a->order,t->req_amt,t->name,grade);/*插入到订票客户名单链表中*/ free(t);break;} back=t;t=t->next;if((a->tkt_sur)>=(t->req_amt)&&t!=NULL)/*若满足条件者不为头结点*/ { int i;back->next=t->next;printf(“%s订票成功!n”,t->name);for(i=0;ireq_amt;i++)/*输出座位号*/ printf(“<%s>'s seat number is:%dn”,t->name,(a->tkt_sur)-i);a->tkt_sur-=t->req_amt;a->order=insertlink(a->order,t->req_amt,t->name,grade);/*插入到订票客户名单链表中*/ free(t);break;} if(f==r)break;} }