#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#define maxsize 8
typedef struct guke
{
char name[20];//客户信息
int tempnumber;//订票量
struct guke *next;
}linklist;
typedef struct airline
{
char zanname[20];//终点站名
char hangnum[20];//航班号
char planenum[20];//飞机号
char day[7];//飞行日期
int allnum;//乘员定额
int restnum;//余票数量
linklist *order;//乘员名单域
}airmation;
void display(airmation *air)//打印
{
printf("%8s\t%3s\t%6s\t%6s\t%7d\t%8d\n",air->zanname,air->hangnum,air->planenum,air->day,air->allnum,air->restnum);
}
void list(airmation *air)//打印全部航线信息
{
int i=0;
printf(" 终点站 航班号 飞机号 飞行日期 乘员定额余票额数\n");
while(i<maxsize)
{
display(air);
air++;
i++;
}
printf("\n\n");
}
void search(airmation *air)//根据客户提供的终点站名输出航线信息
{
struct airline *find();
char name[20];
int i=0;
printf("请输入终点站名:");
scanf("%s",name);
while(i<maxsize)
{
if(!strcmp(name,air->zanname)) break;
air++;
i++;
}
if(i>=maxsize)
printf("对不起没有航班");
else
{
printf(" 终点站 航班号 飞机号 飞行日期 乘员定额余票额数\n");
display(air);
}
}
struct airline *find(airmation *air)//根据系统提供的航班号查询
{
char number[10];
int i=0;
printf("请输入航班班次:");
scanf("%s",number);
while(i<maxsize)
{
if(!strcmp(number,air->hangnum)) return air;
air++;
i++;
}
printf("对不起没有航班");
return NULL;
}
void prtlink(airmation *air)//打印订票乘员名单域的客户名单信息
{
linklist *p;
air=find(air);
p=air->order;
if(p!=NULL)
{
printf("客户名字 机票数\n");
while(p)
{
printf("%s\t\t%d\n",p->name,p->tempnumber);
p=p->next;
}
}
else printf("航班没有乘客信息");
}
linklist *insertlink(linklist *head,int amount,char name[])//增加订票乘员名单域的客户信息
{
linklist *ne;
ne=(linklist*)malloc(sizeof(linklist));
strcpy(ne->name,name);
ne->tempnumber=amount;
ne->next=NULL;
if(head==NULL)
{
head=ne;
}
else
{
ne->next=head;
head=ne;
}
return head;
}
void order(airmation *air)//办理订票业务
{
int amount;
char name[20];
if(!(air=find(air))) return;
printf("请您输入想要订的票量:");
scanf("%d",&amount);
if(air->restnum!=0)
{int i;
printf("请输入您的名字:");
scanf("%s",name);
printf("请订票,请付款...\n");
air->order=insertlink(air->order,amount,name);
printf("%s的座位号是:%d\n",name,40-air->restnum);
air->restnum--;
printf("\n 祝您旅途愉快!\n");
}
else
{
printf("对不起,票已售完!\n");
}
}
void return_tkt(airmation *air)//办理退票业务
{
linklist *p1,*p2,*head;
char cusname[20];
if(!(air=find(air))) return;
head=air->order;
p1=head;
printf("输入您的名字:");
scanf("%s",cusname);
while(p1!=NULL)
{
if(!strcmp(cusname,p1->name))
break;
p2=p1;
p1=p1->next;
}
if(p1==NULL)
{
printf("对不起,您没有订票!\n");
return;
}
else
{
if(p1==head)
head=p1->next;
else
p2->next=p1->next;
air->restnum+=p1->tempnumber;
printf("%s 退票成功!\n",p1->name);
free(p1);
}
}
int menu_select()//菜单界面
{
int c;
char s[20];
printf("*******************************************************************************\n");
printf("** 欢迎进入武汉航空旅客服务系统 **\n");
printf("** 1.显示航班信息 **\n");
printf("** 2.打印订票乘客信息 **\n");
printf("** 3.航班查询业务 **\n");
printf("** 4.航班订票业务 **\n");
printf("** 5.航班退票业务 **\n");
printf("** 6.退出系统 **\n");
printf("*********************************************************************************");
printf("*********************************************************************************");
do{
printf(" 请选择您需要的业务:");
scanf("%s",s);
c=atoi(s);
}
while(c<0||c>7);
return c;
}
int main()
{
printf("******************************************************************************\n");
printf("** 制作信息简介 **\n");
printf("** 学院:计算机与信息工程学院 **\n");
printf("** 专业:计算机科学与技术 **\n");
printf("** 班级:计科2班 **\n");
printf("** 姓名:XXX **\n");
printf("** 学号:1604845028 **\n");
printf("** 指导老师:XXX **\n");
printf("******************************************************************************\n");
printf("******************************************************************************\n");
printf("请按任何键以继续……");
getchar();
struct airline air[maxsize]=
{ {"beijing","1","B8571","SUN",600,40},
{"tianjing","2","S4652","MON",1500,40},
{"nanjing","3","H8600","TUS",800,40},
{"shanghai","4","T5201","WES",600,40},
{"hongkong","5","B1314","FRI",750,40},
{"jing","6","K2930","SUN",680,40},
{"Londou","7","B8478","SAT",920,40},
{"Englang","8","T4782","FIR",2500,40}};
system("cls");
for(;;)
{
switch(menu_select())
{
case 1:system("cls");list(air);break;
case 2:system("cls");prtlink(air);break;
case 3:system("cls");search(air);break;
case 4:system("cls");order(air);break;
case 5:system("cls");return_tkt(air);break;
case 6:printf("\n欢迎再次进入系统,再见!\n");
exit(0);
}
}
printf("\n 请按任意键继续!\n");
getch();
return(0);
}
07-24
05-08
4153