📄 flight.cpp
字号:
flight_count--;
if(save_flight_info())
cout<<"航班信息删除成功!"<<endl<<endl;
else
cout<<"航班删除后数据存盘时出现错误!"<<endl<<endl;
cout<<"是否继续(y继续,n结束)?";
cin>>flag;
cout<<endl;
}
}
if(check_flight_can_delete(flight_num)==0)
{
cout<<"该航班有售票记录,不能删除! "<<endl<<endl;
cout<<"是否继续(y继续,n结束)?";
cin>>flag; cout<<endl;
}
if(check_flight_can_delete(flight_num)==-1)
{
cout<<"查看售票信息时出现错误,暂时不能删除该航班! "<<endl<<endl;
cout<<"是否继续(y继续,n结束)?";
cin>>flag; cout<<endl;
}
}
}while(flag=='y');
}
}
//确保航班可删除(没有购票记录)
int Flight::check_flight_can_delete(int flight_num)
{
if((_access("client_count.dat", 0 )) != -1)
{
if(read_book_info())
{
for(int i=0;i<client_count;i++)
for(int k=0;k<book_info[i].flight_count;k++)
if(book_info[i].f_num_t_count[k][0]==flight_num)
{
return 0;
}
}
return -1;
}
return 1;
}
//查找航班信息
void Flight::search_flight_info()
{
int iflag;
print_flight_info();
if(flight_count != 0)
{
do
{
cout<<"================================================================================";
cout<<" -------- ☆ 1.按航班号查询 ☆-------- "<<endl;
cout<<" -------- ☆ 2.按抵达城市查询 ☆-------- "<<endl;
cout<<" -------- ☆ 3.按航线查询 ☆-------- "<<endl;
cout<<" -------- ☆ 0.退出 ☆-------- "<<endl;
cout<<"================================================================================ "<<endl;
cout<<"请在0-3中选择查询方式,以回车键结束:";
cin>>iflag;
cout<<endl;
if(iflag==1)
{
int flight_num;
cout<<"请输入要查找的航班的航班号: ";
cin>>flight_num; cout<<endl;
searchbynumber(flight_num);
}
else if(iflag==2)
{
char land_city[20];
cout<<"请输入抵达城市名称: ";
cin>>land_city; cout<<endl;
searchbydestination(land_city);
}
else if(iflag==3)
{
char take_off_city[20];
char land_city[20];
cout<<"请输入起飞城市名称: ";
cin>>take_off_city; cout<<endl;
cout<<"请输入抵达城市名称: ";
cin>>land_city; cout<<endl;
searchbyroute(take_off_city,land_city);
}
else if(iflag==0) break;
else
cout<<"请按照要求进行输入!"<<endl<<endl;
}while(iflag != 0); //判断结束
}
//cout<<"谢谢使用查询系统,下面将返回系统主界面! "<<endl<<endl;
}
//按航班号查询
void Flight::searchbynumber(int flight_num)
{
for(int i=0;i<flight_count;i++)
{
if(flight[i].number==flight_num) break;
}
if(i>=flight_count)
{
cout<<"没有您要找的航班,请确认航班号后再进行查找~!"<<endl<<endl;
}
else
{
cout<<"您查找的航班信息为: "<<endl;
cout<<endl;
cout<<setw(10)<<"航班编号"<<setw(10)<<"起飞时间"<<setw(10)<<"降落时间"
<<setw(10)<<"起飞城市"<<setw(10)<<"降落城市"<<setw(10)<<"机票价格"
<<setw(10)<<"剩余座位"<<setw(10)<<"票价折扣"<<endl;
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;
}
}
//按抵达城市查询
void Flight::searchbydestination(char *land_city)
{
char flag=true;
for(int i=0;i<flight_count;i++)
{
if(strcmp(flight[i].land_city,land_city)==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;
break;
}
}
if(i>=flight_count)
{
cout<<"没有您要找的航班,请确认抵达城市后再进行查找~!"<<endl<<endl;
}
}
//按航线查询
void Flight::searchbyroute(char *take_off_city,char *land_city)
{
char flag=true;
for(int i=0;i<flight_count;i++)
{
if(strcmp(flight[i].take_off_city,take_off_city)==0&&strcmp(flight[i].land_city,land_city)==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;
break;
}
}
if(i>=flight_count)
{
cout<<"没有您要找的航线,请确认航线后再进行查找~!"<<endl<<endl;
}
}
//保存订票信息
bool Flight::save_book_info()
{
FILE *fp;
int i;
if((fp=fopen("book_info.dat","wb"))==NULL)//文件打开出错
{
cout<<"创建/打开文件失败! "<<endl;
return false;
}
for(i=0;i<client_count;i++)//利用循环写入每个客户的订票信息
{
if(book_info[i].flight_count==0) continue;
if(fwrite(&book_info[i],sizeof(Book_Info),1,fp)!=1) //在输出的同时检查输出是否成功
{
cout<<"写入文件失败! "<<endl;
fclose(fp); //关闭文件
return false;
}
}
fclose(fp); //关闭文件
if((fp=fopen("client_count.dat","wb"))==NULL)//打开文件并判断是否出错
{
cout<<"创建/打开文件失败! "<<endl;//打印出错提示
return false;
}
if(fprintf(fp,"%d",client_count)<0)
{
cout<<"写入文件失败! "<<endl;
fclose(fp); //关闭文件
return false;
}
fclose(fp); //关闭文件
return true;
}
//读取订票信息
bool Flight::read_book_info()
{
FILE *fp;
int i;
if((fp=fopen("client_count.dat ","rb"))==NULL)//打开文件并判断是否出错
{
cout<<"打开文件失败! "<<endl;
return false;
}
if(fscanf(fp,"%d",&client_count)<0)//读取航班数信息
{
cout<<"读取文件失败! "<<endl;
fclose(fp); //关闭文件
return false;
}
fclose(fp); //关闭文件
if((fp=fopen("book_info.dat","rb"))==NULL) //文件打开出错
{
cout<<"打开文件失败! "<<endl;
return false;
}
for(i=0;i<client_count;i++) //利用循环读取每次航班的信息
{
if(fread(&book_info[i],sizeof(Flight_Info),1,fp)!=1)
{
cout<<"读取文件失败! "<<endl;
fclose(fp); //关闭文件
return false;
}
}
fclose(fp); //关闭文件
return true;
}
//查看所有订票信息
void Flight::print_all_book_info()
{
if(checked || checkpwd())
{
if((_access("client_count.dat", 0 )) != -1)
{
if(read_book_info())
{
cout<<"客户订票信息如下: "<<endl;
cout<<endl;
cout<<setw(10)<<"客户姓名"<<setw(20)<<"客户ID"<<setw(14)<<"航班总数"
<<setw(10)<<"航班编号"<<setw(10)<<"订购票数"<<endl;
for(int i=0;i<client_count;i++)
{
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++)
{
cout<<setw(50)<<book_info[i].f_num_t_count[k][0]
<<setw(10)<<book_info[i].f_num_t_count[k][1]<<endl;
}
cout<<endl;
}
}
else
{
cout<<"订票数据读盘时出现错误!"<<endl;
}
}
else
{
cout<<endl;
cout<<"尚无任何订票信息!"<<endl<<endl;
}
}
}
//查看自己订票信息
void Flight::print_own_book_info()
{
char client_name[20];
char client_id[20];
int i;
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
{
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++)
{
cout<<setw(50)<<book_info[i].f_num_t_count[k][0]
<<setw(10)<<book_info[i].f_num_t_count[k][1]<<endl;
}
cout<<endl;
}
}
else
{
cout<<"订票数据读盘时出现错误!"<<endl;
}
}
else
{
cout<<endl;
cout<<"您还没有订过票!请先订票,再查看自己的订票信息~!"<<endl<<endl;
}
}
//查询个人订票信息
int Flight::find_own_book_info(char *client_name,char *client_id)
{
int i;
for(i=0;i<client_count;i++)
{
if(strcmp(book_info[i].client_name,client_name)==0 &&
strcmp(book_info[i].client_id,client_id)==0) break;
}
if(i>=client_count) return -1;
return i;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -