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

📄 427.cpp

📁 四、飞机订票系统 任务:通过此系统可以实现如下功能: 录入:可以录入航班情况(数据可以存储在一个数据文件中
💻 CPP
📖 第 1 页 / 共 3 页
字号:
 while(i<m)
 { 
	 if(f[i].Flight_No==id)
	 break;
	 i++;
 }
 if(i==m)
	{system("cls"); printf("\n\n\n\n\t\t\t\t不存在此航班号!\n");}
 else
 {
 i=0;
 j=0;
 total_amount=0;
 printf("\n\n                            航班号%d的定票信息如下:\n\n",id);
 printf("  --------------------------------------------------------------------------\n");
 printf("  编号   航班号   飞机号   起点   终点  起飞时间   票数    座位号   仓位价格\n");
 printf("  --------------------------------------------------------------------------\n");
 while(i<n)
 {
	 if(c[i].NUM/1000==id)
	 {
      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;
	  j++;
	 }
	 i++;
 }
 printf("\n\n\t\t\t 总有%d个顾客,总额数为(元):%d",j,total_amount);
 }
 getch();
}
int menu3()
{int id=5;
 do{system("cls");
 printf("\n\n\t                        ~~欢迎光临~~\n");
 printf("\t    ____________________________________________________\n");
 printf("\t   │ 1.查看全部航线  │ 2.查看单个航线 │  3.返回目录 │\n");
 printf("\t   │_________________│________________│_____________│\n");
 printf("\n\t    你可以有(1~3)种选择:");
   scanf("%d",&id);
 }while(id>3||id<1);
  return id;
}
void air_manage()
{int k=1;
for(;;)
{
 switch(menu1())
 {  case 1:add_air();break;         /*航线管理*/
    case 2:delete_air();break;      /*删除航线*/
    case 3:check_air();break;       /*查看航线*/
    case 4:change_air();break;      /*修改航线*/
    default:k=0;save2();save();     /*返回主目录 */  
 }
 if(k==0)
	 break;
}
}
void ticket_manage()
{int k=1;
 for(;;)
 {
  switch(menu2())
  {  case 1:add_ticket();break;         /*订飞机票*/
     case 2:delete_ticket();break;      /*当前个人退票处理*/
     case 3:check_ticket();break;       /*查看当前个人已定票的具体情况*/
     case 4:change_ticket();break;      /*当前个人换票处理*/
     default:k=0;save2();save();break;  /*返回主目录 */  
  }
 if(k==0)
	break;
 }
}

void ticket_in()  /*补票办理*/
{char beg_name[10];
 char end_name[10];
 int id=1;
 int ed,fd;
 int k=1;
 int total_amount=0;/*记录顾客的总票价*/
 int t_beg,t_end;   /*飞机的开始票位和终止票位(连续的)*/
 int rank;
 int t;
 system("cls");   /*清屏*/
 printf("\t------------------------------\n");
 printf("\t    你是第%d个来订票:\n",n+1);
 printf("\t------------------------------\n");
 printf("\t\t输入起点:");
 scanf("%s",beg_name);
 printf("\t\t输入终点:");
 scanf("%s",end_name);
 for(j=0;j<m;j++)    
   {
    if((strcmp(beg_name,f[j].beg_Name)==0)&&(strcmp(end_name,f[j].Des_Name)==0))/*比较输入的地方是否存在航线*/
	{printf("\t\t此飞机上还有%d个空位!\n",f[j].Free_Amount);
	 printf("\n\t\t\t按任何键进入该航线订票信息");
	 getch();
	break;}
   }
 if(j==m)
   {system("cls");
	printf("\n\n\n\n\t\t\t  OH,sorry! 没有存在此航班...\n");
    getch();
    id=0;
   }
 else
 {
  system("cls");
  total_amount=0;
  i=0;
  /*打印航线的信息*/
  printf("\n\n                           第%d航线定票信息如下:\n\n",j+1);
  printf("  --------------------------------------------------------------------------\n");
  printf("  编号   航班号   飞机号   起点   终点  起飞时间   票数    座位号   仓位价格\n");
  printf("  --------------------------------------------------------------------------\n");
 while(i<n)/*打印有关该航线上的信息*/
 {
	 if(c[i].NUM/1000==j+1)
	 {
      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;
	 }
	 i++;
 }
 printf("\n\n\t\t\t   总额数为(元):%d\n",total_amount);
 }
 printf("\n\n  是否继续(0/1)……");
 scanf("%d",&fd);
 if(fd==1){
 if(id==1)     /*找到航线时*/
{f[j].peo+=1;                   /*购买该航线的票数(或人数)加一*/
 c[n].NUM=f[j].peo+(j+1)*1000;  /*给相应的航线加上编号,2002表示第二条航线的第二个订票的人的票的编号*/
 strcpy(c[n].Beg_Name,beg_name);/*记录顾客的订票信息*/
 strcpy(c[n].Des_Name,end_name);
 c[n].Flight_No=f[j].Flight_No;
 c[n].Plane_No=f[j].Plane_No;
 printf("  --------------------------------------------------------\n");
 printf("\t\t请输入名字:");
 scanf("%s",c[n].Name);
 printf("\t\t请输入证件号:");
 scanf("%d",&c[n]. bianhao);
 do{
   printf("\t\t请输入座位号(a-b):");
   scanf("%d%d",&t_beg,&t_end);
   t=t_beg>t_end?t_beg:t_end;
   if(t!=t_end)
   {t_beg=t_end;
   t_end=t;}
   i=0;
   while(i<n) /*查找订的座位起始号是否正确,正确时k=1,错误时k=0*/
   {
	   if(c[i].NUM/1000==j+1)
	   {if(t_beg<c[i].Fist_Seat&&t_end<c[i].Last_Seat)
	       k=1;
	    else if(t_beg>c[i].Last_Seat&&t_end<=f[j]. Customer_Amount)
           k=1;
		else
		{k=0;
		break;}
	   }
	 i++;
   }
   if(k==0)
   {
    if(t_end>f[j]. Customer_Amount)
		printf("\t\t最大的座位号不能超过%d",f[j]. Customer_Amount);
    printf("\n\t\t输入有错,是否继续(0/1)……");
    scanf("%d",&ed);
   }
 }while(k==0&&ed==1);
  if(ed!=0)
  {
   c[n].Fist_Seat=t_beg;/*记录该顾客的起始座位号*/
   c[n].Last_Seat=t_end;
   c[n].Amount=t_end-t_beg+1;
   printf("\t\t请输入仓位价(1-3):");
   scanf("%d",&rank);
   c[n].Rank=f[j].Price[rank-1];/*根据输入等级计算票价*/
   c[n].Week_Day=f[j].Week_Day;
   f[j].Free_Amount=f[j].Free_Amount-c[n].Amount;/*修正航线上的空位信息*/
   n++;
  }
 }
 }
}

void ticket_out()  /*退票办理*/
{int id;  /*接收编号*/
 int fd;
 int total_amount=0;
system("cls");
printf("\n\n\t请输入要退票的编号:");
scanf("%d",&id);
i=0;
j=0;
printf("  --------------------------------------------------------------------------\n");
printf("  编号   航班号   飞机号   起点   终点  起飞时间   票数    座位号   仓位价格\n");
printf("  --------------------------------------------------------------------------\n");
while(i<n)  /*查找编号*/
{ if(c[i].NUM==id)
	 {
      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;
	  break;/*找到,则退出查找*/
	 }
	 i++;
} 
 printf("\n\n\t\t\t    总额数为(元):%d",total_amount);
 if(i!=n)
 {
 printf("\n\n\t\t\t 是否要删除(0/1):");
 scanf("%d",&fd);                        /*提示要不要删除此航线*/
 if(fd==1)
 {
  while(c[i].Flight_No!=f[j].Flight_No)
  {j++;}
  f[j].Free_Amount=f[j].Free_Amount+c[i].Amount;
  c[i]=c[n-1];
  n--;
 }
 }
 else 
	 printf("\n\n\t\t\t 输入错误!\n\t\t\t按任何键返回!");
 printf("\n\n\t\t\t完成操作,按任何键继续...");
 getch();
 save();
 save2();
}
void if_exit()
{int id;
 system("cls");
 printf("\n\n\n\n\t\t\t  是否确定要退出系统(0/1)……");
 scanf("%d",&id);
 if(id==1)
 {cover1();
  exit(0);
 }
 else
 {system("cls");
  printf("\n\n\n\n\t\t\t  按任何键继续……");
  getch();}
}
int menu4()
{int id;
 do{
 system("cls");
 printf("\n\n\t                        ~~欢迎光临~~\n");
 printf("\t    ____________________________________________________\n");
 printf("\t   │   1.退票处理    │   2.补票办理   │  3.返回目录 │\n");
 printf("\t   │_________________│________________│_____________│\n");
 printf("\n\t    你可以有(1~3)种选择:");
   scanf("%d",&id);
 }while(id>3||id<1);
  return id;
}
void ticket_move()   /*补票退票入口*/
{int k=1;
 for(;;)
 {
	switch(menu4())
	{case 1:ticket_out();break;      /*补票处理*/ 
         case 2:ticket_in();break;     /*退票处理*/ 
         default:k=0; save();save2();break;            /*返回主目录 */  
	}
 if(k==0)
	 break;
 }
}
void check_passenger()
{int k=1;
 for(;;)
 {
	switch(menu3())
	{case 1:customer_all();break;      /*输出全部航线的顾客订票信息*/ 
     case 2:customer_line();break;     /*输出某个航线的顾客订票信息*/ 
     default:k=0; break;                     /*返回主目录 */  
	}
 if(k==0)
	 break;
 }
}
void main()
{char l;
 cover();
 while(1)
 {system("cls");
  printf("\n\t\t\t是否是第一次启用本系统(Y/N):");
  l=getchar();
  if(l=='y'||l=='Y')
	{ save();
	  save2();}
  else 
  {read();
   read2();
  }
   switch(menu())
    {
    case 1:air_manage();break;            /*航线管理*/
    case 2:ticket_manage();break;         /*订票办理*/
    case 3:ticket_move();break;           /*退票补票办理*/
    case 4:check_passenger();break;       /*乘客管理*/
    case 5:if_exit();                     /*退出系统 */     
    }
  }
} 

⌨️ 快捷键说明

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