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

📄 flight.cpp

📁 航空客运订票系统航线管理 订票办理 退票办理 乘客管理
💻 CPP
📖 第 1 页 / 共 2 页
字号:
  getch();
}


//-------航线修改------
void Line_Edit()
{   

	char answer[20];
	if(Empty_Flight())   //航班线为空
		return;
	while(0==Empty_Flight())
	{
		
		prefix("修改航班");
	
		Line_See();
		cout<<"警告!如果该修改航班有乘客 将直接退出本操作"<<endl;
		cout<<"若该修改航班有乘客,请先退出所有的票再执行本操作"<<endl;
		cout<<"\n\t\t\t请输入你要修改的航班号";
		cin>>answer;
		read2();
		for(j=0;j<n;j++)
			while(strcmp(c[j].Flight_No,answer)==0)
			{   
				cout<<"\n\t\t\t该航班有乘客,请先退出所有的票"<<endl;
				for(k=0;k<10000;k++)
					k++;
				getch();
			    return;
			}
			while(strcmp(c[j].Flight_No,answer)!=0)
			{	read();
			for(i=0;i<m;i++)
				
			{	if(strcmp(f[i].Flight_No,answer)==0)
					
				{cout<<"\n\t\t\t请输入新航班号";
				cin>>f[i].Flight_No;
				cout<<"\n\t\t\t请输入飞机号";
				cin>>f[i].Plane_No;
				cout<<"\n\t\t\t请输终点站名";
				cin>>f[i].Des_Name;
				cout<<"\n\t\t\t请输飞行周日";
				cin>>f[i].Week_Day;
				cout<<"\n\t\t\t请输乘员定额"; 
				cin>>f[i].Customer_Amount;
				cout<<"\n\t\t\t   请输入头等舱票价:";
				cin>>f[i].Price[0];
				cout<<"\n\t\t\t   请输入普通舱票价:";
				cin>>f[i].Price[1];
				cout<<"\n\t\t\t   请输入经济舱票价:";
				cin>>f[i].Price[2];
				f[i].Free_Amount=f[i].Customer_Amount;     //剩余票数与乘员定额相同
				cout<<"操作完成"<<endl;
				getchar();
				return;
				}
			

				if(strcmp(f[i].Flight_No,answer)!=0)
				{for(k=0;k<100000;k++)
					k++;
					cout<<"\n\t\t\t找不到该航班"<<endl;
				for(k=0;k<250000000;k++)
					k++;
				getchar();
				return;
				}
			}
				save();
				
				
	} 
	}
	 
}



void Sub1Menu()
{
  char *MenuItem[]={"│   航空客运航线管理子菜单   │","│ │[1]. 航 线 增 设    │ │",\
    "│ │[2]. 航 线 查 看    │ │","│  │[3]. 航 线 修 改    │ │","│ │[4]. 返 回 主 菜 单 │ │"};
  while(1)
    switch(ModelMenu(MenuItem,5))
    {
        case '1':{Line_Add();break;}
        case '2':{Line_See();break;}
		case '3':{Line_Edit();break;}
        case '4':{return;}
        default:{ErrorMess();}
    }
}


//---------------订票办理函数---------------
void Sub2Menu()
{
int flag;

if(Empty_Flight())     //航班线为空

return;
  
while(0==Empty_Flight())
  {
    prefix("订票办理");
    flag=0;           //标志位清零以重新作出判断
    
    cout<<"\n\t\t\t   请输入航班号:";
	read2();
	Customer_Count=n;
    cin>>c[Customer_Count].Flight_No;
	read();
	for(i=0;i<m;i++)
   if(strcmp(f[i].Flight_No,c[Customer_Count].Flight_No)==0)    //调用航线查找函数,若存在则进行以下操作
   {  strcpy(c[Customer_Count].Des_Name,f[i].Des_Name); 
  
   strcpy( c[Customer_Count].Plane_No,f[i].Plane_No);

    cout<< "\n\t  \t\t该航班还有"<<f[i].Free_Amount<<"座位"<<endl;

	   cout<<"\n\t\t\t   请输入订票数:";

          cin>>c[Customer_Count].Amount;

          if(c[Customer_Count].Amount<=0)
          {
            cout<<"\n\t\t\t请输入大于零的数,按任意键继续输入."<<endl;
            getch();
          }//if
          else
            break;
}//if
  if(strcmp(f[i].Flight_No,c[Customer_Count].Flight_No)!=0)
   {cout<<"\n\t\t\t无此航班"<<endl;
  // getch();
   }
   

   
for(i=0;i<m;i++)
   
if(strcmp(f[i].Flight_No,c[Customer_Count].Flight_No)==0) 

   if(f[i].Free_Amount>=c[Customer_Count].Amount)
   {

   
   c[Customer_Count].Fist_Seat=(f[i].Customer_Amount-f[i].Free_Amount+1);
   f[i].Free_Amount-=c[Customer_Count].Amount;          //减去定票数
   save();
   c[Customer_Count].Last_Seat=(c[Customer_Count].Fist_Seat+c[Customer_Count].Amount-1);
   
   cout<<"\n\t\t\t   请输入你的姓名:";

   cin>>c[Customer_Count].Name;
  
   if(c[Customer_Count].Name)
   {cout<<"\n\t\t\t   请输入你的证件号:";
    cin>>c[Customer_Count].bianhao;
   }
   else
	break;
  

   while(c[Customer_Count].bianhao)                           //数据合法性检验
   {        
	  

               IsEmpty=0;

                cout<<"\n\t\t\t   请输入舱位等级(1-3):";

				cin>>c[Customer_Count].Rank;

				if(!(c[Customer_Count].Rank>='1'&&c[Customer_Count].Rank<='3'))
                {
                  cout<<"\n\t\t输入出错,请输入1-3之间的数,按任意键继续输入."<<endl;

                  getch();
                }
            else
                break;
   }
cout<<"\n\t\t\t   您的座位号为:"<<endl;
cout<<"\n\t\t\t\t从"<<c[Customer_Count].Fist_Seat<<"到"<<c[Customer_Count].Last_Seat<<endl;

Customer_Count=(Customer_Count+1);
n=n+1;
save2();

          
		 }//满足定票数

else	if(f[i].Free_Amount==0)
        {
          cout<<"\n\t\t   对不起,该航线的票已经全部售完!"<<endl;
         
        }
        else
        {
          cout<<"\n\t\t   对不起,该航线的剩余票额数少于你的订票数。"<<endl;
          
        }


    if(Continue()=='n')
        return;
}//while

}

 


