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