数据结构课程设计报告(航班管理系统)分解

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据结构课程设计报告班级:指导老师日期:2014年12月【需求分析】2.航空订票系统试设计一个航空订票系统,基本要求如下:每条航班所涉及的信息有:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,乘员定额,余票量,订定票的客户名单(包括姓名,订票量,舱位等级(头等舱、公务舱、经济仓)以及等候替补的客户名单(包括姓名、所需数量)。采用链式存储结构。要求:系统能实现的操作和功能如下:(1)航班信息管理。(2)查询航线,按以下几种方式查询:①按航班号查询;②按起点站查询;③按终点站查询;④按日期查询;每种查询方式中,查询后输出如下信息:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,余票量。(3)承办订票业务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。若需要,可登记排队候补。(4)承办退票业务:根据客户提出的情况(日期,航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。【设计】2.1设计思想(1)数据结构设计①.‘航班信息数据结构’采用链式储存结构,并且设置链接‘订票乘客名单域’和‘排队等候名单域’的借口。设计如下:/*航班信息数据结构*/typedefstructAirp{charairnum[10];//航班号charplanenum[10];//机型chardeparture[10];//起飞机场charterminal[10];//降落机场charweekday[5];//日期structtimeuptim;//起飞时间timedowntim;//降落时间timeflytim;//飞行时间intprice;//价格inttkt_ful;//乘员定额inttkt_sur;//余票量Book_list*book;//订票客户名单Wait_listwait;//等待候补客户名单Airp*next;}lineinfo;//②‘订票乘客名单域’采用链式存储结构,以单链表形成名单列表。设计如下:/*订票乘客名单域*/typedefstructbook{charname[10];//乘客姓名intord_num;//数量intord_grd;//舱位等级structbook*next;//指向下一名乘客}Book_list;③‘排队等候队列名单域’采用链式储存,以单链表形成名单列表。设计如下:/*排队等候队列名单域*/typedefstructwait{charname[10];//乘客姓名intord_num;//欲订票数量structwait*next;//指向下一名乘客}wat_queue;排队队列指针设计如下://排队等候队列头尾指针typedefstructqwait{wat_queue*front;//队头指针wat_queue*rear;//队尾指针}Wait_list;④‘时间数据结构’。程序定义了一个(**:**)型的时间数据结构,使时间更加精确易读。设计如下://(**:**)型时间数据结构typedefstructtime{inthour;//时intmint;//分}time;(1)算法设计主要算法包括:①航线信息显示函数:voidprint(Airp*head)②航线录入函数:voidenter()③航线删除函数:voidDelete()④航线查询函数://a.按航班号查询:Airp*search_1()设计如下:Airp*search_1(){输入航班号airnum;while(‘航班信息数据结构’next节点不为空){已存航班号是否有与airnum相同的航班号;}若没有相同航班号(对不起,未能找到您所要查找的航班!);getchar();returnNULL;}//b.按起飞站查询:voidsearch_2(),与a.函数相似,只改变查询变量为起飞站‘s-departure’;//c.按终点站查询:voidsearch_3(),与a.函数相似,只改变查询变量为终点站‘s-terminal’//d.按日期查询:voidsearch_4(),与a.函数相似,只改变查询变量为日期‘s-weekday’⑤订票业务办理://a.订票模块:voidor_tkt()设计如下:voidor_tkt(){If(没有查询航班)函数结束;输入订票量amount;if(amount余票量s-tkt_ful){输出(\n对不起,没有足够的余票!);函数结束;}if(amount=s-tkt_sur){for(i=0;iamount;i++){输入订票人姓名和舱位等级;}for(i=0;iamount;i++){printf(%s的座位号是:%d\n,name,s-tkt_ful-s-tkt_sur+i+1);}s-tkt_sur-=amount;printf(订票成功!);输出费用;}else{询问是否要排队等候;if(r=='Y'||r=='y'){输入乘客姓名;在排队等候乘员名单域中添加客户信息;printf(\n排队成功!\n);}}}//b.订票信息名单域扩充:Book_list*add_1(Book_list*head1,intamount,charname[],intgrade)⑥办理退票业务://a.退票模块:voidre_tkt()、//退票模块voidre_tkt(){输入退票客户姓名;从名单中查询客户姓名;if(名单中没有该客户){printf(对不起,你没有订过票!\n);返回主菜单;}else{进行退票操作;printf(%s先生退票成功!\n,p1-name);}while(t){在排队等候队列中查询是否有相同需求的乘客;If(有){进行订票操作;插入到订票客户名单链表中;将乘客信息从队列中消除;}依次打印出订票成功乘客的座位号;}}//b.排队等候名单域扩充:Wait_listadd_2(Wait_listq,charname[],intamount)2.2【设计表示】(1)模块关系图(1)函数接口规格说明①公共函数模块://初始化头指针:voidAirInitiate(Airp**head)//航线信息显示:voidprint(Airp*head)②航班信息管理模块://航班信息录入模块:voidenter()//航班信息删除模块:voidDelete()//航班信息打印:intdisplay()③航班信息查询模块://按照航班号查找:Airp*search_1()//按照起飞地查找:voidsearch_2()//按照降落地查找:voidsearch_3()//按照日期查找:voidsearch_4()④定票模块://订票模块:voidor_tkt()//订票信息名单域扩充:Book_list*add_1(Book_list*head1,intamount,charname[],intgrade)⑤退票模块//退票模块:voidre_tkt()//排队等候名单域扩充:Wait_listadd_2(Wait_listq,charname[],intamount)⑥菜单模块:航空订票系统航班信息管理航班查询办理订票业务办理退票业务浏览航班信息录入新航线删除航线按航班号查询按起点站查询按终点站查询按日期查询//主菜单栏:intmenu_1()//航班信息管理系统菜单:voidmenu_2()//航班查询系统菜单:voidmenu_3()2.3详细设计//航线信息显示:voidprint(Airp*head)voidprint(Airp*head){printf(%-6s%-8s%-8s%-9s%-4s%d:%d%d:%d%d:%d%-4d%-6d\n,head-airnum,head-planenum,head-departure,head-terminal,head-weekday,head-uptim.hour,head-uptim.mint,head-downtim.hour,head-downtim.mint,head-flytim.hour,head-flytim.mint,head-price,head-tkt_sur);}//航班信息录入模块:voidenter()voidenter(){inti,n;Airp*s;system(cls);//清屏显示printf(******************航班信息录入系统*******************\n);s=(Airp*)malloc(sizeof(Airp));printf(请输入航班号:);scanf(%s,s-airnum);printf(请输入航班机型:);scanf(%s,s-planenum);printf(请输入起飞机场:);scanf(%s,s-departure);printf(请输入降落机场:);scanf(%s,s-terminal);printf(请输入日期(星期几):);scanf(%s,s-weekday);printf(请输入起飞时间:);scanf(%d%d,&s-uptim.hour,&s-uptim.mint);printf(请输入降落时间:);scanf(%d%d,&s-downtim.hour,&s-downtim.mint);printf(请输入飞行时长:);scanf(%d%d,&s-flytim.hour,&s-flytim.mint);printf(请输入价格:);scanf(%d,&s-price);printf(请输入乘员定额:);scanf(%d,&s-tkt_ful);printf(请输入余票量:);scanf(%d,&s-tkt_sur);s-next=head-next;head-next=s;}//航班信息删除模块:voidDelete()voidDelete(){inti,n,m;Airp*Del;Airp*s;charairnum[10];Del=head;intt=0;printf(请输入您要删除的航班号:);scanf(%s,airnum);while(Del-next!=NULL){if(!strcmp(airnum,Del-next-airnum)){t=0;s=Del;s-next=Del-next-next;free(Del-next);return;}Del=Del-next;}if(t=0){printf(对不起,未能找到您所要删除的航班信息!);return;}}//订票信息名单域扩充:Book_list*add_1(Book_list*head1,intamount,charname[],intgrade)Book_list*add_1(Book_list*head1,intamount,charname[],intgrade){Book_list*p1,*new1;p1=head1;new1=(Book_list*)malloc(sizeof(Book_list));strcpy(new1-name,name);new1-ord_num=amount;new1-ord_grd=grade;new1-next=NULL;if(head1==NULL)//若原无订票客户信息{head1=new1;new1-next=NULL;}elsehead1=new1;new1-next=p1;returnhead1;}//排队等候名单域扩充:Wait_listadd_2(Wait_listq,charname[],intamount)Wait_listadd_2(Wait_listq,charname[],intamount)//排队等待

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功