// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "windows.h"
#include "iostream"
#include "string.h"
using namespace std;
typedef struct Infm//航班信息结构体
{
char Hbm[21];//航班名
char Hbh[6];//航班号
char Mdd[21];//目的地
int Tim;//到达时间
int Len;//余票数
Infm *Next;
}link,*Link;
typedef struct Booked//已定客户结构体
{
char Bname[21];//客户名
char BHh[7];//航班号
int Bnumber;//订票数量
Booked *Next;
}blink,*Blink;
int main(int argc,char *argv)
{
void Insert_(Link S);//输入航班信息函数
void Output_(Link S);//输出航班信息函数
void Init_(Link S,Blink Q);//初始化函数
void Minfo_(Link S,Blink Q);//输出订票信息函数
void Tticket_(Link S,Blink Q);//退票函数
void Booking_(Link S,Blink Q);//订票函数
int x;
Link S=(Link)malloc(sizeof(link));
if(!S)exit(-1);
Blink Q=(Blink)malloc(sizeof(link));
if(!Q)exit(-1);
Init_(S,Q);
Insert_(S);
puts("1:Query Flight 2:Booking 3:Query information 4:Refund ticket");
scanf("%d",&x);
while(1)
{
if(x==1)
Output_(S);
else if(x==2)
Booking_(S,Q);
else if(x==3)
Minfo_(S, Q);
else if(x==4)
Tticket_(S,Q);
else
exit(-1);
puts("Next:");
scanf("%d",&x);
system("cls");
}
system("pause");
return 0;
}
void Init_(Link S,Blink Q)
{
S->Next=NULL;
Q->Next=NULL;
}
void Insert_(Link S)
{
char c;
Link q=S;
puts("Enter the flight information:");
while(1)
{
Link p=(Link)malloc(sizeof(link));
if(!p)exit(-1);
puts("Flight Name:");
scanf("%s",&p->Hbm);
puts("Flight Number:");
scanf("%s",&p->Hbh);
puts("Destination:");
scanf("%s",&p->Mdd);
puts("Departure time:");
scanf("%d",&p->Tim);
puts("Remaining tickets:");
scanf("%d",&p->Len);
p->Next=q->Next;
q->Next=p;
puts("Go ahead?(Y/N):");
getchar();
c=getchar();
if(c=='y')system("cls");
else
{
system("cls");
break;
}
}
}
void Output_(Link S)
{
Link p=S->Next;
puts("FName FNumber Dtion Dtime Retic");
while(p)
{
printf("%s %s %s Week %d %d\n",&p->Hbm,&p->Hbh,&p->Mdd,p->Tim,p->Len);
p=p->Next;
}
}
void Booking_(Link S,Blink Q)
{
Link p=S->Next;
Blink q=(Blink)malloc(sizeof(blink));
int e;
char ch1[11],ch2[21];
puts("You want to reach the destination:");
scanf("%s",&ch2);
while(p)
{
if(strcmp(p->Mdd,ch2)==0)
{
puts("Your Name:");
scanf("%s",&ch1);
puts("You want to book some tickets:");
scanf("%d",&e);
if(p->Len<e)
{
puts("Lack of ticket");
Sleep(2000);
exit(-1);
}
q->Bnumber=e;
strcpy(q->BHh,p->Hbh);
strcpy(q->Bname,ch1);
q->Next=Q->Next;
Q->Next=q;
p->Len=p->Len-e;
puts("Success");
break;
}
p=p->Next;
}
if(strcmp(p->Mdd,ch2)!=0)
puts("Don't you want the flight");
}
void Tticket_(Link S,Blink Q)
{
Link p=S->Next;
Blink q=Q->Next;
int e;
char ch1[21],ch2[7];
puts("Your Name:");
scanf("%s",&ch1);
puts("Flight number");
scanf("%s",&ch2);
puts("How many:");
scanf("%d",&e);
while(q)
{
if(strcmp(q->Bname,ch1)==0&&q->Bnumber>=e)
{
q->Bnumber-=e;
while(p)
{
if(strcmp(p->Hbh,ch2)==0)
p->Len+=e;
p=p->Next;
}
}
q=q->Next;
}
puts("Success");
}
void Minfo_(Link S,Blink Q)
{
Blink q=Q->Next;
Link p=S->Next;
while(p)
{
if(strcmp(p->Hbh,q->BHh)==0)
{
puts("Name FNumber Dtime Votes");
printf("%s %s %d %d\n",q->Bname,q->BHh,p->Tim,q->Bnumber);
}
p=p->Next;
}
}
9