📄 flight.cpp
字号:
//显示个人订票信息(根据客户编号_数组下标)
void Flight::print_own_book_info(int i)
{
if(book_info[i].flight_count!=0)
{
cout<<"您目前的订票信息如下: "<<endl<<endl;
cout<<setw(10)<<"客户姓名"<<setw(20)<<"客户ID"<<setw(14)<<"航班总数"
<<setw(10)<<"航班编号"<<setw(10)<<"订购票数"<<endl;
cout<<setw(10)<<book_info[i].client_name<<setw(20)<<book_info[i].client_id
<<setw(10)<<book_info[i].flight_count<<endl;
for(int k=0;k<book_info[i].flight_count;k++)
{
//if(book_info[i].f_num_t_count[k][1]==0) continue;
cout<<setw(50)<<book_info[i].f_num_t_count[k][0]
<<setw(10)<<book_info[i].f_num_t_count[k][1]<<endl;
}
}
else
{
cout<<"您目前没有任何订票信息! "<<endl<<endl;
}
}
//订票
void Flight::book()
{
if((_access( "flight_count.dat", 0 )) != -1 || flight_count!=0)
{
int i;
char flag;
char client_name[20];
char client_id[20];
print_flight_info();
cout<<"您是否要查询航班(y要查询,n不查询)? ";
cin>>flag; cout<<endl;
if(flag=='y')
{
search_flight_info();
}
cout<<"请输入您的姓名: "; cin>>client_name; cout<<endl;
cout<<"请输入您的证件ID: "; cin>>client_id; cout<<endl;
if((_access("client_count.dat", 0 )) != -1)
{
if(read_book_info())
{
if((i=find_own_book_info(client_name,client_id))<0)
{
cout<<endl;
cout<<"您尚无订票记录~!"<<endl<<endl;
strcpy(book_info[client_count].client_name,/*(char *)&*/client_name);
strcpy(book_info[client_count].client_id,/*(char *)&*/client_id);
book_info[client_count].flight_count=0;
book_step(client_count);
client_count++;
}
else
{
print_own_book_info(i);
book_step(i);
}
}
else
{
cout<<"订票数据读盘时出现错误!"<<endl;
}
}
else
{
strcpy(book_info[0].client_name,/*(char *)&*/client_name);
strcpy(book_info[0].client_id,/*(char *)&*/client_id);
book_info[client_count].flight_count=0;
book_step(0);
}
}
else
cout<<"抱歉,暂时还没有可用航班!"<<endl<<endl;
}
//显示相同航线信息
void Flight::print_same_route(int flight_number,char *take_off_city,char *land_city)
{
char flag=true;
for(int i=0;i<flight_count;i++)
{
if(flight[i].number != flight_number &&
strcmp(flight[i].take_off_city,take_off_city)==0 &&
strcmp(flight[i].land_city,land_city)==0 &&
flight[i].remain_seat_num !=0)
{
if(flag)
{
cout<<"相同航线的其他有票航班信息为: "<<endl;
cout<<endl;
cout<<setw(10)<<"航班编号"<<setw(10)<<"起飞时间"<<setw(10)<<"降落时间"
<<setw(10)<<"起飞城市"<<setw(10)<<"降落城市"<<setw(10)<<"机票价格"
<<setw(10)<<"剩余座位"<<setw(10)<<"票价折扣"<<endl;
flag=false;
}
cout<<setw(10)<<flight[i].number<<setw(10)<<flight[i].take_off_time
<<setw(10)<<flight[i].land_time<<setw(10)<<flight[i].take_off_city
<<setw(10)<<flight[i].land_city<<setw(10)<<flight[i].price
<<setw(10)<<flight[i].remain_seat_num<<setw(10)<<flight[i].discount<<endl;
}
}
if(i>=flight_count)
{
cout<<"该航线已无其他有票航班~!"<<endl<<endl;
}
}
//订票步骤
void Flight::book_step(int client_number)
{
int k,flight_number,ticket_count;
char flag;
do{
cout<<"请输入您要订的航班的航班编号: ";
cin>>flight_number; cout<<endl;
for(k=0;k<flight_count;k++)
{
if(flight[k].number==flight_number) break;
}
if(k>=flight_count)
{
cout<<"你输入的航班编号不存在,请输入正确的航班编号进行订票!"<<endl<<endl;
}
if(flight[k].remain_seat_num==0)
{
cout<<"该航班已经满舱,请选择其他航班!"<<endl<<endl;
print_same_route(flight_number,flight[k].take_off_city,flight[k].land_city);
}
else
{
cout<<"请输入机票数量: ";
cin>>ticket_count; cout<<endl;
if(flight[k].remain_seat_num<ticket_count)
{
cout<<"该航班余票不足,当前剩余票数为: "<<flight[k].remain_seat_num<<endl<<endl;
print_same_route(flight_number,flight[k].take_off_city,flight[k].land_city);
cout<<"如果要继续订票,请输入合适的航班编号和机票数量: "<<endl<<endl;
cout<<"是否继续订票(y是,n否)? "; cin>>flag; cout<<endl;
}
else
{
if(book_info[client_number].flight_count==0)
{
book_info[client_number].f_num_t_count[0][0]=flight_number;
book_info[client_number].f_num_t_count[0][1]=ticket_count;
book_info[client_number].flight_count++;
flight[k].remain_seat_num -= ticket_count;
client_count++;
}
else
{
for(int i=0;i<book_info[client_number].flight_count;i++)
{
if(book_info[client_number].f_num_t_count[i][0]==flight[k].number)
{
book_info[client_number].f_num_t_count[i][1] += ticket_count;
flight[k].remain_seat_num -= ticket_count;
break;
}
}
if(i>=book_info[client_number].flight_count)
{
book_info[client_number].f_num_t_count[book_info[client_number].flight_count][0]=flight_number;
book_info[client_number].f_num_t_count[book_info[client_number].flight_count][1]=ticket_count;
book_info[client_number].flight_count++;
flight[k].remain_seat_num -= ticket_count;
}
}
if(!save_book_info() || !save_flight_info())
{
cout<<"订票信息存盘时出现错误!!"<<endl<<endl;
cout<<"是否继续订票(y是,n否)? "; cin>>flag; cout<<endl;
}
else
{
cout<<"订票成功~,是否继续订票(y是,n否)? "; cin>>flag; cout<<endl;
}
}
}
}while(flag != 'n');
print_own_book_info(client_number);
cout<<"订票结束,欢迎下次光临~~~~!"<<endl<<endl;
}
//退票
void Flight::bounce()
{
int i;
char client_name[20];
char client_id[20];
cout<<"请输入您的姓名: "; cin>>client_name; cout<<endl;
cout<<"请输入您的证件ID: "; cin>>client_id; cout<<endl;
if((_access("client_count.dat", 0 )) != -1)
{
if(read_book_info())
{
if((i=find_own_book_info(client_name,client_id))<0)
{
cout<<endl;
cout<<"您没有订票记录,请确定你订过票再进行此操作!"<<endl<<endl;
}
else
{
print_own_book_info(i);
bounce_step(i);
}
}
else
{
cout<<"订票数据读盘时出现错误,您暂时不能退票!"<<endl;
}
}
else
{
cout<<"您没有订票记录,请确定你订过票再进行此操作!"<<endl<<endl;
}
}
//退票步骤
void Flight::bounce_step(int client_number)
{
int i,flight_number,ticket_count;
char flag;
if(book_info[client_number].flight_count==1)
{
flag='y';
do{
cout<<"请输入您要退的票数(大于0): ";
cin>>ticket_count; cout<<endl;
if(ticket_count<=0)
{
cout<<"输入的票数不合法,请确认后再输入! "<<endl<<endl;
continue;
}
if(book_info[client_number].f_num_t_count[0][1]<ticket_count)
{
cout<<"退订的票数不能超过已订的票数,请确认后再输入! "<<endl<<endl;
continue;
}
if(read_flight_info())
{
book_info[client_number].f_num_t_count[0][1] -= ticket_count;
flight_number = book_info[client_number].f_num_t_count[0][0];
for(i=0;i<flight_count;i++)
{
if(flight[i].number == flight_number)
{
flight[i].remain_seat_num += ticket_count;
break;
}
}
if(book_info[client_number].f_num_t_count[0][1]==0)
{
book_info[client_number].flight_count=0;
client_count--;
}
if(!save_book_info() || !save_flight_info())
{
cout<<"退票信息存盘时出现错误!!"<<endl<<endl;
cout<<"是否继续退票(y是,n否)? "; cin>>flag; cout<<endl;
}
else
{
cout<<"退票成功~,是否继续退票(y是,n否)? "; cin>>flag; cout<<endl;
}
}
else
{
cout<<"读取航班信息时出现错误! "<<endl<<endl;
cout<<"是否继续退票(y是n否)? ";
cin>>flag; cout<<endl;
}
}while(flag == 'y');
}
else
{
flag='y';
do{
cout<<"请输入您要退票的航班编号: ";
cin>>flight_number; cout<<endl;
for(i=0;i<book_info[client_number].flight_count;i++)
{
if(book_info[client_number].f_num_t_count[i][0]==flight_number) break;
}
if(i>=book_info[client_number].flight_count)
{
cout<<"您没有订该航班的票,请确认您选的航班是您订票的航班!"<<endl<<endl;
continue;
}
cout<<"请输入您要退的票数(大于0): ";
cin>>ticket_count; cout<<endl;
if(ticket_count<=0)
{
cout<<"输入的票数不合法,请确认后再输入! "<<endl<<endl;
continue;
}
if(book_info[client_number].f_num_t_count[i][1]<ticket_count)
{
cout<<"退订的票数不能超过已订的票数,请确认后再输入! "<<endl<<endl;
continue;
}
if(read_flight_info())
{
book_info[client_number].f_num_t_count[i][1] -= ticket_count;
for(int k=0;k<flight_count;k++)
{
if(flight[k].number == flight_number)
{
flight[k].remain_seat_num += ticket_count;
break;
}
}
if(book_info[client_number].f_num_t_count[i][1]==0)
{
int temp;
book_info[client_number].flight_count--;
temp=book_info[client_number].flight_count;
book_info[client_number].f_num_t_count[i][0]=book_info[client_number].f_num_t_count[temp][0];
book_info[client_number].f_num_t_count[i][1]=book_info[client_number].f_num_t_count[temp][1];
}
if(!save_book_info() || !save_flight_info())
{
cout<<"退票信息存盘时出现错误!!"<<endl<<endl;
cout<<"是否继续退票(y是,n否)? "; cin>>flag; cout<<endl;
}
else
{
cout<<"退票成功~,是否继续退票(y是,n否)? "; cin>>flag; cout<<endl;
}
}
else
{
cout<<"读取航班信息时出现错误! "<<endl<<endl;
cout<<"是否继续退票(y是n否)? ";
cin>>flag; cout<<endl;
}
}while(flag == 'y');
}
print_own_book_info(client_number);
cout<<"退票结束,欢迎下次光临~~~~!"<<endl<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -