定义一个航班类,有航班号,航班时间,座位预订信息等。座位预订信息是个二维数组,记录飞机所有座位的预订情况,已预订则为1,未预订则为0 可以用黑框和白框表示座位是否预订的符号,按二维矩阵方式显示所有座位预订情况 用户输入4E,可以表示选定第四排第E列座位,把该位置预订信息改为1即可
代码如下:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
//显示信息
void show(int a[][7],int n)
{
int i,j;
char ch;
char buf[12]={0};
for (i=0;i<n;i++)
{
ch = 'A'+i;
sprintf_s(buf,12,"%c%d-%d:",ch,i*7+1,i*7+7);
printf("%-10s",buf);
for (j=0;j<7;j++)
{
if(j==1 || j== 4)
printf("%d ",a[i][j]);
else if(j==6)
printf("%d\n",a[i][j]);
else
printf("%d ",a[i][j]);
}
}
}
//查询空位
void Find(int a[][7],int n)
{
int i,j;
char ch;
system("cls");
printf("空位信息:\n");
for (i=0;i<n;i++)
{
ch = 'A'+ i;
for (j=0;j<7;j++)
{
if(a[i][j] == 0)
{
printf("%c%d ",ch,i*7+j+1);
}
}
printf("\n");
}
system("pause");
}
//预定座位
void Select(int a[][7],int n,char buf[],int size)
{
int i,j;
int opt;
char ch;
char tmp[12]={0};
int bgo = 1;
system("cls");
show(a,n);
while(bgo)
{
printf("1.机选座位\n");
printf("2.自选座位\n");
scanf("%d",&opt);
if (opt == 1) //机选
{
for (i=0;i<n;i++)
{
ch = 'A'+ i;
for (j=0;j<7;j++)
{
if (a[i][j] == 0)
{
memset(buf,0,size);
sprintf_s(buf,size,"%c%d",ch,i*7+j+1);
printf("预定成功,座位号:%s\n",buf);
bgo = 0;
break;
}
}
}//for end
}else
{
//自选
while(1)
{
printf("请输入座位号(如A20):");
memset(tmp,0,12);
gets(tmp);
memset(buf,0,size);
strcpy(buf,tmp);
i = tmp[0] - 'A';
tmp[0] = ' ';
j = (atoi(tmp) -1)%7;
if(a[i][j] == 0)
{
bgo = 0;
printf("预订成功,座位号:%s\n",buf);
break;
}
else
printf("座位已占用,请重新选座,");
}
}
}
system("pause");
}
//打印机票
void Print(char* hb,char* hbsj,char* zw)
{
system("cls");
printf("%s %s %s\n",hb,hbsj,zw);
system("pause");
}
int main()
{
int a[20][7]={0}; //20排座位,每排7个座位,左边2个,中间3个,右边2个
char hangban[20]={0};
int opt = 0;
int bgo = 1;
printf("请输入航班号:");
scanf("%s",hangban);
char buf[12]={0}; //保存座位字符串
char* hbsj= "2021-2-2 12:00"; //航班时间,写死了
while(bgo)
{
system("cls");
printf("------------机票座位预定系统--------------\n");
printf("| 1.查询空位 |\n");
printf("| 2.预定空位 |\n");
printf("| 3.打印机票 |\n");
printf("| 4.显示座位信息 |\n");
printf("| 0.退出系统 |\n");
printf("------------------------------------------\n");
scanf("%d",&opt);
switch(opt)
{
case 0:
bgo = 0;
break;
case 1:
Find(a,20);
break;
case 2:
Select(a,20,buf,12);
break;;
case 3:
Print(hangban,hbsj,buf);
break;
case 4:
show(a,20);
system("pause");
break;
}
}
return 0;
}