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; }