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

📄 aviation.cpp

📁 航空客运订票系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			check1 = true;
		}
	}
	if (check1 == false)
	{
		cout<<"没有达到该地点的航班!"<<endl;
	}
	else 
	{
		cout<<"是否订购该终点站的机票(Y/N)?"<<endl;
		do
		{
            check2 = false;
			cin>>ch;
		    if (ch == 'Y' || ch == 'y')
			bookcheck(endP);
		    else if (ch == 'N' || ch == 'n')
			{
				cout<<"已退出!"<<endl;
			}
		    else 
			{
			cout<<"输入错误!请重新输入!";
			check2 = true;
			}
		}while (check2 == true);
	}
	cout<<"■〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓■"<<endl<<endl;

}




//预订机票的初级检查,主要是为了增强程序的可读性和维护性。
bool flight ::bookcheck(string ep)
{
	int epn;
	int berth;
	int berth1 = 7;
	int seatn;
	int ticket;
	bool check = false;
	bool check1 = false;
	char ch1,ch2,ch3;
	cout<<"\n■◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆订票信息登记◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆■\n"<<endl;
	for (int i = 0; i < 10; i++)
	{
		if (ep == endPoint[i])
		{
			check = true;
			epn = i;
			cout<<"你需要什么舱位(1.头等舱;2.经济舱;3.平价舱):";
			cin>>berth;
			berth = berth-1;
			seatn = maxsize - bookseat[i][berth];
			do {
				if (berth < 0 || berth > 2)
				{
					cout<<"输入错误,请重新输入:";
				}
				else 
				{
					if (seatn == 0)
					{
						cout<<"该舱位的票已售完。"<<endl;
						cout<<"选择其他舱位吗?(Y/N)"<<endl;
						do
						{
							cin>>ch1;
							if (ch1 == 'Y' || ch1 == 'y')
							{
								bookcheck(ep);
								break;
							}
							else if (ch1 == 'N' || ch1 == 'n')
							{
								cout<<"已将你安排到订票等候队列,请按要求填写下列信息:"<<endl;
								waitT(epn,seatn,berth);
								break;
							}
							else 
							{
								cout<<"输入错误!请重新输入!";
							}
						}while (1);
						break;
					}
				    cout<<"输入你所需要的票数:";
					cin>>ticket;
					if (ticket > seatn)
					{
						cout<<"你所购买的票数超出范围,现在该舱位还有"<<seatn
							<<"张票。继续购买吗?(Y/N)"<<endl;
						do
						{
							cin>>ch2;
							if (ch2 == 'Y' || ch2 == 'y')
							{
								cout<<"请你继续订购机票,稍后你可以选择订购其他舱位的机票,或者选择进入机票等候队列"<<endl<<endl;
								book(epn,seatn,berth);
								check1 = true;
								break;
							}
							else if (ch2 == 'N' || ch2 == 'n')
							{
								cout<<"已退出!"<<endl;
								break;
							}
							else 
							{
								cout<<"输入错误!请重新输入!";
							}
						}while (1);
					}
					else book(epn,ticket,berth);                                             
					if (check1 == true)                                                      //客户根据需要选择
					{
						cout<<"■〓〓〓〓〓〓〓〓〓〓〓〓〓〓选择所要进行的操作〓〓〓〓〓〓〓〓〓〓〓〓〓■\n"
							<<"■                ☆           1.订购其他舱位的机票    ☆                 ■\n"
							<<"■                ☆           2.进行机票等候          ☆                 ■\n"
							<<"■                ☆           0.退出                  ☆                 ■\n"
							<<"■〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓■"<<endl;
						do
						{
							cin>>ch3;
							if (ch3 == '1')
							{
								cout<<"输入你所要订票的舱位(1.头等舱;2.经济舱;3.平价舱):"; cin>>berth1;
									book(epn,ticket - seatn,berth1-1);
								check1 = true;
								break;
							}
							else if (ch3 == '2')
							{
								waitT(epn,ticket - seatn, berth);
								break;
							}
							else if (ch3 == '0')
							{
								cout<<"已退出!"<<endl;
								break;
							}
							else 
							{
								cout<<"输入错误!请重新输入!";
							}
						}while (1);
					}
					break;
				}
			}while (1);
		}
	}
	

	if (check == false)  cout<<"未查找到达到该地点的航班,请重新确认!"<<endl<<endl;
	cout<<endl<<"■〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓■"<<endl<<endl;
	return true;
}





