为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 订机票

订机票

2018-04-02 13页 doc 32KB 15阅读

用户头像

is_003124

暂无简介

举报
订机票订机票 #include #include #include #include #include #define MAXSIZE 5//定义航班数最多为5 typedef struct wat_ros{ //在单链队列中等候替补的人员信息 char name[10];//姓名 int req_amt;//订票量 struct wat_ros*next; }qnode,*qptr; typedef struct pqueue{//等待候补的客户名单 qptr front;//队头指针 qptr rear;//队尾指...
订机票
订机票 #include #include #include #include #include #define MAXSIZE 5//定义航班数最多为5 typedef struct wat_ros{ //在单链队列中等候替补的人员信息 char name[10];//姓名 int req_amt;//订票量 struct wat_ros*next; }qnode,*qptr; typedef struct pqueue{//等待候补的客户名单 qptr front;//队头指针 qptr rear;//队尾指针 }linkqueue; typedef struct ord_ros{ //成员名单 int ord_amt;//订票量 char name[10];//客户姓名 int grade;//舱位等位 struct ord_ros*next; }linklist; struct airline{ char ter_name[10];//终点站的名字 char air_num[10];//航班号 char time[10];//飞行时间 char pri[7];//票价 int tkt_amt;//乘务定额 int tkt_aur;//余票量 linklist *order;//乘员名单域,指向乘务名单的头指针 linkqueue wait;//等待候补的客户名单,分别指向等待候补的客户名单的队头队尾 }lineinfo; struct airline*start; void display(struct airline*info){//打印每条航线的基本信息 printf("%s %s %s %s %d %d\n",info->ter_name ,info->air_num , info->time ,info->pri ,info->tkt_amt ,info->tkt_aur ); } void list(){//打印全部航线的信息 struct airline*info; int i=0; info=start; printf("终点站名 航班号 飞行时间 票价 乘务定额 余票量\n"); while(iter_name )){//名字匹配则返回,如果if(~)则break break; } info++; i++; } if(i>=MAXSIZE){//没有匹配的航线 printf("对不起,没有您要找的航线\n"); } else{ printf("终点站名 航班号 飞行时间 票价 乘务定额 余票量\n"); display(info);//调出display函数输出航线基本信息 } } struct airline*find(){//根据系统提出的航班号查询并以指针返回 struct airline*info; info=start; char number[10]; int i=0; printf("请输入航班号:"); scanf("%s",&number); while(iair_num )){//没有匹配航班 return info; } info++; i++; } printf("对不起,没有这条航班\n"); return NULL; } void prtlink(){//打印订票客户的基本信息 linklist*p; struct airline*info; info=find(); p=info->order ; if(p!=NULL){//按顺序输出客户信息链表 printf("客户姓名 订票数额 舱位等级\n"); while(p){ printf("%s %d %d",p->name ,p->ord_amt ,p->grade ); p=p->next ; } } else{//没有人订这航班 printf("该航班没有客户信息\n"); } } linklist*insertlink(linklist*head,int amount,char name[],int grade) {//增加订票成员名单域的客户信息 linklist*p1,*new1; p1=head; new1=(linklist*)malloc(sizeof(linklist)); if(!new1){//储存空间不足 printf("out of memory\n"); return NULL; } strcpy(new1->name ,name); new1->ord_amt =amount; new1->grade =grade; new1->next =NULL; if(head==NULL){//若原订票系统客户信息为空 head=new1; new1->next =NULL; } else{ head=new1; } new1->next =p1; return head; } linkqueue appendqueue(linkqueue q,char name[],int amount) {//增加排队等候的客户名单 qptr new1; new1=(qptr)malloc(sizeof(qnode)); strcpy(new1->name,name); new1->req_amt =amount; new1->next =NULL; if(q.front ==NULL)//若原来排队等候客户名单为空 { q.front =new1; } else{ q.rear ->next =new1; } q.rear =new1; return q; } void order(){//办理订票业务 struct airline*info; int amount,grade;//订票量,舱位等级 char name[10];//航班号 info=start; if(!(info==find())){//根据客户提供的航班号查询 return; } printf("请输入您需要的票数:"); scanf("%d",&amount); if(amount>info->tkt_amt ){//若客户订票额超总额,退出 printf("对不起,您输入票数已经超过总额\n"); return; } if(amount<=info->tkt_aur ){//订票量小于等于余票量,订票成功,等级信息 int i; printf("请输入姓名:"); scanf("%s",&name); printf("请输入您所需舱位等级:"); scanf("%d",&grade); info->order =insertlink(info->order ,amount,name,grade);//在订票乘员名单中添加客 户信息 for(i=0;itkt_amt -info->tkt_aur +i+1); } info->tkt_aur -=amount;//余票量等于之前的减去客户订票量 } else{//若满员或订票量多余余票额,询问客户是否需要排队等候 char r; printf("没有这么多票了,您需要排队吗"); r=getch(); printf("%c",r); if(r=='y'||r=='Y'){ printf("请输入您的姓名:"); scanf("%s",&name); info->wait =appendqueue(info->wait ,name,amount);//在排队等候乘员名单域中 添加客户信息 printf("您已添加队列成功\n"); } else{ printf("欢迎再次订购\n"); } } } void return_tkt(){//退票 struct airline*info; qnode*t,*back,*f,*r; int grade; linklist*p1,*p2,*head; char cusname[10]; if(!(info=find())){//调用查询函数。根据客户提供的信息查询 return; } head=info->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 ; } info->tkt_aur +=p1->ord_amt ; grade=p1->grade ; printf("退票成功\n",p1->name ); free(p1); } info->order =head;//重新将航线名单域指向订票单链表的头指针 f=(info->wait ).front ;//f指向排队等候名单队列的头结点 r=(info->wait ).rear ;//r指向排队等候名单队列的尾结点 t=f;//t为当前满点条件的排队候补名旦域 while(t){ if(info->tkt_aur >=info->wait .front ->req_amt ){ int i; info->wait .front =t->next ; printf("%s订票成功\n",t->name ); for(i=0;ireq_amt ;i++){//输出座位号 printf("%s的座位号是:%d\n",t->name ,(info->tkt_aur )-i); } info->tkt_aur =t->req_amt ; info->order =insertlink(info->order ,t->req_amt ,t->name ,grade); //插到订票客户名单链表中 free(t); break; } back=t; t=t->next; if((info->tkt_aur )>=(t->req_amt )&&t!=NULL){//若满足条件者不为头结点 int i; back->next =t->next ; printf("%s订票成功\n",t->name ); for(i=0;ireq_amt ;i++){//输出座位号 printf("<%s>的座位号是:%d\n",t->name ,(info->tkt_aur )-i); } info->tkt_aur =t->req_amt ; info->order =insertlink(info->order ,t->req_amt ,t->name ,grade); //插到订票客户名单链表中 free(t); break; } if(f==r){ break; } } } int meun_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("~~~~~~~~~~~~~~~~~~~~\n"); do{ printf("请选择1-6:"); scanf("%s",&s); c=atoi(s); }while(c<1||c>6); return c; } void main(){ struct airline air[MAXSIZE]= //初始化航线信息 { {"beijing","1","1200","860",30,30}, {"shanghai","2","1000","770",20,20}, {"london","3","1330","960",10,10}, {"harbin","4","1700","760",50,50}, {"dalian","5","1400","550",40,40} }; start=air; for(;;){//无限循环 system("cls");//清空屏幕 switch(meun_select()){ case 1:list();//打印全部航线信息 break; case 2:prtlink();//浏览已订票客户信息 break; case 3:search();//查询航线 break; case 4:order();//订票 break; case 5:return_tkt();//退票 break; case 6:printf("感谢您的使用,再见\n");//退出系统 exit(0);//正常退出程序 } printf("任意键继续\n"); getch(); } }
/
本文档为【订机票】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索