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


/* Please run Chinese a system, then you can read the comment. */ 
/* 文件名:datatype.c 
   说明:datatype.h中的函数实现 
   作者:01090B1 李子明 13号 
   创建日期:2003/6/30 
   修改日期:2003/7/1           */ 
#include  
#include  
#include  
#include "datatype.h" 
BOOL datecmp(DATE* date1, DATE* date2) 
{ 
  return (date1->m_year == date2->m_year && date1->m_month == date2->m_month 
    && date1->m_day == date2->m_day); 
} 
BOOL timecmp(TIME* time1, TIME* time2) 
{ 
  return (time1->m_hour == time2->m_hour && time1->m_min == time2->m_min); 
} 
void ClearBuffer(void) 
{ 
  getchar(); 
} 
void ReadFlight(FLIGHT fltlist[]) 
{ 
  FILE *fp; 
  if ((fp = fopen("flight.dat", "rb")) != NULL) 
    fread(fltlist, sizeof(FLIGHT), 40, fp); 
  else 
  { 
    int i; 
    for (i = 0; i < 40; i++) 
      fltlist[i].m_fltno = -1; 
  } 
  fclose(fp); 
} 
void ReadPassenger(PNODE psglist) 
{ 
  FILE *fp; 
  if ((fp = fopen("psg.dat", "rb")) == NULL) 
    psglist->next = NULL; 
  else 
  { 
    int i, n; 
    fread(&n, sizeof(int), 1, fp); 
    for (i = 0; i < n; i++) 
    { 
      PASSENGER psg; 
      fread(&psg, sizeof(PASSENGER), 1, fp); 
      AddPassenger(psglist, &psg); 
    } 
  } 
} 
BOOL AddFlight(FLIGHT fltlist[], PFLIGHT fltdata) 
{ 
  int i; 
  BOOL bResult = FALSE; 
  for (i = 0; i < 40; i++) 
  { 
    if (fltlist[i].m_fltno == -1) 
    { 
      memcpy(&fltlist[i], fltdata, sizeof(FLIGHT)); 
      bResult = TRUE; 
      break; 
    } 
  } 
  return bResult; 
} 
void DelFlight(FLIGHT fltlist[], int index) 
{ 
  fltlist[index].m_fltno = -1; 
} 
void AddPassenger(PNODE psglist, PPASSENGER psgdata) 
{ 
  PNODE p, q; 
  for (p = psglist; p->next != NULL; p = p->next) 
    ; 
  q = NEW(NODE, 1); 
  memcpy(&q->m_psg, psgdata, sizeof(PASSENGER)); 
  q->next = NULL; 
  p->next = q; 
} 
BOOL DelPassenger(PNODE psglist, int index) 
{ 
  int i = 0; 
  PNODE p, q; 
  for (p = psglist->next; p->next != NULL; p = p->next) 
    i++; 
  if (p != NULL && i == index - 1) 
  { 
    q = p->next; 
    p->next = q->next; 
    free(q); 
    return TRUE; 
  } 
  else 
    return FALSE; 
} 
void ClearPsgList(PNODE psglist) 
{ 
  PNODE p = psglist->next, q; 
  while (p != NULL && p->next != NULL) 
  { 
    q = p; 
    p = p->next; 
    free(q); 
  } 
} 
unsigned int GetPsgCount(PNODE psglist) 
{ 
  PNODE p; 
  unsigned int s = 0; 
  for (p = psglist->next; p != NULL; p = p->next) 
    s++; 
  return s; 
}