数据结构:航空客运订票系统.doc_第1页
数据结构:航空客运订票系统.doc_第2页
数据结构:航空客运订票系统.doc_第3页
数据结构:航空客运订票系统.doc_第4页
数据结构:航空客运订票系统.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计报告课程名称: 数据结构 设计题目: 航空客运订票系统 院 系: 班 级: 设 计 者: 学 号: 指导教师: 课程设计报告一、题目分析主要功能包括:1、录入:可以录入航班情况(如:输入航班号,飞机编号,查询起降时间,起飞抵达城市,剩余的票数)。2、查询:可以查询某个航线的情况(如:输入航班号,飞机编号,查询起降时间,起飞抵达城市,剩余的票数);可以输入降落城市及航班号,查询飞机航班情况。3、订票:根据客户要求(航班号、订票数量)查询该航班的余票数情况,若有余票,则可以订票;若余票数不足,则需要重新询问客户要求,否则不能完成订票。4、退票:可退票,根据客户的姓名,订票数量查询是否为真实信息,为客户办理退票。5、退出系统。二、总体设计拿到课程设计题目后,经过仔细的研究,还是决定做航空客运订票系统,它可以使自己很好的巩固在数据结构当中所学到的知识以及各算法,做到学以致用,并在运用的基础上,进一步去创新。1、 主程序流程图及其说明主程序的流程图如下图所示:航空客运订票系统1、录入航班信息2、查询航班信息3、预 定机 票4、退 定机 票5、退 出系 统利用switch语句,用户只需根据自己的需要,输入相应的命令即可达到效果。例如,若需要查询航班信息时,则输入2;需要为客户预定机票时,则输入4;若需要退出系统,则输入5即可。2、子程序流程图及其说明、录入航班信息的流程图及其说明:主要功能是将新的航班信息写入新建链表中,然后把新链表与储存航班的链表合并,得到新的航班信息,实现对新航班的增加。录入航班信息的流程图如下图所示:1、录入航班信息建立新的链表新增航班信息对新链表置空,订票表头初始化1.返回菜单 2.继续操作、查询航班信息流程图及其说明:先输入所要查找的航班,可通过降落城市查询或根据航班号查询。然后判断该航班是否存在,若存在,则输出相关的航班信息;若不存在,则提示该航班不存在。查询航班信息的流程图如下图所示:2、查询航班信息1、通过降落城市查询2、通过航班号查询判断航班是否存在显示该航班信息返回主菜单、订票、退票流程图及其说明:订票说明:先输入降落城市,找到该航班并显示该航班信息,若找不到则提示不存在该航班。再通过需要订票的数量来判断余票量是否足够。若足够则录入客户姓名,完成订票;若余票不足,则提示是否要取消并重新订票。订票的流程图如下图所示:3、订票功能是否有该航班输入所需的订票信息(客户姓名及要订的票数)余票是否充足订票成功返回主菜单退票说明:先通过输入客户的姓名及订票数目,确定是否存在该客户信息,若符合条件,则完成退票;若无该客户信息,则提示该航班没有人订票或者是该客户没有订该航班的票。退票的流程图如下图所示:4、退票功能是否有该航班输入客户姓名及订票数客户信息是否正确退票成功返回主菜单三、详细设计1、数据结构设计typedef struct booked /单链表char name115; /已订票客户姓名 int number1; /已订票数量 struct booked *next1;booked,*Link;typedef struct book /单链表char name215; /预定票客户姓名 int number2; /要订票数量 struct book *next2; /下一个链队结点指针book,*Qptr;typedef structQptr front; /单链队头结点Qptr rear; /单链队尾结点linkQueue;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*)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. 退票功能 *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);运行结果:2 、录入航班信息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(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,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-book=Q.front=Q.rear=(Qptr)malloc(sizeof(book); /申请存储空间p-next=L-next; L-next=p;return 1;运行结果:3 、查询航班信息通过降落城市查询void 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-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(%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-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 *next1;booked,*Link;typedef struct book /单链表char name215; /预定票客户姓名 int number2; /要订票数量 struct book *next2; /下一个链队结点指针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 *next; /指向下一个链结点的指针struct 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(); /录入信息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. 退票功能 *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(!InsertLinklist(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-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,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-book=Q.front=Q.rear=(Qptr)malloc(sizeof(book); /申请存储空间p-next=L-next; L-next=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();break;default:break;void 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-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(%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-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(请输入降落城市:);scanf(%s,c);p=L-next;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-next; /促使循环while(m!=0);if(m=0) /当有该航班时,进行订票doprintf(n请输入您要订的票数:n);scanf(%d,&ticket);if(ticketrest)h=p-booked;if(h)h1=h;h=h-next1;h=(struct booked*)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(对不起,剩余票%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-next;if(p)doif(!p)printf(n对不起,没有你要查找的航班.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(请输入该客户订的票数:);scanf(%d,&ticket);h1=h;h=h-next1;if(stricmp(h-name1,name3)=0

温馨提示

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

评论

0/150

提交评论