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

📄 flight.cpp

📁 用c++编写的一个机票预订系统 是软件工程的课程设计来的
💻 CPP
字号:
#include "public.h"
/*
typedef struct{
 char name[10]; //航班名称
 char start[10];  //出发地
 char destination[10];  //目的地
 char date[10];
 char time[5];
 int  price[3]; //舱位价格 0:头等舱 1:公务舱 2:经济舱
 int  re_ticket[3];  //机票余量
 int state;    //1正常 0取消
}Flight;
*/

void FlightCopy(Flight &F1,Flight F2)
{
    strcpy(F1.date,F2.date);
    strcpy(F1.destination,F2.destination);
    strcpy(F1.name,F2.name);
    strcpy(F1.start,F2.start);
    strcpy(F1.time,F2.time);
    F1.price[0]=F2.price[0];
    F1.price[1]=F2.price[1];
    F1.price[2]=F2.price[2];
    F1.re_ticket[0]=F2.re_ticket[0];
    F1.re_ticket[1]=F2.re_ticket[1];
    F1.re_ticket[2]=F2.re_ticket[2];
    F1.state=F2.state;
}




int AddFlight(){
Flight flight[10];int i=AvailableTag(0);
      FILE *f;///*
	  if ((f=fopen("Flight.dat","rb"))==NULL)
	  {
		  return 0;
	  }
	  else
	  {
		  fread(&flight,sizeof(flight),1,f);
	  }
      fclose(f);
      cout<<"请输入航班名:"<<endl;
      fflush(stdin);
      scanf("%6s",&flight[i].name);
      cout<<"出发地:"<<endl;
      fflush(stdin);
      gets(flight[i].start);
      cout<<"目的地:"<<endl;
      fflush(stdin);
      gets(flight[i].destination);
      cout<<"日期:"<<endl;
      fflush(stdin);
      gets(flight[i].date);
      cout<<"时间:"<<endl;
      fflush(stdin);
      gets(flight[i].time);
      cout<<"头等舱价格:"<<endl;
      fflush(stdin);
      scanf("%d",&flight[i].price[0]);
      cout<<"公务舱价格:"<<endl;
      fflush(stdin);
      scanf("%d",&flight[i].price[1]);
      cout<<"经济舱价格:"<<endl;
      fflush(stdin);
      scanf("%d",&flight[i].price[2]);
      CheckFlight(flight[i]); 
      flight[i].re_ticket[0]=50;
      flight[i].re_ticket[1]=50;
      flight[i].re_ticket[2]=50;//*/
      flight[i].state=1;

	  if ((f=fopen("Flight.dat","w+b"))==NULL)
	  {
		  return 0;
	  }
	  else
	  {
		  fwrite(&flight,sizeof(flight),1,f);
	  }
      fclose(f);
      cout<<"输入一个航班"<<endl;
	  return 1;

      
}

void CheckFlight(Flight &flight){

	while(strlen(flight.name)!=6||
		strlen(flight.date)<8||
		strlen(flight.time)<4||
		flight.price[0]<0||flight.price[0]>200000||
        flight.price[1]<0||flight.price[1]>200000||
        flight.price[2]<0||flight.price[2]>200000
		){
	
		if(strlen(flight.name)!=6){
		      cout<<"航班名必须是6个字符,请重新输入:"<<endl;
              fflush(stdin);
              gets(flight.name);
		
		}
		if(strlen(flight.date)<8||strlen(flight.date)>10){
		      cout<<"请重新输入日期:"<<endl;
              fflush(stdin);
              gets(flight.date);
		
		}

		if(strlen(flight.time)!=5){
		      cout<<"时间必须是5个字符,请重新输入::"<<endl;
              fflush(stdin);
              gets(flight.time);
		
		}
		if(flight.price[0]<0||flight.price[0]>200000){
		      cout<<"头等舱价钱必须在0~200000之间,请重新输入::"<<endl;
              fflush(stdin);
              scanf("%d",&flight.price[0]);
		
		}
		if(flight.price[1]<0||flight.price[1]>200000){
		      cout<<"公务舱价钱必须在0~200000之间,请重新输入::"<<endl;
              fflush(stdin);
              scanf("%d",&flight.price[1]);
		
		}
		if(flight.price[2]<0||flight.price[2]>200000){
		      cout<<"经济舱价钱必须在0~200000之间,请重新输入::"<<endl;
              fflush(stdin);
              scanf("%d",&flight.price[2]);
		
		}



	}
}







