版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告课程名称:数据结构设计题目:航空客运订票系统院 系:班 级:设计者:学 号:指导教师:Word资料课程设计报告一、题目分析主要功能包括:1、录入:可以录入航班情况(如:输入航班号,飞机编号,查询起降时间,起飞抵达城市, 剩余的票数)。2、查询:可以查询某个航线的情况(如:输入航班号,飞机编号,查询起降时间,起飞抵 达城市,剩余的票数);可以输入降落城市及航班号,查询飞机航班情况。3、订票:根据客户要求(航班号、订票数量)查询该航班的余票数情况,若有余票,则可 以订票;若余票数不足,则需要重新询问客户要求,否则不能完成订票。4、退票:可退票,根据客户的姓名,订票数量查询是否为真实信息
2、,为客户办理退票。5、退出系统。二、总体设计拿到课程设计题目后, 经过仔细的研究, 还是决定做航空客运订票系统,它可以使自己很好的巩固在数据结构当中所学到的知识以及各算法,做到学以致用,并在运用的基础上,进一步去创新。1、主程序流程图及其说明主程序的流程图如下图所示:利用switch语句,用户只需根据自己的需要,输入相应的命令即可达到效果。例如,若需要查询航班信息时,则输入2;需要为客户预定机票时,则输入 4;若需要退出系统,则输入5即可。2、子程序流程图及其说明、录入航班信息的流程图及其说明:主要功能是将新的航班信息写入新建链表中,然后把新链表与储存航班的链表合并,得到新的航班信息,实现对新
3、航班的增加。录入航班信息的流程图如下图所示:、查询航班信息流程图及其说明:先输入所要查找的航班,可通过降落城市查询或根据航班号查询。然后判断该航班是否存在,若存在,则输出相关的航班信息;若不存在,则提示该航班不存在。查询航班信息的流程图如下图所示:、订票、退票流程图及其说明:订票说明:先输入降落城市,找到该航班并显示该航班信息,若找不到则提示不存在该航班。再通过需要订票的数量来判断余票量是否足够。若足够则录入客户姓名,完成订票;若余票不足,则提示是否要取消并重新订票。订票的流程图如下图所示:退票说明:先通过输入客户的姓名及订票数目,确定是否存在该客户信息, 若符合条件,则完成退票;若无该客户信
4、息,则提示该航班没有人订票或者是该客户没有订该航班的票。退票的流程图如下图所示:三、详细设计1、数据结构设计typedef struct booked 单链表char name115;已订票客户姓名int numberl;已订票数量struct booked *next1;booked,*Link;typedef struct book 单链表char name215;预定票客户姓名int numbe/要订票数量struct book *next2;下一个链队结点指针book,*Qptr;typedef structQptr front;单链队头结点Qptr rear;单链队尾结点linkQu
5、eue;2、函数说明(1)主函数main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。(2)其他各功能函数包括函数名功能void enter()录入航班信息void refer()查询航线信息int InsertLinklist(Linklist &head1);声明录入航班信息void cityrefer();通过降洛城市查询void flynumrefer();通过航班号查询void reserve();订票void refund();退票3、分工函数设计(截图分析及相关说明)、主函数void main()(H=(struct booked*)mallo
6、c(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.退票功能*nn");printf("t*->5.退出
7、*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 11n=2|n=3
8、|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=1);Linklist InitLinklist()L=(Linklist)malloc(
9、sizeof(fly);if(!L)L->next=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",
10、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);/ 申请存储空间p-
11、>book=Q.front=Q.rear=(Qptr)malloc(sizeof(book);申请存储空间p->next=L->next; L->next=p; return 1; 回 IiJ运行结果:* D:flyDe b u gfly.exe'请依次轴入下面几项内谷航飞起降百:号,币加票 瑞飞常行余4航线记录?Ilf、查询航班信息.通过降落城市查询void cityrefer()/通过降落城市查询char c15;Linklist p=L;int m;printf("t请输入你要查询的降落城市:");scanf("%s"
12、;,c);dop=p->next;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(&q
13、uot;t 剩余的票数:%dn",p->rest);break;elseprintf("t【对不起,没有您要查找的降落城市.nn");m=0;while(m!=0);运行结果:11 D:fl yDeb ugfly. exer*# 善 / # *+# 善+兽+善 + +*<= + + 兽+#*«#>1.录入航班信息*查询航班信息订票功能退出请选择:查找航线信息#+通过降洛城市查询* >2.通过航班号查询1禳息:I口至币霸票+01月星2 2 米 可我1 1 * 01昆上20., -:孰+-+:上海.通过航班号查询void flynum
14、refer()通过航班号查询char c15;Linklist p=L;int m;printf("t请输入你要查询的航班号:");scanf("%s",c);dop=p->next;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->cit
15、y1);printf("t 降落城市:%sn",p->city);printf("t 飞行日期:%sn",p->date);printf("t 剩余的票数:%dn",p->rest); break;else.!n");printf("t【对不起,没有您要查找的航班m=0;while(m!=0);运行结果:四、源程序代码#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h&g
16、t; typedef struct booked 单链表char name115;已订票客户姓名int numberl;已订票数量struct booked *next1;booked,*Link;typedef struct book 单链表char name215;预定票客户姓名int numbe/要订票数量struct book *next2;下一个链队结点指针book,*Qptr;typedef structQptr front;单链队头结点Qptr rear;单链队尾结点linkQueue;typedef struct fly创建一个航线的结构体char flynum15;/航班号c
17、har plane15;飞机编号char date12;飞行日期char city115;/起飞城市char city15;降落城市int rest;剩余的票数struct fly *next;/指向下一个链结点的指针struct booked *booked;定义一个指向已订票客户的头结点指针struct book *book;fly,*Linklist;struct fly *L=NULL;定义全局变量struct booked *H;/为已订票客户链队来申请空间linkQueue Q;/linkQueue类型的来申请空间Linklist InitLinklist();声明int Inse
18、rtLinklist(Linklist &head1);声明录入航班信息void cityrefer();/通过降洛城市查询void flynumrefer();通过航班号查询void enter();录入信息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(&
19、quot;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&q
20、uot;);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 11n=2|n=3|n=4);void enter()录入航班信息int j=1,m;doif(!InsertLinklist(L)向其中加入航班信息 printf("内存已满 n");向链表中加一结点printf
21、("t是否要输入下一个航线记录?n");printf("t 是请输入 1n");printf("t 否请输入 2n");scanf("%d",&m);选择是否输入下一条航线while(m=1); Linklist InitLinklist()L=(Linklist)malloc(sizeof(fly);if(!L)L->next=NULL;建立一个带有头结点的单链表return(L); int InsertLinklist(Linklist &L)向航线链表添加新的结点Linklist p;p
22、=(Linklist)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)
23、;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->next=L->next; L->next=p; return 1; void refer()/查询航线信息(int
24、 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();break;default:break;void
25、 cityrefer()/通过降落城市查询(char c15;Linklist p=L;int m;printf("t请输入你要查询的降落城市:");scanf("%s",c);dop=p->next;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-
26、>city1);printf("t 降落城市:%sn",p->city);printf("t 飞行日期:%sn",p->date);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(&q
27、uot;%s",c);dop=p->next;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->city);printf("t 飞行日期:%sn",p->da
28、te);printf("t 剩余的票数:%dn",p->rest);break;elseprintf("t【对不起,没有您要查找的航班J 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("请输入降落城市:"力scanf("%s",c);p=
29、L->next;if(p)do查找是否有该航班if(!p).nn");printf("【对不起,没有您要查找的航班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&quo
30、t;,p->city);printf("t 飞行日期:%sn",p->date);printf("t 剩余的票数:%dn",p->rest);elsep=p->next;促使循环while(m!=0);if(m=0) 当有该航班时,进行订票doprintf("n请输入您要订的票数:n");scanf("%d",&ticket);if(ticket<=p->rest)h=p->booked;if(h)h1=h;h=h->next1;h=(struct booke
31、d*)malloc(sizeof(booked);printf(”请输入客户姓名:n");scanf("%s",h->name1);h->number1=ticket;h->next1=h1->next1;h1->next1=h;p->rest=p->rest-ticket;printf("【订票成功!n");m=2;else 当余票量不足时printf("剩余的票数:%dn",p->rest);printf("对不起,乘U余票 %d张不足,不能完成订票 .n&quo
32、t;,p->rest);printf("是否需要重新订票?n");printf("需要请输入1不需要t#输入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->next;if(p)doif(!p).n");printf(
33、"n对不起,没有你要查找的航班if(stricmp(*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->next;while(m!=0);if(m=0)h=p->booked;if(h)printf("请输入客户姓名:");scanf("%s",name3);printf(&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年备考题库资源管理学院教师岗位招聘备考题库及1套完整答案详解
- 2025年上海市复旦大学智能医学研究院招聘周欣课题组行政助理岗位备考题库及完整答案详解1套
- 2025年太湖县关工委、老年大学公开招聘编外工作人员备考题库及1套完整答案详解
- 2025年民生银行天津分行社会招聘备考题库及参考答案详解1套
- 2025年中原关键金属实验室公开招聘工作人员10人备考题库及一套答案详解
- 交通运输部所属事业单位2026年度第三批统一公开招聘备考题库及参考答案详解
- 2025年大姚县教育体育局校园招聘高中教师13人备考题库及一套答案详解
- 2025年招商银行海口分行社会招聘备考题库及一套参考答案详解
- 西藏自治区外事办公室2026年度急需紧缺人才引进备考题库及1套参考答案详解
- 新疆生产建设兵团第四师可克达拉市教育系统面向2026年高校毕业生校园招聘63人备考题库及参考答案详解一套
- 2026年高考时政热点学习167条
- 弘扬宪法精神
- 南充临江建设发展集团有限责任公司2025年下半年公开招聘工作人员考试笔试参考题库附答案解析
- 自动化生产线机械结构设计
- 偏头痛护理查房
- 2024版十八项医疗质量安全核心制度全解析
- 罗森塔尔效应
- 2025年档案工作的工作总结和计划(5篇)
- 蔡司显微镜S88课件
- 流星雨课件教学课件
- 2025年及未来5年中国复合改性聚醚醚酮行业市场全景调研及投资规划建议报告
评论
0/150
提交评论