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

合集下载

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

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

—航空客运订票系统的设计与实现一、设计目的:设计一个航班订票系统,提高对信息管理、信息查找和排序算法的应用能力。

二、问题的描述:航空客运订票的业务包括查询航线和客票预定的信、客票预定和办理退票等,设计一个程序以使上述任务借助计算机完成。

三、数据结构的设计:;数之间的关系:函数间关系图如下:,【-函数调用图如上,各个函数模块化设计,函数之间的数据传递少均通过函数间相互调用,把函数之间联系起来,这样函数的重用率高,设计代码的效率更高,用很好的实用性,很好的兼容性。

五、界面设计:Main 函数中通过switch 语句对于所有的模块进行整合。

用户通过键盘通过提示输入相关信息。

对航班信息的航线查询,通过城市查询航班,订票业务,退票业务,查询已定客户信息。

六、程序设计:函数流程图:/menu display refund savefind函数refund函数list函数search函数increlist函数order 函数menu函数increqueue函数display函数print函数save函数main函数流程图如上问题:{1.问题1(1)问题描述:输入时字符数组输入不稳定。

(2)解决办法:在反复尝试中还没发现,后来在同学帮助下发现是一些基础问题,对于链表中数组字符的如scanf("%s",&p->name);这样是有问题的.虽然是一个会的人看似很简单的问题,但对于意念中存在看这样问题的人是很严重的。

由此要多多与同学交流,特别是编程的思想理念,很是重要。

对于个人存在的基本被错误要通过多编程序发现,并及时改正。

细节很决定成败。

2.问题2(1)问题描述:对于界面该觉很不舒服(2)解决办法:通过网络上搜索,查询,发现界面的模块设计好之后程序的界面要精练实用,让用户操作方便,可通过switch很好的实现我的想法。

3.问题3(1)问题描述:对于姓名的查找不知如何实现@(2)解决办法:通过查资料,看c课本发现一很好用的字符比较函数strcmp;通过字符比较是否等于0来实现对姓名的查找。

数据结构课程设计 飞机订票系统

数据结构课程设计 飞机订票系统

飞机订票系统1. 需求分析描述要求编程解决的问题。

以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定:(a) 输入的形式和输入值的范围;(b) 输出的形式;(c) 程序所能达到的功能;(d) 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。

2. 概要设计给出程序要达到的具体的要求。

描述解决相应问题算法的设计思想。

描述所设计程序的各个模块(即函数)功能。

说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。

3. 详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出流程或伪码算法;对主程序和其他模块也都需要写出流程或伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数的调用关系图。

给出所使用的基本抽象数据类型,所定义的具体问题的数据类型,以及新定义的抽象数据类型。

设计出良好的输入输出界面(清晰易懂)。

4. 调试分析内容包括:(a)调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;(b)算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;(c)经验和体会等。

5. 用户使用说明说明如何使用你编写的程序,详细列出每一步的操作步骤。

6. 测试结果设计测试数据,或具体给出测试数据。

要求测试数据能全面地测试所设计程序的功能。

列出你的测试结果,包括输入和输出。

这里的测试数据应该完整和严格,最好多于需求分析中所列。

7. 测试情况:给出程序的测试情况,并分析运行结果附录(非必须,按照需要添加)带注释的源程序。

可以只列出程序文件名的清单。

需求分析任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

数据结构课程设计飞机订票系统

数据结构课程设计飞机订票系统

课程设计(论文)课程设计(论文)题目:飞机订票系统院(系):专业班级:姓名:学号:指导教师:2012年9 月18日课程设计(论文)任务书专业班级:学生姓名:指导教师(签名):一、课程设计(论文)题目飞机订票系统:设计航班信息,订票信息。

二、本次课程设计(论文)应达到的目的数据结构是实践性很强的课程。

课程设计是加强学生实践能力的一个强有力手段。

课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。

严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。

本题目要达到目的:熟练掌握线性表的基本操作在两种存储结构上的实现。

三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等)输入数据:航班号;起降时间;抵达城市;票价;票价折扣;1. 录入航班情况(数据结构、具体数据自定);2. 输入航班号,查询某个航线的情况;3. 输入起飞抵达城市,查询飞机航班情况;4. 客户姓名,证件号,订票数量,航班情况,订单编号(证件号唯一);5. 订票:如果该航班已经无票,可以提供相关可选择航班(结构自己设定);6. 退票:退票后修改相关数据文件;7. 修改航班信息:当航班信息改变可以修改航班数据文件。

四、应收集的资料及主要参考文献:1.数据结构与算法分析(C++版)(第二版)影印版 2005.72.数据结构与算法,科学出版社,2005.08;赵文静等编著3.数据结构-C++语言描述,西安交通大学出版社,1999.01,赵文静编著4.严蔚敏等著,《数据结构》,清华大学出版社,20035.冯博琴等编著,《软件技术基础》(修改版),西安交通大学出版社,1997五、审核批准意见教研室主任(签字)摘要随着全球经济和信息的发展,人们选择乘坐飞机外出的需求日益增加。

随着航空客运业务越来越发达,加上网络日益普及,所以良好的飞机场订票系统不仅方便人们订购飞机票,而且减缓了购票点的压力,具有一定的社会效益。

数据结构课程设计 航空订票系统(C++)

