📄 aviation.cpp
字号:
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 + -