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

📄 427.cpp

📁 四、飞机订票系统 任务:通过此系统可以实现如下功能: 录入:可以录入航班情况(数据可以存储在一个数据文件中
💻 CPP
📖 第 1 页 / 共 3 页
字号:
   printf("\n\n\n\t\t\t\t该航线已经锁定!");
   printf("\n 按任何键返回上一层!");
   getch();
 }
 else
 {system("cls");
  printf("\n\n -----------------------------------------------------------------------------\n");
  printf(" 航班号    飞机号   起点   终点  起飞时间  座位数  剩余  头等仓  中等仓 下等仓\n");
  printf(" -----------------------------------------------------------------------------\n");
  printf(" %-5d%10d%8s%7s   星期%s%8d%7d%7d%8d%7d\n",f[j].Flight_No,f[j].Plane_No,f[j].beg_Name,f[j].Des_Name,a[f[j].Week_Day-1],f[j].Customer_Amount,f[j].Free_Amount,f[j].Price[0],f[j].Price[1],f[j].Price[2]);
  printf(" -----------------------------------------------------------------------------\n");
  printf("确认要不要修改:(0/1)");
  scanf("%d",&id);
  if(id==1)
  {
   printf("\n\t\t----------------------------------------\n\n");
   printf("\t\t以后的每一项,都可以按0退出该项的修改\n");
   printf("\t\t----------------------------------------\n\n");
   printf("\t\t要不要修改航班号:");
   scanf("%d",&yn);
   if(yn==1)
   {printf("\t\t修改为:");
    scanf("%d",&f[j].Flight_No);
    yn=0;
   }
   printf("\t\t要不要修改飞机号:");
   scanf("%d",&yn);
   if(yn==1)
   {printf("\t\t修改为:");
    scanf("%d",&f[j].Plane_No);
    yn=0;
   }
   printf("\t\t要不要修改起点:");
   scanf("%d",&yn);
   if(yn==1)
   {printf("\t\t修改为:");
     scanf("%s",&f[j].beg_Name);
    yn=0;
   }
   printf("\t\t要不要修改终点:");
   scanf("%d",&yn);
   if(yn==1)
   {printf("\t\t修改为:");
    scanf("%s",&f[j].Des_Name); 
    yn=0;
   }                     
   printf("\t\t要不要修改时间:");
   scanf("%d",&yn);
   if(yn==1)
   {printf("\t\t修改为(1~7):");
    scanf("%d",&f[j].Week_Day);
    yn=0;
   } 
   printf("\t\t要不要修改座位数:");
   scanf("%d",&yn);
   if(yn==1)
   {printf("\t\t修改为:");
    scanf("%d",&f[j].Customer_Amount);
	f[j].Free_Amount=f[j].Customer_Amount;
    yn=0;
   } 
   printf("\t\t要不要修改等仓价位(元):");
   scanf("%d",&yn);
   if(yn==1)
   {printf("\t\t分别修改为:");
    scanf("%d%d%d",&f[j].Price[0],&f[j].Price[1],&f[j].Price[2]);
    yn=0;
   } 
  }
 }
}
int menu1()      /*航线管理入口*/
{int id;
 do{system("cls");
 printf("\n\n                                 ~~欢迎光临~~\n");
 printf("   __________________________________________________________________________ \n");
 printf("  │ 1.增加航线  │ 2.删除航线  │ 3.查看航线   │4.修改航线  │5.返回主目录│\n");
 printf("  │_____________│_____________│______________│____________│____________│\n");
 printf("\n   你可以有(1~5)种选择:");
 
   scanf("%d",&id);
 }while(id>5||id<1);
  return id;
 }
int menu2()  /*订票管理入口*/
{int id;
 system("cls");
 printf("\n\n                               ~~欢迎光临~~\n");
 printf("   _________________________________________________________________________ \n");
 printf("  │ 1.定票手续 │ 2.退票办理 │ 3.查看航况 │4.修改当前航票 │5.返回主目录│\n");
 printf("  │____________│____________│____________│_______________│____________│\n");
 printf("\n   你可以有(1~5)种选择:");
 do{
   scanf("%d",&id);
 }while(id>5||id<1);
  return id;
}

void inf_input(int id) /*进行订票*/
{int ed;
 int Rank;
 system("cls");
 j=0;
 while(j<m)
 {if(id==f[j].Flight_No)
     break;    
  j++;
 }
  printf("\n                             该航线上的信息如下:\n");
  printf(" -----------------------------------------------------------------------------\n");
  printf(" 航班号    飞机号   起点   终点  起飞时间  座位数  剩余  头等仓  中等仓 下等仓\n");
  printf(" -----------------------------------------------------------------------------\n");
  printf(" %-5d%10d%8s%7s   星期%s%8d%7d%7d%8d%7d\n",f[j].Flight_No,f[j].Plane_No,f[j].beg_Name,f[j].Des_Name,a[f[j].Week_Day-1],f[j].Customer_Amount,f[j].Free_Amount,f[j].Price[0],f[j].Price[1],f[j].Price[2]);
  printf(" -----------------------------------------------------------------------------\n");
  printf("                                 THE END\n"); 
  if(f[j].Free_Amount<=0)
  {system("cls");printf("\n\n\n\n\n\n\t\t\t     Sorry!该航线座位已满!");
  getch();}
  else
  {printf("\t------------------------------\n");
   printf("\t    你是第%d个来订票:\n",n+1);
   printf("\t------------------------------\n");
   f[j].peo+=1;
   c[n].NUM=f[j].peo+f[j].Flight_No*1000;   /*给航线编号*/
   printf("\t\t请输入名字:");
   scanf("%s",c[n].Name);
   printf("\t\t请输入证件号:");
   scanf("%d",&c[n]. bianhao);
   do
   {printf("\t\t请输入票数:");
    scanf("%d",&c[n].Amount);
    if(c[n].Amount>f[j].Free_Amount)
	{printf("\t\t座位不够,是否确定继续(0/1):");
     scanf("%d",&ed);/*当输入为0时候跳出,1时继续输入到正确为止*/
	}
    else ed=2;
   }while(ed==1);
   if(ed!=0)
   {
    f[j].Free_Amount=f[j].Free_Amount-c[n].Amount;/*修改航线上的空座位数*/
    c[n].Flight_No=f[j].Flight_No;                /*从航线上拷贝信息*/
    c[n].Plane_No=f[j].Plane_No;
    c[n].Week_Day=f[j].Week_Day;
    c[n].Fist_Seat=1;            /*假设该航客的起始座位号为0*/
    i=0;
    while(i<n)                  /*查找该航线上已订票的人的座位情况,该航客的起始位置是已定座位的最大号加1*/
	{
     if(c[i].NUM/1000==f[j].Flight_No)
     if(c[n].Fist_Seat<c[i].Last_Seat)
        c[n].Fist_Seat=c[i].Last_Seat+1;
	 i++;
	}
    c[n].Last_Seat= c[n].Fist_Seat+c[n].Amount-1;/*该航客的最后一个座位号*/
    printf("\t\t请选择仓位等级(1-3):");
    scanf("%d",&Rank);
    c[n].Rank=f[j].Price[Rank-1];
    n=n+1;        /*航客信息加1*/
   }
   printf("\n\t\t\t  订票成功……");
   getch();
  }
}
void add_ticket() /*定票手续*/
{
 int h=0;
 int id;
 int k=0;
 system("cls");
 printf("\n\t欢迎你的到来!\n");
 printf("\t----------------------------\n");
 printf("\t\t请输入起点:");
 scanf("%s",c[n].Beg_Name);
 printf("\t\t请输入终点:");
 scanf("%s",c[n].Des_Name);
 system("cls");
 for(j=0;j<m;j++)       /*查找该航线上的信息*/
   {
    if((strcmp(c[n].Beg_Name,f[j].beg_Name)==0)&&(strcmp(c[n].Des_Name,f[j].Des_Name)==0))  
	{f[m+h]=f[j];
	 h++;
	}
   }
 if(h==0)            /*找不到该航线*/
   {system("cls");
	printf("\n\n\n\n\t\t\t  OH,sorry! 没有存在此航班...");
    getch();
   }
 else   
 {printf("\n\n                           ~这里存有[%d]条航线~\n",h);
  printf(" -----------------------------------------------------------------------------\n");
  printf(" 航班号    飞机号   起点   终点  起飞时间  座位数  剩余  头等仓  中等仓 下等仓\n");
  printf(" -----------------------------------------------------------------------------\n");
  for(i=m;i<m+h;i++)
  {
   printf(" %-5d%10d%8s%7s   星期%s%8d%7d%7d%8d%7d\n",f[i].Flight_No,f[i].Plane_No,f[i].beg_Name,f[i].Des_Name,a[f[i].Week_Day-1],f[i].Customer_Amount,f[i].Free_Amount,f[i].Price[0],f[i].Price[1],f[i].Price[2]);
   printf(" -----------------------------------------------------------------------------\n");
  }
  printf("                                 THE END\n");
  printf("\n\t\t\t请你输入需要订票的航班号(或0退出):");
  do{
	  scanf("%d",&id);
	 for(i=m;i<m+h;i++)
		 if(id==f[i].Flight_No||id==0)
		 {k=1;break;}
  }while(k==0);
  if(id!=0)
  inf_input(id);
 }
}

void delete_ticket()/*删除当前订票人的信息*/
{ 
 j=0;
 system("cls");
 while(c[n-1].Flight_No!=f[j].Flight_No)
 {j++;}
 f[j].Free_Amount=f[j].Free_Amount+c[n-1].Amount;/*删除后修改航线上空座位的数目*/
 f[j].peo-=1;
 n=n-1;
 printf("\n\n\n\n\n\n\n\t\t    你的退票要求已经受理!欢迎下次惠顾....");
 getch();
}
void check_ticket()/*输出当前个人订票信息*/
{
 system("cls");
 if(n!=0)
 {printf("\n\n                              定票信息如下\n");
 printf("     编号:%d\n",c[n-1].NUM);
 printf("     --------------------------------------------------------------------\n");
 printf("     航班号    飞机号   起点   终点  起飞时间   票数    座位号   仓位价格\n");
 printf("     --------------------------------------------------------------------\n");
 printf("       %-5d%9d%7s%7s   星期%s%7d%8d-%d%8d\n",c[n-1].Flight_No,c[n-1].Plane_No,c[n-1].Beg_Name,c[n-1].Des_Name,a[c[n-1].Week_Day-1],c[n-1].Amount,c[n-1].Fist_Seat,c[n-1].Last_Seat,c[n-1].Rank);
 printf("     --------------------------------------------------------------------\n");
 }
 printf("\n\n\t\t你好!飞机票总额为(元):%d",c[n-1].Rank*c[n-1].Amount);
 printf("\n\n\n\t\t\t   按任何键退出...");
 getch();
}
void change_ticket()     /*修改订票信息*/
{int id;
 int yn;
 int Rank;
 system("cls");
 if(n!=0)
 {printf("\n\n                              定票信息如下\n");
 printf("     编号:%d\n",c[n-1].NUM);
 printf("     --------------------------------------------------------------------\n");
 printf("     航班号    飞机号   起点   终点  起飞时间   票数    座位号   仓位价格\n");
 printf("     --------------------------------------------------------------------\n");
 printf("       %-5d%9d%7s%7s   星期%s%7d%8d-%d%8d\n",c[n-1].Flight_No,c[n-1].Plane_No,c[n-1].Beg_Name,c[n-1].Des_Name,a[c[n-1].Week_Day-1],c[n-1].Amount,c[n-1].Fist_Seat,c[n-1].Last_Seat,c[n-1].Rank);
 printf("     --------------------------------------------------------------------\n");
 }
 printf("\n\n\t\t\t需要修改吗(0/1)...");
 scanf("%d",&id);
  if(id==1)
  {printf("\n\t\t----------------------------------------\n\n");
   printf("\t\t以后的每一项,都可以按0退出该项的修改\n");
   printf("\t\t----------------------------------------\n\n");
   j=0;
	while(c[n-1].Flight_No!=f[j].Flight_No)
	{j++;}
   printf("\t\t要不要修改票数:");
   scanf("%d",&yn);
   if(yn==1)
   {f[j].Free_Amount=f[j].Free_Amount+c[n-1].Amount;/*修改订票时修改航线的剩余票的信息*/
	printf("\t\t修改为:");
    scanf("%d",&c[n-1].Amount);
	f[j].Free_Amount=f[j].Free_Amount-c[n-1].Amount;/*修改订票后修改航线的剩余票的信息*/
	c[n-1].Last_Seat=f[j].Customer_Amount-f[j].Free_Amount;
	c[n-1].Fist_Seat=c[n-1].Last_Seat-c[n-1].Amount+1;

    yn=0;
   }
   printf("\t\t要不要修改仓价位:");
   scanf("%d",&yn);
   if(yn==1)
   {printf("\t\t修改为(1-3):");
    scanf("%d",&Rank);
	c[n-1].Rank=f[j].Price[Rank-1];
   }
   printf("\n\n\t\t\t已修改成功");
  }
  else
	printf("\n\n\t\t\t按任何键继续...");
   getch();
}
void customer_all()             /*输出顾客的全部信息*/
{int total_amount=0;
 system("cls");
 printf("\n\n  已经有%d位顾客订票",n);
 printf("\n                              所有定票信息如下:\n\n");
 printf("  --------------------------------------------------------------------------\n");
 printf("  编号   航班号   飞机号   起点   终点  起飞时间   票数    座位号   仓位价格\n");
 printf("  --------------------------------------------------------------------------\n");
 for(i=0;i<n;i++)
 {printf("  %-5d%5d%12d%7s%7s   星期%s%7d%8d-%d%8d\n",c[i].NUM,c[i].Flight_No,c[i].Plane_No,c[i].Beg_Name,c[i].Des_Name,a[c[i].Week_Day-1],c[i].Amount,c[i].Fist_Seat,c[i].Last_Seat,c[i].Rank);
  printf("  --------------------------------------------------------------------------\n");
 total_amount=total_amount+c[i].Rank*c[i].Amount;
 }
 printf("\n\t\t\t   总额数为(元):%d",total_amount);
 getch();
}
void customer_line()/*输出某航班号航线的顾客信息*/
{int total_amount;
 int id;
 system("cls");
 printf("  请输入航班号:");
 scanf("%d",&id);
 i=0;

⌨️ 快捷键说明

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