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


/* Please run Chinese a system, then you can read the comment. */ 
/* 文件名:manage.c 
   说明:航班管理模块 
   作者:01090B1 李子明 13号 
   创建日期:2003/6/30 
   修改日期:2003/7/9        */ 
#include  
#include  
#include "datatype.h" 
#include "manage.h" 
void Add(FLIGHT fltlist[]) 
{ 
  char c = 'y'; 
  while (c == 'y' || c == 'Y') 
  { 
    FLIGHT flt; 
    BOOL b; 
    printf("请输入航班号(1 - 10000):"); 
    scanf("%d", &flt.m_fltno); 
    printf("请输入起飞港:"); 
    scanf("%s", flt.m_szFrom); 
    printf("请输入途经港:"); 
    scanf("%s", flt.m_szPass); 
    printf("请输入到达港:"); 
    scanf("%s", flt.m_szTo); 
    printf("请输入起飞时间(hh:mm):"); 
    scanf("%d:%d", &flt.m_start.m_hour, &flt.m_start.m_min); 
    printf("请输入到达时间(hh:mm):"); 
    scanf("%d:%d", &flt.m_arrive.m_hour, &flt.m_arrive.m_min); 
    printf("请输入飞行固定时间(hh:mm):"); 
    scanf("%d:%d", &flt.m_fly.m_hour, &flt.m_fly.m_min); 
    printf("请输入乘客限额:"); 
    scanf("%d", &flt.m_people); 
    ClearBuffer(); 
    if (AddFlight(fltlist, &flt)) 
      printf("添加成功,"); 
    else 
      printf("添加失败,"); 
    printf("继续添加航班吗(Y/N)?"); 
    c = getchar(); 
  } 
} 
void Del(FLIGHT fltlist[]) 
{ 
  BOOL b = FALSE; 
  int i, fltno; 
  char c = 'y'; 
  while (c == 'y' || c == 'Y') 
  { 
    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) 
      { 
	DelFlight(fltlist, i); 
	break; 
      } 
    } 
    printf("继续删除吗(y/n)?"); 
    ClearBuffer(); 
    c = getchar(); 
  } 
} 
void Query(FLIGHT fltlist[]) 
{ 
  char c = 'y'; 
  while (c == 'y' || c == 'Y') 
  { 
    BOOL b = FALSE; 
    int i, fltno; 
    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 乘客限额:%d\n", fltlist[i].m_szFrom, 
	  fltlist[i].m_szPass, fltlist[i].m_szTo, fltlist[i].m_people); 
	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_arrive.m_min); 
	break; 
      } 
    } 
    printf("继续查询吗(y/n)?"); 
    ClearBuffer(); 
    c = getchar(); 
  } 
} 
void OneDay(FLIGHT fltlist[], PNODE psglist) 
{ 
  char c = 'y'; 
  while (c == 'y' || c == 'Y') 
  { 
    DATE date; 
    int people[40], i; 
    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(&p->m_psg.m_Date, &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 (fltlist[i].m_fltno != -1) 
      { 
	printf("%d %s--%s--%s 人数:%d\n", fltlist[i].m_fltno, 
	  fltlist[i].m_szFrom, fltlist[i].m_szPass, fltlist[i].m_szTo, 
	  people[i]); 
      } 
    } 
    printf("继续管理吗?(y/n)"); 
    ClearBuffer(); 
    c = getchar(); 
  } 
} 
void MultiDay(FLIGHT fltlist[], PNODE psglist) 
{ 
  char c = 'y'; 
  while (c == 'y' || c == 'Y') 
  { 
    DATE date[7]; 
    int n, i, j; 
    int people[40][7]; 
    PNODE p; 
    printf("请输入要查询的天数(1-7):"); 
    do 
    { 
      scanf("%d", &n); 
      if (n > 7 || n < 1) 
	printf("输入非法,请重新输入:"); 
    } while (n > 7 || n < 1); 
    for (i = 0; i < n; i++) 
    { 
      printf("请输入第%d个日期(yyyy,mm,dd):", i); 
      scanf("%d,%d,%d", &date[i].m_year, &date[i].m_month, &date[i].m_day); 
    } 
    for (i = 0; i < 40; i++) 
      for (j = 0; j < 7; j++) 
	people[i][j] = 0; 
    for (p = psglist->next; p != NULL; p = p->next) 
    { 
      for (j = 0; j < n; j++) 
      { 
	if (datecmp(&date[j], &p->m_psg.m_Date)) 
	{ 
	  for (i = 0; i < 40; i++) 
	  { 
	    if (fltlist[i].m_fltno == p->m_psg.m_fltno) 
	      people[i][j]++; 
	  } 
	} 
      } 
    } 
    for (i = 0; i < 40; i++) 
    { 
      if (fltlist[i].m_fltno != -1) 
      { 
	printf("%d %s--%s--%s ", fltlist[i].m_fltno, fltlist[i].m_szFrom, 
	  fltlist[i].m_szPass, fltlist[i].m_szTo); 
	for (j = 0; j < n; j++) 
	  printf("%d ", people[i][j]); 
	printf("\n"); 
      } 
    } 
    printf("继续查询吗?(y/n)"); 
    ClearBuffer(); 
    c = getchar(); 
  } 
} 
void Manage(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("6.返回\n"); 
    printf("\n请选择1-6:"); 
    c = getchar(); 
    switch (c) 
    { 
      case '1': 
	Query(fltlist); 
	break; 
      case '2': 
	OneDay(fltlist, psglist); 
	break; 
      case '3': 
	MultiDay(fltlist, psglist); 
	break; 
      case '4': 
	Del(fltlist); 
	break; 
      case '5': 
	Add(fltlist); 
	break; 
      case '6': 
	break; 
      default: 
	continue; 
    } 
    if (c == '6') 
      break; 
  } 
}