当前位置:文档之家› 数据结构课程设计航空订票系统

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

目录总体设计 (2)概要设计 (2)详细设计 (3)调试分析 (11)测试数据及截图 (11)时间复杂度分析 (15)问题思考 (15)算法的改进设想 (15)课设总结体会 (15)附录 (17)程序说明 (17)源代码 (17)主要参考文献 (30)总体设计通过此系统可以实现如下功能:1).录入:可以录入航班情况(数据存储在一个数据文件中)2).查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3).订票:(订票情况存在一个数据文件中)可以订票,如果该航班已经无票,可以提供相关可选择航班;4).退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

5).修改航班信息:当航班信息改变可以修改航班数据文件概要设计每个模块的算法设计说明如下:(1)录入模块:查找单链表的链尾,在链头插入一个“航班信息”的新结点。

(2)浏览模块:顺着单链表输出航班信息。

(3)修改模块:输入密码,确认是否有权限对航班信息进行修改,有则进行修改,否则不能修改。

提供两种修改方式:添加航班和对已有的航班信息进行改动(修改和删除),1添加航线,0对已有的航班信息进行改动(修改和删除)。

对已有的航班信息进行改动(修改和删除):顺着单链表查找,若找到则进行相关操作。

(4)查询模块:提供两种查方式:按航号和起飞抵达城市查询,0代表按航号查询,1代表按起飞抵达城市查询。

顺着单链表查找,如果与航班号(起飞抵达城市)一致,输出相关信息并询问乘客是否要订票,若订进入订票模块;否则,查询不成功。

(5)订票模块:查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功;否则查找这个月此乘客起飞城市和降落城市的有空位航班,供乘客选择,若有则订票,若无则订票不成功并把此乘客的信息录入此航班等候订票队列中,退出订票。

(6)退票模块:输入要退票的乘客姓名以及所退票的编号,查找乘客资料的链表中是否有这位乘客,有则删去此结点,并判断是否有等候订票的乘客(有则通知等候订票乘客订票,无则余票加乘客所退票数);无则退票失败。

(7)文件模块:顺着单链表把链表的信息写入文件。

详细设计将航线信息写入文件将乘客信息写入文件修改操作删除操作查找操作录入操作浏览操作查询操作说明:订票操作文件操作由于此系统流程图太多,流程图所对应的源代码较长,所占篇幅也较大,并且流程图所对应的源程序在订票系统源程序中都有,这里就不再赘述。

需要说明的是插入、查找、修改和删除这些线性表的基本操作的流程图在订票系统源程序中没有单独函数,是因为此系统主要是运用线性表的基本操作解决实际问题,具体问题所对应的基本操作代码有所不同,但思维是相同的,所以这几个操作的源代码已经对应写入了其他具体操作的函数中,这里也不再给出。

