⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 airinfo.cpp

📁 一个简单的机票预订系统 个人觉得还好了
💻 CPP
📖 第 1 页 / 共 3 页
字号:
					  }
				  }
			      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 + -