航空订票系统航空订票系统
#include
#include
#include
struct airlineInformation//存储航线信息的结构,初始为三条航线
{
char flightNum[20];
char planeNum[20];
char destination[20];
int bookTicketNum;
int spareTicketNum;
int seat[100];//表示该航班的座位是否有人坐的情况
}airline[3]={{"0001","china-001","BeiJin...
航空订票系统
#include
#include
#include
struct airlineInformation//存储航线信息的结构,初始为三条航线
{
char flightNum[20];
char planeNum[20];
char destination[20];
int bookTicketNum;
int spareTicketNum;
int seat[100];//示该航班的座位是否有人坐的情况
}airline[3]={{"0001","china-001","BeiJing",1,99,0},
{"0002","china-002","ShangHai",1,99,0},
{"0003","china-003","Guangzhou",1,99,0}};
struct clientInformation//存储客户信息的结构,初始为三位客户
{
char clientName[20];
char clientFlightNum[20];
int seatNum;
}client[300]={{"zhangsan","0001",1},{"lisi","0002",1},{"wangwu","0003",1}};
int enterChoice(void);
void airLine(FILE * cfPtr1 , FILE * cfPtr2);//进行航线信息与客户信息的储存的函数原型
void bookTicket(FILE * cfPtr1 , FILE * cfPtr2);//订票的函数原型 void cancelTicket(FILE * cfPtr1 , FILE * cfPtr2);//退票的函数原型 void printInformation(FILE * cfPtr1 , FILE * cfPtr2);//打印航线信息与客户信息的函数原型
int main()
{
FILE * cfPtr1;
FILE * cfPtr2;
int choice,i,j;
for(i=0;i<=2;i++)//开始时只有每次航班的第一个座有人坐
{
for(j=0;j<=99;j++)
airline[i].seat[j]=0;
airline[i].seat[0]=1;
}
if ((cfPtr1=fopen("airline.dat","wb+"))==NULL)
printf("非常抱歉~\n存储航线信息的文件不能打开~\n请稍候((((((\n");
else
if((cfPtr2=fopen("customer.dat","wb+"))==NULL)
printf("非常抱歉~\n存储客户信息的文件不能打开~\n请稍候((((((\n");
else
{
airLine(cfPtr1,cfPtr2);
for(i=1;i<=30;i++)
printf("*");
printf("\n欢迎使用南航订票系统!\n有何疑问详询800-800-800~\n");
while((choice=enterChoice())!=5)//对操作的选择,当选择5时,操作结束
{
switch (choice)
{
case 1:
airLine(cfPtr1,cfPtr2);
printInformation(cfPtr1,cfPtr2);
break;
case 2:
bookTicket(cfPtr1,cfPtr2);
break;
case 3:
cancelTicket(cfPtr1,cfPtr2);
break;
case 4:
printInformation(cfPtr1,cfPtr2);
break;
}
}
}
printf("\n");
for(i=1;i<=30;i++)
printf("*");
printf("\n");
printf("谢谢您使用本系统~\n欢迎您下次再次使用~\n再见~\n");
for(i=1;i<=30;i++)
printf("*");
printf("\n");
fclose(cfPtr1);
fclose(cfPtr2);
system("pause");
return 0;
}
int enterChoice(void) {
int i;
int menuChoice;
for(i=1;i<=30;i++)
printf("*");
printf("\n");
printf("\n请输入您想进行的操作:\n"
"1-航线信息及客户信息的存储\n"
"2-订票\n"
"3-退票\n"
"4-查询信息\n"
"5-退出系统\n");
printf("\n");
for(i=1;i<=30;i++)
printf("*");
printf("\n");
scanf("%d",&menuChoice);
for(i=1;i<=20;i++)
printf("*");
printf("\n");
return menuChoice;
}
void airLine(FILE * cfPtr1 , FILE * cfPtr2) {
int i;
if ((cfPtr1=fopen("airline.dat","rb+"))==NULL)
printf("非常抱歉~\n存储航线信息的文件不能打开~\n请稍候((((((\n");
else
if((cfPtr2=fopen("customer.dat","rb+"))==NULL)
printf("非常抱歉~\n存储客户信息的文件不能打开~\n请稍候((((((\n");
else
{
for(i=0;i<=2;i++)//将目前airline结构数组中的每一项都储存在航线信息中
fwrite(&airline[i],sizeof(struct airlineInformation),1,cfPtr1);
for(i=0;i<=299;i++)//将目前client结构数组中的每一项都储存在客户信息中
fwrite(&client[i],sizeof(struct clientInformation),1,cfPtr2);
}
fclose(cfPtr1);
fclose(cfPtr2);
}
void bookTicket(FILE * cfPtr1 , FILE * cfPtr2) {
char Name[20];
char flightnum[20];
int i,j,ok=0;//ok为是否订上票的标记值,0表示没订上,1表示订上
if ((cfPtr1=fopen("airline.dat","rb+"))==NULL)
printf("非常抱歉~\n存储航线信息的文件不能打开~\n请稍候((((((\n");
else
if((cfPtr2=fopen("customer.dat","rb+"))==NULL)
printf("非常抱歉~\n存储客户信息的文件不能打开~\n请稍候((((((\n");
else
{
getchar();
printf("尊敬的客户,欢迎您订票~\n");
for(i=1;i<=30;i++)
printf("*");
printf("\n请输入您的姓名:\n");
gets(Name);
printf("%s先生/女士,请输入您想乘坐的航班号:\n",Name);
gets(flightnum);
printf("操作正在进行中,请稍后......\n");
for(i=1;i<=30;i++)
printf("*");
printf("\n");
for(i=0;i<=2;i++)//查找与客户相同的航班号的信息
if(strcmp(airline[i].flightNum,flightnum)==0)//航班号相同
if(airline[i].spareTicketNum>0)//并且有余票
{
ok=1;
airline[i].bookTicketNum++;
airline[i].spareTicketNum--;
break;
}
if(ok==1)
{
for(j=0;j<=99;j++)//为客户选择一座位
if(airline[i].seat[j]==0)
{
airline[i].seat[j]=1;
break;
}
printf("恭喜您~\n您已经订上了%s次航班的%d座位,"
"您的目的地为%s(\n",flightnum,j+1,airline[i].destination);
for(i=0;i<=299;i++)//储存客户信息
if(strcmp(client[i].clientName,"")==0)//该条原先为空,写入客户信息
{
strcpy(client[i].clientName,Name);
strcpy(client[i].clientFlightNum,flightnum);
client[i].seatNum=j+1;
break;
}
}
else
if(i > 2)
printf("对不起~\n这里没有该次航班,请检查后再次输入~\n");
else
printf("抱歉~\n您所要坐的%s航班由于客满,不能为您办理~\n",flightnum);
}
for(i=1;i<=30;i++)
printf("*");
printf("\n");
//将此时的信息储存
airLine(cfPtr1,cfPtr2);
fclose(cfPtr1);
fclose(cfPtr2);
}
void cancelTicket(FILE * cfPtr1 , FILE * cfPtr2)
{
char Name[20];
char flightnum[20];
int i,j,ok=0,ok1=0;//ok表示是否退票成功,ok1表示是否有该客户
if ((cfPtr1=fopen("airline.dat","rb+"))==NULL)
printf("非常抱歉~\n存储航线信息的文件不能打开~\n请稍候((((((\n");
else
if((cfPtr2=fopen("customer.dat","rb+"))==NULL)
printf("非常抱歉~\n存储客户信息的文件不能打开~\n请稍候((((((\n");
else
{
getchar();
printf("尊敬的客户,欢迎您退票~\n");
for(i=1;i<=30;i++)
printf("*");
printf("\n请输入您的姓名:\n");
gets(Name);
printf("%s先生/女士,请输入您想退掉的航班号:\n",Name);
gets(flightnum);
for(i=1;i<=30;i++)
printf("*");
printf("\n");
printf("操作正在进行中,请稍后......\n");
for(i=1;i<=20;i++)
printf("*");
printf("\n");
for(i=0;i<=299;i++)//检查是否有该客户
if(strcmp(client[i].clientName,Name)==0)//有该客户
{
ok1=1;
for(j=0;j<=2;j++)//检查其输入的航班号是否真确
if(strcmp(airline[j].flightNum,flightnum)==0)
{
ok=1;
airline[j].bookTicketNum--;
airline[j].spareTicketNum++;
airline[j].seat[client[i].seatNum]=0;
break;
}
if(ok==1)//退票成功,删除客户信息
{
strcpy(client[i].clientName,"");
strcpy(client[i].clientFlightNum,"");
client[i].seatNum=0;
break;
}
}
if(ok1==0)
printf("抱歉~\n您还没有订票~\n");
else
if(ok==1)
printf("恭喜您~\n您已经退票成功~\n");
else
printf("抱歉~\n您订的不是这次航班,请检查后再次输入~\n");
}
for(i=1;i<=30;i++)
printf("*");
printf("\n");
airLine(cfPtr1,cfPtr2);
fclose(cfPtr1);
fclose(cfPtr2);
}
void printInformation(FILE * cfPtr1 , FILE * cfPtr2) {
int i;
struct airlineInformation airline;
struct clientInformation client;
if ((cfPtr1=fopen("airline.dat","rb+"))==NULL)
printf("非常抱歉~\n存储航线信息的文件不能打开~\n请稍候((((((\n");
else
if((cfPtr2=fopen("customer.dat","rb+"))==NULL)
printf("非常抱歉~\n存储客户信息的文件不能打开~\n请稍候((((((\n");
else
{
printf("\n");
for(i=1;i<=50;i++)
printf("*");
printf("\n");
printf("航线信息:\n航班号 飞机号 目的地 定票数 余票数\n");
fread(&airline,sizeof(struct airlineInformation),1,cfPtr1);
while(!feof(cfPtr1))
{
printf("%-7s%-10s%-10s%7d%7d\n",airline.flightNum,airline.planeNum,airline.d
estination,airline.bookTicketNum,airline.spareTicketNum);
fread(&airline,sizeof(struct airlineInformation),1,cfPtr1);
}
for(i=1;i<=50;i++)
printf("*");
printf("\n");
for(i=1;i<=30;i++)
printf("*");
printf("\n");
printf("客户信息:\n姓名 航班号 座位号\n");
fread(&client,sizeof(struct clientInformation),1,cfPtr2);
while(!feof(cfPtr2))
{
if(strcmp(client.clientName,"")!=0)
{
printf("%-10s%-7s%7d\n",client.clientName,client.clientFlightNum,client.seatNum)
;
}
fread(&client,sizeof(struct clientInformation),1,cfPtr2);
}
for(i=1;i<=30;i++)
printf("*");
printf("\n");
}
fclose(cfPtr1);
fclose(cfPtr2);
}
本文档为【航空订票系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。