根据订票系统功能的需要定义了如下的结构体:typedef struct wat_ros /*等候订票乘客的信息*/{ char name[20];/*姓名*/char phone[15];/*等候订票乘客的联系方式*/struct wat_ros *next;}qnode,*qptr;typedef struct pqueue{ qptr front;/*等候替补客户名单域的头指针*/qptr rear;/*等候替补客户名单域的属指针*/}linkqueue;typedef struct ord_ros{ char name[20];/*客户姓名*/char IDnum[20];/*客户有效证件的编号*/char airnum[7];/*航班号*/int dpl;/*订票量*/char piaohaio[20];//票的编号,由航班号起飞日期此航班订票前的余票量struct ord_ros *next;}Lnode ,*linklist;typedef struct airline{ char qdname[20];/*起点站名*/char zhname[20];/*终点站名*/char air_num[7];/*航班号*/char plane_num[10];/*飞机型号*/char year[5];char month[3];char day[3];/*飞行日期*/char qhour[3];char qminute[3];/*起飞时间*/char jhour[3];char jminute[3];/*降落时间*/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 <stdio.h>#include <stdlib.h>#include <string.h>typedef struct wat_ros /*等候订票乘客的信息*/{ char name[20];/*姓名*/char phone[15];/*等候订票乘客的联系方式*/struct wat_ros *next;}qnode,*qptr;typedef struct pqueue{ qptr front;/*等候替补客户名单域的头指针*/qptr rear;/*等候替补客户名单域的属指针*/}linkqueue;typedef struct ord_ros{ char name[20];/*客户姓名*/char IDnum[20];/*客户有效证件的编号*/char airnum[7];/*航班号*/int dpl;/*订票量*/char piaohaio[20];//票的编号,由航班号起飞日期此航班订票前的余票量struct ord_ros *next;}Lnode ,*linklist;typedef struct airline{ char qdname[20];/*起点站名*/char zhname[20];/*终点站名*/char air_num[7];/*航班号*/char plane_num[10];/*飞机型号*/char year[5];char month[3];char day[3];/*飞行日期*/char qhour[3];char qminute[3];/*起飞时间*/char jhour[3];char jminute[3];/*降落时间*/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 %d\n",p->air_num,p->qdna me,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;i<n;i++){if(!(p=(lineair)malloc(sizeof(lineinfo)))){ printf("分配空间出错");a=getchar();return 0;}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->mon th,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 year[5];char month[3];char day[3];/*飞行日期*/char air_num[7];/*航班号*/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(m<=p->tkt_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->zhna me,t->zhname))&&p->tkt_sur){printf("航班号机型飞行日期起降时间票价折扣余票量\n%s %s %s/%s/%s %s:%s %s:%s %5.1f %3.1f %d\n",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;else{s->next=p->wait->rear->next;p->wait->rear->next=s;p->wait->rear=s;}printf("如果有人退票,我们会在第一时间联系您!\n");return 0;}elsereturn 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 qdname[20];/*起点站名*/char zhname[20];/*终点站名*/char air_num[7];/*航班号*/p=H->next;printf("输入0按航班号查询,输入1按起飞抵达城市查询,请输入您的选择:");scanf("%d",&m);while(m<0||m>1){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 %d\n",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_s ur);k=0;}p=p->next;}}else{printf("请输入要查询的航班号:");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 %d\n",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;}else{printf("有没有您要订票的航班!\n");do{printf("1有0没有请选择:\n");scanf("%d",&t);}while(!(t==1)&&!(t==0));if(t)return Dinpiao(H);elsereturn 0;}}int Tuipiao(lineair H) //退票{lineinfo *p;int m=0,t;Lnode *q,*f;char b[20];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);}else{printf("您已成功退票!\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 year[5];char a,s[20];char month[3];char day[3];/*飞行日期*/char air_num[7];/*航班号*/int c,i,n,d,r=0;printf("请输入密码:\n");scanf("%s",s);if(strcmp(s,b)){printf("输入密码错误!");return 0;}do{printf("1 添加航线0 对已有的航班信息进行改动(修改和删除),请选择:");scanf("%d",&c);}while(c!=1&&!(c==0));if(c){printf("请输入您要添加航班的条数");scanf("%d",&n);printf("起点终点航班号机型年月日起降时间折扣票价乘员定额\n");/*起飞时间和降落时间包含时分*/for(i=0;i<n;i++){if(!(p=(lineair)malloc(sizeof(lineinfo)))){printf("分配空间出错!");a=getchar();return 0;}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->mon th,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);}else{do{printf("1 删除航班0 修改航班信息,请选择:");scanf("%d",&d);}while(d!=1&&d!=0);if(d){printf("请输入要删除的航班条数:");scanf("%d",&n);for(i=1;i<=n;i++){printf("请输入第%d条要删除航班的航班号和飞行日期(年、月、日)!\n",i);scanf("%s%s%s%s",air_num,year,month,day);p=H->next;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++;}else{q->next=p->next;printf("已成功删除第%d条航线\n",n);free(p);}}if(r<n)return 1;elsereturn 0;}else{printf("请输入要修改航班要修改航班的条数:");scanf("%d",&n);for(i=1;i<=n;i++){printf("请输入第%d条要修改航班的航班号和此航班的飞行日期(年、月、日)\n",i);scanf("%s%s%s%s",air_num,year,month,day);p=H->next;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(r<n)return 1;elsereturn 0;}}}int File(lineair H,int t,int j) /*文件操作*/{int a=1,b=1,c=0;FILE *fp;lineinfo *p;Lnode *q;if(t){c=1;p=H->next;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 a[20];printf("请设置管理员密码:\n");scanf("%s",a);printf("\n 欢迎进入订票系统\n");do{j=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中选择您需要的服务按回车键结束:\n\n");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);elseprintf("请录入航班信息!\n");if(File(H,k,j))printf("航班信息数据存储出错,请检查程序后重新录入信息!\n");break;}case 4:{if(m)j=Locateair(H);elseprintf("请录入航班信息!\n");if(File(H,m,j))printf("数据存储出错,请检查程序!\n");break;}case 5:{if(m)j=Dinpiao(H);elseprintf("请录入航班信息!\n");if(File(H,m,j))printf("数据存储出错,请检查程序!\n");break;}case 6:{if(m){printf("请输入您所退票的订单编号:");j=Tuipiao(H);}elseprintf("请录入航班信息!\n");if(File(H,m,j))printf("数据存储出错,请检查程序!\n");break;}case 0:t=0;break;default:printf("对不起,没有您需要的服务,请重新选择!\n");}}while(t);printf("\n谢谢使用本系统,欢迎您下次再次使用!\n");free(H);}主要参考文献(1)《C语言程序设计(第三版)》冾汗•合孜尔编著北京:中国铁道出版社(2)《数据结构理论与实践》杨永斌编著天津:天津科学技术出版社。

相关主题