int CheckFlightState(char FlightName[]){     //看航班有没在
     Flight flight[10];
     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,FlightName))==0)
		  {   
			 return flight[i].state;
		  }//if
	 }//for
	 return -1;
}


int EditFlight(){
     Flight flight[10];char name[10];
     FILE *f;
	 printf("\n\n\t\t请输入要修改的航班名称:");
     scanf("%s",&name);
	 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,name))==0)
		  {   
			 int mode;
             system("cls");
             cout<<"找到航班"<<endl;
             cout<<"*-----------------------------------------------------------------------------*"<<endl;
			 cout<<"*航班的名称:出发地:目的地:  日  期  : 时  间 :头等舱价格:公务舱价格:经济舱价格*"<<endl;
             cout<<"*-----------------------------------------------------------------------------*"<<endl;
             cout<<"*  "<<flight[i].name<<"   "<<flight[i].start<<"   "<<flight[i].destination<<"   "<<flight[i].date<<"     "<<flight[i].time<<"       "<<flight[i].price[0]<<"      "<<flight[i].price[1]<<"       "<<flight[i].price[2]<<"    *"<<endl;
             cout<<"*-----------------------------------------------------------------------------*"<<endl;
			 cout<<"0 航班名称   1出发地     2目的地     3日期     4时间       10航班复位"<<endl;
			 cout<<"5头等舱价格  6公务舱价格 7经济舱价格 8保存     9删除       11取消航班"<<endl;
             while(mode!=8&&mode!=9)
			 {
			  printf("\n\t\t*输入相应序号进行修改:");
			  fflush(stdin);
              scanf("%d",&mode);
			  switch(mode)
			  {
			  case 0:
                    cout<<"\n\t\t\t请输入航班的名称:"<<endl;
                    fflush(stdin);
                    gets(flight[i].name);break;
			  case 1:
                    cout<<"\n\t\t\t出发地:";
                    fflush(stdin);
                    gets(flight[i].start);break;
			  case 2:
                    cout<<"\n\t\t\t目的地:";
                    fflush(stdin);
                    gets(flight[i].destination);break;
			  case 3:
                    cout<<"\n\t\t\t日期:";
                    fflush(stdin);
                    gets(flight[i].date);break;
			  case 4:
                    cout<<"\n\t\t\t时间:";
                    fflush(stdin);
                    gets(flight[i].time);break;
			  case 5:
                    cout<<"\n\t\t\t头等舱价格:";
                    fflush(stdin);
                    scanf("%d",&flight[i].price[0]);break;
			  case 6:
                    cout<<"\n\t\t\t公务舱价格:";
                    fflush(stdin);
                    scanf("%d",&flight[i].price[1]);break;
			  case 7:
                    cout<<"\n\t\t\t经济舱价格:";
                    fflush(stdin);
                    scanf("%d",&flight[i].price[2]);break;
			  case 10:flight[i].re_ticket[0]=50;
                      flight[i].re_ticket[1]=50;
                      flight[i].re_ticket[2]=50;//*/
                      cout<<"\n\t\t\t复位成功!:"<<endl;
			  case 11:flight[i].state=0;
                      cout<<"\n\t\t\t取消成功!:"<<endl;

			  default:break;
			  }
			 }//while
			 if(mode==9)
			 {
				 FlightCopy(flight[i],flight[AvailableTag(0)-1]);
				 FlightCopy(flight[AvailableTag(0)-1],flight[AvailableTag(0)]);
			 }
	         if ((f=fopen("Flight.dat","w+b"))==NULL)
			 {
		         return 0;
			 }
	         else
			 {
	             fwrite(&flight,sizeof(flight),1,f);
			 }
             fclose(f);
			 if(mode==9)
			 {
                 cout<<"删除成功!"<<endl;
			     return 1;			   
			 }
			   else
			 {
                 cout<<"修改成功!"<<endl;
			     return 1;
			 }
		  }//if
	 }//for
     cout<<"没找到相应航班!"<<endl;
	 return 0;
}



