您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 航空客运订票系统--数据结构课程设计
#includestdio.h#includestring.h#includestdlib.h#includemath.h#defineok1typedefstructYidingkehu{//单链表charname[15];//已订票的客户姓名intdingpiaoshu;//已订票数量structYidingkehu*next1;}Yidingkehu,*Link;typedefstructWeidingkehu{//单链队charname[15];//预订票的客户姓名intyudingpiao;//要订票数量structWeidingkehu*next2;//下一个链队结点指针}Weidingkehu,*Qptr;typedefstruct{Qptrfront;//单链队头结点Qptrrear;//单链队尾结点}linkQueue;typedefstructHangxian{//创建一个航线的结构体charhangbanhao[15];//航班号-charfeijihao[15];//飞机号intfeixingriqi;//起飞时间intlevel;//仓位intyupiao;//余票charzhongdianzhan[15];//降落城市structHangxian*next;//指向下一个链结点的指针structYidingkehu*yiding;//定义一个指向已订票客户的头结点指针structWeidingkehu*yudingqueue;}Hangxian,*Linklist;structHangxian*L=NULL;//定义全局量structYidingkehu*H;//为已订票客户链队来申请空间linkQueueQ;//linkQueue类型的来申请空间LinklistInitLinklist();//声明intInsertLinklist(Linklist&head1);//声明voidhbhchaxun();//通过航班号查询voidmddchaxun();//通过目的地查询voidlurugongneng();//初始化录入功能voidchaxungongnen();//查询功能voiddingpiaogongnen();//订票功能voidtuipiaogongnen();//退票功能voidmain(){H=(structYidingkehu*)malloc(sizeof(Yidingkehu));Q.front=Q.rear=(Qptr)malloc(sizeof(Weidingkehu));InitLinklist();intn;do{//打印主界面printf(\t欢迎使用航空客运订票系统\n);printf(\t+++++++++++++++++++++++++++++\n);printf(\t==1.录入功能==\n);printf(\t==2.查询功能==\n);printf(\t==3.订票功能==\n);printf(\t==4.退票功能==\n);printf(\t==5.退出==\n);printf(\t+++++++++++++++++++++++++++++\n);printf(\t请选择:);scanf(%d,&n);printf(\n);switch(n){case1:lurugongneng();//录入功能break;case2:chaxungongnen();//查询功能break;case3:dingpiaogongnen();//订票功能break;case4:tuipiaogongnen();//退票功能break;default:exit(0);//退出}}while(n==1||n==2||n==3||n==4);}voidlurugongneng()//初始化的单链表*********************************************************录入功能{intj=1,m;do{if(!InsertLinklist((Linklist)L))//向其中加入航班信息{printf(内存已满\n);exit(OVERFLOW);}//向链表中加一结点printf(\t是否要输入下一个航线记录?\n);printf(\t是请输入1\n);printf(\t否请输入2\n\t);scanf(%d,&m);//在这里依靠人来决定是否输入下一条航线记}while(m==1);}LinklistInitLinklist(){L=(Linklist)malloc(sizeof(Hangxian));if(!L)exit(OVERFLOW);L-next=NULL;//建立一个带有头结点的单链表return(L);}intInsertLinklist(Linklist&L)//向航线链表添加新的结点{Linklistp;p=(Linklist)malloc(sizeof(Hangxian));//为一个新的结点分配空间if(!p)exit(OVERFLOW);printf(\t请依次输入下面几项内容:\n\n);//这里的输入采用一个个单独输入,避免了乱赋值的现象printf(航班号\n);scanf(%s,p-hangbanhao);printf(飞机号\n);scanf(%s,p-feijihao);printf(终点站\n);scanf(%s,p-zhongdianzhan);printf(飞行日期\n);scanf(%d,&p-feixingriqi);printf(仓位\n);scanf(%d,&p-level);printf(余票数\n);scanf(%d,&p-yupiao);p-yiding=(Yidingkehu*)malloc(sizeof(Yidingkehu));//为它申请空间p-yudingqueue=Q.front=Q.rear=(Qptr)malloc(sizeof(Weidingkehu));//为它申请空间p-next=L-next;L-next=p;//这二句是链表中的插入一个结点return(ok);}voidchaxungongnen()//******************************************************************查询功能{intn;printf(\t查找航线信息\n);printf(\t+++++++++++++++++++++++++++++\n);printf(\t==1.通过目的地查询==\n);printf(\t==2.通过航班号查询==\n);printf(\t+++++++++++++++++++++++++++++\n);printf(\t请选择:\n);scanf(%d,&n);switch(n){case1:mddchaxun();break;case2:hbhchaxun();break;default:break;}}voidmddchaxun()//通过目的地查询{charc[15];Linklistp=L;intm;printf(\t请输入要查询的目的地:\n);scanf(%s,c);do{p=p-next;if(p){if(strcmpi((*p).zhongdianzhan,c)==0){printf(\t航班信息:\n);printf(\t航班号:%s\n,p-hangbanhao);printf(\t飞机号:%s\n,p-feijihao);printf(\t飞行时间:周%d\n,p-feixingriqi);printf(\t余票量:%d\n,p-yupiao);}}else{//如果不匹配的话就做printf(\t对不起没有你要找的目的地:\n\n);m=0;}}while(m!=0);}voidhbhchaxun()//通过目的地查询{charc[15];Linklistp=L;intm;printf(\t请输入要查询的航班号:\n);scanf(%s,c);do{p=p-next;if(p){if(strcmpi((*p).hangbanhao,c)==0){printf(\t航班信息:\n);printf(\t航班号:%s\n,p-hangbanhao);printf(\t飞机号:%s\n,p-feijihao);printf(\t飞行时间:周%d\n,p-feixingriqi);printf(\t余票量:%d\n\n,p-yupiao);}}else{//如果不匹配的话就做printf(\t对不起没有你要找的航班号:\n);m=0;}}while(m!=0);}voiddingpiaogongnen()//***************************************************************订票功能{Linklistp=L;//Linklist类型的L来指向链表头Yidingkehu*h=H,*h1;//Yidingkehu定义客户的结点,方便插入与删除linkQueueq=Q;//linkQueue类型的来,方便插入与删除structWeidingkehu*q3;charc[15];intm=1,piao,n;intydpiao=0,yd=0;printf(请输入终点站名:\n);scanf(%s,c);p=L-next;if(p){do{//查找一下,是否有这个航班if(!p){printf(对不起,没有你要找的航班:\n\n);//gotoloop1;}m=strcmpi(p-zhongdianzhan,c);//通过比较来判定if(m==0){printf(航班信息:\n);printf(航班号:%s\n,p-hangbanhao);printf(飞机号:%s\n,p-feijihao);printf(飞行时间:周%d\n,p-feixingriqi);printf(余票量:%d\n,p-yupiao);}elsep=p-next;}while(m!=0);if(m==0){//当有该航班时,进行订票do{printf(\n请输入你要订的票数:\n);scanf(%d,&piao);if(piao=p-yupiao){h=p-yiding;if(h){h1=h;h=h-next1;h=(structYidingkehu*)malloc(sizeof(Yidingkehu));printf(请输入你的名字:\n);scanf(%s,h-name);h-dingpiaoshu=piao;h-next1=h1-next1;h1-next1=h;p-yupiao=p-yupiao-piao;printf(订票成功:\n);m=2;}}else//余票量不足时{printf(余票量:%d\n,p-yupiao);printf(对不起,余票%d张不足,不能完成订票\n,p-yupiao);printf(是否要重新订票?\n);printf(需要请输入1否则请按2预订请输入3:\n);scanf(%d,&m);while(m==3){printf(对不起,该航班的票已售完\n);q.front=p-yudingqueue;if(q.front==q.rear)printf(没有人预订票,是否要预订?\n);elseif(q.front!=q.rear)printf(已有人预订票,是否要预订?\n);printf(预订请输入1否则输入2:\n);scanf(%d,&n);if(n==1){q3=(Qptr)malloc(sizeof(Weidingkehu));printf(请输入你的姓名\n);scanf(%s,q3-name);printf(请输入订票数\n);scanf(%d,&q3-yudingpiao);q3
              三七文档所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
        
本文标题:航空客运订票系统--数据结构课程设计
链接地址:https://www.777doc.com/doc-6387110 .html