cout<<"\n\t\t\t 姓 名 :"<<p2->Name<<endl;
cout<<"\n\t\t\t 航 班 号:"<<p1->Flight_No<<endl;
cout<<"\n\t\t\t 飞 机 号:"<<p1->Plane_No<<endl;
cout<<"\n\t\t\t 订 票 量:"<<p2->Amount<<endl;
cout<<"\n\t\t\t 终 点 站:"<<p1->Des_Name<<endl;
cout<<"\n\t\t\t 舱位等级:"<<p2->Rank<<endl;
if(p2->Amount>1)
cout<<setw(5)<<"多票"<<" "<<endl;
else
cout<<setw(5)<<"无座"<<" "<<endl;
p2=p2->Next;
if(p2!=NULL||p1->Next!=NULL) cout<<"\t "<<endl;
}
}
p1=p1->Next;
}
cout<<"\t "<<endl;
cout<<"\n\t\t\t 按任意键返回子菜单..."<<endl;
getch();
}
void Sub3Menu()//退票办理函数
{
int Flight_No=0,flag=0; //记录满足条件的航线的定票结点
Flight *p1; //记下满足条件的航线结点地址
Customer *p2,*p4; //临时性定票乘员结点
Replace *p3,*p5; //临时性候补乘员结点
char answer[7],name[7]; //用户输入的航班数据
int tag=0; //若第二乘客满足条件,则它的首地址会发生冲突,注意此处
int Seat_No; //记录座位号
if(Empty_Flight()) //航班线为空
return;
prefix("退票办理");
if(IsEmpty)
{
cout<<"\n\n\t\t 对不起,系统中暂时无定票乘客..."<<endl;
getch();
return;
}
while(1)
{
flag=0;
tag=0;
Flight_No=0;
prefix("退票办理");
cout<<"\n\t\t\t 请输入航班号:";
cin>>answer;
if(Find_Line(Head,answer,p1,Flight_No)) //航线存在
{
p2=p1->CustName; //指向该航线的乘客名单的首地址
cout<<"\n\t\t\t 请输入您的姓名:";
cin>>name;
if(p2==NULL) //该航线无定票乘客
{
cout<<"\n\t\t 很抱歉,该航线暂时无人定票,无法进行退票操作."<<endl;
if(Continue()=='n')//是否继续操作
return;
else
continue; //提前结束本次循环,重新进行退票处理
}
else
while(p2!=NULL)//查找有无此乘客名
{
if(strcmp(p2->Name,name)==0)//此外括号不能省略,否则功能会转变
{
if(p2==p1->CustName) //若为首位乘客满足
{
prior=p1->CustName; //记录指针
Seat_No=p2->Seat_No;
flag=1;
break;
}
}
else if(p2->Next!=NULL)//记录满足航线的的前结点地址
{
if(strcmp(p2->Next->Name,name)==0)
{
tag=1; //特别注意此处
prior=p2; //记录满足定乘客的前一地址,以作删除操作
Seat_No=p2->Next->Seat_No;
flag=1;
break;
}
}
p2=p2->Next; //指向下一乘客结点
}//while
if(!flag)
cout<<"\n\t\t 很抱歉,该航线无此乘客,请查证后再操作..."<<endl;
}//存在该航线
else
cout<<"\n\t\t 对不起,没有该次航班,按任意继续操作."<<endl; //没有该次航线
if(flag)
{
if(prior==p1->CustName&&!tag) //首结点满足条件且一个乘客,则该航线定票乘客置空
{
if(prior->Next==NULL) //仅一乘客,头指针置空
{
p1->Free_Amount+=prior->Amount;
p1->CustName=NULL;
}
else
{
p1->Free_Amount+=prior->Next->Amount;
p1->CustName=prior->Next; //指向下一乘客结点
}
}
else
{
p1->Free_Amount+=prior->Next->Amount;
IsEmpty=1;
}
if(flag)//存在退票操作
{
p3=p1->ReplName;
while(p3!=NULL)
{
if(p3->Amount<=p1->Free_Amount)//候补乘客的定票数小于或等于剩余票数
{
cout<<"\n\t\t 候补乘员"<<p3->Name<<"已经列入定票乘客名单中...\n"<<endl;
p4=Custp1[Flight_No]->Next=new Customer;
if(p1->ReplName==p3)
{
if(p1->ReplName->Next==NULL)
p1->ReplName=NULL; //删除
else
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页