int ShowFlight(int mode,int tag[]){
     Flight flight[10];int i;
     FILE *f;
	 if ((f=fopen("Flight.dat","rb"))==NULL)
	 {
		  return 0;
	 }
	 else
	 {
		  fread(&flight,sizeof(flight),1,f);
          fclose(f);
	 }
      cout<<"*-----------------------------------------------------------------------------*"<<endl;
	  cout<<"*航班的名称:出发地:目的地:  日  期  : 时  间 :头等舱价格:公务舱价格:经济舱价格*"<<endl;
      cout<<"*-----------------------------------------------------------------------------*"<<endl;
	  if(mode==0)                  //显示全部
	  for(i=0;i<AvailableTag(0);i++)
	  {
          cout<<"*-----------------------------------------------------------------------------*"<<endl;
          cout<<"  "<<flight[i].name<<"   "<<flight[i].start<<"   "<<flight[i].destination<<"   "<<flight[i].date<<"     "<<flight[i].time<<"       "<<flight[i].price[0]<<"      "<<flight[i].price[1]<<"       "<<flight[i].price[2]<<"    "<<endl;
	      cout<<"*-----------------------------------------------------------------------------*"<<endl;
	  }
	  else	                     //按条件显示
	  for(i=0;tag[i]>=0||i<AvailableTag(0);i++)
	  {  
		  if(flight[i].price[1]<20000&&flight[i].price[1]>0)
		  {
             cout<<"*-----------------------------------------------------------------------------*"<<endl;
             cout<<"  "<<flight[i].name<<"   "<<flight[i].start<<"   "<<flight[i].destination<<"   "<<flight[i].date<<"     "<<flight[i].time<<"       "<<flight[i].price[0]<<"      "<<flight[i].price[1]<<"       "<<flight[i].price[2]<<"    "<<endl;
	         cout<<"*-----------------------------------------------------------------------------*"<<endl;
	  
		  }
	  }
	  return 1;
}


	int Analyze(){                       //航班分析
	FILE *f,*f1;
	Ticket ticket[10];
	Flight flight[10];
	char flightnum[10];
	char st[10],des[10];
	int i,a,flag=0;
	if ((f1=fopen("Flight.dat","rb"))==NULL)
	  {
		       return 0;
	  }
	  else
	  {
		    fread(&flight,sizeof(flight),1,f1);
            
	  }
	  fclose(f1);
	if ((f=fopen("Ticket.dat","rb"))==NULL)
	  {
		       return 0;
	  }
	  else
	  {
		    fread(&ticket,sizeof(ticket),1,f);
            
	  }
	  fclose(f);
	printf("选择你要的承载分析表要求:\n");
	printf("1. 航班    2.出发地与目的地\n");
	scanf("%d",&a);
	switch(a){
	case 1:
		int tag[10];
        ShowFlight(0,tag);
		printf("输入航班号:");
		scanf("%s",flightnum);
        system("cls");
	  cout<<"*-----------------------------------------------------------------------------*"<<endl;
	  cout<<"*客户名称:   性别:     身份证         : 座位等级(0:头等舱位 1:公务舱 2:经济舱)*"<<endl;
      cout<<"*-----------------------------------------------------------------------------*"<<endl;
		for(i=0;i<10;i++){
			if(strcmp(ticket[i].name,flightnum)==0)
			{   flag++;
				cout<<"  "<<ticket[i].user<<"      "<<ticket[i].sex<<"    "<<ticket[i].ID<<"         "<<ticket[i].grade<<endl;
			}
		}
		printf("\n\t\t\t剩下的座位数:%d",150-flag);
		
		break;
	case 2:
		printf("出发地:");
		scanf("%s",st);
		printf("目的地:");
		scanf("%s",des);
		system("cls");
	  cout<<"*-----------------------------------------------------------------------------*"<<endl;
	  cout<<"*: 航班号:  日期  :   头等舱剩余量:公务舱剩余量:经济舱剩余量:*"<<endl;
      cout<<"*-----------------------------------------------------------------------------*"<<endl;
		 for(i=0;i<10;i++)
		 {
			if((strcmp(flight[i].start,st))==0&&(strcmp(flight[i].destination,des))==0)
			{
				cout<<flight[i].name<<"   "<<"   "<<flight[i].date
					<<"        "<<flight[i].re_ticket[0]<<"             "<<flight[i].re_ticket[1]
					<<"            "<<flight[i].re_ticket[2]<<endl;
			}
		 }
	}
	return 0;
}

⌨️ 快捷键说明

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