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

📄 航空订票系统注释.txt

📁 这是一个简单航空订票系统,在TurbleC集成环境中运行.
💻 TXT
📖 第 1 页 / 共 2 页
字号:
{
  char c = 'y';
  while (c == 'y' || c == 'Y')
  {
    int c_fltno, i;
    DATE c_date;
    printf("请输入所退票的日期(yyyy,mm,dd):");
    scanf("%d,%d,%d", &c_date.year, &c_date.month, &c_date.day);
    printf("请输入航班号: ");
    scanf("%d", &c_fltno);
    for(i = 0; i < 40; i++)
    {
      if (fltlist[i].fltno == c_fltno)
      {
    int c_seatno;
    printf("请输入座位号:");
    scanf("%d", &c_seatno);
    if (fltlist[i].people >= c_seatno && c_seatno > 0)
    {
      PNODE p;
      BOOL *q;
      int index = 1;
      BOOL b = FALSE;
      for (p = psglist->next; p != NULL; p = p->next)
      {
        index++;
        if (p->psg.seatno == c_seatno && datecmp(&p->psg.date,
          &c_date))
        {
          b = TRUE;
          printf("已经办理退票。\n");
          DelPassenger(psglist, index);
          fltlist[i].surplus++;
          break;
        }
      }
      if (!b)
      {
        printf("座位没有人订,任意键返回。\n");
        getch();
        break;
      }
      else
        break;
    }
    else
    {
      printf("座位号无效,任意键返回。\n");
      getch();
      break;
    }
      }
    }
    getchar();
    printf("继续退票吗?(y/n)");
    c = getchar();
  }
}

void  fltnumber(FLIGHT fltlist[])/*按航班号查询航班信息*/
{
  char c = 'y';
  while (c == 'y' || c == 'Y')
  {
    BOOL b = FALSE;
    int q_fltno, i;
    float x,y;
    printf("可以查询的航班号:");
    for (i = 0; i < 40; i++)
    {
      if (fltlist[i].fltno != -1)
      {
    b = TRUE;
    printf("%d ", fltlist[i].fltno);
      }
    }
    if (!b)
    {
      printf("无\n按任意键返回。");
      getch();
      return;
    }
    printf("\n请输入要查询的航班号:");
    scanf("%d", &q_fltno);
    for(i = 0; i < 40; i++)
    {
      if (fltlist[i].fltno == q_fltno)
      {
    printf("\n\t\t/第%d号航班信息/\n", fltlist[i].fltno);
    printf("   ===  %s>>-->>%s\n", fltlist[i].from,fltlist[i].to);
    printf("   ===  起飞时间:%2d:%02d 到达时间:%2d:%02d \n",
      fltlist[i].start.hour, fltlist[i].start.min,
      fltlist[i].arrive.hour, fltlist[i].arrive.min);
    printf("   ===  航班票价:RMB %d元  票价折扣是%d%\n",
      fltlist[i].price,fltlist[i].discount);
    x=fltlist[i].price;
    y=fltlist[i].discount;
    fltlist[i].price2=x*y/100;
    printf("   ===  打折后票价为:RMB %6.2f元\n",fltlist[i].price2);
    printf("   ===  乘客限额:%d\n\n", fltlist[i].people);
    break;
      }
    }
    printf("继续查询吗?(y/n)");
    getchar(); /*清空磁盘缓冲区*/
    c = getchar();
  }
}
void psgname(PNODE psglist) /*按乘客姓名查询航班信息*/
{
  char c = 'y';
  while (c == 'y' || c == 'Y')
  {
    char p_name[20];
    PNODE p;
    BOOL b = FALSE;
    printf("请输入乘客姓名:");
    scanf("%s",&p_name);
    for (p=psglist->next;p!=NULL; p=p->next)/*找到链尾*/
    {
      if(strcmp(p->psg.name,p_name)==0) /*用库函数strcmp() 比较串*/
      {
    b = TRUE;
    printf("=============================================================\n");  
    printf("  ===  姓名:%s 身份证号:%s\n", p->psg.name, p->psg.number);
    printf("  ===  订单编号:%d\n",p->psg.id);
    printf("  === 订票日期:%d-%d-%d ", p->psg.date.year,
      p->psg.date.month, p->psg.date.day);
    printf("  ===  航班号:%d 座位号:%d\n", p->psg.fltno, p->psg.seatno);
      }
    }
    if (!b)
    {
      printf("查无此人,按任意键退出");
      getch();
      return;
    }
    printf("是否继续查询?(y/n)");
    getchar();    /*清空磁盘缓冲区*/
    c = getchar();
  }
}
void fromto (FLIGHT fltlist[])
{
  char c = 'y';
  while (c == 'y' || c == 'Y')
  {
    BOOL b = FALSE;
    char fltfrom[30], fltto[30];
    int i;
    printf("请输入起飞港:");
    scanf("%s", fltfrom);
    printf("请输入到达港:");
    scanf("%s", fltto);
    for(i = 0; i < 40; i++)
    {
      if(strcmp(fltlist[i].from,fltfrom)==0)
      {
    if(strcmp(fltlist[i].to,fltto)==0)
    {
      b=TRUE;
      break;
    }
      }
    }
    if(b)
    {
      printf("%s >>-->> %s\n",fltlist[i].from,fltlist[i].to);
      printf("起飞时间:%2d:%02d 到达时间:%2d:%02d\n",
      fltlist[i].start.hour,fltlist[i].start.min,
      fltlist[i].arrive.hour,fltlist[i].arrive.min);
      printf("乘客限额:%d",fltlist[i].people);
    }
    else
      printf("无此飞机");
    getch();
    printf("是否继续查询?");
    getchar();
    c = getchar();
  }
}

void fltdat(FLIGHT fltlist[], PNODE psglist)
{
  int peoplenum[40], i;
  DATE q_date;
  PNODE p;
  for (i = 0; i < 40; i++)
    peoplenum[i] = 0;
  printf("请输入您要查询的日期(yyyy,mm,dd):");
  scanf("%d,%d,%d", &q_date.year, &q_date.month, &q_date.day);
  for (p=psglist->next;p!=NULL;p=p->next)
  {
    if (datecmp(&q_date, &p->psg.date))
    {
      for(i=0;i<40;i++)
      {
    if(fltlist[i].fltno==p->psg.fltno)
    peoplenum[i]++;
      }
    }
  }
  printf("\n=== 航班号  |          航线\t    | 已订票数 |  剩余票数  |    票价 ===\n");
   printf("===========================================================================\n");
  for (i = 0; i < 40; i++)
  { 
    if (peoplenum[i] > 0)
    {
      printf("===  %d        %s>>-->>%s            %d            %d          %d  ===\n",
      fltlist[i].fltno,fltlist[i].from,fltlist[i].to,
      peoplenum[i],fltlist[i].surplus,fltlist[i].price);
    }
  }
  printf("===========================================================================\n");
  getch();
}
void Query(FLIGHT fltlist[], PNODE psglist)
{
  for (;;)
  {
    char c;
    clrscr();
    printf("航班查询\n");
    printf("=====================================\n");
    printf("1.按航班号查询\n");
    printf("2.按姓名查询乘客订票信息\n");
    printf("3.按起飞、到达港查询\n");
    printf("4.按日期查询航班信息\n");
    printf("5.返回\n");
    printf("\n请选择:");
    c = getchar();
    switch (c)
    {
      case '1':
    fltnumber(fltlist);
    break;
      case '2':
    psgname(psglist);
    break;
      case '3':
    fromto(fltlist);
    break;
      case '4':
    fltdat(fltlist, psglist);
    break;
      case '5':
    break;
      default:
    continue;
    }
    if (c == '5')
      break;
  }
}

void SaveFlight(FLIGHT fltlist[])
{
  FILE *fp;
  if ((fp = fopen("flight.dat", "wb")) == NULL)
  {
    printf("不能打开flight.dat文件,航班数据无法保存。\n");
    fclose(fp);
    return;
  }
  fwrite(&fltlist[0], sizeof(FLIGHT), 40, fp);
  fclose(fp);
  printf("航班数据已保存至flight.dat文件。\n");
}
void SavePassenger(PNODE psglist)
{
  FILE *fp;
  PNODE p;
  int n = GetPsgCount(psglist);
  unlink("psg.dat");
  if (n == 0)
    return;
  if ((fp = fopen("psg.dat", "wb")) == NULL)
  {
    printf("不能打开psg.dat文件,乘客数据无法保存。\n");
    fclose(fp);
    return;
  }
  fwrite(&n, sizeof(int), 1, fp);
  for (p = psglist->next; p != NULL; p = p->next)
    fwrite(&p->psg, sizeof(PASSENGER), 1, fp);
  fclose(fp);
  printf("乘客数据已保存至psg.dat文件。\n");
}
void Quit(FLIGHT fltlist[], PNODE psglist)
{
  SaveFlight(fltlist);
  SavePassenger(psglist);
  printf("\n\n\t\t\t谢谢使用航空订票系统!");
  getch();
}
void main()
{
  FLIGHT fltlist[40];
  NODE psglist;
  ReadFlight(fltlist);
  ReadPassenger(&psglist);
  for (;;)
  {
    char c;
    clrscr();
    printf("\n\t\t   ===================================");
    printf("\n\t\t\t      航空订票系统 ");
    printf("\n\t\t   ===================================\n");
    printf("\t\t\t    =    0.管理\n");   
    printf("\t\t\t    =    1.查询\n");
    printf("\t\t\t    =    2.订票\n");
    printf("\t\t\t    =    3.退票\n");
    printf("\t\t\t    =    4.退出\n");
    printf("\n\t\t\t请输入选项:");
    c = getchar();
    switch (c)
    {
      case '0':
    Manage(fltlist);
    break;
      case '1':
    Query(fltlist, &psglist);
    break;
      case '2':
    Book(fltlist, &psglist);
    break;
      case '3':
    Cancel(fltlist, &psglist);
    break;
      case '4':
    Quit(fltlist, &psglist);
    break;
      default:
    continue;
    }
    if (c == '4')
      break;
  }
  ClearPsgList(&psglist);
}



⌨️ 快捷键说明

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