资源描述
数据结构课程设计 订票系统目录总体设计2概要设计2详细设计3调试分析11测试数据及截图11时间复杂度分析15问题思考15算法的改进设想15课设总结体会15附录17程序说明17源代码17主要参考文献27总体设计通过此系统可以实现如下功能:1)录入:可以录入航班情况(数据存储在一个数据文件中)2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3)订票:(订票情况存在一个数据文件中)可以订票,如果该航班已经无票,可以提供相关可选择航班;4)退票: 可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。5)修改航班信息:当航班信息改变可以修改航班数据文件概要设计主函数录入航线信息浏览航线信息修改航线信息查询航线信息办理订票业务办理退票业务退出系统将航线信息和乘客信息写入文件每个模块的算法设计说明如下:(1)录入模块: 查找单链表的链尾,在链头插入一个“航班信息”的新结点。(2)浏览模块:顺着单链表输出航班信息。(3)修改模块:输入密码,确认是否有权限对航班信息进行修改,有则进行修改,否则不能修改。 提供两种修改方式:添加航班和对已有的航班信息进行改动(修改和删除),1添加航线,0对已有的航班信息进行改动(修改和删除)。对已有的航班信息进行改动(修改和删除):顺着单链表查找,若找到则进行相关操作。(4)查询模块:提供两种查方式:按航号和起飞抵达城市查询,0代表按航号查询,1代表按起飞抵达城市查询。顺着单链表查找,如果与航班号(起飞抵达城市)一致,输出相关信息并询问乘客是否要订票,若订进入订票模块;否则,查询不成功。(5)订票模块:查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功;否则查找这个月此乘客起飞城市和降落城市的有空位航班,供乘客选择,若有则订票,若无则订票不成功并把此乘客的信息录入此航班等候订票队列中,退出订票。(6)退票模块:输入要退票的乘客姓名以及所退票的编号,查找乘客资料的链表中是否有这位乘客,有则删去此结点,并判断是否有等候订票的乘客(有则通知等候订票乘客订票,无则余票加乘客所退票数);无则退票失败。(7)文件模块:顺着单链表把链表的信息写入文件。详细设计 NYYNNY开始p=H-nextp!=NULL P所指向的航班信息写入文件p=p-next结束将航线信息写入文件开始p=H-nextp!=NULLq=p-order-nextq!=NULL将q所指向的乘客信息写入文件q=q-nextp=p-next结束将乘客信息写入文件 开始设置管理员密码am=0,t=1输入cc=1进入录入航线m=1文件操作c=2进入浏览航线c=3m=1进入修改航线xxian文件操作c=4m=1进入查询航线航班线xxian文件操作c=5m=1进入订票xxian文件操作c=6进入退票xxian文件操作c=0t=1t=0提示没有您选择的操作结束YYYYYYYYYYYYNNNNNNNNNNN主函数输入要插入的信息p参数H传入入p-next=H-nextYYN开始H-next=p结束插入操作开始传入参数H输入要查找的信息sp=H-nextp!=NULLp=s结束q=pp=p-nextN查找操作开始传入参数H输入要修改的信息p查找p输入p修改后信息结束修改操作开始传入参数H输入要删除的信息p查找p并记住p的前一个点qq-next=p-next释放p的空间结束删除操作开始初始化inext浏览操作NYp=H-next是否找到此航班Y开始输入订单编号查找此编号所在航班删除此编号此航班是否有等候订票乘客通知等候订票乘客进入订票余票量加退票乘客的退票量结束NNY退票操作说明:此流程图中的查找编号所在的航班为上面已画出的查找操作的流程结束修改航班信息说明:c为选择添加航线操作还是改动航班信息,c=1为添加航班信息,c=0时为改动航班信息。d为选择修改航班信息操作还是删除航班信息,d=0为修改航班信息,d=1为删除航班信息NYNNNNNNYYYYY开始参数H传入并输入密码S输入cc!=0&c!=1c=0Y输入添加的航线条数ni=0in输入航班信息将其插入链表中i+输入dd!=0&d!=1d=0输入要修改的航班条数ni=0in输入要修改的航班信息查找此航班i+输入要修改的航班条数ni=0in修改此航班信息输入要删除的航班信息查找此航班删除此航班i+s=cNY开始c=0|c=1c=0输入查询的航班号q输入起飞和抵达的城市输出航班号的详细信息k=0输出航班信息k=0K=0进入Dinpiao(H)进入结束YNNYNY查询操作查找航班查找航班选择查询方式c说明:此流程图中的查找航班为上面已画出的查找操作的流程开始是否找到 NY查找此日期和航班记为pY是否重输信息是否有余票是否有想订票的航班查找与p航班到达相同目的地并且在这个月的航班ca输出这些航班信息将此乘客的信息填入p航班等候乘客队列中N修改此航班的相关数据结束N订票操作YNYDinpiao(H)NY输入订票日期和航班号输出余票量a输入订票量c输出此订单的编号说明: 此流程图找的查找航班和修改航班的相关数据分别为上面已画出的查找操作和修改操作的流程。NNYY开始参数H 、t、j传入t=1?1将航线信息写入文件J=1?将乘客信息写入文件结束文件操作由于此系统流程图太多,流程图所对应的源代码较长,所占篇幅也较大,并且流程图所对应的源程序在订票系统源程序中都有,这里就不再赘述。需要说明的是插入、查找、修改和删除这些线性表的基本操作的流程图在订票系统源程序中没有单独函数,是因为此系统主要是运用线性表的基本操作解决实际问题,具体问题所对应的基本操作代码有所不同,但思维是相同的,所以这几个操作的源代码已经对应写入了其他具体操作的函数中,这里也不再给出。根据订票系统功能的需要定义了如下的结构体:typedef struct wat_ros /*等候订票乘客的信息*/ char name20;/*姓名*/ char phone15;/*等候订票乘客的联系方式*/ struct wat_ros *next;qnode,*qptr;typedef struct pqueue qptr front;/*等候替补客户名单域的头指针*/ qptr rear;/*等候替补客户名单域的属指针*/linkqueue;typedef struct ord_ros char name20;/*客户姓名*/ char IDnum20;/*客户有效证件的编号*/ char airnum7;/*航班号*/ int dpl;/*订票量*/ char piaohaio20;/票的编号,由航班号起飞日期此航班订票前的余票量 struct ord_ros *next;Lnode ,*linklist;typedef struct airline char qdname20;/*起点站名*/char zhname20;/*终点站名 */ char air_num7;/*航班号*/ char plane_num10;/*飞机型号*/ char year5; char month3; char day3;/*飞行日期*/char qhour3;char qminute3;/*起飞时间*/char jhour3;char jminute3;/*降落时间*/float zhekou;/*没有折扣为十折*/float price;/*票价*/ int tkt_amt;/*乘员定额*/ int tkt_sur;/*余票量*/ Lnode *order;/*本航班乘客名单域,指向乘客名单链表的头指针*/ linkqueue *wait;/*本航班等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/ struct airline *next;/*指向下一个结点*/lineinfo,*lineair;调试分析 测试数据及截图时间复杂度分析录入为线性表的初始化,所以时间复杂度:O(1);浏览遍历整张线性表所以时间复杂度:O(1);修改航班信息为线性表的查找、线性表的插入和线性表的删除操作,其平均移动元素个数分别为(n+1)/2、n/2、(n-1)/2,所以时间复杂度:O(n);查询为线性表的查找,所以时间复杂度:O(n);订票为线性表的查找所以时间复杂度:O(n);退票是查找两张线性表,所以时间复杂度:O(n*e);其中的n为航班总数,e为对应航班已定票人数。问题思考(1) 在事先就把航班信息写入文件,从文件中获取信息,但取数时怎样控制文件指针,也就是怎样取数的问题。(2) 输入密码时像平时在上网登录某一账号时输入密码一样显示“*”。(3) 管理员能够在系统上浏览乘客信息。解决第一个问题需要在读取文件信息时与灵活运用文件的指针的定位,在写入文件信息需严格按照一定的格式,不然文件指针不好定位;解决第二个问题用不回显接收函数getch(),然后调用printf()函数打印出一个*号;第三个问题只需在浏览操作时,设立一个管理员入口,输入管理员密码就对每条航线的乘客信息进行遍历,并把每条航班和对应的乘客信息输出。算法的改进设想 (1)在算法效率,由于此课程设计所用到的是线性表的建立、查找、插入、删除和队列的建立、插入、删除,所涉及的是查找和排序问题,所以可以在建立插入时按照起飞和抵达城市进行排序,若起飞和抵达城市相同则再按日期进行排序,查找时采用分块查找,当然要实现这些操作,对航班信息的存储应采指针数组存储。(2)在函数重组,把处理不同问题相同算法思想(如线性表的插入、删除、查找等等)写在一个函数中,其他函数要用到这种操作时只需调用这些函数,减少整个程序的代码量,方便理解、阅读和使用。课设总结体会此次课程设计我们组选了订票系统这个选题。为了实现某个功能,必须使用相应的结构体,我们首先在网上搜索了几套别人所做订票系统的课程设计,看了一下他们所定义的结构体和我们课程设计选题所要实现的功能,觉得他们的结构体相对于我们的选题来说还是有一定的缺陷。我们的选题主要运用线性结构来存储数据,进行线性表、队列的一些基本操作。根据选题要实现的功能和链式存储结构的优点,我们最终决定队列和线性表都采用链式存储结构存储,并定义相应的结构体。在敲源代码时,发现航班结构体中的已定票乘客信息和等待订票乘客信息的结构不太好操作,经过一番思考最终改为源代码中所定义的结构体。从中知道了结构体的定义决定了源程序的难易。在打程序时,没有把文件操作的代码打进源程序。在调试没有文件操作的代码时,没有很多错误,但是犯了一个大错,就是在有一个字符串的复制中使用了赋值,调试过程指出错错误半天都不知道改,后来看了整个程序才反应过来。在运行调试过程中浏览信息没有输出想要的输出结果,检查程序原来是格式控制字符串中的一个字符打成了大写;查询信息只能查询链表中的第一条航线,检查程序原来是多用了break造成过早跳出循环,不能查找后面的航线;乘客订多张票后浏览信息发现余票只减了一张,检查程序发现乘客订票后只对余票做了自减,在运行调试过程中就出现了这么些大的错误,在这过程中还对输出窗口界面做了一些调整。加入文件操作代码后进行调试,没有出现什么错误。最终运行时老在文件操作时终止程序,经过调试和自己的摸索原来是文件检测函数运用错误,改正后程序正常运行。运行程序后打开所写的文件,发现航班信息的余票量没有随乘客的订票而减少,还是初始值,这时才发现每进行一次订票后都要重新对航班信息的文件重新写入,改后最终就确定了上交源代码。在敲代码和在程序的调试、运行过程中我们发现我们半天才能想出几句语句,整个代码敲了二十几个小时,调试调了二三十个小时,主要原因使我们练得还不够,C语言功底还不是很扎实,要增加敲的代码量。数据结构是为了解决实际问题,提出了一些结构,这些东西是我们以后解决一些问题时所要用到的,所以一定要熟练掌握,要多敲代码。此次课程设计,使我们对链表和链队列的基本操作更加熟练,让我们深深地体会到要学好数据结构需要多练。附录程序说明 此课程设计程序无需安装,只需打开在VC+6.0上编译、 连接、运行即可。程序的源代码在本模块中。源代码#include #include #include typedef struct wat_ros /*等候订票乘客的信息*/ char name20;/*姓名*/ char phone15;/*等候订票乘客的联系方式*/ struct wat_ros *next;qnode,*qptr;typedef struct pqueue qptr front;/*等候替补客户名单域的头指针*/ qptr rear;/*等候替补客户名单域的属指针*/linkqueue;typedef struct ord_ros char name20;/*客户姓名*/ char IDnum20;/*客户有效证件的编号*/ char airnum7;/*航班号*/ int dpl;/*订票量*/ char piaohaio20;/票的编号,由航班号起飞日期此航班订票前的余票量 struct ord_ros *next;Lnode ,*linklist;typedef struct airline char qdname20;/*起点站名*/char zhname20;/*终点站名 */ char air_num7;/*航班号*/ char plane_num10;/*飞机型号*/ char year5; char month3; char day3;/*飞行日期*/char qhour3;char qminute3;/*起飞时间*/char jhour3;char jminute3;/*降落时间*/float zhekou;/*没有折扣为十折*/float price;/*票价*/ int tkt_amt;/*乘员定额*/ int tkt_sur;/*余票量*/ Lnode *order;/*本航班乘客名单域,指向乘客名单链表的头指针*/ linkqueue *wait;/*本航班等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/ struct airline *next;/*指向下一个结点*/lineinfo,*lineair;void Explorer(lineair H) /*浏览航线信息*/lineinfo *p;p=H-next;printf(航班号 起飞站 终点站 机型 飞行日期 起、降时间 票价 折扣 成员定额 余票量n);while(p)printf(%s %s %s %s %s/%s/%s %.2s:%.2s %.2s:%.2s %5.1f %3.1f %d %dn,p-air_num,p-qdname,p-zhname,p-plane_num,p-year,p-month,p-day,p-qhour,p-qminute,p-jhour,p-jminute,p-price,p-zhekou,p-tkt_amt,p-tkt_sur);p=p-next;int Greatelist(lineair&H,int n) /*录入*/ char a;int i;lineinfo *p;if(!(H=(lineair)malloc(sizeof(lineinfo)printf(分配空间出错); a=getchar(); return(0);H-next=NULL;if(!(H-order=(linklist)malloc(sizeof(lineinfo)printf(分配空间出错); a=getchar(); return 0;H-order-next=NULL;if(!(H-wait=(linkqueue*)malloc(sizeof(lineinfo)printf(分配空间出错); a=getchar(); return 0;H-wait-rear=H-wait-front=NULL;printf(n开始录入航班信息:n);printf(起点 终点 航班号 机型 年 月 日 起降时间 折扣 票价 乘员定额n);/*起飞时间和降落时间包含时分*/for(i=0;iqdname,p-zhname,p-air_num,p-plane_num,p-year,p-month,p-day,p-qhour,p-qminute,p-jhour,p-jminute,&p-zhekou,&p-price,&p-tkt_amt);p-tkt_sur=p-tkt_amt;if(!(p-order=(linklist)malloc(sizeof(lineinfo)printf(分配空间出错); a=getchar(); return 0; p-order-next=NULL; if(!(p-wait=(linkqueue*)malloc(sizeof(lineinfo)printf(分配空间出错); a=getchar(); return 0; p-wait-rear=p-wait-front=NULL;p-next=H-next;H-next=p;return 1;int Dinpiao(lineair H) /*订票*/int m,k=0,x,v=0,c=1,d; lineinfo *p,*t; Lnode *q;char a,*b; qnode *s; char year5; char month3; char day3;/*飞行日期*/ char air_num7;/*航班号*/p=H-next;t=H-next;printf(请输入所定的航班号,票的年、月、日:n);scanf(%s,air_num); scanf(%s,year);scanf(%s,month);scanf(%s,day);while(p)if(!(strcmp(air_num,p-air_num)&!(strcmp(year,p-year)&!(strcmp(month,p-month)&!(strcmp(day,p-day)c=0;if(p-tkt_sur) printf(此航班还有%d张票可订,请输入您要订票的张数:,p-tkt_sur); scanf(%d,&m); if(mtkt_sur) printf(您已成功订到%d张票!n请输入您的姓名:,m); if(!(q=(linklist)malloc(sizeof(Lnode) printf(分配空间出错); a=getchar(); return 0; scanf(%s,q-name); printf(请输入您的身份证号码:); scanf(%s,q-IDnum);q-dpl=m;if(!(b=(char*)malloc(sizeof(char)printf(分配空间出错);a=getchar();return 0;strcpy(q-airnum,p-air_num);itoa(p-tkt_sur,b,10); strcpy(q-piaohaio,p-air_num); strcat(q-piaohaio,p-year); strcat(q-piaohaio,p-month);strcat(q-piaohaio,p-day); strcat(q-piaohaio,b);printf(您所订票的编号:%s,q-piaohaio);p-tkt_sur-=m; q-next=p-order-next; p-order-next=q; return 1; else printf(对不起余票量不够,请选择其他航班!); k=1; if(!p-tkt_sur|k=1)printf(航班已经满仓,您可以选择以下相关航班:n); while(t) if(!(strcmp(t-year,p-year)&!(strcmp(t-month,p-month)&!(strcmp(p-qdname,t-qdname)&!(strcmp(p-zhname,t-zhname)&p-tkt_sur)printf(航班号 机型 飞行日期 起降时间 票价 折扣 余票量n%s %s %s/%s/%s %s:%s %s:%s %5.1f %3.1f %dn ,t-air_num,t-plane_num,t-year,t-month,t-day,t-qhour,t-qminute,t-jhour,t-jminute,t-price,t-zhekou,t-tkt_sur); t=t-next;printf(有没有您可以乘坐的航班t0 没有 t 非0整数 有t请选择:);scanf(%d,&x);if(!x)printf(请输入您的姓名、联系方式n);if(!(s=(qptr)malloc(sizeof(qnode)printf(分配空间出错!);a=getchar();return 0;scanf(%s,s-name);scanf(%s,s-phone);s-next=NULL;if(p-wait-front=NULL&p-wait-rear=NULL) /*等候订票队列为空*/p-wait-rear=p-wait-front=s;elses-next=p-wait-rear-next;p-wait-rear-next=s;p-wait-rear=s;printf(如果有人退票,我们会在第一时间联系您!n);return 0;else return Dinpiao(H);p=p-next;if(c)printf(没有您所指定的航班,0 菜单栏 非0数字 重新输入航班号,票的年、月、日n);scanf(%d,&d);if(d)return Dinpiao(H);elsereturn 0;return 1;int Locateair(lineair H) /*查询*/int m,k=1,t; lineinfo *p; char qdname20;/*起点站名*/char zhname20;/*终点站名*/ char air_num7;/*航班号*/p=H-next;printf(输入0按航班号查询,输入1按起飞抵达城市查询,请输入您的选择:);scanf(%d,&m);while(m1)printf(请您重新选择,输入0按航班号查询,输入1按起飞抵达城市查询:); scanf(%d,&m);if(m)printf(请分别输入起飞抵达城市:n);scanf(%s,qdname);scanf(%s,zhname);printf(机型 航班号 飞行日期 起降时间 票价 折扣 余票量n);while(p)if(!(strcmp(p-qdname,qdname)&!(strcmp(p-zhname,zhname)printf(%s %s %s/%s/%s %.2s:%.2s %.2s:%.2s %5.1f %3.1f %dn ,p-plane_num,p-air_num,p-year,p-month,p-day,p-qhour,p-qminute,p-jhour,p-jminute,p-price,p-zhekou,p-tkt_sur);k=0;p=p-next;elseprintf(请输入要查询的航班号:);scanf(%s,air_num);while(p)if(!(strcmp(p-air_num,air_num)printf(机型 航班号 起飞城市 抵达城市 飞行日期 起降时间 票价 折扣 余票量n%s %s %s %s %s /%s/%s %.2s:%.2s %.2s:%.2s %5.1f %3.1f %dn ,p-plane_num,p-air_num,p-qdname,p-zhname,p-year,p-month,p-day,p-qhour,p-qminute,p-jhour,p-jminute,p-price,p-zhekou,p-tkt_sur);k=0;p=p-next;if(k)printf(没有您要查询的航线!n);return 0;elseprintf(有没有您要订票的航班!n);doprintf(1有 0没有 请选择:n);scanf(%d,&t);while(!(t=1)&!(t=0);if(t)returnDinpiao(H);elsereturn 0;int Tuipiao(lineair H) /退票lineinfo *p;int m=0,t;Lnode *q,*f;char b20;scanf(%s,b);p=H-next;while(p)q=p-order-next;if(!(strcmp(b,q-piaohaio)m=1;p-order-next=q-next;t=q-dpl;free(q);break;while(q-next)if(!(strcmp(b,q-next-piaohaio)m=1;f=q-next;t=f-dpl;q-next=f-next;free(f);break;q=q-next;if(m)break;p=p-next;if(!m)printf(对不起没有搜索到您的订单,请重新输入订单编号!);Tuipiao(H);elseprintf(您已成功退票!n);p-tkt_sur+=t;if(p-wait-rear=p-wait-front) return 1;else/机场订票系统服务人员马上通知本次航班等候订票乘客printf(通知等候订票的乘客,通知成功后按任意键n);getchar();return Dinpiao(H);int Alter(lineair H,char b) /*修改航班*/lineinfo *p,*q; char year5;char a,s20; char month3; char day3;/*飞行日期*/ char air_num7;/*航班号*/int c,i,n,d,r=0;printf(请输入密码:n);scanf(%s,s);if(strcmp(s,b)printf(输入密码错误!);return 0;doprintf(1 添加航线 0 对已有的航班信息进行改动(修改和删除),请选择:);scanf(%d,&c);while(c!=1&!(c=0);if(c)printf(请输入您要添加航班的条数);scanf(%d,&n);printf(起点 终点 航班号 机型 年 月 日 起降时间 折扣 票价 乘员定额n);/*起飞时间和降落时间包含时 分*/for(i=0;iqdname,p-zhname,p-air_num,p-plane_num,p-year,p-month,p-day,p-qhour,p-qminute,p-jhour,p-jminute,&p-zhekou,&p-price,&p-tkt_amt); if(!(p-order=(linklist)malloc(sizeof(lineinfo)printf(分配空间出错); a=getchar(); return 0; p-order-next=NULL; if(!(p-wait=(linkqueue*)malloc(sizeof(lineinfo) printf(分配空间出错); a=getchar(); return 0; p-tkt_sur=p-tkt_amt; p-wait-front=NULL; p-wait-rear=p-wait-front; p-next=H-next; H-next=p;printf(已成功添加%d条航线n,n);elsedoprintf(1 删除航班 0 修改航班信息,请选择:);scanf(%d,&d);while(d!=1&d!=0);if(d)printf(请输入要删除的航班条数:);scanf(%d,&n);for(i=1;inext;q=H;while(p)if(!(strcmp(air_num,p-air_num)&!(strcmp(year,p-year)&!(strcmp(month,p-month)&!(strcmp(day,p-day)break;q=p;p=p-next;if(!p)printf(没有您要删除的航线,请核对后再进行删除!n);r+;elseq-next=p-next;printf(已成功删除第%d条航线n,n);free(p);if(rn)return 1;elsereturn 0;else printf(请输入要修改航班要修改航班的条数:); scanf(%d,&n); for(i=1;inext; while(p) if(!(strcmp(air_num,p-air_num)&!(strcmp(year,p-year)&!(strcmp(month,p-month)&!(strcmp(day,p-day) break; p=p-next; if(!p) printf(没有您要修改的航线,请核对后再进行修改!n); r+; else printf(请输入此修改航班的航班信息!n); printf(起点 终点 航班号 机型 年、月、日 起降时间 折扣 票价 乘员定额n);/*起飞时间和降落时间包含时分*/ scanf(%s%s%s%s%s%s%s%s%s%s%s%f%f%d,p-qdname,p-zhname,p-air_num,p-plane_num,p-year,p-month,p-day,p-qhour,p-qminute,p-jhour,p-jminute,&p-zhekou,&p-price,&p-tkt_amt); printf(您已成功修改了第%d条航线n,i); if(rnext;fp=fopen(航班信息.txt,w);fprintf(fp,%s%c%s%c%s%c%c%s%c%s%c%s%c%s%c%s%s%c%s%s%c%s%c%s%c%s%c%s%c,航班号,32,起点,32,终点,32,32,机型,32,年,32,月,32,日,32,起时,分,32,降时,分,32,票价,32,折扣,32,定员,32,余票量,32);while(p)fprintf(fp,%c%s%c%s%c%s%c%s%c%s%c%s%c%s%c%.2s%c%.2s%c%.2s%c%.2s%c%5.1f%c%3.1f%c%c%d%c%c%c%d%c,n, p-air_num,32,p-qdname,32,p-zhname,32,p-plane_num,32,p-year,p-month,p-day,32,p-qhour,:,p-qminute,32,p-jhour,:,p-jminute,32,p-price,32,p-zhekou,32,32,p-tkt_amt,32,32,32,p-tkt_sur,n);p=p-next;a=ferror(fp);fclose(fp); if(j)c=1;fp=fopen(订票信息.txt,w);p=H-next;fprintf(fp,%s%c%s%c%s%c%s%c%s%c,姓名,t,证件号码,t,航班号,32,订票量,32,编号,n);while(p)if(p-order-next)q=p-order-next;while(q)fprintf(fp,%c%s%c%s%c%s%c%d%c%s%c,n,q-name,32,q-IDnum,32,q-airnum,32,q-dpl,32,q-piaohaio,n);q=q-next;p=p-next;b=ferror(fp);fclose(fp); return (a&b&c);void main() int i,n,j,k,m=0,t=1;lineair H;char a20;printf(请设置管理员密码:n);scanf(%s,a);printf(n 欢迎进入订票系统n);doj=0;k=0;printf(n=订票系统菜单=n); printf(*n); printf(*1.录入航线信息*n); printf(*2.浏览航线信*n); printf(*3.修改航班信息*n); printf(*4.查询航线*n); printf(*5.办理订票业务*n); printf(*6.办理退票业务*n); printf(*0.退出系统*n); printf(*n); printf(请在0-6中选择您需要的服务按回车键结束:nn);scanf(%d,&i);switch(i)case 1: printf(请输入要录入航线的条数:); scanf(%d,&n); if(Greatelist(H, n) m=1; if(File(H,m,j)printf(航班信息数据存储出错,请检查程序后重新录入信息!n);break; case 2:if(m)Explorer(H);elseprintf(请录入航班信息!n);break; case 3: if(m) k=Alter(H,a); else printf(请录入航班信息!n);if(File(H,k,j) printf(航班信息数据存储出错,请检查程序后重新录入信息!n); break; case 4: if(m) j=Locateair(H); else printf(请录入航班信息!n); if(File(H,m,j) printf(数据存储出错,请检查程序!n); break; case 5:
展开阅读全文