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

📄 ticket.cpp

📁 用c++编写的一个机票预订系统 是软件工程的课程设计来的
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		}
	 }


}


int EditTicket(){                                                //修改定票信息
	  FILE *f;Ticket ticket[10];int i,op;char temp[6]={"8"};
      char user[10];
	  if ((f=fopen("Ticket.dat","r"))==NULL)
	  {
		  return 0;
	  }
	  else
	  {
		  fread(&ticket,sizeof(ticket),1,f);
	  }
	  fclose(f);
	  while(1)
	  {
      if(admin==2)ShowTicket(0);else ShowTicket(1);
      printf("\n\n\n\t\t请输入要修改旅客的姓名(8:退出):");
	  scanf("%s",user);
	  if((strcmp(user,temp))==0)return 0;
	  for(i=0;i<AvailableTag(1);i++)
	  {	    
		  if((strcmp(ticket[i].user,user))==0&&(admin==2||(strcmp(ticket[i].agency,ID))==0))
		  {
           system("cls");
           cout<<"*-----------------------------------------------------------------------------*"<<endl;
	       cout<<": 旅客姓名:: 姓别 ::  单位    ::      身份证      ::  航班 ::  舱位 ::  状态  :"<<endl;
           cout<<"*-----------------------------------------------------------------------------*"<<endl;
		   cout<<"   "<<ticket[i].user<<"   "<<ticket[i].sex<<"   "<<ticket[i].Inc<<"  "<<ticket[i].ID<<"   "<<ticket[i].name;
		   cout<<"     ";
		   switch(ticket[i].grade)
		   {
		   case 0:cout<<"头等舱";break;
		   case 1:cout<<"头等舱";break;
		   case 2:cout<<"头等舱";break;		   
		   }
		   cout<<" ";
		   switch(ticket[i].state)
		   {
		   case 0:cout<<"已经退票";break;
		   case 1:cout<<"已交定金";break;
		   case 2:cout<<"交款取票";break;		   
		   }
           cout<<endl;
		   switch(CheckFlightState(ticket[i].name))   //航班状态
		   { 
		   case -1:printf("\n\t\t\t该旅客所在航班已经不存在!");break;
		   case  1:printf("\n\t\t\t该旅客所在航班正常!");break;
		   case  0:printf("\n\t\t\t该旅客所在航班已经取消!");break;
		   }
              printf("\n\n*---------------------------------------------------------------------*");  //旅行社
              printf("\n\n\t0:姓名  1性别  2单位  3身份证  8保存并退出");  //旅行社
              if(admin==2)printf("\n\n\t10取票确认  11退票");                     //航空公司
              printf("\n\n*---------------------------------------------------------------------*"); 
			  while(op!=8)
			  {
                 printf("\n\t\t请按以上序号修改:");
			     scanf("%d",&op);
				 switch(op)
				 {
				 case 0:
					 printf("\n\t\t姓名:");
					 scanf("%s",ticket[i].user);
					 break;
				 case 1:printf("\n\t\t性别:");scanf("%s",ticket[i].user);break;
				 case 2:printf("\n\t\t单位:");scanf("%s",ticket[i].Inc);break;
				 case 3:printf("\n\t\t身份证:");scanf("%s",ticket[i].ID);break;
				 case 10:                       //取票确认
					 if(admin==2)
					 {
                       if(CheckFlightState(ticket[i].name)==-1)
					  {
					     printf("\n\t\t该航班已经不在,请为旅客退票!");
					     break;
					  
					  }
                      if(CheckFlightState(ticket[i].name)==0)
					  {
					     printf("\n\t\t该航班已经取消,请为旅客退票!");
					     break;
					  
					  }
                      ticket[i].state=2;

	                  if ((f=fopen("Ticket.dat","w+b"))==NULL)
					  {
	              	        return 0;
					  }
	                  else
					  {
		                  fwrite(&ticket,sizeof(ticket),1,f);
					  }
                      fclose(f);
                      printf("\n\t\t确认取票!");
					  break;
					 }
					 else
					 {
					  printf("\n\t\t旅行社无该权限!");
					  break;
					 }
				 case 11:                        //退票
					 if(admin==2)
					 {
                      ReTicket(ticket[i]);
	                  if ((f=fopen("Ticket.dat","w+b"))==NULL)
					  {
	              	        return 0;
					  }
	                  else
					  {
						  for(;i<AvailableTag(1);i++)
						  {
						    //ticket[i]=ticket[i+1];
                              memcpy(&ticket[i],&ticket[i+1],sizeof(Ticket));
							  //TicketCopy(,);						  
						  }
                          
                          //TicketCopy(ticket[AvailableTag(1)-1],ticket[AvailableTag(1)]);
		                  fwrite(&ticket,sizeof(ticket),1,f);
					  }
					  fclose(f);
	                       printf("\n\t\t##退票成功!##");return 1;
					  break;
					 }
					 else
					 {
					  printf("\n\t\t*旅行社无该权限!*");
					  break;
					 }
				 }//switch
			}	//while
				 CheckTicket(ticket[i]);
	             if ((f=fopen("Ticket.dat","w+b"))==NULL)
				 {
	              	  return 0;
				 }
	              else
				 {
		             fwrite(&ticket,sizeof(ticket),1,f);
				 }
                 fclose(f);
				 printf("\n\t\t保存成功!");
				 return 1;
		 }//if
	  }//for
	  	printf("\n\t\t没有该旅客资料!");
      }

	  return 0;

}







int ReTicket(Ticket &ticket){
if(CheckFlightState(ticket.name)!=-1)
{
     Flight flight[10];int money;
     FILE *f;///*
	 if ((f=fopen("Flight.dat","rb"))==NULL)
	 {
		  return 0;
	 }
	 else
	 {
		  fread(&flight,sizeof(flight),1,f);
          fclose(f);
	 }
	 for(int i=0;i<AvailableTag(0);i++)
	 {
	      if((strcmp(flight[i].name,ticket.name))==0)
		  {   
	         printf("\n\t\t*----------------------------------------------------------*");
			  switch(ticket.grade)              //增加一票
				{
	              case 0:printf("\n\t\t\t 舱位:头等舱                  ");
	          	       money=flight[i].price[0];flight[i].re_ticket[0]++;
	        	       break;
	              case 1:printf("\n\t\t\t 舱位:公务舱                  ");
	              	  money=flight[i].price[1];flight[i].re_ticket[1]++;
	            	  break;
	              case 2:printf("\n\t\t\t 舱位:经济舱                  ");
		              money=flight[i].price[2];flight[i].re_ticket[2]++;
		               break;
				}
              if(ticket.state==1)
			  {
	               printf("\n\t\t该旅客只交过定金,现只能退80%的定金!");
	     
			  }
	         else
			 {
	  
	           printf("\n\t\t现只能还80%的金额:%d",money*0.8);    
	  
			 }
	         printf("\n\t\t*----------------------------------------------------------*");
		  }//if
	 }//for

	 if ((f=fopen("Flight.dat","w+b"))==NULL)
		{
		         return 0;
		}
	     else
		{
	       fwrite(&flight,sizeof(flight),1,f);
		}
      fclose(f);

}
else
{
	 printf("\n在航班已经不在,请退还相应金额!");   

}
	 ticket.state=0;    //确认为退票
	 return 1;
}








int ShowTicket(int mode){
 FILE *f;Ticket ticket[10];int i;
	  if ((f=fopen("Ticket.dat","r"))==NULL)
	  {
		  return 0;
	  }
	  else
	  {
		  fread(&ticket,sizeof(ticket),1,f);
	  }
	  fclose(f);
      cout<<"*-----------------------------------------------------------------------------*"<<endl;
	  cout<<": 旅客姓名::姓别::单        位::身      份      证::航   班:: 舱   位::状   态:"<<endl;
      cout<<"*-----------------------------------------------------------------------------*"<<endl;
	  for(i=0;i<AvailableTag(1);i++)
	  {	    
		  if(mode==0||(strcmp(ticket[i].agency,ID))==0)
		  {

		   cout<<"   "<<ticket[i].user<<"   "<<ticket[i].sex<<"   "<<ticket[i].Inc<<"  "<<ticket[i].ID<<"   "<<ticket[i].name;
		   cout<<"     ";
		   switch(ticket[i].grade)
		   {
		   case 0:cout<<"头等舱";break;
		   case 1:cout<<"头等舱";break;
		   case 2:cout<<"头等舱";break;		   
		   }
		   cout<<" ";
		   switch(ticket[i].state)
		   {
		   case 1:cout<<"已交定金";break;
		   case 2:cout<<"交款取票";break;		   
		   }
           cout<<endl;
		  }	  	  
	  }
	  return 1;
}
/*
typedef struct{
char agency[7];
char user[10];
char sex[2];   //0女 1男
char Inc[20]; //单位
char ID[20];//身份证
 int grade;  //0:头等舱 1:公务舱 2:经济舱
 int state;   //0没交定金 1交定金 2交钱取票
 char name[6]; //航班名称
}Ticket;
*/

⌨️ 快捷键说明

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