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

📄 flight.cpp

📁 课程设计订票系统,原创,今年作课程设计时自己写的,经过多次测试,程序正确,功能齐全,可作为参考!希望对大家有用
💻 CPP
📖 第 1 页 / 共 3 页
字号:
						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 + -