订票系统1.需求分析任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;2:主要设计思路:1)算法构造流程图:A:主菜单:主菜单0123456789输入航班的信息列出航班的信息按航班号查询航班信息按城市来查询航班订票程序退票系统修改飞机航班的信息保存文件读取文件、下载文件退出B:各分块模板的构造流程图:0.输入航班的信息航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣1.列出航班的信息继续y退出n2.按航班号查询航班信息输入所需要查询的航班号显示这个航班的的信息4.订票程序输入号码输入名字输入ID需要定的票数航班号7.保存文件显示保存成功3:功能函数设计:3.按城市来查询航班输入起飞城市输入降落城市显示这个航班的信息5.退票系统输入航班号输入你ID确定退票1否定06.修改飞机航班的信息输入要修改的航班号重新输入新的航班信息(1):订票系统主菜单函数menu_select()本函数主要构造系统的主菜单,系统需要实现很多功能,并且各个功能需要各自的函数支持,所以通过主菜单可以轻松的进入各个函数下实现各自的功能,故主菜单显得尤为重要。其实就是通过键盘输入选择项,然后通过scanf接受,在通过swtich判断进入各个选择项。(2):工作人员管理函数enter()&change()系统需要各个航班的详细信息,所以需要工作人员把信息输入系统里,以供乘客查询订票。enter()函数的构造就是为了解决这个问题。而有可能航班线路更改或由于天气等原因飞机的起飞时间发生了更改,故工作人员需要及时更改信息,所以需要构造change()函数。(3):列出航班信息的函数list()乘客需要查询各个航班的信息,所以通过系统要能调出上面工作人员已经录入好的航班信息,所以构造本函数来实现这个功能。(4)乘客具体查询函数search()本函数分两个分函数:search1()和search2(),它们分别实现乘客的按航班查询和按出发及抵达城市的两种查询方案。(5)票务管理函数book()&quit()通过book()函数可以实现乘客的订票操作,通过quit()可以实现乘客的退票操作。(6)文件操作函数save()&load()3.源程序代码:(WINTC下运行)#includedos.h#includestdio.h#includestdlib.h#includestring.h#defineN20#defineQ40/*定义数据结构*//*乘客信息*/typedefstruct{charnumber[10];/*编号*/charid[20];/*证件号*/charname[10];/*姓名*/intcount;/*订票数*/charflightname[10];/*乘坐航班号*/}GUEST;/*航班信息*/typedefstruct{charplanenumber[10];/*航班号*/charTake_off_city[20];/*起飞城市*/charArrived_in_city[20];/*抵达城市*/chartakeoff_time[20];/*起飞时间*/charLanding_time[20];/*降落时间*/intshipping;/*舱位数*/charprice[5];/*票价*/chardiscount[5];/*折扣*/GUESTguest[20];intsit;}FLY;/*菜单函数,函数返回值为整数,代表所选的菜单项*/menu_select(){intc;printf(按任意键返回主菜单\n);/*提示压任意键继续*/getch();/*读入任意字符*/printf(Welcometo\n\n);printf(TicketsBookingSystem\n\n);printf(********************MENU****************\n\n);printf(0.输入航班信息\n);printf(1.列出航班的信息\n);printf(2.按航班号查询航班信息\n);printf(3.按城市来查询航班\n);printf(4.订票程序\n);printf(5.退票系统\n);printf(6.修改飞机航班的信息\n);printf(7.保存文件\n);printf(8.读取和下载文件\n);printf(9.退出\n);printf(*****************************************\n\n);do{printf(\n输入你的选择项(0~9):);/*提示输入选项*/scanf(%d,&c);/*输入选择项*/}while(c0||c9);/*选择项不在~9之间重输*/returnc;/*返回选择项,主程序根据该数调用相应的函数*/}/*输入函数*/intenter(FLYt[]){inti,k,n,m,w,j;char*s;printf(输入航线总数(n=40):);/*输入航线总数*/scanf(%d,&n);while(n40||n0){printf(输入错误!!再次输入(0n=40):);/*输入航线总数*/scanf(%d,&n);}printf(输入航班的信息\n\n);/*提示信息*/printf(航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n);printf(------------------------------------------------------------------------------\n);for(i=0;in;i++){scanf(%s,t[i].planenumber);/*输入姓名*/scanf(%s,t[i].Take_off_city);/*输入起飞城市*/scanf(%s,t[i].Arrived_in_city);/*输入降落城市*/scanf(%s,t[i].takeoff_time);/*输入起飞时间*/scanf(%s,t[i].Landing_time);/*输入降落时间*/scanf(%d,&t[i].shipping);/*输入舱位数*/scanf(%s,t[i].price);/*输入票价*/scanf(%s,t[i].discount);/*输入折扣*/}printf(-----------------------------------------------------------------------------\n);for(i=0;in;i++)t[i].sit=0;returnn;/*返回记录条数*/}/*显示记录,参数为记录数组和记录条数*/voidlist(FLYt[],intn){inti;printf(航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n);printf(------------------------------------------------------------------------------\n);for(i=0;in;i++)printf(%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n,t[i].planenumber,t[i].Take_off_city,t[i].Arrived_in_city,t[i].takeoff_time,t[i].Landing_time,t[i].shipping,t[i].price,t[i].discount);printf(************************end*******************\n);}/*按航班号查找记录*/voidsearch1(FLYt[],intn){chars[20];/*保存待查找航班名字符串*/inti;printf(输入你想查找的航班名:);scanf(%s,s);/*输入待查找航班名*/for(i=0;in;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].planenumber)==0)/*记录中的航班名和待比较的是否相等*/break;/*相等,则返回该记录的下标号,程序提前结结束*/}if(in-1)/*如果整数i值大于n-1,说明没找到*/printf(没有找到\n);else{printf(航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n);/*显示记录*/printf(------------------------------------------------------------------------------\n);printf(%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n,t[i].planenumber,t[i].Take_off_city,t[i].Arrived_in_city,t[i].takeoff_time,t[i].Landing_time,t[i].shipping,t[i].price,t[i].discount);}}/*按起降城市查找记录*/voidsearch2(FLYt[],intn){chars1[20];chars2[20];inti;printf(输入起飞城市名称:);scanf(%s,s1);/*输入起飞城市名*/printf(输入降落城市名称:);scanf(%s,s2);/*输入降落城市名*/for(i=0;in;i++)/*从第一条记录开始,直到最后一条*/{if((strcmp(s1,t[i].Take_off_city)==0)&&(strcmp(s2,t[i].Arrived_in_city)==0))/*记录中的城市和待比较的是否相等*/break;/*相等,则返回该记录的下标号,程序提前结结束*/}if(in-1)/*如果整数i值大于n-1,说明没找到*/printf(没有找到\n);else{printf(航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n);/*找到,显示记录*/printf(------------------------------------------------------------------------------\n);printf(%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n,t[i].planenumber,t[i].Take_off_city,t[i].Arrived_in_city,t[i].takeoff_time,t[i].Landing_time,t[i].shipping,t[i].price,t[i].discount);}}/*订票*/voidbook(FLYt[],intn){chars[20],number1[10],name1[10],id1[20],flightname1[10];inti,j=0,m,k,count1;printf(输入你想预订的票数:);scanf(%d,&m);printf(号码姓名证件号订的票数航班号\n);/*提示信息*/printf(------------------------------------------------------------\n);for(k=0;km;k++){scanf(%s,numb