void Display_Reserve() /*乘客信息*/
{
system("cls");
Flight *p1;
Customer *p2;
p1=Head;
if(IsEmpty)
{
printf("\n\n\n\n\n\n\t\t\t对不起,没有乘客!\n");
printf("\n\t\t\t返回请按ENTER!\n");
getch();
return;
}
printf("\n\t\t\t定乘客的一些信息\n");
printf("\n名字 航班号 飞机号 所订的票数 到达的站名 票的类型 \n");
while(p1!=NULL)
{
if(p1->CustName!=NULL)
{
p2=p1->CustName;
while(p2!=NULL)
{
printf("\n%-8s%-10s%-9s%-11d%-9s%-9c%\n\n",p2->Name,p1->Flight_No,p1->Plane_No,p2->Amount,p1->Des_Name,p2->Rank);
p2=p2->Next;
}
}
p1=p1->Next;
}
printf("\n按ENTER离开");
getch();
return;
}
/*候补乘客信息*/
void Display_Replace()
{
system("cls");
Flight *p1;
Replace *p2;
p1=Head;
if(IsReplace)
{
printf("\n\n\n\n\t\t\t对不起,没有候补乘客!\n");
printf("\n\t\t\t返回请按ENTER!\n");
getch();
return;
}
printf("名字 航班号 飞机号 所订的票数 到达的站名 票的类型 \n");
while(p1!=NULL)
{
if(p1->ReplName!=NULL)
{
p2=p1->ReplName;
while(p2!=NULL)
{
printf("\n%-8s%-10s%-9s%-11d%-9s%-9c%\n\n",p2->Name,p1->Flight_No,p1->Plane_No,p2->Amount,p1->Des_Name,p2->Rank);
p2=p2->Next;
}
}
p1=p1->Next;
}
printf("\n按ENTER离开");
getch();
return;
}
/*航班信息*/
void Sub1()
{
char c;
while(1)
{
while(1)
{
system("cls");
printf("\n\t\t\t航班菜单:");
printf("\n~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~\n\n");
printf("* $ *\t\t\t1.增加航班 * $ * \n\n");
printf("* $ *\t\t\t2.查找航班 * $ * \n\n");
printf("* $ *\t\t\t3.查看航班 * $ * \n\n");
printf("* $ *\t\t\t4.修改航班 * $ * \n\n");
printf("* $ *\t\t\t5.删除航班 * $ * \n\n");
printf("* $ *\t\t\t6.返回上一层菜单 * $ * \n");
printf("\n~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ \n\n");
printf("\n请选择(1~6):");
scanf("%s",&c);
switch(c)
{
case '1':Line_Add();break;
case '2':Line_Search();break;
case '3':Line_See();break;
case '4':Line_Mod();break;
case '5':Line_del();break;
case '6':goto aaa;break;
default: break;
}
}
aaa: break;
}
}
/*---------------订票办理函数---------------*/
void Sub2()
{
int Ticket_Count,Seat_No,i,flag=0;
int Flight_No=0; /*记录满足条件的航线的定票结点*/
Flight *p1,*p; /*记下满足条件的航线结点地址*/
Customer *p2; /*临时性定票乘员结点*/
Replace *p3; /*临时性候补乘员结点*/
char temp;
p1=Head;
p=new Flight;
int tag=0;
int IsRepl=0;
if(Head==NULL)
{
system("cls");
printf("\n\n\n\n\n\t\t\t没有航班!\n");
printf("\n\t\t\t返回请按ENTER!\n");
getch();
return;
}
while(1)
{
system("cls");
printf("\n\t\t\t开始订票!");
flag=0;
Flight_No=0;
tag=0;
printf("\n 输入航班号:");
scanf("%s",&p->Flight_No);
while(strcmp(p->Flight_No,p1->Flight_No)!=NULL)
p1=p1->Next;
if(strcmp(p->Flight_No,p1->Flight_No)==NULL)
{
while(1)
{
printf("\n输入你想要订的票数:");
scanf("%d",&Ticket_Count);
if(Ticket_Count==0)
{
printf("\n输入错误,重新输入\n");
getch();
}
else
break;
}
if(p1->Free_Amount>=Ticket_Count)
{
Customer_Count++; /*定票乘客总数增1*/
flag=1; /*表明进入了订票实际操作*/
IsRepl=1;
/*定票量满足,无需进入候补操作*/
if(p1->CustName==NULL) /*首个定票乘客,并记录相关属性*/
{
Custp1[Flight_No]=p2=new Customer; /*建立该航线的首位乘客结点*/
p1->CustName=Custp1[Flight_No];
}
else /*建立该航线的后续乘客结点*/
{
p2=new Customer;
Custp1[Flight_No]->Next=p2;
Custp1[Flight_No]=p2;
}
IsEmpty=0; /*定票乘员不为空*/
Custp1[Flight_No]->Amount=Ticket_Count; /*订票数*/
Seat_No=p1->Customer_Amount-p1->Free_Amount+1; /*算出座位号*/
Custp1[Flight_No]->Seat_No=Seat_No; /*赋座位号*/
p1->Free_Amount-=Ticket_Count; /*减去定票数*/
printf("\n输入你的名字:");
scanf("%s",&Custp1[Flight_No]->Name);
while(1) /*数据合法性检验*/
{
printf("\n输入你要的座位类型(1.头等舱;2.中等舱;3.经济舱):");
scanf("%s",&Custp1[Flight_No]->Rank);
if(!(Custp1[Flight_No]->Rank>='1'&&Custp1[Flight_No]->Rank<='3'))
{
printf("\n输入错误,重新输入");
getch();
}
else
break;
}
printf("\n输入你要的座位号:");
scanf("%d",&Custp1[Flight_No]->Seat_No);
if(Ticket_Count<5)
printf("\n\t");
else
printf("\n\t");
for(i=1;i<=Ticket_Count;i++) /*打印座位号*/
{
printf("\n你的座位号是: %d",Custp1[Flight_No]->Seat_No++);
if(i%5==0)
printf("\n\t");
}
printf("\n");
}
else if(p1->Free_Amount==0)
{
printf("\n\t对不起,已经没有票了!\n");
IsRepl=0;
}
else
{
printf("\n\t对不起,没有足够的票给你!\n");
IsRepl=0;
}
if(!IsRepl)
{
printf("\n你是否要成为候补乘客(Y/N)?");
scanf("%s",&temp);
if(temp=='y'||temp=='Y')/*以下为候补操作*/
{
if(p1->ReplName==NULL)
{
Replp1[Flight_No]=p3=new Replace; /*建立该航线的首位候补乘客结点*/
p1->ReplName=Replp1[Flight_No];
}
else
{
p3=new Replace;
Replp1[Flight_No]->Next=p3;
Replp1[Flight_No]=p3;
}
IsReplace=0; /*候补乘客不为空*/
tag=1; /*已选择列入候补乘客名单*/
Replp1[Flight_No]->Amount=Ticket_Count;
printf("\n输入你的名字:");
scanf("%s",&Replp1[Flight_No]->Name);
Replp1[Flight_No]->Seat_No=Seat_No; /*候补乘客的座位*/
Replp1[Flight_No]->Amount=Ticket_Count; /*候补乘客的订票数*/
while(1) /*数据合法性检验*/
{
printf("\n输入你要的座位类型(1.头等舱;2.中等舱;3.经济舱):");
scanf("%s",&Replp1[Flight_No]->Rank);
if(!(Replp1[Flight_No]->Rank>='1'&&Replp1[Flight_No]->Rank<='3'))
{
printf("\n输入错误,重新输入你要的座位类型(1.头等舱;2.中等舱;3.经济舱):");
getch();
}
else
bre