数据结构课程设计-航空客运订票系统

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

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

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

资源描述

成绩评定教师签名嘉应学院计算机学院实验报告课程名称:数据结构课程设计开课学期:2017-2018学年第2学期班级:1503指导老师:钟治初实验题目:航空客运订票系统学号:姓名:上机时间:1.需求分析(1)航空管理。每条航班所涉及的信息有:终点站名、航班号、飞机型号、飞行周日(星期几)、乘员定额、余票量。(2)客户管理。有关订票的客户信息(包括姓名、订票量、航位等级(1,2和3))以及等候替补的客户名单(包括姓名、所需票量)。(3)系统实现的主要操作和功能。系统实现的主要操作和功能如下:①查询航班。根据旅客提出的终点站名输入下列信息:航班号、飞机型号、飞机日期、余票额。②承办订票业务。根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队后补。③承办退票业务。根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先查询排在第一的客户,若所退票额能满足该客户的要求,则为其办理订票手续,否则询问其他排队候补的客户。2.概要设计1)本系统设计了一个含有多个菜单项的主控菜单,系统主控菜单运行界面2)存储结构设计本系统主要采用链表结构类型存储航班信息和订票的乘客信息。航班信息链表结点由10个分量构成,乘客信息链表由5个分量构成。3)系统功能设计本系统分为以下5个功能模块。(1)航班管理。航班管理子模块可完成添加新的航班,按终点站点名查询航班,浏览所有航班。(2)订票办理。在添加了航班的基础上可办理订票业务。乘客根据所需航班输入终点站名和订票量订票。如果订票量超过余票量,则会提示是否成为候补乘客;如果订票成功,则会要求输入订票乘客的姓名及所订票的舱位等级。(3)退票办理。已办理订票业务的乘客可根据所订票的航班和乘客姓名办理退票业务。、(4)乘客管理。可以查看已经订票的乘客信息和候补乘客的信息。(5)退出系统。退出整个航空客运订票系统。3.模块设计1)模块设计本程序包括主程序模块、菜单选择模块和队列操作模块。主程序模块-菜单选择模块-队列操作模块2)系统子程序及功能设计本系统共设置14个函数,其中包括主函数。个函数名及功能说明如下。(1)charContinue()//询问是否继续的函数(2)voidErrorMess()//操作出错函数(3-1)intFind_Line1()//航班核对函数(3-2)intFind_Line2()//按航班号查询函数(4)voidLine_search()//按目录地查询航班函数(5)voidLine_Add()//航班添加函数(6)intEmpty_Flight()//航班是否为空函数(7)intLine_See()//航班查看函数(8)voidLinemanageMenu()//航班管理菜单(9)voidbookingMenu()//订票办理函数(10)voidDisplay_Reserve()//订票乘客信息(11)voidDisplay_Replace()//候补乘客信息(12)voidRefundticketMenu()//退票办理函数(13)voidCustomermagMenu()//乘客管理子菜单函数(14)voidmain()//主程序画面函数4.详细设计1)数据类型定义(1)乘客信息的结构体定义(2)航班信息的结构体定义(3)全局变量定义2)系统主要子程序详细设计(1)主程序模块设计主函数。设定用户操作界面以及界面的颜色和大小,调用菜单子模块函数。(2)航班管理模块子菜单界面函数(3)航班管理的主要工作函数(4)订票办理函数,用于办理订票业务5.测试分析1)航班管理菜单在主菜单下,用户输入1并按下回车键,运行。该子模块可以实现添加新航班,按终点站名查找航班的信息,浏览查看所有航班信息这三项航班管理操作。2)订票业务办理在进行了航班添加之后,即航班不为空时,在主菜单下输入2并回车办理订票业务,在界面提示下输入订票的相关航班信息和订票客户信息。运行。如果需要订票数超过余票量,则可选择等待成为候补乘客或选择放弃订票。3)退票业务办理办理订票业务之后,可以办理对应的退票业务。在主菜单下输入3并按下回车键办理订票业务,在界面提示下输入匹配的退票航班信息和订票客户姓名即可退票成功,运行。4)乘客管理子菜单办理了订票业务之后,系统可以管理办理了订票业务的乘客信息。在主菜单下输入4并按下回车键进入乘客管理菜单界面,运行。在此子功能模块下可以进行查看订票和候补乘客的信息。6.退出在主菜单下输入5并按下回车键,即退出“航空客运订票系统”。完整代码如下:#includestdio.h#includestdlib.h#includeconio.h#includestring.h#defineMAX60/*runthisprogramusingtheconsolepauseroraddyourowngetch,system(pause)orinputloop*/typedefstructCustomer{charName[8];intAmount;charRank;intIDinfor;structCustomer*Next;}Customer;typedefstructFlight{charDes_Name[10];charFlight_No[6];charPlane_No[6];intWeek_Day;intCustomer_Amount;intFree_Amount;intPrice[3];Customer*CustName;Customer*ReplName;structFlight*Next;}Flight,*PFlight;//全局变量intCustomer_Count=0;Flight*Head=NULL;Flight*p2;Customer*Custp1[MAX];Customer*Replp1[MAX];intIsEmpty=1;intIsReplace=1;Customer*prior;intshouldsave=0;//1.询问是否继续的函数charContinue(){charanswer;while(1){printf(\n\t您是否想继续(Y/N)?);scanf(%s,&answer);system(cls);if(answer=='y'||answer=='Y')return'y';elseif(answer=='n'||answer=='N')return'n';elseprintf(\n\t输入有误,请重新输入!);}}//2.操作出错函数voidErrorMess(){printf(\n\t对不起,您的操作有误!);getch();}//3-1.核对航班函数intFind_Line1(PFlightL,char*key){intflag=0;Flight*p1;p1=L;if(p1==p2)returnflag;while(p1!=p2&&p1!=NULL){if(strcmp(p1-Flight_No,key)==0){flag=1;break;}p1=p1-Next;}returnflag;}//3-2.按航班号查询函数intFind_Line2(PFlightL,char*key,PFlight*pp,int*Flight_No){intflag=0;Flight*p1;p1=L;while(p1!=NULL){if(strcmp(p1-Flight_No,key)==0){flag=1;*pp=p1;break;}p1=p1-Next;if(p1!=NULL)Flight_No++;}returnflag;}//4.按目录地查询航班函数voidLine_search(){charDesname[50];Flight*p1=Head;if(Head==NULL){printf(\n\t没有到达您想要的终点站的航班!);getch();return;}printf(\n\t请输入终点站名:);scanf(%s,Desname);printf(\n\t您所查询的航班的信息:\n);printf(\n_________________________________________________\n);while(p1!=NULL){if(strcmp(p1-Des_Name,Desname)==0){printf(目的地航班号飞机型号星期座位号头等舱价格普通舱价格经济舱价格\n);printf(\n%-9s%-8s%-8s%-7d%-8d%-10d%-12d%-8d,p1-Des_Name,p1-Flight_No,p1-Plane_No,p1-Week_Day,p1-Customer_Amount,p1-Price[0],p1-Price[1],p1-Price[2]);}p1=p1-Next;}printf(\n__________________________________________________\n);Continue();}//5.航班添加函数voidLine_Add(){PFlightp,*p1;p1=&Head;while(1){if(Head==NULL){*p1=(PFlight)malloc(sizeof(Flight));(*p1)-Next=NULL;p2=Head;}else{p1=&p;*p1=(PFlight)malloc(sizeof(Flight));p2-Next=*p1;p2=*p1;}printf(\n\t添加新的航班!\n);printf(\n\t请输入终点站名:);scanf(%s,&p2-Des_Name);while(1){printf(\n\t请输入唯一的航班号:);scanf(%s,&p2-Flight_No);if(Find_Line1(Head,p2-Flight_No))printf(\n\t航班号已经存在!\n);elsebreak;}printf(\n\t请输入航班号:);scanf(%s,&p2-Plane_No);while(1){printf(\n\t请输入航班日期(请输入1-7):);scanf(%d,&p2-Week_Day);if(p2-Week_Day1||p2-Week_Day7)printf(\n\t输入日期有误,请重新输入!\n);elsebreak;}printf(\n\t请输入座位数量:);scanf(%d,&p2-Customer_Amount);printf(\n\t请输入头等舱的价钱:);scanf(%d,&p2-Price[0]);printf(\n\t请输入二等舱的价钱:);scanf(%d,&p2-Price[1]);printf(\n\t请输入三等舱的价钱:);scanf(%d,&p2-Price[2]);p2-Free_Amount=p2-Customer_Amount;p2-CustName=NULL;p2-ReplName=NULL;shouldsave=1;if(Continue()=='n'){p2-Next=NULL;return;}}}//6.判断航班是否为空函数intEmpty_Flight(){if(Head==NULL){system(cls);printf(\n\t对不起,航班不存在,按任意键返回!);getch();return1;}elsereturn0;}//7.航班查看函数intLine_See(){Flight*p1;system(cls);p1=Head;if(Empty_Flight())return0;printf(\n\n\t航班信息:\n);printf(\n________________________________________________________

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

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

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

×
保存成功