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

📄 flight.cpp

📁 课程设计订票系统,原创,今年作课程设计时自己写的,经过多次测试,程序正确,功能齐全,可作为参考!希望对大家有用
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//显示个人订票信息(根据客户编号_数组下标)
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 + -