数据结构课程设计 航空订票系统(C++)
int remainber;//余票
struct booknode
{
public:
char name[10];//乘客姓名
int ticketnum;//票数
int rate;//舱位等级
}b[40];
struct sparenode
{
public:
char name[10];//乘客姓名
int ticketnum;//票数
char flightname[10];//航班名
int flightnum;//航班号
int day;//飞行日期
int limitednum;//乘员限额
int remainber;//余票
struct booknode
{
public:
char name[10];//乘客姓名
int ticketnum;//票数
class transportNode//航线类节点
{
friend class transport;
private:
char finish[10];//目的地
char flightname[10];//航班名
int flightnum;//航班号
int day;//飞行日期
int limitednum;//乘员限额
上海电力学院
数据结构C++课程设计
题 目:航空客运订票系统
学生姓名:范晓宁
学 号:20103285
院 系:计算机与信息工程学院
专业年级:信息安全2010级
2012 年 6 月 29 日
一、设计题目
航空客运订票的业务活动包括;查询航线、客票预订和办理退票等。试设计一个航空客 运订票系统,以使上述业务可以借助计算机来完成。

(完整word版)数据结构课程设计 航空客运订票系统分解

(完整word版)数据结构课程设计 航空客运订票系统分解

《数据结构课程设计》报告设计题目航空客运订票系统专业班级学号姓名电话完成日期2017.04.13目录1. 问题描述 (2)2. 系统设计 (2)3. 数据结构与算法描述 (4)4. 测试结果与分析 (6)5. 总结 (10)6. 参考文献 (10)附录程序源代码 (10)课程设计题目1. 问题描述基于人们对航空客运使用需求的日益提高,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序是为实现航班情况的查询,订票,退票以及客户信息浏览与票务信息浏览等基本功能。

2. 系统设计2.1 设计目标(1)可以浏览航线信息;包括终点站名、航班号、飞机号、飞行日期、乘员定额和余票量;(2)可以浏览已订票客户信息;包括客户姓名、订票数额和舱位等级;(3)可以查询航线;包括终点站名、航班号、飞机号、飞行日期、乘员定额和余票量;(4)可以办理订票业务;需提供航班号、所需票数、客户姓名和舱位等级,生成客户座位号;(5)可以办理退票业务;提供航班号和客户姓名,即可退票;(6)可以查看剩余票数;(7)要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。

2.2 设计思想(1)运行环境(软硬件环境):DEV-C++;(2)输入的形式和输入值的范围:由航空公司输入航线情况并以单链表的形式存储在内存里面;(3)输出的形式描述:通过客户的输入,输出相应内容;(4)功能描述:用户可通过本系统实现对航班的查询、订票和退票功能。

2.3 系统模块划分2.3.1主函数输出菜单界面。

输入指令,显示,敲击回车开始工作。

2.3.2浏览航线信息编写void list()函数实现打印全部航线信息的功能,调用void display()函数实现打印struct airline链表中存储的航线的基本信息的功能。

2.3.2浏览已订票客户信息编写void prtlink()函数实现打印订票乘员名单域的客户名单信息的功能,调用find()函数查询并以指针形式返回。

数据结构课程设计飞机订票系统

数据结构课程设计飞机订票系统

订票系统1.需求分析任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;2.概要设计在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。

主菜单0 1 2 3 4 5 6 7 8 9输入航班的信息列出航班的信息按航班号查询航班信息按城市来查询航班订票程序退票系统修改飞机航班的信息保存文件读取文件、下载文件退出详细设计3.源程序/******头文件(.h)***********/#include <stdio.h> /*I/O函数*/#include <stdlib.h> /*其它说明*/#include <string.h> /*字符串函数*/#include <conio.h> /*屏幕操作函数*/ #include <ctype.h> /*字符操作函数*/#define N 20#define Q 40 /*定义常数表示记录数*//*定义数据结构*//*乘客信息*/typedef struct{char number[10];/*编号*/char name[10]; /*姓名*/char id[20]; /*证件号*/int count; /*订票数*/char flightname[10];/*乘坐航班号*/}GUEST;/*航班信息*/typedef struct{char planenumber[10];/*航班号*/char city1[20]; /*起飞城市*/char city2[20]; /*抵达城市*/char time1[20]; /*起飞时间*/char time2[20]; /*降落时间*/int room; /*舱位数*/char price[5]; /*票价*/char discount[5]; /*折扣*/GUEST guest[25];int sit;}FLY;/*菜单函数,函数返回值为整数,代表所选的菜单项*/ menu_select(){char s[80];int c;gotoxy(1,25);/*将光标定为在第25行,第1列*/printf("press any key enter menu......\n");/*提示压任意键继续*/getch(); /*读入任意字符*/clrscr(); /*清屏*/gotoxy(1,1);printf(" Welcome to\n\n");printf(" Tickets Booking System\n\n");printf("********************MENU*********************\n\n");printf(" 0. Enter flight record\n");printf(" 1. List the flight information\n");printf(" 2. Search flightnumber\n");printf(" 3. Search city\n");printf(" 4. Book the ticket\n");printf(" 5. Quit the ticket\n");printf(" 6. Channge the flight information\n");printf(" 7. Save the file\n");printf(" 8. Load the file\n");printf(" 9. exit\n");printf("***********************************************\n");do{printf("\n Enter you choice(0~9):"); /*提示输入选项*/scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/ }while(c<0||c>9); /*选择项不在0~9之间重输*/return c; /*返回选择项,主程序根据该数调用相应的函数*/ }/*输入函数*/int enter(FLY t[]){int i,k,n,m,w,j;char *s;clrscr(); /*清屏*/printf("input the flight's count(n<=40):");/*输入航线总数*/ scanf("%d",&n);while(n>40||n<0){clrscr();printf("input error!!!input again(0<n<=40):");/*输入航线总数*/scanf("%d",&n);}printf(" input the flight's information\n\n");/*提示信息*/printf("flightname start-city end-city start-time end-time room price discount\n");printf("------------------------------------------------------------------------------\ n");for(i=0;i<n;i++){scanf("%s",t[i].planenumber);/*输入姓名*/gotoxy(13,6+i);/*光标跳到地址栏*/scanf("%s",t[i].city1);/*输入起飞城市*/gotoxy(25,6+i);scanf("%s",t[i].city2);/*输入降落城市*/gotoxy(36,6+i);scanf("%s",t[i].time1);/*输入起飞时间*/gotoxy(47,6+i);scanf("%s",t[i].time2);/*输入降落时间*/gotoxy(57,6+i);scanf("%d",&t[i].room);/*输入舱位数*/gotoxy(64,6+i);scanf("%s",t[i].price);/*输入票价*/gotoxy(73,6+i);scanf("%s",t[i].discount);/*输入折扣*/}printf("-----------------------------------------------------------------------------\n ");for(i=0;i<n;i++)t[i].sit=0;return n; /*返回记录条数*/}/*显示记录,参数为记录数组和记录条数*/void list(FLY t[],int n){int i;clrscr();printf("flightname start-city end-city start-time end-time room price discount\n");printf("------------------------------------------------------------------------------\ n");for(i=0;i<n;i++)printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumb er,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);printf("************************end*******************\n");}/*按航班号查找记录*/void search1(FLY t[],int n){char s[20]; /*保存待查找航班名字符串*/int i;clrscr(); /*清屏*/printf("please input the flightname that you want to search:");scanf("%s",s); /*输入待查找航班名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/ }if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("flightname start-city end-city start-time end-time room price discount\n"); /*显示记录*/printf("------------------------------------------------------------------------------\ n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumb er,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);}}/*按起降城市查找记录*/void search2(FLY t[],int n){char s1[20];char s2[20];int i;clrscr(); /*清屏*/printf("please input the start-city:");scanf("%s",s1); /*输入起飞城市名*/printf("please input the end-city:");scanf("%s",s2); /*输入降落城市名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if((strcmp(s1,t[i].city1)==0)&&(strcmp(s2,t[i].city2)==0)) /*记录中的城市和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/ }if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("flightname start-city end-city start-time end-time room price discount\n"); /*找到,显示记录*/printf("------------------------------------------------------------------------------\n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumb er,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);}}/*订票*/void book(FLY t[],int n){char s[20],number1[10],name1[10],id1[20],flightname1[10];int i,j=0,m,k,count1;clrscr(); /*清屏*/printf("How many tickets do you want to book:");scanf("%d",&m);printf("number name ID book-count flightname\n"); /*提示信息*/printf("------------------------------------------------------------\n");for(k=0;k<m;k++){scanf("%s",number1);gotoxy(13,4+k);/*光标跳到地址栏*/scanf("%s",name1);/*输入订票客户姓名*/gotoxy(25,4+k);scanf("%s",id1);/*输入证件号*/gotoxy(43,4+k);scanf("%d",&count1);/*输入订票票数*/gotoxy(53,4+k);scanf("%s",flightname1);/*输入航班号*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(flightname1,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/{j=t[i].sit;strcpy(t[i].guest[j].number,number1);strcpy(t[i].guest[j].name,name1);strcpy(t[i].guest[j].id,id1);t[i].guest[j].count=count1;strcpy(t[i].guest[j].flightname,flightname1);t[i].room=t[i].room-count1;t[i].sit++;break; /*相等,则返回该记录的下标号,程序提前结结束*/}}if(i>n-1) /*如果整数i值大于n-1,说明没找到*/{printf("Sorry!No this flight\n");m=m+2;k++;}}}/*退票*/void quit(FLY t[],int n){char s1[20],s2[20]; /*保存待查找航班名和证件号字符串*/int i,k,j,h,l,ch;clrscr(); /*清屏*/printf("please input the flightname that you want to quit:");scanf("%s",s1); /*输入待查找航标名*/printf("please input the your id:");scanf("%s",s2); /*输入待查找证件号*/printf("number name ID book-count flightname\n"); /*显示提示*/printf("------------------------------------------------------------\n");for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{for(j=0;j<t[i].sit;j++)if((strcmp(s1,t[i].guest[j].flightname)==0)&&(strcmp(s2,t[i].guest[j].id)= =0)){printf("%-11s%-16s%-16s%-14d%-10s\n",t[i].guest[j].number,t[i].guest[j ].name,t[i].guest[j].id,t[i].guest[j].count,t[i].guest[j].flightname);t[i].room=t[i].room+t[i].guest[j].count;l=j;h=i;break;}}i=h;if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("Are you sure delete it(1/0)\n"); /*确认是否要删除*/scanf("%d",&ch); /*输入一个整数0或1*/if(ch==1) /*如果确认删除整数为1*/{for(k=l+1;k<t[i].sit;k++){strcpy(t[i].guest[k-1].number,t[i].guest[k].number); /*将后一条记录的姓名拷贝到前一条*/strcpy(t[i].guest[k-1].name,t[i].guest[k].name);strcpy(t[i].guest[k-1].id,t[i].guest[k].id);t[i].guest[k-1].count=t[i].guest[k].count;strcpy(t[i].guest[k-1].flightname,t[i].guest[k].flightname);}t[i].sit--;}printf("quit success!!\n");/*提示退票成功*/}}/*修改航班信息*/void channge(FLY t[],int n){char s[20]; /*要删除记录的姓名*/int i,j;clrscr(); /*清屏*/printf("please input the flightname that you want to channge:"); /*提示信息*/scanf("%s",s);/*输入航班名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/ }if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("flightname start-city end-city start-time end-time room price discount\n"); /*找到,显示原先记录*/printf("------------------------------------------------------------------------------\ n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumber,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);printf("please input the new information:\n");scanf("%s",t[i].planenumber);/*输入航班名*/gotoxy(13,6+i);/*光标跳到地址栏*/scanf("%s",t[i].city1);/*输入起始城市*/gotoxy(25,6+i);scanf("%s",t[i].city2);/*输入终点城市*/gotoxy(35,6+i);scanf("%s",t[i].time1);/*输入起飞时间*/gotoxy(47,6+i);scanf("%s",t[i].time2);/*输入降落时间*/gotoxy(57,6+i);scanf("%d",t[i].room);/*输入座位号*/gotoxy(64,6+i);scanf("%s",t[i].price);/*输入票价*/gotoxy(71,6+i);scanf("%s",t[i].discount);/*输入折扣*/}}/*保存资料*/void save(FLY t[],int n){int i,j;FILE *fp; /*指向文件的指针*/if((fp=fopen("record1.txt","wb"))==NULL) /*打开文件,并判断打开是否正常*/{printf("can not open file\n");/*没打开*/exit(1); /*退出*/}printf("\nSaving file\n"); /*输出提示信息*/fprintf(fp,"%d",n); /*将记录数写入文件*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/for(i=0;i<n;i++){fprintf(fp,"%s %s %s %s %s %d %s %s",t[i] .planenumber,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i ].discount);fprintf(fp,"\r\n"); /*将换行符号写入文件*/fprintf(fp,"%d",t[i].sit); /*将记录数写入文件*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/for(j=0;j<t[i].sit;j++){fprintf(fp,"%s %s %s %d %s",t[i].guest[j].number,t[i].gu est[j].name,t[i].guest[j].id,t[i].guest[j].count,t[i].guest[j].flightname);/*格式写入记录*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/}}fclose(fp);/*关闭文件*/printf("****save success***\n"); /*显示保存成功*/}/*读入函数,参数为结构体数组*/int load(FLY t[]){int i,n,j;FILE *fp; /*指向文件的指针*/if((fp=fopen("record1.txt","rb"))==NULL)/*打开文件*/{printf("can not open file\n"); /*不能打开*/exit(1); /*退出*/}fscanf(fp,"%d",&n); /*读入记录数*/for(i=0;i<n;i++){fscanf(fp,"%s %s %s %s %s %d %s %s",t[ i].planenumber,t[i].city1,t[i].city2,t[i].time1,t[i].time2,&t[i].room,t[i].pric e,t[i].discount);fscanf(fp,"%d",&t[i].sit); /*读入记录数*/for(j=0;j<t[i].sit;j++)fscanf(fp,"%s %s %s %d %s",t[i].guest[j].number,t[i].gues t[j].name,t[i].guest[j].id,&t[i].guest[j].count,t[i].guest[j].flightname); /*按格式读入记录*/}fclose(fp); /*关闭文件*/printf("You have success read data from file!!!\n\n\n\n"); /*显示保存成功*/return n; /*返回记录数*/}/*主函数*/main(){ int i;FLY flight[Q];int length; /*保存记录长度*/clrscr(); /*清屏*/textcolor(YELLOW); /*字体颜色*/textbackground(BLUE);/*背景颜色*/for(;;)/*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/{case 0:length=enter(flight);break;/*输入记录*/case 1:list(flight,length);break; /*显示全部记录*/ case 2:search1(flight,length);break; /*查找记录*/case 3:search2(flight,length);break; /*查找记录*/case 4:book(flight,length);break; /*订票*/case 5:quit(flight,length);break; /*退票*/case 6:channge(flight,length);break; /*修改航班信息*/ case 7:save(flight,length);break; /*保存文件*/case 8:length=load(flight); break; /*读文件*/case 9:exit(0); /*如返回值为9则程序结束*/}}}4.菜单窗口订票系统菜单窗口0.输入航班的信息1.列出航班的信息2.按航班号查询航班信息3.按城市来查询航班4.订票程序5.退票系统6.修改飞机航班的信息7.保存文件8.读取文件、下载文件。

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

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

航空客运订票系统的设计与实现一、设计目的:设计一个航班订票系统,提高对信息管理、信息查找和排序算法的应用能力。

二、问题的描述:航空客运订票的业务包括查询航线和客票预定的信、客票预定和办理退票等,设计一个程序以使上述任务借助计算机完成。

三、数据结构的设计://航线结构struct airline{char cityname[15]; //终点站char airnum[15]; //航班号char planenum[15]; //飞机号char qjtime[15]; //起降时间int price; //价格int disc; //折扣int num; //总座位数int rempla; //剩余位置(票数)linklist *order;linkqueue wait;}line;//定义链表队列typedef struct wait{char name[6];int ordnum;struct wait *next;} qnode,*qptr;//无票时其余等候买票队列typedef struct listqueue{qptr front; //对头qptr rear; //队尾}linkqueue;typedef struct order{char name[15]; //客户姓名char crenum[15]; //证件号char airnum[15]; //航班号char planenum[15]; //飞机号int ordnum; //订票数量int rempla; //剩余位置int num; //总座位数char qjtime[15]; //起降时间struct order *next;}linklist;建立了航班的终点站,航班号,飞机号,起降时间,价格,折扣,总座位数,剩余位置,指向客户信息truct order指针,等候买票的队列的结构体信息。

建立了客户的客户姓名,证件号,航班号,飞机号,订票数量,剩余位置,总座位数,起降时间,链接下一位的指针的结构体信息。

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

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

数据结构课程设计报告1.航空订票系统1.需求分析试设计一个航空订票系统,基本要求如下:每条航班所涉及的信息有:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,乘员定额,余票量,订定票的客户名单(包括姓名,订票量,舱位等级(头等舱、公务舱、经济仓)以及等候替补的客户名单(包括姓名、所需数量)。

采用链式存储结构。

系统能实现的操作和功能如下:(1)航班信息管理。

(2)查询航线,按以下几种方式查询:①按航班号查询;②按起点站查询;③按终点站查询;④按日期查询;每种查询方式中,查询后输出如下信息:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,余票量。

(3)承办订票业务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。

若需要,可登记排队候补。

(4)承办退票业务:根据客户提出的情况(日期,航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。

2.设计2.1 设计思想(1)数据结构设计typedefstruct keHu//客¨户信息{char nameofKeHu[20];//客户名字int numofPiao;//客¨户需要票的数量int type;//仓位等级1:头等Ì舱2:公务舱3:经济舱struct keHu* next;/下个客户};typedefstruct hangBan{int numofHangBan;//航班号char typeofHB[20];//航班机型¨char startFly[20];//起飞¦机场char endFly[20];//降¦落机场char DataofHB[20];//日期格式为(20120312星期¨一)char startTime[20];//起飞¦时间char endTime[20];//到达时À间float flyTime;//飞行时长float prise;//价格int largeNum;//成员定额int leaveNum;//余票数量keHu *custemer;//乘客信息名单keHu *orderofKeHu;//替补客户};typedefstruct Node{hangBan *exam;//航班信?息¡éint numofN;//航班数量struct Node *next;};(2)算法设计总体设计:在Fly.h文件中设计舱位的信息处理以及订票退票和对舱位信息的管理方面的功能然后在main,h中设计用户界面功能部分。

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

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

摘要飞机在现代的生活中扮演者非常重要的角色。

它能够快速的把人们送到自己想要去的地方,既快速,又方便。

所以现在坐飞机时很普遍的。

但是都到机场去买票浪费时间,因此,航空订票系统应运而生。

有了航空订票系统,用户可以在该系统进行飞机票的查询,订票,退票等操作。

方便了大家关键词航空订票系统、查询、订票、退票目录摘要 (I)1 需求分析 (2)1.1 需求概述 (2)1.2 需求环境 (3)1.3 功能描述 (3)2 概要设计 (4)2.1 程序功能模块 (4)2.2 程序流程图 (4)2.3 课程设计的思想 (5)3 详细设计 (6)3.1 程序初始化 (6)3.1.1代码功能 (6)3.1.2 功能实现代码 (6)3.2 查询航班信息 (9)3.2.1代码功能 (9)3.2.3 功能实现代码 (11)3.3 订票模块 (12)3.3.1 代码功能 (12)3.3.2 功能实现代码 (12)4 测试与运行 (21)5结束语 (16)6 参考文献 (17)7附录 (18)1 需求分析1.1 需求概述航线管理。

每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量客户管理。

有关订票的客房信息(包括XX、订票量、舱位等级(1,2和3)以及等替补的客房(包括XX、所需标量)。

系统实现主要操作操作和功能。

系统实现的主要操作规程和功能如下:①查询航线。

根据旅客提出的终点站名输出下列信息:航班号、飞机号、飞行日期、余标额。

②承办订票业务。

根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队侯补③承办退票业务。

根据客户提供的情况(日期、航班),为客户输退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额满足该客户的要求,则为其订票手续,否则依次询问其他排队候补的客户。

数据结构课程设计之飞机订票系统

数据结构课程设计之飞机订票系统

青岛理工大学数据结构课程设计报告题目:飞机订票系统院(系):学生姓名:班级:学号:起迄日期:指导教师:2010—2011年度第 2 学期一、需求分析1.问题描述:设计一个模拟飞机订票系统,通过此系统可以录入、查询、修改航班情况,完成用户订票和退票功能,并且可以保存客户和航班的资料。

2.基本功能1,录入航班信息。

没个航班的信息包括:航班号,起飞、抵达城市,座位总数,剩余座位数。

数据由使用者输入。

数据存储在txt文件中,采用线性表的链式结构。

2,加载航班和客户信息。

可以自动加载保存在txt文件中的航班和客户的信息。

3,查询航班。

可以通过输入航班号,查询该航班的所有信息。

可以通过输入起飞抵达的城市,查询航班的信息。

4,订票。

客户的信息包括:姓名,证件号,所订票的航班号,座号。

用户输入要订票的航班号,如果该航班未满,则订票成功,并记录客户的信息。

如果该航班已满,则订票失败,输出所有未满的航班信息,供用户选择。

5,退票。

删除退票用户的订票信息,相应的航班的剩余票数增加1。

6,修改航班信息。

用户输入要修改的航班号,和要修改的内容,修改该航班的相应信息。

7,保存操作。

把当前的航班信息,和用户信息分别保存在txt文件中。

8,输出所有客户信息。

按一定的格式输出用户的姓名,证件号码,航班号,座号。

9,输出所有航班信息。

按一定的格式输出所有的航班的航班号,起飞抵达城市,座位总数,剩余座位数。

0,退出系统。

3.输入输出在控制台下,根据提示输入要完成功能的标号,然后在提示下选择性的输入航班号、起飞抵达地、证件号码,或者姓名等。

系统会根据用户的输入输出相应的航班信息或者用户信息。

二、概要设计1.设计思路:对于航班和用户,分别定义不同的数据结构,并且采用线性表的链式结构进行存储。

然后根据要完成的功能,分模块用函数实现。

所用到的算法主要有:链表的创建,增加,遍历,插入,删除。

2.数据结构设计:采用的逻辑结构是线性结构。

存储结构是链式结构。

数据结构课程设计 飞机航班订票系统

数据结构课程设计 飞机航班订票系统

课程设计报告书课程设计名称:《数据结构课程设计》专业:题目:飞机航班订票系统班级:学号:姓名:指导老师:完成时间:2012-7-9问题描述一机场每天有n个航班,每个班次都有一班次号(1、2、3…n),固定的起飞时间,固定的路线(起始站、终点站),大致的飞行车时间,固定的额定载客量。

如班次起飞时间起点站终点站飞行时间额定载量已定票人数1 8:00 天津广汉2 145 1302 6:30 天津成都 0.5 140 1403 7:00 天津成都 0.5 140 1204 10:00 天津成都 0.5 140 120…试设计一个机票管理系统,对机场的售票情况进行管理。

基本要求功能要求:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据;(2)浏览班次信息,可显示出所有班次当前状况(如果当前系统时间超过了某班次的起飞时间,则显示“此班已发出”的提示信息)。

(3)查询路线:可按班次号查询 ,可按终点站查询;(4)售票和退票功能A:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。

若需要,可预约登记排队等候;B:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人预约登记,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队预约的客户。

(5) 修改航班信息:当航班信息改变可以修改航班数据文件实现提示每条航线应包括的信息有:终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票额、已订票的客户名单(包括姓名、订票额、座位号)和预约登记的客户名单(包括姓名、所需票额)。

这最后两项显然是一个线性表和一个队列。

为查找方便、已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。

由于预约人数无法预计,队列也应以链表作存储结构。

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

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

#include <stdio.h> #include <string.h> #include <stdlib.h> #include<math.h>#define ok 1typedef struct Yidingkehu{// 单链表char name[15];// 已订票的客户姓名int dingpiaoshu;// 已订票数量struct Yidingkehu *next1;}Yidingkehu,*Link;typedef struct Weidingkehu{// 单链队char name[15];// 预订票的客户姓名int yudingpiao;// 要订票数量struct Weidingkehu *next2;// 下一个链队结点指针}Weidingkehu,*Qptr;typedef struct {Qptr front;// 单链队头结点Qptr rear;// 单链队尾结点}linkQueue;typedef struct Hangxian{// 创建一个航线的结构体charhangbanhao[15];// 航班号- char feijihao[15];// 飞机号intfeixingriqi;// 起飞时间int level;// 仓位int yupiao;// 余票charzhongdianzhan[15];// 降落城市struct Hangxian *next;// 指向下一个链结点的指针struct Yidingkehu *yiding;// 定义一个指向已订票客户的头结点指针struct Weidingkehu *yudingqueue;}Hangxian,*Linklist;struct Hangxian *L=NULL;// 定义全局量struct Yidingkehu *H;// 为已订票客户链队来申请空间linkQueue Q;//linkQueue 类型的来申请空间Linklist InitLinklist();// 声明int InsertLinklist(Linklist &head1);// 声明void hbhchaxun();// 通过航班号查询 void mddchaxun();// 通过目的地查询void lurugongneng();// 初始化录入功能 void chaxungongnen();// 查询功能 void dingpiaogongnen();// 订票功能 void tuipiaogongnen();// 退票功能void main(){H=(struct Yidingkehu*)malloc(sizeof(Yidingkehu));Q.front=Q.rear=(Qptr)malloc(sizeof(Weidingkehu)); InitLinklist();int n;do{ // 打印主界面printf("\t 欢迎使用航空客运订票系统 \n");printf("\t+++++++++++++++++++++++++++++\n");printf("\t==>1. 录入功能 ==\n");printf("\t==>2. 查询功能 ==\n");printf("\t==>3. 订票功能 ==\n");printf("\t==>4. 退票功能 ==\n");printf("\t==>5. 退出 ==\n");printf("\t+++++++++++++++++++++++++++++\n");printf("\t 请选择: ");scanf("%d",&n);printf("\n");switch(n){case 1: lurugongneng();// 录入功能break;case 2: chax ungongnen();// 查询功能 break;case 3: din gpiaogo ngnen();〃 订票功能break;case 4:tuipiaogo ngnen();// 退票功能break;default :exit(0);// 退出}}while(n==1||n==2||n==3||n==4);}********************************************************* int j=1,m;do{if(!InsertLinklist((Linklist) L)) // 向其中加入航班信息{printf(" 内存已满 \n"); exit(OVERFLOW);void lurugongneng()// 初始化 的单链表录入功能}// 向链表中加一结点printf("\t 是否要输入下一个航线记录?\n");printf("\t 是请输入1\n");printf("\t 否请输入2\n\t");scanf("%d",&m); // 在这里依靠人来决定是否输入下一条航线记}while(m==1);}Linklist InitLinklist(){L=(Linklist)malloc(sizeof(Hangxian));if(!L) exit(OVERFLOW);L->next=NULL;// 建立一个带有头结点的单链表return (L);}int InsertLinklist(Linklist &L)// 向航线链表添加新的结点{Linklist p;p=(Linklist)malloc(sizeof(Hangxian));// 为一个新的结点分配空间if(!p) exit(OVERFLOW);printf("\t 请依次输入下面几项内容:\n\n");// 这里的输入采用一个个单独输入,避免了乱赋值的现象printf(" 航班号\n"); scanf("%s",p->hangbanhao);printf(" 飞机号\n"); scanf("%s",p->feijihao);printf(" 终点站\n"); scanf("%s",p->zhongdianzhan);printf(" 飞行日期\n"); scanf("%d",&p->feixingriqi);printf(" 仓位\n");scanf("%d",&p->level);printf(" 余票数\n");scanf("%d",&p->yupiao);p->yiding=(Yidingkehu*)malloc(sizeof(Yidingkehu));// 为它申请空间p->yudingqueue=Q.front=Q.rear=(Qptr)malloc(sizeof(Weidingkehu));// 为它申请空间p->next=L->next;L->next=p;// 这二句是链表中的插入一个结点return (ok);void chaxungongnen()//*************************************************************** *** 查询功能{int n;printf("\t 查找航线信息\n");printf("\t+++++++++++++++++++++++++++++\n");printf("\t==>1. 通过目的地查询==\n");printf("\t==>2. 通过航班号查询==\n");printf("\t+++++++++++++++++++++++++++++\n");printf("\t 请选择:\n");scanf("%d",&n);switch(n){case 1:mddchaxun();break;case 2:hbhchaxun();break;default :break;}}void mddchaxun()// 通过目的地查询{char c[15];Linklist p=L;int m;printf("\t 请输入要查询的目的地:\n");scanf("%s",c);do{p=p->next;if(p){if(strcmpi((*p).zhongdianzhan,c)==0){printf("\t 航班信息:\n");printf("\t 航班号:%s\n",p->hangbanhao);printf("\t 飞机号:%s\n",p->feijihao);printf("\t 飞行时间:周%d\n",p->feixingriqi); printf("\t 余票量:%d\n",p->yupiao);}else{// 如果不匹配的话就做printf("\t 对不起没有你要找的目的地:\n\n"); m=0;}}while(m!=0);}void hbhchaxun()// 通过目的地查询{char c[15];Linklist p=L;int m;printf("\t 请输入要查询的航班号:\n");scanf("%s",c);do{p=p->next;if(p){if(strcmpi((*p).hangbanhao,c)==0){printf("\t 航班信息:\n");printf("\t 航班号:%s\n",p->hangbanhao);printf("\t 飞机号:%s\n",p->feijihao);printf("\t 飞行时间:周%d\n",p->feixingriqi);printf("\t 余票量:%d\n\n",p->yupiao);}}else{// 如果不匹配的话就做printf("\t 对不起没有你要找的航班号:\n"); m=0;}}while(m!=0);}voiddingpiaogongnen()//************************************************************** *订票功能{Linklist p=L;//Linklist 类型的L 来指向链表头Yidingkehu *h=H,*h1;//Yidingkehu 定义客户的结点,方便插入与删除linkQueue q=Q;//linkQueue 类型的来,方便插入与删除struct Weidingkehu *q3;char c[15];int m=1,piao,n;int ydpiao=0,yd=0;printf(" 请输入终点站名:\n");scanf("%s",c);p=L->next;if(p) {do{// 查找一下,是否有这个航班if(!p){printf(" 对不起,没有你要找的航班:\n\n"); //goto loop1;}m=strcmpi(p->zhongdianzhan,c);//通过比较来判定if(m==0){printf(" 航班信息:\n");printf(" 航班号:%s\n",p->hangbanhao); printf(" 飞机号:%s\n",p->feijihao);printf(" 飞行时间:周%d\n",p->feixingriqi); printf(" 余票量:%d\n",p->yupiao);}elsep=p->next;}while(m!=0);if(m==0){// 当有该航班时,进行订票do{printf("\n 请输入你要订的票数:\n"); scanf("%d",&piao);if(piao<=p->yupiao){h=p->yiding;if(h){h1=h;h=h->next1;h=(struct Yidingkehu*)malloc(sizeof(Yidingkehu)); printf(" 请输入你的名字:\n");scanf("%s",h->name);h->dingpiaoshu=piao;h->next1=h1->next1;h1->next1=h;p->yupiao=p->yupiao-piao;printf(" 订票成功:\n");m=2;}}else //余票量不足时{printf(" 余票量:%d\n",p->yupiao);printf(" 对不起,余票%d 张不足,不能完成订票\n",p->yupiao); printf("是否要重新订票?\n");printf(" 需要请输入 1 否则请按 2 预订请输入 3 : \n"); scanf("%d",&m);while(m==3){printf(" 对不起,该航班的票已售完\n");q.front=p->yudingqueue;if(q.front==q.rear)printf(" 没有人预订票,是否要预订?\n");else if(q.front!=q.rear)printf(" 已有人预订票,是否要预订?\n"); printf(" 预订请输入1 否则输入2 : \n"); scanf("%d",&n);if(n==1){ q3=(Qptr)malloc(sizeof(Weidingkehu)); printf(" 请输入你的姓名\n");scanf("%s",q3->name); printf(" 请输入订票数\n");scanf("%d",&q3->yudingpiao); q3->next2=NULL;q.rear->next2=q3; q.rear=q3;printf(" 你已经预订了!\n");}}}}while(m==1);}}}void tuipiaogongnen()//*************************************************************** 退票功能Linklist p=L;Yidingkehu *h=H,*h1,*h2;linkQueue q=Q;char c[15],name1[15];int m=1,piao,n;// 定义相应变量printf(" 请输入航班号:\n");scanf("%s",c);p=L->next;if(p){do{ // 使用do while 来查找是否有此航班if(!p){// 如果是到了表尾且没有匹配,printf("\n 对不起,没有你要找的航班:\n");}if(strcmpi(p->hangbanhao,c)==0)// 比较航班号输出信息{printf("\t 航班信息:\n");printf(" 航班号:%s\n",p->hangbanhao);printf(" 飞机号:%s\n",p->feijihao); printf(" 飞行时间: 周%d\n",p->feixingriqi);printf(" 余票量:%d\n",p->yupiao);m=0;}else p=p->next;}while(m!=0);if(m==0){// 如果找到了,就来给他退票do{h=p->yiding;if(h){printf(" 请输入你的姓名:\n");scanf("%s",name1);printf(" 请输入你订的票数:\n");scanf("%d",&piao);h1=h;h=h->next1; if(strcmpi(h->name,name1)==0&&h->dingpiaoshu==piao)// 订的票数相等,则就给他取消订票如果名字和{p->yupiao+=h->dingpiaoshu;h2=h; h1->next1=h->next1;free(h2);printf(" 你取消订票成功\n");struct Weidingkehu *q3;q.front=p->yudingqueue;if(q.front==q.rear){printf(" 没有人预订票:\n");}if((p->yupiao)>=(q.front->next2->yudingpiao)){ h2=(Yidingkehu*)malloc(sizeof(Yidingkehu));strcpy(h2->name,q.front->next2->name);h2->dingpiaoshu=q.front->next2->yudingpiao; n=p->yupiao-q.front->next2->yudingpiao; p->yupiao=n;q3=Q.front->next2;//q.front->next2=q3->next2;// 这二语句来删除结点if(q.rear==q3)q.rear=q.front;free(q3);// 释放空间printf(" 链队中删除成功\n"); h2->next1=h->next1;h->next1=h2;// 为之插入进已订票客户链表中printf(" 为预订的客户订票成功\n");}else printf(" 余票数不够,不能为预订客户订票!\n");}else{ // 如果没有找到,即系统中没有该人的信息,提示是否来重新查找printf(" 对不起,该航班没有人订票或者是你没有订该航班的票\n");printf(" 是否要重新查找并取消订票?\n");printf(" 需要请输入 1 否则请按 2 \n");scanf("%d",&m);}}}while(m==1);}}}。

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

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

数据结构课程设计航空客运订票系统(总14页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--《数据结构课程设计》报告设计题目航空客运订票系统专业班级学号姓名电话完成日期目录1. 问题描述 (2)2. 系统设计 (2)3. 数据结构与算法描述 (4)4. 测试结果与分析 (6)5. 总结 (10)6. 参考文献 (10)附录程序源代码 (10)1课程设计题目1. 问题描述基于人们对航空客运使用需求的日益提高,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序是为实现航班情况的查询,订票,退票以及客户信息浏览与票务信息浏览等基本功能。

2. 系统设计设计目标(1)可以浏览航线信息;包括终点站名、航班号、飞机号、飞行日期、乘员定额和余票量;(2)可以浏览已订票客户信息;包括客户姓名、订票数额和舱位等级;(3)可以查询航线;包括终点站名、航班号、飞机号、飞行日期、乘员定额和余票量;(4)可以办理订票业务;需提供航班号、所需票数、客户姓名和舱位等级,生成客户座位号;(5)可以办理退票业务;提供航班号和客户姓名,即可退票;(6)可以查看剩余票数;(7)要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。

设计思想(1)运行环境(软硬件环境):DEV-C++;(2)输入的形式和输入值的范围:由航空公司输入航线情况并以单链表的形式存储在内存里面;(3)输出的形式描述:通过客户的输入,输出相应内容;2(4)功能描述:用户可通过本系统实现对航班的查询、订票和退票功能。

系统模块划分主函数输出菜单界面。

输入指令,显示,敲击回车开始工作。

浏览航线信息编写void list()函数实现打印全部航线信息的功能,调用void display()函数实现打印struct airline链表中存储的航线的基本信息的功能。

浏览已订票客户信息编写void prtlink()函数实现打印订票乘员名单域的客户名单信息的功能,调用find()函数查询并以指针形式返回。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录总体设计 (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)文件模块:顺着单链表把链表的信息写入文件。

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

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

根据订票系统功能的需要定义了如下的结构体: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)《数据结构理论与实践》杨永斌编著天津:天津科学技术出版社。

相关文档
最新文档