//-----------------订票乘客信息-----------------
void Display_Reserve(){

  int flag=0;
  read();
  if(Empty_Flight())
    return;

  prefix("定票乘客名单");
  read2();
  if(0==n)
  {
    cout<<"\n\n\n\n\t\t\t对不起,系统中无定票的乘客。"<<endl;
    getch();
    return;  
  }
  else
  {
  cout<<" ┌────┬───┬───┬─────────┬────┬───┬─────  "<<endl;
  cout<<" │姓名    │航班号│飞机号│     证件号       │ 终点站 │ 舱等 │座位号  │  "<<endl;
  cout<<" ├────┼───┼───┼─────────┼────┼───┼────┤ "<<endl;

for(j=0;j<n;j++)
{
          cout<<" │"<<setiosflags(ios::left)<<setw(8)<<c[j].Name<<"│"<<setw(6)\
          <<c[j].Flight_No<<"│"<<setw(6)<<c[j].Plane_No<<"│"<<setw(18)<<c[j].bianhao<<"│"<<setw(8)<<c[j].Des_Name<<"│"<<setw(6)<<c[j].Rank\
          <<"│";
          //if(c[i].Amount>1)
           // cout<<setw(5)<<"c[i].bianhao"<<"│"<<endl;
         // else
            cout<<"从"<<c[j].Fist_Seat<<"到"<<c[j].Last_Seat<<" │"<<endl; 
          
  cout<<" ├────┼───┼───┼─────────┼────┼───┼────┤"<<endl;
        
    }
   
    
    
  cout<<" └────┴───┴───┴─────────┴────┴───┴────┘"<<endl;
  cout<<"\n\t\t\t   按任意键返回子菜单..."<<endl;
  getch();
}
}




void Sub3Menu()   //退票操作
{
int k;
   int flag=0;     //记录满足条件的航线的定票结点

  char answer[7],name[7];     //用户输入的航班数据

       
  if(Empty_Flight())         //航班线为空
    return;

  while(0==Empty_Flight())
  {
  prefix("退票办理");
  read2();
  if(0==n)
  {
    cout<<"\n\n\t\t   对不起,系统中暂时无定票乘客..."<<endl;
    getch();
    return;
  }
  while(n>0)
  {
    flag=0;
   
    prefix("退票办理");
    cout<<"\n\t\t\t   请输入航班号:";
    cin>>answer;
	read();
	for(i=0;i<m;i++)
	if(strcmp(f[i].Flight_No,answer)==0)
	{   
		cout<<"\n\t\t\t   请输入您的姓名:";
        cin>>name;
		if(f[i].Customer_Amount==f[i].Free_Amount)
		{
          cout<<"\n\t\t   很抱歉,该航线暂时无人定票,无法进行退票操作."<<endl;
          if(Continue()=='n')//是否继续操作
            return;
          else
            continue;   //提前结束本次循环,重新进行退票处理
		}
		else


		for(j=0;j<n;j++)
			while(strcmp(c[j].Name,name)==0 )   //查找有无此乘客名
			{  flag=1;
				k=j;
				
			 for(;k<n-1;k++)
			 {c[k]=c[k+1];
			 

			 }
			f[i].Free_Amount=f[i].Free_Amount+c[j].Amount;
			save();
			n=n-1;  
			save2();
			
			cout<<"\n\t\t   退票办理已经操作完毕,按任意键返回菜单..."<<endl;
            getch();
            return;
			
			}
			if(!flag)
				cout<<"\n\t\t   很抱歉,该航线无此乘客,请查证后再操作..."<<endl;
	}
    if(Continue()=='n')
        return;
  }//while
  }
  
 
}








void Sub4Menu()
{
   char *MenuItem[]={"│   航空客运乘客管理子菜单   │","│ │ [1]. 订票乘客信息  │ │","│ │ [2]. 返回系统菜单  │ │",\
  "│ │      欢迎你的光临  │ │"};
 while(1)
    switch(ModelMenu(MenuItem,4))
    {
        case '1':{Display_Reserve();break;}
       
        case '2':{return;}
        default:{ErrorMess();}
    }
}



void main()
{int l;
 Cover();
  while(1)
  {system("cls");
	  cout<<"\n\t\t\t是否是第一次启用本系统(Y/N):"<<endl;
	  cout<<"\n\t\t\t";
    l=getchar();
	 if(l=='y'||l=='Y')
	  {  save();
	  save2();}
    switch(MainMenu())
    {
    case '1':{Sub1Menu();break;}           //航线管理
    case '2':{Sub2Menu();break;}           //订票办理
    case '3':{Sub3Menu();break;}           //退票办理
    case '4':{Sub4Menu();break;}           //乘客管理
    case '5':{if(ExitSystem()) return;break;}   //退出系统       
    default:ErrorMess();
    }
  }
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -