www.pudn.com > v4670_flight.rar > Query.c


/* Please run Chinese a system, then you can read the comment. */ 
/* 文件名:query.c 
   说明: 
   作者: 
   创建日期: 
   修改日期:   */ 
#include  
#include  
#include "datatype.h" 
#include "query.h" 
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请选择1-5:"); 
    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  fltnumber(FLIGHT fltlist[]) 
{ 
  char c = 'y'; 
  while (c == 'y' || c == 'Y') 
  { 
    BOOL b = FALSE; 
    int fltno, i; 
    printf("可以查询的航班号:"); 
    for (i = 0; i < 40; i++) 
    { 
      if (fltlist[i].m_fltno != -1) 
      { 
	b = TRUE; 
	printf("%d ", fltlist[i].m_fltno); 
      } 
    } 
    if (!b) 
    { 
      printf("无\n按任意键返回。"); 
      getch(); 
      return; 
    } 
    printf("\n请输入要查询的航班号:"); 
    scanf("%d", &fltno); 
    for(i = 0; i < 40; i++) 
    { 
      if (fltlist[i].m_fltno == fltno) 
      { 
	printf("%s--%s--%s\n", fltlist[i].m_szFrom, fltlist[i].m_szPass, 
	  fltlist[i].m_szTo); 
	printf("起飞时间:%2d:%02d 到达时间:%2d:%02d 飞行固定时间:%2d:%02d\n", 
	  fltlist[i].m_start.m_hour, fltlist[i].m_start.m_min, 
	  fltlist[i].m_arrive.m_hour, fltlist[i].m_arrive.m_min, 
	  fltlist[i].m_fly.m_hour, fltlist[i].m_fly.m_min); 
	printf("乘客限额:%d\n", fltlist[i].m_people); 
	break; 
      } 
    } 
    printf("继续查询吗?(y/n)"); 
    ClearBuffer(); 
    c = getchar(); 
  } 
} 
void psgname(PNODE psglist) 
{ 
  char c = 'y'; 
  while (c == 'y' || c == 'Y') 
  { 
    char name[20]; 
    PNODE p; 
    BOOL b = FALSE; 
    printf("请输入乘客姓名:"); 
    scanf("%s",name); 
    for (p = psglist->next; p != NULL; p = p->next) 
    { 
      if(strcmp(p->m_psg.m_szName, name) == 0) 
      { 
	b = TRUE; 
	printf("姓名:%s 单位:%s 身份证号:%s\n", p->m_psg.m_szName, 
	  p->m_psg.m_szCorp, p->m_psg.m_szNumber); 
	printf("订票日期:%d-%d-%d ", p->m_psg.m_Date.m_year, 
	  p->m_psg.m_Date.m_month, p->m_psg.m_Date.m_day); 
	printf("航班号:%d 座位号:%d", p->m_psg.m_fltno, p->m_psg.m_seatno);  break; 
      } 
    } 
    if (!b) 
    { 
      printf("查无此人,按任意键退出"); 
      getch(); 
      return; 
    } 
    printf("是否继续查询?(y/n)"); 
    ClearBuffer(); 
    c = getchar(); 
  } 
} 
void fromto (FLIGHT fltlist[]) 
{ 
  char c = 'y'; 
  while (c == 'y' || c == 'Y') 
  { 
    BOOL b = FALSE; 
    char from[30], to[30]; 
    int i; 
    printf("请输入起飞港:"); 
    scanf("%s", from); 
    printf("请输入到达港:"); 
    scanf("%s", to); 
    for(i = 0; i < 40; i++) 
    { 
      if(strcmp(fltlist[i].m_szFrom,from)==0) 
      { 
	if(strcmp(fltlist[i].m_szTo,to)==0) 
	{ 
	  b=TRUE; 
	  break; 
	} 
      } 
    } 
    if(b) 
    { 
      printf("%s--%s--%s\n",fltlist[i].m_szFrom,fltlist[i].m_szPass,fltlist[i].m_szTo); 
      printf("起飞时间:%2d:%02d 到达时间:%2d:%02d 飞行固定时间:%2d:%02d\n",fltlist[i].m_start.m_hour,fltlist[i].m_start.m_min,fltlist[i].m_arrive.m_hour,fltlist[i].m_arrive.m_min,fltlist[i].m_fly.m_hour,fltlist[i].m_fly.m_min); 
      printf("乘客限额:%d",fltlist[i].m_people); 
    } 
    else 
      printf("无此飞机"); 
    getch(); 
    printf("是否继续查询?"); 
    ClearBuffer(); 
    c = getchar(); 
  } 
} 
 
void fltdat(FLIGHT fltlist[], PNODE psglist) 
{ 
  int people[40], i; 
  DATE date; 
  PNODE p; 
  for (i = 0; i < 40; i++) 
    people[i] = 0; 
  printf("请输入您要查询的日期(yyyy,mm,dd):"); 
  scanf("%d,%d,%d", &date.m_year, &date.m_month, &date.m_day); 
  for (p = psglist->next; p != NULL; p=p->next) 
  { 
    if (datecmp(&date, &p->m_psg.m_Date)) 
    { 
      for(i=0;i<40;i++) 
      { 
	if(fltlist[i].m_fltno==p->m_psg.m_fltno) 
	people[i]++; 
      } 
    } 
  } 
  for (i = 0; i < 40; i++) 
  { 
    if (people[i] > 0) 
    { 
      printf("%d %s--%s--%s 人数:%d", fltlist[i].m_fltno, fltlist[i].m_szFrom, 
      fltlist[i].m_szPass, fltlist[i].m_szTo, people[i]); 
    } 
  } 
  getch(); 
}