📄 airinfo.cpp
字号:
{
(*v_Iter)->PrintInfo();
break;
}
}
if(v_Iter==vec_Air->end())//找到最后没找到相应的航班
{
cout<<"\t对不起,没有此航班!"<<endl;
cout<<"\t按任意键返回主界面!";
cin.get();
cin.get();
return ;
}
char ch='n';
cout<<"\t是否确定要修改此航班信息?(y/n):";
cin>>ch;
if(ch=='n')return ;//取消修改航班信息
char choice='p';
while(choice!='y')
{
cout<<endl;
cout<<"\t1.修改航班编号"<<"\t\t\t2.修改航班起飞站"<<endl;
cout<<"\t3.修改航班终点站"<<"\t\t4.修改航班起飞时间(日期)"<<endl;
cout<<"\t5.修改航班总飞行时间(小时)"<<"\t6.修改航班总票数"<<endl;
cout<<"\t7.修改航班剩余票数"<<"\t\t8.修改等候订本航班票的客户"<<endl;
cout<<"\t0.返回主界面"<<endl<<endl;
cout<<"\t请选择(0-8):";
cin>>choice;
switch(choice)
{
case '1'://修改航班编号
{
string tem;
cout<<"\t请修改本航班编号(输入新编号):";
cin>>tem;
(*v_Iter)->SetNum(tem);//设计航班编号
cout<<"\t成功修改航班编号!";
cin.get();
cin.get();
break;
}
case '2'://修改航班起飞站
{
string tem;
cout<<"\t请修改本航班起飞站(输入新起飞站):";
cin>>tem;
(*v_Iter)->SetStart(tem);//设计航班起飞站
cout<<"\t成功修改航班起飞站!";
cin.get();
cin.get();
break;
}
case '3'://修改航班终点站
{
string tem;
cout<<"\t请修改本航班终点站(输入新终点站):";
cin>>tem;
(*v_Iter)->SetEnd(tem);//设计航班终点站
cout<<"\t成功修改航班终点站!";
cin.get();
cin.get();
break;
}
case '4'://修改航班起飞时间(日期)
{
string tem;
cout<<"\t请修改本航班起飞日期(输入新日期):";
cin>>tem;
(*v_Iter)->SetTime(tem);//设计航班起飞时间
cout<<"\t成功修改航班起飞时间(日期)!";
cin.get();
cin.get();
break;
}
case '5'://修改航班总飞行时间(小时)
{
string tem;
cout<<"\t请修改本航班总飞行时间(小时):";
cin>>tem;
(*v_Iter)->SetFlyTime(tem);//设计航班飞行时间
cout<<"\t成功修改航班飞行时间!";
cin.get();
cin.get();
break;
}
case '6'://修改航班总票数
{
string tem;
cout<<"\t请修改本航班总票数(输入新票数):";
cin>>tem;
int count=atoi(tem.c_str());
(*v_Iter)->SetCount(count);//设计航班总票数
cout<<"\t成功修改航班票数!";
cin.get();
cin.get();
break;
}
case '7'://修改航班剩余票数
{
int left;
cout<<"\t请输入要修改后的航班剩余票数:";
cin>>left;
(*v_Iter)->SetLeftCount(left);
cout<<"\t成功修改航班剩余票数!";
cin.get();
cin.get();
break;
}
case '8'://修改等候订本航班票的客户
{
string strID;//客户ID
cout<<"\t请选择(输入)要修改的客户ID号:";
cin>>strID;
for(int i=0;i<(*v_Iter)->m_wPerson.size();i++)
{
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;
char modify='n';
cout<<"\t是否要修改此客户的信息?(y/n):";
cin>>modify;
if(modify=='y')//确定修改此客户的信息
{//重新输入此客户的所有信息
cout<<"\t请输入修改后的客户ID号:";
cin>>(*v_Iter)->m_wPerson[i].m_strID;
cout<<"\t请输入修改后的客户姓名:";
cin>>(*v_Iter)->m_wPerson[i].m_strName;
cout<<"\t请输入修改后的客户订票数量:";
cin>>(*v_Iter)->m_wPerson[i].m_nWant;
cout<<endl<<endl;
cout<<"\t成功修改客户信息!"<<endl<<endl;
cin.get();
cin.get();
}
}
}
break;
}
case '0'://返回主界面
{
cout<<"\t确定返回吗?(y/n):";
cin>>choice;
break;
}
default:break;
}
}
}
/////////////////////////////
void DelAirInfo(vector<AirInfo*> *vec_Air)//删除航班信息
{
vector<AirInfo*>::iterator v_Iter;
AirInfo* pA;
system("cls");
cout<<endl;
int flag=0;
char del='n';
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();//输出此航班信息记录
flag=1;
cout<<"\t确定要删除本航班所有信息吗?(y/n):";
cin>>del;
if(del=='n'||del=='N')return ;//取消删除
pA=*v_Iter;
delete pA;
vec_Air->erase(v_Iter);//删除此航班记录
cout<<"\t成功删除本航班信息!"<<endl;
break;
}
}
if(flag==0)
{
cout<<endl;
cout<<"\t不存在些航班信息!"<<endl;
}
cout<<"\t按任意键返回主界面";
cin.get();
cin.get();
}
//////////////////////////////////////////////
void ScanAirInfo(vector<AirInfo*> vec_Air)//浏览总航班信息
{
system("cls");//清屏
for(int i=0;i<vec_Air.size();i++)
{
vec_Air[i]->PrintInfo();
}
cout<<endl;
cout<<"\t按任意键返回主界面!";
cin.get();
cin.get();
}
///////////////////////////////////////////////////
void SaveAirInfo(vector<AirInfo*> vec_Air)//所有航班信息记录存盘
{
fstream out;//文件对象
out.open("AirInfo.txt",ios::out);//打开存盘文件
/*********保存航班信息到文件************/
for(int i=0;i<vec_Air.size();i++)//格式化存盘
{
out<<vec_Air[i]->GetNum()<<"\t";//航班号
out<<vec_Air[i]->GetStart()<<"\t";//起飞站
out<<vec_Air[i]->GetEnd()<<"\t";//终点站
out<<vec_Air[i]->GetTime()<<"\t";//起飞时间
out<<vec_Air[i]->GetFlyTime()<<"\t";//飞行总时间
out<<vec_Air[i]->GetCount()<<"\t";//航班票数
out<<vec_Air[i]->GetLeftCount()<<"\t";//剩余票数
out<<vec_Air[i]->m_haveBook.size()<<"\t";//已订票的客户数
for(int k=0;k<vec_Air[i]->m_haveBook.size();k++)//有size个客户等候订本航班的票
{
out<<vec_Air[i]->m_haveBook[k].m_strID<<"\t";//客户ID号
out<<vec_Air[i]->m_haveBook[k].m_strName<<"\t";//客户姓名
out<<vec_Air[i]->m_haveBook[k].m_nWant<<"\t";//所订票数量
}
out<<vec_Air[i]->GetWaitCount()<<"\t";//等候订票的客户数
for(int j=0;j<vec_Air[i]->m_wPerson.size();j++)//有size个客户等候订本航班的票
{
out<<vec_Air[i]->m_wPerson[j].m_strID<<"\t";//客户ID号
out<<vec_Air[i]->m_wPerson[j].m_strName<<"\t";//客户姓名
out<<vec_Air[i]->m_wPerson[j].m_nWant<<"\t";//所订票数量
}
out<<endl;//文件换行
}
/***************************************/
out.close();//关闭文件,保存完闭
cout<<"\t保存成功!";
cin.get();
cin.get();
}
//////////////////////////////////////////////////////
int SystemKey()//进入本系统的密码函数
{
string strKey="love";
string key;
cout<<"\t请输入密码然后才能进入系统:";
cin>>key;
if(key==strKey)
{
cout<<"\t恭喜您!可以进入系统!";
cin.get();
cin.get();
return 1;//密码正确
}
else
{
cout<<"\t对不起,密码不正确!即将退出!";
cin.get();
cin.get();
return 0;//密码错误
}
}
//////////////////////////////////////////////////////
void main()
{
vector<AirInfo*> vec_Air; //用于对所有航班信息记当进行各种操作,相当于内存暂存器
vector<AirInfo*>::iterator v_Iter;//用于对vec_Air进行遍历的AirInfo类型的指针
AirInfo* pA;
// if(SystemKey()==0)return ;//检测密码
LoadData(&vec_Air);//导入数据
char choice='p';
while(choice!='0')
{
system("cls");//清屏
cout<<endl;
cout<<"\t******************航空订票系统********************"<<endl;
cout<<"\t******广西工学院计算机工程系计035班 梁姣莹******"<<endl;
cout<<"\t\t\t"<<endl;
cout<<"\t\t1.输入航班信息"<<"\t\t2.查询航班"<<endl;
cout<<"\t\t3.订票业务"<<"\t\t4.退票业务"<<endl;
cout<<"\t\t5.修改航班信息"<<"\t\t6.删除航班信息"<<endl;
cout<<"\t\t7.浏览总航班信息"<<"\t8.保存"<<endl;
cout<<"\t\t0.退出"<<endl;
cout<<"\t**************************************************"<<endl;
cout<<"\t请选择(0-8):";
cin>>choice;
switch(choice)
{
case '1'://输入航班信息
{
NewAirInfo(&vec_Air);
break;
}
case '2'://查询航班
{
FindAirInfo(vec_Air);
break;
}
case '3'://订票业务
{
BookAirInfo(&vec_Air);
break;
}
case '4'://退票业务
{
CancelAirInfo(&vec_Air);
break;
}
case '5'://修改航班信息
{
ModifyAirInfo(&vec_Air);
break;
}
case '6'://删除航班信息
{
DelAirInfo(&vec_Air);
break;
}
case '7'://浏览总航班信息
{
ScanAirInfo(vec_Air);//
break;
}
case '8'://所有航班记录存盘
{
SaveAirInfo(vec_Air);
break;
}
case '0':break;//退出本系统
}
}
//////////////////////////////////////////////////////////////
for(v_Iter=vec_Air.begin();v_Iter!=vec_Air.end();)//清空内存暂存器vec_Air
{//删除所有元素
pA=*v_Iter;
delete pA;
vec_Air.erase(v_Iter);
}
//////////////////////////////////////////////////////////////
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -