[C] 纯文本查看 复制代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define M 5//飞机数宏定义
#define N 12//座位数宏定义
struct zuoci
{
int haoma;//座次数
int biaoji;// 座位订出的标记
char xingming[20];//订座者姓名
char zhengjian[30];//订座者的身份证号码
}zuowei[N];
struct plane
{
int no;//航班号
char qidian[30];//起飞地
char zhongdian[30];//目的地
char time[30];//起飞时间
int left;// 余票
struct zuoci zuowei[N];//座位订出信息
}plane[M];//M 个航班容量
int num=0,i,j,t;// 定义外部变量(全局变量)
void shuru() //输入航班的功能
{
char c;
printf(" 请输入您要增加的航班信息 :\n");
printf(" 请输入航班号 :\n");
scanf("%d",&plane[num].no);
printf(" 请输入起飞地 \n");
scanf("%s",plane[num].qidian);
printf(" 请输入目的地 \n");
scanf("%s",plane[num].zhongdian); printf(" 请输入起飞时间 (例:20190226)\n");
scanf("%s",plane[num].time);
printf(" 请输入航班余量 \n");
scanf("%d",&plane[num].left);
for(i=0;i<plane[num].left;i++)// 订出标记
{
plane[num].zuowei[i].biaoji=0;
}
num++;
getchar();//继续
}
void shuchu() //输出航班信息的功能
{
printf(" 目前航班 :\n");
printf(" 航班号 \t 起飞地 \t 目的地 \t 起飞时间 \t 票数\t\n");
for(i=0;i<num;i++)
printf("%d\t\t%s\t\t%s\t\t%s\t\t%d\t\n",plane[i].no,plane[i].qidian,
plane[i].zhongdian,plane[i].time,plane[i].left);
getchar();//继续
}
//查找航班信息-一级子函数
int chazhao()
{
int chazhao1(int x);
int i, j, no;
char a[20], b[20];
printf("您已选只有择3.查找航班信息。\n");
for (;;)//for循环使程序只有一个出口,即输入0返回上一菜单
{
no= 1;
printf("请选择查找航班信息方式(0返回菜单) : \n1.按线路查找\n2.按目的地查找\n");
scanf("%d", &i);
getchar();
if(i==0)
return 0;
else if(i==1)
{
for ( ; ;)
{
if (no==0)
break;
printf("您已选择1.按线路查找。\n");
printf("请输入查询线路的起点和目的地: \n");
printf("请输入起点: \n");
scanf("%s",a);
getchar();
printf("请输入目的地: \n");
scanf("%s", b);
getchar();
for(j= 0;j< M;j++)
if ((strcmp(a, plane[j].qidian)==(strcmp(b, plane[j].zhongdian)))==0)
{
chazhao1(j);
break;
}
else
{
if(j= M- 1)
{
printf("查找失败,请核对线路后按任意数字继续查找或按0用其他方式查找! \n");
scanf("%d", &no);
getchar();
if (no == 0)
break;
}
}
}
}
else if(i==2)
{
for (; ;)
{
if (no==0)
break;
printf("您已选择2.按目的地查找。\n");
printf("请输入目的地: \n");
scanf("%s", a);
getchar();
for(j=0;j < M;j++)
{
if (strcmp(a, plane[j].zhongdian)==0)
{
chazhao1(j);
break;
}
else
{
if(j==M- 1)
{
printf("查找失败,请核对目的地后按任意数字继续查找或按0用其他方式查找! \n");
scanf("%d", &no);
getchar();
if (no==0)
break;
}
}
}
}
}
else
{
printf("输入错误,请重新输入! \n");
system("pause");//等待用户按一个建,然后返回
}
}
return 0;
}
int chazhao1( int x)//查找航班信息二级子函数
{
int chazhao11( int x);
int chazhao12( int x);
int chazhao13( int x);
int chazhao14( int x);
int i;
printf("成功匹配到%d航班。\n", plane[x].no);
for (; ;)
{
printf("请选择查询选项(0返回菜单) : \n1.显示空座的数量\n2.显示空座的信息\n3.显示已订座的信息\n4.显示起飞时间\n");
scanf("%d", &i);
getchar();
switch (i)
{
case 0:return 0;
case 1:chazhao11(x); break;
case 2:chazhao12(x); break;
case 3:chazhao13(x);break;
case 4:chazhao14(x);break;
default:printf("错误,重新输入.\n");
}
}
}
int chazhao11(int x)
{
int i, k=0;
for(i= 0;i<N;i++)
if (plane[x].zuowei[i].biaoji =='N')
k+=1;
printf("%d 航班剩余%d个空座\n",plane[x].no, k);
system("pause");
return 0;
}
int chazhao12(int x)
{
int i;
printf("%d剩余空座有:\n", plane[x].no);
for(i= 0;i<N;i++)
if (plane[x].zuowei[i].biaoji=='N')
printf("%d号座%c", plane[x].zuowei[i].haoma,(i+ 1)%5==0 ?'\n':'t');
system("pause");
return 0;
}
int chazhao13(int x)
{
int i;
printf("航班号: %d\n起飞时间:%s\n,目的地:%s\n\n", plane[x].no, plane[x].time, plane[x].qidian, plane[x].zhongdian);
for(i= 0;i<N;i++)
if (plane[x].zuowei[i].biaoji != 'N')
printf("姓名:%s\n座号:%d\n身份证号:%s\n\n", plane[x].zuowei[i].xingming,plane[x].zuowei[i].haoma, plane[x].zuowei[i].zhengjian);
system("pause");
return 0;
}
int chazhao14(int x)
{
printf("航班号: %d\n起飞时间: %s\n", plane[x].no, plane[x].time);
system("pause");
return 0;
}
void dingpiao() //订票的功能
{
int n;
printf(" 请输入订票的航班号: \n");
scanf("%d",&n);
for(i=0;i<num;i++)
if(plane[i].no==n)
break;
printf(" 余票: %d\n",plane[i].left);
for(j=0;plane[i].zuowei[j].biaoji==1;j++);
printf(" 请输入姓名拼音: ");
scanf("%s",plane[i].zuowei[j].xingming);
printf(" 请输入身份证号码: ");
scanf("%s",plane[i].zuowei[j].zhengjian);
printf(" 分配给座位是 :%d 号\n",j+1);
plane[i].zuowei[j].biaoji=1;
plane[i].left--;
getchar();//继续
}
void cancel() //删除订票的功能
{
int n,m;
char judge;
printf(" 请输入删除的订票航班号: ");
scanf("%d",&n);
for(i=0;i<num;i++)
if(plane[i].no==n) break;
printf(" 请输入删除的座位号: ");
scanf("%d",&m);
plane[i].zuowei[m-1].biaoji=0;
plane[i].left++;
getchar();//继续
}
void main()//主函数
{
int menu;
do
{
menu=0;
printf(" ——欢迎使用飞机订票系统 ——\n");
printf("[ 请选择需要的功能 ]\n");
printf("|| 1、输入航班信息 ||\n");
printf("|| 2、输出航班信息 ||\n");
printf("|| 3、查找航班信息 ||\n");
printf("|| 4、订 票 预 约 ||\n");
printf("|| 5、删除订票预约 ||\n");
printf("|| 6、退 出 系 统 ||\n");
printf(">>>>>>>>>>>>>><<<<<<<<<<<<<\n");
printf(" 输入选择功能序号 : ");
scanf("%d",&menu);
switch(menu)
{
case 1: shuru();break;
case 2: shuchu();break;
case 3: chazhao();break;
case 4: dingpiao();break;
case 5: cancel();break;
case 6: break;
} //如果没有符合的序号,则不执行,流转下一条
getchar();//子函数配合输入继续
} //循环体位置
while(menu!=6); //判断条件
}