📄 航空订票系统注释.txt
字号:
{
char c = 'y';
while (c == 'y' || c == 'Y')
{
int c_fltno, i;
DATE c_date;
printf("请输入所退票的日期(yyyy,mm,dd):");
scanf("%d,%d,%d", &c_date.year, &c_date.month, &c_date.day);
printf("请输入航班号: ");
scanf("%d", &c_fltno);
for(i = 0; i < 40; i++)
{
if (fltlist[i].fltno == c_fltno)
{
int c_seatno;
printf("请输入座位号:");
scanf("%d", &c_seatno);
if (fltlist[i].people >= c_seatno && c_seatno > 0)
{
PNODE p;
BOOL *q;
int index = 1;
BOOL b = FALSE;
for (p = psglist->next; p != NULL; p = p->next)
{
index++;
if (p->psg.seatno == c_seatno && datecmp(&p->psg.date,
&c_date))
{
b = TRUE;
printf("已经办理退票。\n");
DelPassenger(psglist, index);
fltlist[i].surplus++;
break;
}
}
if (!b)
{
printf("座位没有人订,任意键返回。\n");
getch();
break;
}
else
break;
}
else
{
printf("座位号无效,任意键返回。\n");
getch();
break;
}
}
}
getchar();
printf("继续退票吗?(y/n)");
c = getchar();
}
}
void fltnumber(FLIGHT fltlist[])/*按航班号查询航班信息*/
{
char c = 'y';
while (c == 'y' || c == 'Y')
{
BOOL b = FALSE;
int q_fltno, i;
float x,y;
printf("可以查询的航班号:");
for (i = 0; i < 40; i++)
{
if (fltlist[i].fltno != -1)
{
b = TRUE;
printf("%d ", fltlist[i].fltno);
}
}
if (!b)
{
printf("无\n按任意键返回。");
getch();
return;
}
printf("\n请输入要查询的航班号:");
scanf("%d", &q_fltno);
for(i = 0; i < 40; i++)
{
if (fltlist[i].fltno == q_fltno)
{
printf("\n\t\t/第%d号航班信息/\n", fltlist[i].fltno);
printf(" === %s>>-->>%s\n", fltlist[i].from,fltlist[i].to);
printf(" === 起飞时间:%2d:%02d 到达时间:%2d:%02d \n",
fltlist[i].start.hour, fltlist[i].start.min,
fltlist[i].arrive.hour, fltlist[i].arrive.min);
printf(" === 航班票价:RMB %d元 票价折扣是%d%\n",
fltlist[i].price,fltlist[i].discount);
x=fltlist[i].price;
y=fltlist[i].discount;
fltlist[i].price2=x*y/100;
printf(" === 打折后票价为:RMB %6.2f元\n",fltlist[i].price2);
printf(" === 乘客限额:%d\n\n", fltlist[i].people);
break;
}
}
printf("继续查询吗?(y/n)");
getchar(); /*清空磁盘缓冲区*/
c = getchar();
}
}
void psgname(PNODE psglist) /*按乘客姓名查询航班信息*/
{
char c = 'y';
while (c == 'y' || c == 'Y')
{
char p_name[20];
PNODE p;
BOOL b = FALSE;
printf("请输入乘客姓名:");
scanf("%s",&p_name);
for (p=psglist->next;p!=NULL; p=p->next)/*找到链尾*/
{
if(strcmp(p->psg.name,p_name)==0) /*用库函数strcmp() 比较串*/
{
b = TRUE;
printf("=============================================================\n");
printf(" === 姓名:%s 身份证号:%s\n", p->psg.name, p->psg.number);
printf(" === 订单编号:%d\n",p->psg.id);
printf(" === 订票日期:%d-%d-%d ", p->psg.date.year,
p->psg.date.month, p->psg.date.day);
printf(" === 航班号:%d 座位号:%d\n", p->psg.fltno, p->psg.seatno);
}
}
if (!b)
{
printf("查无此人,按任意键退出");
getch();
return;
}
printf("是否继续查询?(y/n)");
getchar(); /*清空磁盘缓冲区*/
c = getchar();
}
}
void fromto (FLIGHT fltlist[])
{
char c = 'y';
while (c == 'y' || c == 'Y')
{
BOOL b = FALSE;
char fltfrom[30], fltto[30];
int i;
printf("请输入起飞港:");
scanf("%s", fltfrom);
printf("请输入到达港:");
scanf("%s", fltto);
for(i = 0; i < 40; i++)
{
if(strcmp(fltlist[i].from,fltfrom)==0)
{
if(strcmp(fltlist[i].to,fltto)==0)
{
b=TRUE;
break;
}
}
}
if(b)
{
printf("%s >>-->> %s\n",fltlist[i].from,fltlist[i].to);
printf("起飞时间:%2d:%02d 到达时间:%2d:%02d\n",
fltlist[i].start.hour,fltlist[i].start.min,
fltlist[i].arrive.hour,fltlist[i].arrive.min);
printf("乘客限额:%d",fltlist[i].people);
}
else
printf("无此飞机");
getch();
printf("是否继续查询?");
getchar();
c = getchar();
}
}
void fltdat(FLIGHT fltlist[], PNODE psglist)
{
int peoplenum[40], i;
DATE q_date;
PNODE p;
for (i = 0; i < 40; i++)
peoplenum[i] = 0;
printf("请输入您要查询的日期(yyyy,mm,dd):");
scanf("%d,%d,%d", &q_date.year, &q_date.month, &q_date.day);
for (p=psglist->next;p!=NULL;p=p->next)
{
if (datecmp(&q_date, &p->psg.date))
{
for(i=0;i<40;i++)
{
if(fltlist[i].fltno==p->psg.fltno)
peoplenum[i]++;
}
}
}
printf("\n=== 航班号 | 航线\t | 已订票数 | 剩余票数 | 票价 ===\n");
printf("===========================================================================\n");
for (i = 0; i < 40; i++)
{
if (peoplenum[i] > 0)
{
printf("=== %d %s>>-->>%s %d %d %d ===\n",
fltlist[i].fltno,fltlist[i].from,fltlist[i].to,
peoplenum[i],fltlist[i].surplus,fltlist[i].price);
}
}
printf("===========================================================================\n");
getch();
}
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请选择:");
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 SaveFlight(FLIGHT fltlist[])
{
FILE *fp;
if ((fp = fopen("flight.dat", "wb")) == NULL)
{
printf("不能打开flight.dat文件,航班数据无法保存。\n");
fclose(fp);
return;
}
fwrite(&fltlist[0], sizeof(FLIGHT), 40, fp);
fclose(fp);
printf("航班数据已保存至flight.dat文件。\n");
}
void SavePassenger(PNODE psglist)
{
FILE *fp;
PNODE p;
int n = GetPsgCount(psglist);
unlink("psg.dat");
if (n == 0)
return;
if ((fp = fopen("psg.dat", "wb")) == NULL)
{
printf("不能打开psg.dat文件,乘客数据无法保存。\n");
fclose(fp);
return;
}
fwrite(&n, sizeof(int), 1, fp);
for (p = psglist->next; p != NULL; p = p->next)
fwrite(&p->psg, sizeof(PASSENGER), 1, fp);
fclose(fp);
printf("乘客数据已保存至psg.dat文件。\n");
}
void Quit(FLIGHT fltlist[], PNODE psglist)
{
SaveFlight(fltlist);
SavePassenger(psglist);
printf("\n\n\t\t\t谢谢使用航空订票系统!");
getch();
}
void main()
{
FLIGHT fltlist[40];
NODE psglist;
ReadFlight(fltlist);
ReadPassenger(&psglist);
for (;;)
{
char c;
clrscr();
printf("\n\t\t ===================================");
printf("\n\t\t\t 航空订票系统 ");
printf("\n\t\t ===================================\n");
printf("\t\t\t = 0.管理\n");
printf("\t\t\t = 1.查询\n");
printf("\t\t\t = 2.订票\n");
printf("\t\t\t = 3.退票\n");
printf("\t\t\t = 4.退出\n");
printf("\n\t\t\t请输入选项:");
c = getchar();
switch (c)
{
case '0':
Manage(fltlist);
break;
case '1':
Query(fltlist, &psglist);
break;
case '2':
Book(fltlist, &psglist);
break;
case '3':
Cancel(fltlist, &psglist);
break;
case '4':
Quit(fltlist, &psglist);
break;
default:
continue;
}
if (c == '4')
break;
}
ClearPsgList(&psglist);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -