数据结构:航空客运订票系统

上传人:痛*** 文档编号:87491079 上传时间:2022-05-09 格式:DOC 页数:21 大小:85KB
收藏 版权申诉 举报 下载
数据结构:航空客运订票系统_第1页
第1页 / 共21页
数据结构:航空客运订票系统_第2页
第2页 / 共21页
数据结构:航空客运订票系统_第3页
第3页 / 共21页
资源描述:

《数据结构:航空客运订票系统》由会员分享,可在线阅读,更多相关《数据结构:航空客运订票系统(21页珍藏版)》请在装配图网上搜索。

1、-课程设计报告课程名称: 数据构造 设计题目: 航空客运订票系统院 系:班 级:设 计 者:学 号:指导教师:课程设计报告一、题目分析主要功能包括:1、录入:可以录入航班情况如:输入航班号,飞机编号,查询起降时间,起飞抵达城市,剩余的票数。2、查询:可以查询*个航线的情况如:输入航班号,飞机编号,查询起降时间,起飞抵达城市,剩余的票数;可以输入降落城市及航班号,查询飞机航班情况。3、订票:根据客户要求航班号、订票数量查询该航班的余票数情况,假设有余票,则可以订票;假设余票数缺乏,则需要重新询问客户要求,否则不能完成订票。4、退票:可退票,根据客户的,订票数量查询是否为真实信息,为客户办理退票。

2、5、退出系统。二、总体设计拿到课程设计题目后,经过仔细的研究,还是决定做航空客运订票系统,它可以使自己很好的稳固在数据构造当中所学到的知识以及各算法,做到学以致用,并在运用的根底上,进一步去创新。1、 主程序流程图及其说明主程序的流程图如下列图所示:航空客运订票系统1、录入航班信息2、查询航班信息3、预 定机 票4、退 定机 票5、退 出系 统利用switch语句,用户只需根据自己的需要,输入相应的命令即可到达效果。例如,假设需要查询航班信息时,则输入2;需要为客户预定机票时,则输入4;假设需要退出系统,则输入5即可。2、子程序流程图及其说明、录入航班信息的流程图及其说明:主要功能是将新的航班

3、信息写入新建链表中,然后把新链表与储存航班的链表合并,得到新的航班信息,实现对新航班的增加。录入航班信息的流程图如下列图所示:1、录入航班信息建立新的链表新增航班信息对新链表置空,订票表头初始化1.返回菜单 2.继续操作、查询航班信息流程图及其说明:先输入所要查找的航班,可通过降落城市查询或根据航班号查询。然后判断该航班是否存在,假设存在,则输出相关的航班信息;假设不存在,则提示该航班不存在。查询航班信息的流程图如下列图所示:2、查询航班信息1、通过降落城市查询2、通过航班号查询判断航班是否存在显示该航班信息返回主菜单、订票、退票流程图及其说明:订票说明:先输入降落城市,找到该航班并显示该航班

4、信息,假设找不到则提示不存在该航班。再通过需要订票的数量来判断余票量是否足够。假设足够则录入客户,完成订票;假设余票缺乏,则提示是否要取消并重新订票。订票的流程图如下列图所示:3、订票功能是否有该航班输入所需的订票信息客户*及要订的票数余票是否充足订票成功返回主菜单退票说明:先通过输入客户的及订票数目,确定是否存在该客户信息,假设符合条件,则完成退票;假设无该客户信息,则提示该航班没有人订票或者是该客户没有订该航班的票。退票的流程图如下列图所示:4、退票功能是否有该航班输入客户*及订票数客户信息是否正确退票成功返回主菜单三、详细设计1、数据构造设计typedef struct booked /

5、单链表char name115; /已订票客户 int number1; /已订票数量 struct booked *ne*t1;booked,*Link;typedef struct book /单链表char name215; /预定票客户 int number2; /要订票数量 struct book *ne*t2; /下一个链队结点指针book,*Qptr;typedef structQptr front; /单链队头结点Qptr rear; /单链队尾结点linkQueue;2、函数说明(1) 主函数main()允许用户通过菜单进展功能选择,使用相应的功能代码来调用对应的函数功能。(

6、2) 其他各功能函数包括函数名功能void enter() 录入航班信息 void refer() 查询航线信息int InsertLinklist(Linklist &head1); 声明录入航班信息void cityrefer(); 通过降落城市查询void flynumrefer(); 通过航班号查询void reserve(); 订票void refund(); 退票3、分工函数设计截图分析及相关说明、主函数void main()H=(struct booked*)malloc(sizeof(booked);Q.front=Q.rear=(Qptr)malloc(sizeof(book

7、); /申请空间并初始化队列InitLinklist();int n;do /打印主界面printf(t+nn);printf(t*-1. 录入航班信息 *nn);printf(t*-2. 查询航班信息 *nn);printf(t*-3. 订票功能 *nn);printf(t*-4. 退票功能 *nn);printf(t*-5. 退出 *nn);printf(t+n);printf(t请选择:);scanf(%d,&n);printf(n);switch(n) case 1:enter(); /录入功能break;case 2:refer(); /查询功能break;case 3:reserv

8、e(); /订票功能break;case 4:refund(); /退票功能break;case 5:printf(【感使用航空客运订票系统】n);break; /退出while(n=1 |n=2|n=3|n=4);运行结果: 、录入航班信息void enter() /录入航班信息int j=1,m;doif(!InsertLinklist(L) /向其中参加航班信息printf(存已满n);/向链表中加一结点printf(t 是否要输入下一个航线记录n);printf(t 是请输入 1n);printf(t 否请输入 2n);scanf(%d,&m); /选择是否输入下一条航线while(m

9、=1);Linklist InitLinklist()L=(Linklist)malloc(sizeof(fly);if(!L)L-ne*t=NULL; /建立一个带有头结点的单链表return(L);int InsertLinklist(Linklist &L) /向航线链表添加新的结点Linklist p;p=(Linklist)malloc(sizeof(fly); /为一个新的结点分配空间printf(t请依次输入下面几项容:nn);printf(航班号:);scanf(%s,p-flynum);printf(飞机编号:);scanf(%s,p-plane);printf(起飞城市:)

10、;scanf(%s,p-city1);printf(降落城市:);scanf(%s,p-city);printf(飞行日期:);scanf(%s,p-date);printf(剩余的票数:);scanf(%d,&p-rest);p-booked=(booked*)malloc(sizeof(booked); /申请存储空间p-book=Q.front=Q.rear=(Qptr)malloc(sizeof(book); /申请存储空间p-ne*t=L-ne*t; L-ne*t=p;return 1;运行结果: 、查询航班信息通过降落城市查询void cityrefer() /通过降落城市查询ch

11、ar c15;Linklist p=L;int m;printf(t请输入你要查询的降落城市:);scanf(%s,c);dop=p-ne*t;if(p)if(stricmp(*p).city,c)=0)printf(t 航班信息:n);printf(t 航班号:%sn,p-flynum);printf(t 飞机编号:%sn,p-plane);printf(t 起飞城市:%sn,p-city1); printf(t 降落城市:%sn,p-city);printf(t 飞行日期:%sn,p-date);printf(t 剩余的票数:%dn,p-rest);break;elseprintf(t【对

12、不起,没有您要查找的降落城市.】 nn);m=0;while(m!=0);运行结果:通过航班号查询void flynumrefer() /通过航班号查询char c15;Linklist p=L;int m;printf(t请输入你要查询的航班号:);scanf(%s,c);dop=p-ne*t;if(p)if(strcmpi(*p).flynum,c)=0)printf(t 航班信息:n);printf(t 航班号:%sn,p-flynum);printf(t 飞机编号:%sn,p-plane); printf(t 起飞城市:%sn,p-city1); printf(t 降落城市:%sn,p

13、-city);printf(t 飞行日期:%sn,p-date);printf(t 剩余的票数:%dn,p-rest);break;elseprintf(t【对不起,没有您要查找的航班.】n);m=0;while(m!=0);运行结果:四、源程序代码#include#include#include#includetypedef struct booked /单链表char name115; /已订票客户 int number1; /已订票数量 struct booked *ne*t1;booked,*Link;typedef struct book /单链表char name215; /预定票

14、客户 int number2; /要订票数量 struct book *ne*t2; /下一个链队结点指针book,*Qptr;typedef structQptr front; /单链队头结点Qptr rear; /单链队尾结点linkQueue;typedef struct fly /创立一个航线的构造体char flynum15; /航班号char plane15; /飞机编号char date12; /飞行日期char city115; /起飞城市char city15; /降落城市int rest; /剩余的票数struct fly *ne*t; /指向下一个链结点的指针struct

15、 booked *booked; /定义一个指向已订票客户的头结点指针struct book *book;fly,*Linklist;struct fly *L=NULL; /定义全局变量struct booked *H; /为已订票客户链队来申请空间linkQueue Q; /linkQueue类型的来申请空间Linklist InitLinklist(); /声明int InsertLinklist(Linklist &head1); /声明录入航班信息void cityrefer(); /通过降落城市查询void flynumrefer(); /通过航班号查询void enter();

16、/录入信息void refer(); /查询信息void reserve(); /订票void refund(); /退票void main()H=(struct booked*)malloc(sizeof(booked);Q.front=Q.rear=(Qptr)malloc(sizeof(book); /申请空间并初始化队列InitLinklist();int n;do /打印主界面printf(t+nn);printf(t*-1. 录入航班信息 *nn);printf(t*-2. 查询航班信息 *nn);printf(t*-3. 订票功能 *nn);printf(t*-4. 退票功能 *

17、nn);printf(t*-5. 退出 *nn);printf(t+n);printf(t请选择:);scanf(%d,&n);printf(n);switch(n) case 1:enter(); /录入功能break;case 2:refer(); /查询功能break;case 3:reserve(); /订票功能break;case 4:refund(); /退票功能break;case 5:printf(【感使用航空客运订票系统】n);break; /退出while(n=1 |n=2|n=3|n=4);void enter() /录入航班信息int j=1,m;doif(!Inser

18、tLinklist(L) /向其中参加航班信息printf(存已满n);/向链表中加一结点printf(t 是否要输入下一个航线记录n);printf(t 是请输入 1n);printf(t 否请输入 2n);scanf(%d,&m); /选择是否输入下一条航线while(m=1);Linklist InitLinklist()L=(Linklist)malloc(sizeof(fly);if(!L)L-ne*t=NULL; /建立一个带有头结点的单链表return(L);int InsertLinklist(Linklist &L) /向航线链表添加新的结点Linklist p;p=(Lin

19、klist)malloc(sizeof(fly); /为一个新的结点分配空间printf(t请依次输入下面几项容:nn);printf(航班号:);scanf(%s,p-flynum);printf(飞机编号:);scanf(%s,p-plane);printf(起飞城市:);scanf(%s,p-city1);printf(降落城市:);scanf(%s,p-city);printf(飞行日期:);scanf(%s,p-date);printf(剩余的票数:);scanf(%d,&p-rest);p-booked=(booked*)malloc(sizeof(booked); /申请存储空间

20、p-book=Q.front=Q.rear=(Qptr)malloc(sizeof(book); /申请存储空间p-ne*t=L-ne*t; L-ne*t=p;return 1;void refer() /查询航线信息int n;printf(t 查 找 航 线 信 息 n);printf(t+nn);printf(t*-1. 通过降落城市查询 *nn);printf(t*-2. 通过航班号查询 *nn);printf(t+n);printf(t请选择:);scanf(%d,&n);switch(n)case 1:cityrefer();break;case 2:flynumrefer();b

21、reak;default:break;void cityrefer() /通过降落城市查询char c15;Linklist p=L;int m;printf(t请输入你要查询的降落城市:);scanf(%s,c);dop=p-ne*t;if(p)if(stricmp(*p).city,c)=0)printf(t 航班信息:n);printf(t 航班号:%sn,p-flynum);printf(t 飞机编号:%sn,p-plane);printf(t 起飞城市:%sn,p-city1); printf(t 降落城市:%sn,p-city);printf(t 飞行日期:%sn,p-date);

22、printf(t 剩余的票数:%dn,p-rest);break;elseprintf(t【对不起,没有您要查找的降落城市.】 nn);m=0;while(m!=0);void flynumrefer() /通过航班号查询char c15;Linklist p=L;int m;printf(t请输入你要查询的航班号:);scanf(%s,c);dop=p-ne*t;if(p)if(strcmpi(*p).flynum,c)=0)printf(t 航班信息:n);printf(t 航班号:%sn,p-flynum);printf(t 飞机编号:%sn,p-plane); printf(t 起飞城

23、市:%sn,p-city1); printf(t 降落城市:%sn,p-city);printf(t 飞行日期:%sn,p-date);printf(t 剩余的票数:%dn,p-rest);break;elseprintf(t【对不起,没有您要查找的航班.】n);m=0;while(m!=0);void reserve() /订票Linklist p=L; /Linklist类型的L来指向链表头booked *h=H,*h1; /booked定义客户的结点,以便插入与删除char c15;int m=1,ticket;int bookedt=0,bookt=0;printf(请输入降落城市:)

24、;scanf(%s,c);p=L-ne*t;if(p)do /查找是否有该航班if(!p)printf(【对不起,没有您要查找的航班.】nn);return;m=stricmp(p-city,c);/通过比拟来判定if(m=0)printf(t 航班信息:n);printf(t 航班号:%sn,p-flynum);printf(t 飞机编号:%sn,p-plane);printf(t 起飞城市:%sn,p-city1); printf(t 降落城市:%sn,p-city);printf(t 飞行日期:%sn,p-date);printf(t 剩余的票数:%dn,p-rest);elsep=p-

25、ne*t; /促使循环while(m!=0);if(m=0) /当有该航班时,进展订票doprintf(n请输入您要订的票数:n);scanf(%d,&ticket);if(ticketrest)h=p-booked;if(h)h1=h;h=h-ne*t1;h=(struct booked*)malloc(sizeof(booked);printf(请输入客户:n);scanf(%s,h-name1);h-number1=ticket;h-ne*t1=h1-ne*t1;h1-ne*t1=h;p-rest=p-rest-ticket;printf(【订票成功!】n);m=2;else /当余票量

26、缺乏时printf(剩余的票数:%dn,p-rest);printf(对不起,剩余票%d缺乏,不能完成订票.n,p-rest);printf(是否需要重新订票?n);printf(需要请输入1 不需要请输入2:n);scanf(%d,&m);while(m=1);void refund() /退票Linklist p=L;booked *h=H,*h1,*h2;char c15,name315;int m=1,ticket; printf(请输入航班号:);scanf(%s,c);p=L-ne*t;if(p)doif(!p)printf(n对不起,没有你要查找的航班.n);if(stricmp

27、(*p).flynum,c)=0) /比拟航班号printf(t 航班信息:n);printf(t 航班号:%sn,p-flynum);printf(t 飞机编号:%sn,p-plane);printf(t 起飞城市:%sn,p-city1);printf(t 降落城市:%sn,p-city);printf(t 飞行日期:%sn,p-date);printf(t 剩余的票数:%dn,p-rest);m=0;else p=p-ne*t;while(m!=0);if(m=0)h=p-booked;if(h)printf(请输入客户:);scanf(%s,name3);printf(请输入该客户订的

28、票数:);scanf(%d,&ticket);h1=h;h=h-ne*t1;if(stricmp(h-name1,name3)=0 & h-number1=ticket)p-rest+=h-number1;h2=h;h1-ne*t1=h-ne*t1;free(h2);printf(【退票成功!】n);elseprintf(对不起,该航班没有人订票或者是该客户没有订该航班的票.n);printf(是否要重新查找并取消订票?n);printf(需要请输入1 否则请输入2n);scanf(%d,&m);while(m=1);五、程序结果1、调试分析编成后出现了许多错误,在经过调试后发现有很多事语句上

29、的失误,还有switch语句中漏写了break语句,switch语句作为选择语句,在此程序中,要实现其选择执行的功能,在每个选择条件后必须有break语句跟随,否则程序将运行错误,经检查漏洞后加以改正。在调试无误后,运行程序的过程中也出现了许多问题,有些功能无法实现。在经过反复检查以及在同学的指导帮助下,也都一一改正了,从中也发现了自己对许多语法运用的不熟练,也都弄懂了。我们的程序最大的缺陷是没有读入和读出文件,刚开场写了读入文件成功了,可是写读出文件却除了问题,由于时间有限,就没有完成该功能。2、算法的改良设想在实际的操作当中,我们不是这样按部就班的操作,因此可以根据实际的需要没在窗体中进展

30、操作,这样就可以与现实更接近一步了。在查询航线的时候,可以改良更多的查找航班的功能,而不是单一的靠目的地、航班号查询。这样就可以使查找信息更加方便、更加全面。我们还可以增加修改航班信息等其他功能,让该系统功能更加全面,使用更加方便。六、总结经过这几天的课程设计,我认识到把课堂上教师讲的知识运用到实际中的重要性。我这次课程设计的题目是航空客运订票系统,在开场阶段,根本无从下手,后来通过查阅了一些相关资料和同学的帮助指导,最终完成了整个程序的设计。通过这次课程设计,我对数据构造的各种算法、C语言中的构造体定义、链表等知识有了进一步的理解,对流程图的画法更加熟练,对程序的开发思路有了一定的理解,我想这对以后的学习和工作都会有很大的帮助,更使我意识到了学习数据构造与C语言的重要性,今后也会根据自己缺乏的地方进展稳固和学习。非常感教师的帮助!. z

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!