strncpy((char*)&f,&ch,sizeof(Flight));
Custom_init(f.Al_link);
Waiter_init(f.wait_queue);
}
void initFlight()//初始化航线数组
{
flight_no=0;
char ch=0;
strncpy((char*)flight,&ch,FLIGHT_NUM*sizeof(Flight));
for(int i=0;i<FLIGHT_NUM;i++)
{
Custom_init(flight[i].Al_link);
Waiter_init(flight[i].wait_queue);
}
}
void insertFlight(Flight& f)//按终点站名有序插入航线到航线数组
{
int i=-1;
while(i+1<flight_no && strcmp(f.terminus,flight[i+1].terminus)==1)
{
i++;
}
for(int j=flight_no-1;j>=i+1;j--)
{
memcpy((void*)(&(flight[j+1])),(void*)(&(flight[j])),sizeof(Flight));
}
memcpy((void*)(&(flight[i+1])),(void*)(&f),sizeof(Flight));
Custom_init(flight[i+1].Al_link);
Waiter_init(flight[i+1].wait_queue);
copyCustomLink(flight[i+1].Al_link,f.Al_link);
copyWait_Queue(flight[i+1].wait_queue,f.wait_queue);
flight_no++;
}
void init()
{
int m;
cout<<"请输入航线条数:";
cin>>m;
for(int i=1;i<=m;i++)
{
Flight f;
initFlight(f);
cout<<"输入第"<<i<<"条航线:"<<endl;
cout<<"航班号:";
cin>>f.flight_no;
cout<<"飞机号:";
cin>>f.plane_no;
cout<<"终点站名:";
cin>>f.terminus;
cout<<"飞行周日:";
cin>>f.week;
cout<<"成员定额:";
cin>>f.count;
f.rest=f.count;
insertFlight(f);
printf("\n");
}
}
int findbyname(char terminus[15])//根据终点站名查找
{
for(int i=0;i<flight_no;i++)
{
if(strcmp(flight[i].terminus,terminus)==0)
{
return i;
}
}
return -1;
}
int findbyno(char no[10])//根据航班号查找
{
for(int i=0;i<flight_no;i++)
{
if(strcmp(flight[i].flight_no,no)==0)
{
return i;
}
}
return -1;
}
void findFlight()//查询航线子模块
{
char terminus[15];
cout<<"请输入要查询航线的终点站号:";
cin>>terminus;
int index=findbyname(terminus);
if(index==-1)
{
printf("该航线不存在!\n");
return ;
}
cout<<setw(12)<<"航班号"<<setw(12)<<"飞机号"<<setw(12)<<"飞行周日"<<setw(12)<<"余票额"<<endl;
cout<<setw(12)<<flight[index].flight_no
<<setw(12)<<flight[index].plane_no
<<setw(12)<<flight[index].week
<<setw(12)<<flight[index].rest<<endl<<endl;
}
void dingpiao(int index)
{
Wait_Custom *p=flight[index].wait_queue.front;
while(p!=flight[index].wait_queue.rear)
{
if(p-&