📄 订票系统.cpp
字号:
if(p->air_num==tail->air_num)
{
p->left=p->left+x;
}
p=p->next;
}
if(x<tail->ticket_num)
tail->ticket_num=tail->ticket_num-x;
if(x==tail->ticket_num)
q->next=tail->next;
printf("\n你已经成功完成退票!\n");
}
n=0;
}
}
tail=tail->next;
q=q->next;
}
free(tail);
}
void search_num()//按航班号查找
{
int air_num;
airticket *tail;
tail=head->next;
printf("\n请输入所要查找航班号:\n");
scanf("%d",&air_num);
if(!head)
{
printf("\n信息为空!\n");
return;
}
while(tail!=NULL)
{
if(tail->air_num!=air_num&&tail->next==NULL)
{
printf("\n没有您要的信息!\n");
return;
}
if(tail->air_num==air_num)
{
printf("\n您要的信息已经找到!!!\n\n");
printf("\n航班号是:%d\n",tail->air_num);
printf("\n起飞日期是:%s\n",tail->day);
printf("\n起飞时间是:%s\n",tail->time);
printf("\n总票数是:%d\n",tail->count);
printf("\n余票数是:%d\n",tail->left);
printf("\n起点站是:%s\n",tail->start);
printf("\n终点站是:%s\n",tail->ends);
return;
}
tail=tail->next;
}
}
void search_day()//按航班日期查找
{
char day[50];int m;
airticket *tail;
tail=head->next;
printf("\n请输入您要查找的航班的起飞日期:\n");
scanf("%s",day);
if(!head)
{
printf("\n信息为空!\n");
return;
}
while(tail!=NULL)
{
if(strcmp(tail->day,day)!=0&&tail->next==NULL)
printf("\n没有您要的信息!\n");
if(strcmp(tail->day,day)==0)
{
printf("\n您要的资料已经找到!!!\n");
printf("\n航班号是:%d\n",tail->air_num);
printf("\n起飞日期是:%s\n",tail->day);
printf("\n起飞时间是:%s\n",tail->time);
printf("\n总票数是:%d\n",tail->count);
printf("\n余票数是:%d\n",tail->left);
printf("\n起点站是:%s\n",tail->start);
printf("\n终点站是:%s\n",tail->ends);
}
tail=tail->next;
}
for(m=100;m!=0;)
{
printf("\n是否继续?是(按1),否(按0):\n");
scanf("%d",&m);
switch(m)
{
case 1:
search_day();break;
case 0:
break;
default:
printf("\n按键错误!请重新按键!\n");
}
}
}
void search_place()//按航班起飞抵达地点查找
{
char start[50];
char ends[50];
int m;
airticket *tail;
tail=head->next;
printf("\n请输入您要查找的航班的起飞地点:\n");
scanf("%s",start);
printf("\n请输入您要查找的航班的抵达地点:\n");
scanf("%s",ends);
if(!head)
{
printf("\n信息为空!\n");
return;
}
while(tail!=NULL)
{
if((strcmp(tail->start,start)!=0||strcmp(tail->ends,ends)!=0)&&tail->next==NULL)
printf("\n没有您要的信息!\n");
if(strcmp(tail->start,start)==0&&strcmp(tail->ends,ends)==0)
{
printf("\n您要的资料已经找到!!!\n\n");
printf("\n航班号是:%d\n",tail->air_num);
printf("\n起飞日期是:%s\n",tail->day);
printf("\n起飞时间是:%s\n",tail->time);
printf("\n总票数是:%d\n",tail->count);
printf("\n余票数是:%d\n",tail->left);
printf("\n起点站是:%s\n",tail->start);
printf("\n终点站是:%s\n",tail->ends);
}
tail=tail->next;
}
for(m=100;m!=0;)
{
printf("\n是否继续?是(按1),否(按0):\n");
scanf("%d",&m);
switch(m)
{
case 1:
search_place();break;
case 0:
break;
default:printf("\n按键错误!请重新按键!\n");
}
}
}
void browseticket() //查询航线菜单
{
int i;
for(i=100;i!=0;)
{
printf("\n请选择按键 \n");
printf("\n按航班号查询请按 1, 按日期查询请按 2, 按起飞抵达地点查询请按 3, 返回请按 0.\n");
scanf("%d",&i);
switch(i)
{
case 1:
search_num();break;
case 2:
search_day();break;
case 3:
search_place();break;
case 0:
break;
default:printf("\n按键错误!请重新按键!\n");
}
}
}
void xiugai(airticket *head)//修改航班信息
{
int air_num;
int air_num1;
int count;
int m,n;
airticket *p;
customer *q;
q=head1->next;
p=head->next;
printf("\n请输入所要修改的航班的航班号:\n");
scanf("%d",&air_num);
while(p!=NULL)
{
if(p->air_num!=air_num&&p->next==NULL)
printf("\n没有您要的信息 !\n");
if(p->air_num==air_num)
{
printf("\n你要修改的航班已经找到!\n");
printf("\n*********************************************************************\n");
printf("航班号 起飞日期 起飞时间 起飞地点 抵达地点 总票数 余票数\n");
printf("\n%-6d %-10s %-9s %-10s %-10s %-8d %-6d\n",p->air_num,p->day,p->time,p->start,p->ends,p->count,p->left);
printf("\n请输入新的航班号:\n");
scanf("%d",&air_num1);
while(q!=NULL)
{
if(q->air_num==p->air_num)
{
printf("\n您要修改的航班已有客户订票!是否连同客户信息的航班号一起修改?\n");
printf("\n是请按任意键,否请按0.\n");
scanf("%d",&n);
if(n!=0)
{
q->air_num=air_num1;
p->air_num=air_num1;
}
p->air_num=air_num1;
}
if(q->air_num!=p->air_num&&q->next==NULL)
p->air_num=air_num1;
q=q->next;
}
printf("\n请输入新的起飞日期:\n");
scanf("%s",p->day);
printf("\n请输入新的起飞时间:\n");
scanf("%s",p->time);
printf("\n请输入新的起飞地点:\n");
scanf("%s",p->start);
printf("\n请输入新的抵达地点:\n");
scanf("%s",p->ends);
printf("\n请输入新的总票数:\n");
scanf("%d",&count);
if((count-(p->count-p->left))<0)
{
printf("\n您输入的总票数小于已被乘客订的座位数,请您从新输入总票数以保证它大于已订票数:\n");
scanf("%d",&count);
}
p->left=count-p->count+p->left;
p->count=count;
printf("\n该航班修改以后为:\n");
printf("\n*********************************************************************\n");
printf("\n航班号 起飞日期 起飞时间 起飞地点 抵达地点 总票数 余票数\n");
printf("\n%-6d %-10s %-9s %-10s %-10s %-8d %-6d\n",p->air_num,p->day,p->time,p->start,p->ends,p->count,p->left);
}
p=p->next;
}
for(m=100;m!=0;)
{
printf("\n是否继续?是(按1),否(按0):\n");
scanf("%d",&m);
switch(m)
{
case 1:
xiugai(head);break;
case 0:
break;
default:
printf("\n按键错误!请重新选择!\n");
}
}
}
void main() //主函数
{
int code;
head=Create(head);
head1=Create_cus(head1);
printf("\n按<ENTER>进入菜单:\n");
scanf("%*2c");
while(1)
{
code=menu();
switch(code)
{
case 0:
exit(0);
case 1:
int a;
show(head);
dingpiao(head);
for(a=100;a!=0;)
{
printf("\n是否继续订票?按1,继续,按0.退出\n");
scanf("%d",&a);
switch(a)
{
case 1:
dingpiao(head);break;
case 0:
break;
default:printf("\n按键错误!请重新按键!\n");
}
}
printf("\n按<ENTER>进入菜单:\n");
scanf("%*2c");break;
case 2:
tuipiao(head);
printf("\n按<ENTER>进入菜单:\n");
scanf("%*2c");break;
case 3:
head=Del_airticket(head);
printf("\n按<ENTER>进入菜单:\n");
scanf("%*2c");break;
case 4:
int k;
Add_airticket(head);
for(k=100;k!=0;)
{
printf("\n是否继续?是请按1,否请按0\n");
scanf("%d",&k);
switch(k)
{
case 1:
Add_airticket(head);break;
case 0:
break;
default:printf("\n按键错误!请重新按键!\n");
}
}
printf("\n按<ENTER>进入菜单:\n");
scanf("%*2c");break;
case 5:
browseticket();
printf("\n按<ENTER>进入菜单:\n");
scanf("%*2c");break;
case 6:
xiugai(head);
printf("\n按<ENTER>进入菜单:\n");
scanf("%*2c");break;
case 7:
show(head);
printf("\n按<ENTER>进入菜单:\n");
scanf("%*2c");break;
case 8:
show_cus(head1);
printf("\n按<ENTER>进入菜单:\n");
scanf("%*2c");break;
default:
printf("\n按键错误!请重新按键!\n");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -