#include
#include
#include
struct airplane
{
int num;
char begin[20];
char end[20];
char time[20];
double fee;
int count;
}plane[2014];
void home();
void input();
void del();
void scan();
void book();
void change();
void quit();
void sou();
void save();
void read();
void home()
{
int a,i,j;
printf("\n\n *****************************欢迎进入飞机票务系统*****************************\n\n");
printf("==========您好,现在要确认您的身份!票务人员请按 1 ,旅客请按 0 ===========");
scanf("%d",&a);
if(a==1)
do{
printf("\n\t\t^o^o^o^o^o^o^o^o^ 1.输入航班信息 ^o^o^o^o^o^o^o^o^\n");
printf("\t\t^o^o^o^o^o^o^o^o^ 2.删除航班信息 ^o^o^o^o^o^o^o^o^\n");
printf("\t\t^o^o^o^o^o^o^o^o^ 3.浏览航班信息 ^o^o^o^o^o^o^o^o^\n");
printf("\t\t^o^o^o^o^o^o^o^o^ 0.退出 ^o^o^o^o^o^o^o^o^\n\n");
printf("请在0~3之间选择您要进行的操作 ");
scanf("%d",&i);
if(i>=0&&i<=3)
switch(i)
{
case 0: break;
case 1:input(); break;
case 2: del(); break;
case 3:scan(); break;
}
else
{
printf("\n输入错误!!\n\n\n");
continue;
}
printf("\n\n **************************以高度负责的态度做好春运工作**************************\n\n");
} while(i!=0);
if(a==0)
do{
printf("\n\t\t<><><><><><><><><><> 1.订票 <><><><><><><><><><>\n");
printf("\t\t<><><><><><><><><><> 2.改签 <><><><><><><><><><>\n");
printf("\t\t<><><><><><><><><><> 3.退票 <><><><><><><><><><>\n");
printf("\t\t<><><><><><><><><><> 4.浏览航班信息 <><><><><><>\n");
printf("\t\t<><><><><><><><><><> 5.查询 <><><><><><><><><><>\n");
printf("\t\t<><><><><><><><><><> 0.退出 <><><><><><><><><><>\n\n");
printf("请在0~5之间选择您要进行的操作");
scanf("%d\n\n",&j);
if(j>=0&&j<=5)
switch(j)
{
case 0: break;
case 1:book(); break;
case 2:change(); break;
case 3:quit(); break;
case 4:scan(); break;
}
else
{
printf("\n输入错误!!\n\n\n");
continue;
}
printf("\n\n *******************春节即将到来,提前祝您春节快乐,出行平安********************\n\n");
} while(j!=0);
}
void input() // 输入航班
{
char sysm[]="jim007";
char youm[20];
int i,m;
printf("请输入密码: ");
scanf("%s",youm);
if(strcmp(sysm,youm)!=0)
{
printf("输入密码错误!请确认您是否是票务人员,如不是,请按任意键返回菜单重新选择" );
getchar();
getchar();
home();
}
else
{
system("cls");
printf("请问要输入几个航班信息: ");
scanf("%d",&m);
printf("\n\n******************************************************************\n\n");
for(i=0;i
{
printf("请输入航班号:\n");
scanf("%d",&plane[i].num);
printf("请输入起飞地点:\n");
scanf("%s",plane[i].begin);
printf("请输入降落地点:\n");
scanf("%s",plane[i].end);
printf("请输入起飞时间:\n");
scanf("%s",plane[i].time);
printf("请输入票价:\n");
scanf("%lf",&plane[i].fee);
printf("请输入机票数:\n");
scanf("%d",&plane[i].count);
}
getchar();
home();
}
}
void del() //删除模块
{
char be[20];
char en[20];
char sysm[]="jim007";
char youm[20];
int i,w,p,q,k=0;
printf("请输入密码: ");
scanf("%s",youm) ;
if(strcmp(sysm,youm)!=0)
{
printf("输入密码错误!请确认您是否是票务人员,如不是,请按任意键返回菜单重新选择" );
getchar();
getchar();
home();
}
else
printf("1.按航班号删除 \n");
printf("2.按航线删除 \n");
printf("请在1-2中选择删除方式: ");
scanf("%d",&q);
switch(q)
{
case 1:
printf("请输入航班号: ");
scanf("%d",&p);
break;
case 2:
printf("请输入起飞地点: ");
scanf("%s",be);
printf("请输入降落地点: ");
scanf("%s",en);
break;
}
printf("\n\n航班号\t起飞地点\t降落地点\t起飞时间\t票价\t机票数 \n\n");
for(i=0;i
{
if(q==1&&plane[i].num==p)
{
k++;
printf("\n\n%d\t%s\t%s\t%s\t%lf\t%d\n",plane[i].num,plane[i].begin,plane[i].end,plane[i].time,plane[i].fee,plane[i].count);
}
if(q==2&&strcmp(plane[i].begin,be)==0&&strcmp(plane[i].end,en)==0)
{
k++;
printf("\n\n%d\t%s\t%s\t%s\t%lf\t%d\n",plane[i].num,plane[i].begin,plane[i].end,plane[i].time,plane[i].fee,plane[i].count);
}
}
if(k=0)
printf("没有找到此航班,无法删除!");
else
printf("确定删除请按 1 否则请按 0:\n\n");
scanf("%d",&w);
if(w==1)
for(i=0;i
{
plane[i].num=0;
strcpy(plane[i].begin,"0");
strcpy(plane[i].end,"0");
strcpy(plane[i].time,"0");
plane[i].fee=0;
plane[i].count=0;
}
getchar();
getchar();
home();
}
void scan() //浏览
{
int i;
if(m==0)
printf("\n\n无航班信息\n\n");
else
{
printf("\n\n航班号\t起飞地点\t降落地点\t起飞时间\t票价\t机票数 \n\n");
for(i=0;i
printf("\n\n%d\t%s\t%s\t%s\t%lf\t%d\n",plane[i].num,plane[i].begin,plane[i].end,plane[i].time,plane[i].fee,plane[i].count);
}
getchar();
home();
}
void book() //订票模块
{
int i,a;
struct airplane d;
system( "cls" );
do
{
sou();
printf("请输入您要订的航班号: ");
scanf("%d",&d.num);
printf("请输入您要订的机票数: ");
scanf("%d",&d.count);
for(i=0;i
if(result[i].num==d.num)
{
if(result[i].count!=0&&result[i].count>= d.count)
{
result[i].count=result[i].count- d.count;
printf("恭喜您订票成功!祝您旅途愉快!\n");
break;
}
if(result[i].count
{
printf("此航班只剩下%d张票,订票失败",result [i].count);
break;
}
}
printf("\n\n继续订票请按 1 ,退出请按 0 ");
scanf("%d",&a);
}while(a==1);
void change() //改签模块
{
int i,num1,num2;
system( "cls" );
do
{
sou();
printf("请输入您改签前的航班号: ");
scanf("%d",&num1);
printf("请输入您改签后的航班号: ");
scanf("%d",&num2);
for(i=0;i
if(result[i].num==num1)
result[i].count=result[i].count+1;
for(i=0;i
if(result[i].num==num2)
result[i].count=result[i].count-1;
printf("恭喜您改签成功! 祝您旅途愉快!\n");
break;
printf("\n\n继续改签请按 1 ,退出请按 0 ");
scanf("%d",&a);
}while(a==1);
}
void quit() //退票模块
{
int i,a;
struct airplane f;
system( "cls" );
do
{
sou();
printf("请输入您要退订的航班号: ");
scanf("%d",&f.num);
printf("请输入您要退订的机票数: ");
scanf("%d",&f.count);
if(d.count<0)
{
printf("您输入的票数有误,请重新输入\n");
break;
}
for(i=0;i
if(result[i].num==f.num)
{
result[i].count=result[i].count+ f.count;
printf("恭喜您退票成功! \n");
break;
}
else
printf("抱歉,您输入的航班号有误!");
printf("\n\n继续订票请按 1 ,退出请按 0 ");
scanf("%d",&a);
}while(a==1);
}
void sou() //查询模块
{
int i,c,d,e,t,j=0;
struct airplane a;
struct airplane result[20];
system( "cls" );
printf("\n\n请输入起飞时间:");
scanf("%s",a.time);
printf("\n\n请输入起飞地点:");
scanf("%s",a.begin);
printf("\n\n请输入降落地点:");
scanf("%s",a.end);
printf("请选择排序方式( 1:按航班号升序;2:按票价升序)")
scanf("%d",&c);
printf("\n\n航班号\t起飞地点\t降落地点\t起飞时间\t票价\t机票数 \n\n");
for(i=0;i
{
if(plane[i].time==a.time&&strcmp(plane[i].begin,a.begin)==0&&strcmp(plane[i].end,a.end)==0)
result[j]=plane[i]
j++;
}
if(j==0)
printf("抱歉,暂时没有该条件的航班!");
if(j>0&&c==1)
{
for(d=0;d
for(e=d+1;e
if(result[e].num
{
t= result[e];
result[e]= result[e-1];
result[e-1]=t;
}
}
if(j>0&&c==0)
{
for(d=0;d
for(e=d+1;e
if(result[e].fee
{
t= result[e];
result[e]= result[e-1];
result[e-1]=t;
}
}
for(i=0;i
printf("\n\n%d\t%s\t%s\t%s\t%lf\t%d\n", result[i].num, result[i].begin, result [i].end, result[i].time, result[i].fee, result[i].count);
}
void save() //保存模块
{
FILE *fp;
int i,w=1;
system( "cls" );
if((fp=fopen("C:\\Users\\Administrator\\Desktop\\plane.txt","w"))==NULL)
{
printf("打开文件错误\n");
exit(0);
}
for(i=0;i
if(fwrite(fp,sizeof(struct airplane),1, &plane[i])==0)
{
printf("文件保存错误!\n");
exit(0);
w=0;
}
if(w==1)
printf("文件保存成功!\n");
fclose(fp);
getchar();
getchar();
home();
}
void read() //读取模块
{
int i;
FILE *fp;
if(fp=fopen("C:\\Users\\Administrator\\Desktop\\plane.txt","r")==NULL)
{
printf("文件打开失败\n");
exit(0);
}
else
{
while(!feof(fp))
for(i=0;i
fread(plane[i],sizeof(struct airplane),1,fp)
}
getchar();
getchar();
home();
}