//办理退票服务
bool flight:: cancelTicket()
{
	char ch;
	int checkr = 7;                                                                        //接收退订票的舱位
	string nam;
	string endp;
	cout<<"确定办理退票服务?(Y/N)";
	do
	{
		cin>>ch;
		if (ch == 'Y' || ch == 'y')
		{
			cout<<endl<<"■◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆请输入你的票务信息◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆■\n"<<endl;
			cout<<"输入你所订机票到达的终点:"; cin>>endp;
			cout<<"姓名:";cin>>nam;
			checkr = remove( nam, endp);
			break;
		}
		else if (ch == 'N' || ch == 'n')
		{
			cout<<"已退出!"<<endl;
			break;
		}
		else 
		{
			cout<<"输入错误!请重新输入!";
		}
	}while (1);
	if (checkr <= 2 && checkr >= 0 && waith!= NULL)                                      //当返回的舱位在范围内,以及侯票链表不为空时,对相应的侯票客户进行查找
	{
		for (waitf = waith; waitf != waitt->wnext; waitf = waitf->wnext)
		{
			if (waitf->wEndP == endp && waitf->wBerth == checkr) 
			{
				checkwait(endp,checkr);                                                 //查找到符合条件的客户,通知客户补订票
			}
		}
	}
	else if (checkr > 2 && checkr < 0 )cout<<"退票失败!"<<endl;
	else cout<<endl;
	
	cout<<"■〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓■"<<endl;
	return true;
}


//订票等候队列
bool flight ::waitT(int endp, int t,int ber)
{
	string name;
	string phonen;
	int ticketnum;
	cout<<"\n■◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆登记你的个人信息◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆■\n";
	cout<<"输入你的姓名:     ";         cin>>name;
	cout<<"输入你的电话:     ";         cin>>phonen;
	cout<<"输入你所需的票额: ";       cin>>ticketnum;
	cout<<"登记成功!如果机票出现剩余,我们将会及时电话通知您。"<<endl;
	waitt =  waitt->wnext = new waitLink(name,phonen,endPoint[endp],ber,ticketnum,waitt,NULL);
	waitnum++;
	return true;
}

//对侯票信息进行核对,并通知侯票人进行订票登记
bool flight ::checkwait(string endp, int checkr)
{
	int endpn;
	int ticketn;
	char ch;
	bool check = false;                                                                    //验证是否补订票
	for (int i = 0; i < 100; i++)                                                          //查找航班编号,便于调用函数
	{
		if (endPoint[i] == endp)
		{
			endpn = i;
		}
		
	}
	cout<<"\n■◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆侯票客户通知◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆■"<<endl<<endl;
	cout<<endp<<"航班出现空位,现已电话通知等候该票的客户:"<<waitf->wName<<endl;
	cout<<waitf->wphoneNum<<"电话通知中………"<<endl;
	cout<<"是否接听?(Y/N)";
	do
	{
		cin>>ch;
		if (ch == 'Y' || ch == 'y')
		{
			cout<<"尊敬的客户,现你所等候的机票已有满足你的空缺,现为你转入订票操作……"<<endl;
			cout<<"现在"<<waitf->wBerth+1<<"号舱剩余的票数为:"<<maxsize - bookseat[endpn][waitf->wBerth]<<endl;
			cout<<"现请你输入你所需的票额:"; cin>>ticketn;
			book(endpn, ticketn, waitf->wBerth);
			check = true;
			break;
		}
		else if (ch == 'N' || ch == 'n')
		{
			for (waitf = waitf->wnext; waitf != waitt->wnext; waitf = waitf->wnext)
			{
				if (waitf->wEndP == endp && waitf->wBerth == checkr) 
				{
					cout<<"由于上一位客户取消订票,现在通知下一位有需要的客户。"<<endl;
					checkwait(endp,checkr);                                                 //前一客户已取消侯票的补订,之后的符合条件的客户可继续进行侯票补订
					check = true;
				}
			}
			cout<<"已退出!"<<endl;
			break;
		}
		else 
		{
			cout<<"输入错误!请重新输入!";
		}
	}while (1);
	if (check = true)                                                      //有补丁票,删除该侯票客户
	{
		if(waitt == waitf) 
		{
			waitt = waitf->wprev;
			waitLink * temp = waitf;
			waitt->wnext = NULL;
			waitf = waitt;
			delete temp;
			waitnum--;
		}
		else
		{
			waitLink * temp = waitf;
			waitf->wprev->wnext = temp->wnext;
			waitf->wnext->wprev = temp->wprev;
			delete temp;
			waitnum--;
		}
	}

	return check;
}

//遍历侯票客户列表
void flight ::scanwait()
{
	if (waith->wnext != NULL)
	{
		cout<<"\n■◆◆◆◆◆◆◆◆◆◆◆◆◆◆侯票客户列表◆◆◆◆◆◆◆◆◆◆◆◆◆◆■\n"<<endl;
		for(waitf = waith->wnext; waitf != waitt->wnext; waitf = waitf->wnext)
		{
			cout<<endl<<"姓名:"<<waitf->wName<<endl;
			cout<<"电话:"<<waitf->wphoneNum<<endl;
			cout<<"所需航班:"<<waitf->wEndP<<endl;
			cout<<"舱位:"<<waitf->wBerth+1<<endl;
			cout<<"所需票数:"<<waitf->wTicketNum<<endl;
			cout<<"■〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓"<<endl;
		}
	}
	else cout<<"暂无人侯票!"<<endl;
}




/***************************************MAIN函数***********************************************/

void main()
{
	char choice;
	string endpoint;
	flight Flight;
	cout<<"\n■◆◆◆◆◆◆◆◆◆◆◆◆◆◆航空客运订票系统◆◆◆◆◆◆◆◆◆◆◆◆◆◆■\n"
		<<"■                                                                  ■\n"
		<<"■                                                                  ■\n"
		<<"■〓〓〓〓〓〓〓〓〓〓〓〓〓〓选择所要进行的操作〓〓〓〓〓〓〓〓〓〓〓〓〓■\n"
		<<"■                ☆           1.查看所有航班          ☆                 ■\n"
		<<"■                ☆           2.查询航线              ☆                 ■\n"
		<<"■                ☆           3.订购机票              ☆                 ■\n"
		<<"■                ☆           4.退订机票              ☆                 ■\n"
		<<"■                ☆          5.查看订票等候队列      ☆                 ■\n"
		<<"■                ☆          0.退出系统              ☆                 ■\n"
		<<"■〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓■"
		<<endl<<endl;
	do
	{	
        cout<<"输入你选择的操作:";
		cin>>choice;
		if (choice != '0')
		switch(choice)
		{
            case '1' : Flight.checkAll();break;
			case '2' : Flight.checkLane();break;
			case '3' : 
				{ 
					cout<<"输入你要达到的终点站:"; 
				    cin>>endpoint;
				    Flight.bookcheck(endpoint);
				};break;
			case '4' : Flight.cancelTicket();break;
			case '5' : Flight.scanwait();break;
			default :  break;
		}
	}while(choice != '0');
	if (choice == '0')cout<<"感谢你的使用,欢迎再次使用《三三八航空客运订票系统》,再会!"<<endl;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -