C语言-飞机航班订票系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>


static int airnum=0;//静态变量,自动统计航班数
static int customer_num=0;//静态变量,自动统计客户数


/*航班信息*/
/*typedef */struct airplane{
   char airno[30];//航班号
   char qidianzhan[50];//起点站
   char departure_time[50];//起飞时间
   char landing_time[50];//降落时间
   char zhongdianzhan[50];//终点站
   int seat;//座位数
   int standby_ticket;//余票
   struct airplane *next1;
}/*airplane,*Linklist1*/;


/*客户信息*/
typedef struct customer{
   char name[20];//姓名
   char passport_no[20];//证件号
   int  booking_ticket;//订票数
   int  booking_airnum;//订票编号
   char airno[30];//航班号
   char departure_time[50];//到达时间
   char landing_time[50];//起飞时间
   char zhongdianzhan[50];//终点站
   struct customer *next2;
 //  struct customer *prior;
}customer,*Linklist2;


//打印航班信息
void print(struct airplane *pl)
{
struct airplane *t;
t=pl->next1;
printf("航班号\t起点站\t终点站\t起飞时间\t到达时间\t座位数\t余票\n");
while(t!=NULL)
{
printf("%-6s\t%-6s\t%-6s\t%-8s\t",t->airno,t->qidianzhan,t->zhongdianzhan,t->departure_time);
printf("%-8s\t%-6d\t%-4d\n",t->landing_time,t->seat,t->standby_ticket);
t=t->next1;
}
}


//添加航班
void insert_airplane(struct airplane *pl)
{
struct airplane *insert_node,*q,*t;
int i,j,k=0;
//printf("121324");
pl=pl->next1;
printf("请输入所要添加的航班数目:");
scanf("%d",&j);
getchar();
for(i=0;i<j;i++)
{
insert_node=(struct airplane *)malloc(sizeof(struct airplane));
if(insert_node==NULL)
{
printf("动态内存分配失败");
exit(0);
}
printf("请输入第%d个航班的信息\n",++k);
printf("航班号\n");
gets(insert_node->airno);
printf("起点站\n");
gets(insert_node->qidianzhan);
printf("终点站\n");
gets(insert_node->zhongdianzhan);
printf("起飞时间,格式如:20110101 00:00\n");
gets(insert_node->departure_time);
printf("到达时间,格式如:20110101 00:00\n");
gets(insert_node->landing_time);
printf("座位数\n");
scanf("%d",&insert_node->seat);
printf("余票数\n");
scanf("%d",&insert_node->standby_ticket);
getchar();
if(pl->next1==NULL)
{//如果链表是空的话,直接插入头结点之后
pl->next1=insert_node;
insert_node->next1=NULL;
}
else
{//如果链表不是空的
q=pl->next1;//此时q指向第一个数据结点
if(strcmp(insert_node->airno,q->airno)<0)
{//如果成立,则将insert_node指向的结点插入头结点之后
pl->next1=insert_node;
insert_node->next1=q;
}
else
{//否则,继续向后寻找插入的位置
while(strcmp(insert_node->airno,q->airno)>0&&(q->next1!=NULL))
{//如果insert_node指向的航班号大于q所指向的航班号并且q指向的不是表尾
//则t指向q所指的当前结点,q指向下一个结点
t=q;
q=q->next1;
}
if(strcmp(insert_node->airno,q->airno)<=0)
{//如果成立,则将insert_node所指向的结点插入到链表中间
t->next1=insert_node;
insert_node->next1=q;
}
else
{//否则,则将insert_node指向的结点插入到q指向的表尾之后
q->next1=insert_node;
insert_node->next1=NULL;
}
}
}
airnum++;
}
printf("已成功插入航班\n");
}


//修改信息
void change_airplane(struct airplane *pl/*,Linklist2 kehu*/)
{
int /*change,i,*/j,flag=0;
char /*passport_1[20],*/air_num[30];//证件号和航班号
// kehu=kehu->next2;
pl=pl->next1;
/* printf("\t\t欢迎使用修改系统\n");
printf("\t**************************\n");
printf("\t==>1.修改客户订票信息\n");
printf("\t==>2.修改航班信息\n");
printf("\t**************************\n");
printf("请选择:");
scanf("%d",&change);
getchar();
if(change==1)
{
printf("请输入客户证件号:");
gets(passport_1);
for(i=0;i<customer_num;i++)
{
if(strcmp(passport_1,kehu->passport_no)=&
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值