📄 airinfo.cpp
字号:
}
}
if(flag==0)//没有此航班记录
{
cout<<"\t对不起,没有找到该起飞站航班信息!";
}
cin.get();
cin.get();
break;
}
case '3'://按终点站查询
{
int flag=0;
string end;
cout<<"\t请输入要查询航班终点站:";
cin>>end;
for(int i=0;i<vec_Air.size();i++)//把所有终点站相同的航班找出来
{
if(vec_Air[i]->GetEnd()==end)
{
vec_Air[i]->PrintInfo();//打印输出航班信息
flag=1;//说明起码找到一条相应的记录
}
}
if(flag==0)
{
cout<<"\t对不起,没有找到该终点站航班信息!";
}
cin.get();
cin.get();
break;
}
case '4'://按起飞时间(日期)
{
int flag=0;
string time;
cout<<"\t请输入要查询航班起飞日期:";
cin>>time;
for(int i=0;i<vec_Air.size();i++)
{
if(vec_Air[i]->GetTime()==time)
{
vec_Air[i]->PrintInfo();
flag=1;
}
}
if(flag==0)
{
cout<<"\t对不起,没有找到该起飞日期的航班信息!";
cin.get();
cin.get();
break;
}
cin.get();
cin.get();
break;
}
case '5'://按飞行总时间查询
{
int flag=0;
string flytime;
cout<<"\t请输入要查询航班的飞行总时间:";
cin>>flytime;
for(int i=0;i<vec_Air.size();i++)
{
if(vec_Air[i]->GetFlyTime()==flytime)
{
vec_Air[i]->PrintInfo();
flag=1;
}
}
if(flag==0)
{
cout<<"\t对不起,没有找到该终点站航班信息!";
}
cin.get();
cin.get();
break;
}
case '0'://返回
{
cout<<endl;
cout<<"\t确定要返回主界面吗?(y/n):";
cin>>choice;
break;
}
}
}
}
/////////////////////////////////////////////////
void BookAirInfo(vector<AirInfo*> *vec_Air)//订票
{
vector<AirInfo*>::iterator v_Iter;//当作指针用
system("cls");//清屏
cout<<endl;
string num;//航班号
cout<<"\t请输入要订票的航班号:";
cin>>num;
for(v_Iter=vec_Air->begin();v_Iter!=vec_Air->end();v_Iter++)
{
if((*v_Iter)->GetNum()==num)//找到相应的航班号
{
(*v_Iter)->PrintInfo();//输出航班信息
break;
}
}
if(v_Iter==vec_Air->end())//如果找到记录最后还没有找到此航班的记录
{
cout<<"\t对不起,暂时没有此航班号!";
cin.get();
cin.get();
return ;
}
if((*v_Iter)->m_wPerson.size()!=0)//是否有客户在等候订票
{
for(int i=0;i<(*v_Iter)->m_wPerson.size();i++)
{
//如果第一个客户所订票数小于此航班所剩余的票数,则询问此客户是否要订票
if((*v_Iter)->m_wPerson[0].m_nWant<(*v_Iter)->GetLeftCount())
{
cout<<"\t请先核对并满足排队等候本航班的客户!"<<endl;
//计算剩余票数
int left=(*v_Iter)->GetLeftCount()-(*v_Iter)->m_wPerson[0].m_nWant;
char meet;//满足要求
cout<<"\t可以满足等候本航班的第一个客户的订票数,是否要订票?(y/n):";
cin>>meet;
if(meet=='y')//满足此客户的订票需求
{
vector<Customer>::iterator Iter_person; //声明一个客户类型的指针
Iter_person=(*v_Iter)->m_wPerson.begin(); //指向等候队列首地址
(*v_Iter)->SetLeftCount(left);
cout<<"\t已经为等候本航班的第一个客户订票!请通知该客户!"<<endl;
Customer Person;
Person.m_strID=(*v_Iter)->m_wPerson[0].m_strID;
Person.m_strName=(*v_Iter)->m_wPerson[0].m_strName;
Person.m_nWant=(*v_Iter)->m_wPerson[0].m_nWant;
//把已满足的客户放入已订得票的客户记录
(*v_Iter)->m_haveBook.push_back(Person);
//删除第一个已经满足订票的客户
(*v_Iter)->m_wPerson.erase(Iter_person);
//输出修改后的本航班所有信息
(*v_Iter)->PrintInfo();
i--;//为了不错过每一个客户
}
}
}
}
if((*v_Iter)->m_wPerson.size()!=0)//还有客户等候本航班
{
char wait='n';
cout<<"\t系统暂不能满足新客户的订票要求!是否要排队等候?(y/n):";
cin>>wait;
if(wait=='y')
{
Customer p;//声明一个要等候的客户对象
cout<<"\t请输入此客户的ID编号:";
cin>>p.m_strID;
cout<<"\t请输入此客户的姓名:";
cin>>p.m_strName;
cout<<"\t请输入要订票的数目:";
cin>>p.m_nWant;
(*v_Iter)->m_wPerson.push_back(p);//进行排队等候
cout<<"\t此客户已经进入本航班的订票排队!";
}
}
else //新客户,本航班没有客户在等候排票
{
int count;
cout<<"\t请输入新客户要订票的数量:";
cin>>count;
if((*v_Iter)->GetLeftCount()<count)
{
cout<<endl;
cout<<"\t对不起,本航班已没有足够的票数"<<endl;
cout<<"\t是否要进入排队等候?(y/n):";
char ch;
cin>>ch;
if(ch=='y')
{
Customer p;
cout<<endl;
cout<<"\t请输入此客户的ID号:";
cin>>p.m_strID;
cout<<endl;
cout<<"\t请输入此客户的姓名:";
cin>>p.m_strName;
p.m_nWant=count;
(*v_Iter)->m_wPerson.push_back(p);
cout<<"\t此客户已进入等候排队订票中!"<<endl;
}
else
{
cout<<endl;
cout<<"\t您已取消了排队等候订票!"<<endl;
}
}
else//可以满足订票要求,把新客户放入已订得票的客户记录里
{
Customer person;
cout<<endl;
cout<<"\t请输入新客户的ID号:";
cin>>person.m_strID;
cout<<endl;
cout<<"\t请输入新客户的姓名:";
cin>>person.m_strName;
person.m_nWant=count;
int left=(*v_Iter)->GetLeftCount()-count;//
(*v_Iter)->SetLeftCount(left); //设计本航班剩余票数
(*v_Iter)->m_haveBook.push_back(person); //记录可订得票的客户
cout<<endl;
cout<<"\t成功为新客户订票!"<<endl;
}
}
/////////////////////
cout<<"\t按任意键返回主界面";
cin.get();
cin.get();
}
/////////////////////////////////////////
void CancelAirInfo(vector<AirInfo*> *vec_Air)//取消订票(航班)
{
vector<AirInfo*>::iterator v_Iter;//指针
system("cls");
cout<<endl;
string num;//航班号
cout<<"\t请输入要取消订票的航班号:";
cin>>num;
for(v_Iter=vec_Air->begin();v_Iter!=vec_Air->end();v_Iter++)
{
if((*v_Iter)->GetNum()==num)//找到相应的航班号
{
(*v_Iter)->PrintInfo();//输出航班信息
break;
}
}
if(v_Iter==vec_Air->end())//如果找到最后还没找到相应的航班记录
{
cout<<"\t对不起,暂时没有此航班号!";
cin.get();
cin.get();
return ;
}
char choice='n';
cout<<"\t要取消订票的客户是否在等候订票队列?(是则输入'y'):"<<endl;
cout<<"\t要取消订票的客户已经得了票(是则输入'n'):";
cout<<"\t请选择(y/n):";
cin>>choice;
if(choice=='y'&&(*v_Iter)->m_wPerson.size())//在等候订票的客户取消等候订票业务
{
string strID;//客户ID
cout<<"\t请输入在排队的客户ID:";
cin>>strID;
for(int i=0;i<(*v_Iter)->m_wPerson.size();i++)//查找队列是否有此ID的客户
{
if((*v_Iter)->m_wPerson[i].m_strID==strID)//找到有此ID的客户
{
cout<<"\t所找的客户信息如下:"<<endl;
cout<<"\t客户ID:"<<(*v_Iter)->m_wPerson[i].m_strID<<"\t"
<<"姓名:"<<(*v_Iter)->m_wPerson[i].m_strName<<"\t"
<<"所订票数:"<<(*v_Iter)->m_wPerson[i].m_nWant<<endl;
cout<<"\t确定要取消此客户的等候订票业务吗?(y/n):";
cin>>choice;
if(choice=='y')//取消订票
{
vector<Customer>::iterator v;
v=(*v_Iter)->m_wPerson.begin()+i;
(*v_Iter)->m_wPerson.erase(v);//删除此客户所有信息
cout<<"\t成功取消此客户的订票业务!"<<endl;
(*v_Iter)->PrintInfo();//输出取消订票业务后的此航班记录信息
}
break;
}
}
if(i==(*v_Iter)->m_wPerson.size())
{
cout<<"\t对不起,没有此客户在等候订票队列!"<<endl;
}
}
else if(choice=='n'&&(*v_Iter)->m_haveBook.size())//订票的客户,不在等候队列里(即已经得到票)
{
string strID;//客户ID
cout<<"\t请输入要退票的客户ID:";
cin>>strID;
for(int i=0;i<(*v_Iter)->m_haveBook.size();i++)//查找队列是否有此ID的客户
{
if((*v_Iter)->m_haveBook[i].m_strID==strID)//找到有此ID的客户
{
cout<<"\t所找的客户信息如下:"<<endl;
cout<<"\t客户ID:"<<(*v_Iter)->m_haveBook[i].m_strID<<"\t"
<<"姓名:"<<(*v_Iter)->m_haveBook[i].m_strName<<"\t"
<<"所订票数:"<<(*v_Iter)->m_haveBook[i].m_strName<<endl;
cout<<"\t确定要取消此客户的订票业务吗?(y/n):";
cin>>choice;
if(choice=='y')//取消订票
{
int left=(*v_Iter)->GetLeftCount()+(*v_Iter)->m_haveBook[i].m_nWant;
(*v_Iter)->SetLeftCount(left);//设计剩余票数
vector<Customer>::iterator v;
v=(*v_Iter)->m_haveBook.begin()+i;
(*v_Iter)->m_haveBook.erase(v);//删除此客户所有信息
cout<<"\t成功完成此客户的退票业务!"<<endl;
cout<<"\t修改订票业务后的本航班信息如下:"<<endl;
(*v_Iter)->PrintInfo();//输出取消订票业务后的此航班记录信息
}
break;
}
}
if(i==(*v_Iter)->m_haveBook.size())
{
cout<<"\t对不起,没有此客户在已订票客户记录里!"<<endl;
}
// int count;
// cout<<"\t请输入要取消的已订票数量:";
// cin>>count;//要取消的订票数量
// count=(*v_Iter)->m_haveBook[i].m_nWant;
// count+=(*v_Iter)->GetLeftCount();//得到以前的剩余票数并加上新退回票数
// (*v_Iter)->SetLeftCount(count); //重新设计本航班的剩余票数
// cout<<"\t成功取消订票业务!"<<endl;
// (*v_Iter)->PrintInfo();//输出取消订票业务后的此航班记录信息
}
else
{
cout<<"\t本航班没有任何客户!"<<endl;
}
cout<<endl;
cout<<"\t按任意键返回主界面";
cin.get();
cin.get();
}
///////////////////////////
void ModifyAirInfo(vector<AirInfo*> *vec_Air)//修改航班信息
{
vector<AirInfo*>::iterator v_Iter;//相当于遍历指针
system("cls");//清屏
string num;
cout<<"\t请输入要修改信息的航班号:";
cin>>num;
for(v_Iter=vec_Air->begin();v_Iter!=vec_Air->end();v_Iter++)
{
if((*v_Iter)->GetNum()==num)//查到相应的航班(编号)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -