




免费预览已结束,剩余27页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档摘 要飞机在现代的生活中扮演者非常重要的角色。它能够快速的把人们送到自己想要去的地方,既快速,又方便。所以现在坐飞机时很普遍的。但是都到机场去买票浪费时间,因此,航空订票系统应运而生。有了航空订票系统,用户可以在该系统进行飞机票的查询,订票,退票等操作。方便了大家关键词 航空订票系统 、查询、订票、退票II欢迎下载。精品文档目录摘 要I1 需求分析21.1 需求概述21.2 需求环境21.3 功能描述22 概要设计32.1 程序功能模块32.2 程序流程图32.3 课程设计的思想33 详细设计43.1 程序初始化43.1.1代码功能43.1.2 功能实现代码43.2 查询航班信息63.2.1代码功能63.2.3 功能实现代码73.3 订票模块83.3.1 代码功能83.3.2 功能实现代码84 测试与运行145结束语.166 参考文献.177附录.183030欢迎下载30欢迎下载30欢迎下载30欢迎下载30欢迎下载30欢迎下载30欢迎下载30欢迎下载。精品文档1 需求分析1.1 需求概述航线管理。每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量 客户管理。有关订票的客房信息(包括姓名、订票量、舱位等级(1,2和3)以及等替补的客房名单(包括姓名、所需标量)。 系统实现主要操作操作和功能。系统实现的主要操作规程和功能如下: 查询航线。根据旅客提出的终点站名输出下列信息:航班号、飞机号、飞行日期、余标额。 承办订票业务。根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队侯补 承办退票业务。根据客户提供的情况(日期、航班),为客户输退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额满足该客户的要求,则为其订票手续,否则依次询问其他排队候补的客户。1.2 需求环境本课程设计需要的设备为硬件要求和软件配置要求具体要求如下:硬件要求:一台计算机。软件配置:WINDOWS7/VC+6.0。1.3 功能描述本次课程设计是航空订票系统主要是由查询航班信息,订票还有退票三大主要功能。除此之外,还有系统的界面等等。精品文档2 概要设计2.1 程序功能模块由需求分析知,本次课程设计是航空订票系统其主要由三大模块构成,即查询模块(这部分由我负责),订票系统模块和退票系统模块构成。2.2 程序流程图开始 该程序开始运行后 进如航空订票系统 用户可以进行航班航空订票系统 信息的查询,订票 和退票操作。退票系统模块查询模块订票系统模块使用结束,退出系统图2.1为该系统总的流程图2.3 课程设计的思想 由需求分析知道需要实现几个功能定义了两个结构体。这两个结构体分别用来表示顾客信息和航班信息。有结构体可以知道一些基本信息,比如顾客的姓名,定的机票和航班的时间等等信息。使得实验代码的可读性大大增强。精品文档3 详细设计3.1 程序初始化3.1.1代码功能这一块还是由我负责。我初始化了五个航班的基本信息。在初始化程序中,主要是航班的基本信息。比如航班号,出发时间和剩下的机票数目等等基本信息。通过运用指针和链表来进行对初始化信息的书写。在初始化时将三个重点的信息分别初始化为:广州 航班号005 飞机号PZH113 机票数120天津 航班号004 飞机号PZH121 机票数120 北京 航班号003 飞机号PZH133 机票数120上海 航班号002 飞机号PZH132 机票数120成都 航班号001 飞机号PZH122 机票数1203.1.2 功能实现代码void InitLine()/初始化航线信息airline *p,*q; /航线L=(airline *)malloc(sizeof(airline);L-booked=NULL;L-wait=NULL;L-next=NULL;strcpy(L-end_addr,00000000); /终点站strcpy(L-line_num,000); /航班号strcpy(L-plant_num,0000000); /飞机号L-day=L-left=L-total=0;q=L;p=(airline *)malloc(sizeof(airline);/广州p-booked=NULL;p-wait=NULL;strcpy(p-end_addr,广州);strcpy(p-line_num,005);strcpy(p-plant_num,PZH113);p-day=5;p-left=120;p-total=120;p-next=q-next;q-next=p;p=(airline *)malloc(sizeof(airline);/天津p-booked=NULL;p-wait=NULL;strcpy(p-end_addr,天津);strcpy(p-line_num,004);strcpy(p-plant_num,PZH121);p-day=4;p-left=120;p-total=120;p-next=q-next;q-next=p; p=(airline *)malloc(sizeof(airline);/北京p-booked=NULL;p-wait=NULL;strcpy(p-end_addr,北京);strcpy(p-line_num,003);strcpy(p-plant_num,PZH133);p-day=1;p-left=120;p-total=120;p-next=q-next;q-next=p; p=(airline *)malloc(sizeof(airline);/上海p-booked=NULL;p-wait=NULL;strcpy(p-end_addr,上海);strcpy(p-line_num,002);strcpy(p-plant_num,PZH132);p-day=2;p-left=120;p-total=120;p-next=q-next;q-next=p; p=(airline *)malloc(sizeof(airline);/成都p-booked=NULL;p-wait=NULL;strcpy(p-end_addr,成都);strcpy(p-line_num,001);strcpy(p-plant_num,PZH122);p-day=3;p-left=120;p-total=120;p-next=q-next;q-next=p; 3.2 查询航班信息3.2.1代码功能 此模块主要由我负责,在此模块我实现了查询航班的功能。当进入查询功能时,通过输入数字用户可以查询航班的基本信息,比如目的地,剩下的机票数目,出发的时间等等基本信息。如果输入的数字在界面中没有显示则会提示用户没有这次航班。在这个模块我使用了个switch语句来实现对查询方式的选择。通过判断输入的数字进入到相对应的查询方式。如果输入的信息有误的话,系统将会提示用户没有这次航班,需要重新输入。3.2.2查询模块流程图查询4321航班终点飞行日期飞机号航班号 3.2.2查询模块的流程图在该模块用户可以进行查询功能。用户根据提示可以按照航班号、飞机号、飞行日期和航班重点来查询航班的基本信息。这些基本信息包括了飞行航班号、飞机号、剩余票量和处罚日期等等。在该模块用户必须根据提示进行输入,否则系统会提示输入有误,需要重新输入。3.2.3 功能实现代码void search()/航班查询系统 int i; int flag=0; airline *p; PR(请输入查询航班的方式:n); PR(航班号-1n); PR(飞机号-2n); PR(飞行日期-3n); PR(航班终点-4n); SC(%d,&i); for(;!flag;) switch(i) /switch语句来进行航班的查询方式 case 1: p=search_line();flag=1;break; case 2: p=search_plant();flag=1;break; case 3: p=search_day();flag=1;break; case 4: p=search_addr();flag-=1;break; default:PR(操作错误,请重新输入n);break; if(p) PR(终点站 航班号 飞机号 飞行周日 余票量n);PR(%-20s%10s%10s%8d%8dn,p-end_addr,p-line_num,p-plant_num,p-day,p-left);PR(是否订票(确定请按1));SC(%d,&i);if(i=1)book();else PR(没有该航班n);3.3 订票模块3.3.1 代码功能在此模块可以根据提示可以从航班号,飞行日期和终点站来进行订票。如果订票时余票不足所需要的票的数目时就可以进行排队购票选择。3.3.2 功能实现代码void book()/订票系统int i;int flag=0;airline *p;customer *cst,*c;PR(请输入查询航班的方式:n);PR(航班号-1n);PR(终点站-2n);PR(飞行日期-3n);for(;!flag;)SC(%d,&i);switch(i) /运用一个switch语句进行航班查询case 1: p=search_line();flag=1;break;case 2: p=search_addr();flag=1;break;case 3: p=search_day();flag=1;break;default:PR(操作错误,请重新输入n);break;if(p)PR(终点站 航班号 飞机号 飞行周日 余票量n);PR(%-20s%10s%10s%8d%8dn,p-end_addr,p-line_num,p-plant_num,p-day,p-left);cst=(customer *)malloc(sizeof(customer);PR(请输入订票数量:);SC(%d,&cst-num);PR(请输入舱位等级(1/2/3));SC(%d,&cst-level);PR(请输入您的名字);SC(%s,cst-name);if(cst-numleft)cst-next=p-booked;p-booked=cst;p-left=p-left-cst-num;PR(订票成功,座位号为%d%dn,p-total-p-left-cst-num+1,p-total-p-left);else/当需要的飘得数量大于剩余的票数的时候进行询问是否进行排队购票PR(余票不足,是否排队等候n是(y)n否(n)n);SC(%d,&flag);if(flag)if(!p-wait)cst-next=p-wait;p-wait=cst;elsec=p-wait;for(;c-next;c=c-next);cst-next=c-next;c-next=cst; else PR(没有该航班n);guide();排队订票时的排队订票系统:void waited(airline *p)/排队订票系统int flag;customer *q,*q0,*h;if(!p-wait) return;q=(customer *)malloc(sizeof(customer);q-level=0;q-num=123;strcpy(q-name,00000);q-next=p-wait;h=q;for(;p-left0&q-next;)if(q-next-numleft)PR(%s,您正在排队定%d张票,现有票,是否定n是(y)n否(n)n,q-next-name,q-next-num);SC(%d,&flag);if(flag)q0=q-next;q-next=q-next-next;q0-next=p-booked;p-booked=q0;p-left=p-left-q0-num;PR(排队订票成功nn);elseq=q-next;elseq=q-next;p-wait=h-next;3.4退票系统模块3.4.1代码功能在此模块,用户可以根据系统的提示进行退票操作。当进行退票操作时需要进行信息的核对,如果正确,打印出信息,再询问是否退票。3.4.2功能实现代码void refund()/退票系统int flag;char a20;airline *p;customer *c,*c1;p=search_line();c=p-booked;if(!p)PR(没有该航班nn);guide();return;PR(请输入您的姓名);SC(%s,a);if(!p-booked-name) /进行信息的查找判断是否有用户的信息PR(对不起,没有找到您的信息nn);guide();return ;if(!strcmp(a,p-booked-name) /核对完信息后输出要退票乘客的信息PR(退票信息n姓名/终点站/票数n%s/%s/%dn,p-booked-name,p-end_addr,p-booked-num);PR(确认要退票n是(y)n否(n)n);scanf(%d,&flag);if(flag)p-booked=p-booked-next;p-left=p-left+c-num;free(c);PR(退票成功nn);waited(p);guide();elsefor(;c-next;c=c-next)if(!strcmp(a,c-next-name)break;if(!c-next)PR(对不起,没有找到您的信息nn);guide();return ;elsePR(退票信息n姓名/终点站/票数n%s/%s/%dn,c-next-name,p-end_addr,c-next-num);PR(确认要退票?n是(y)n否(n)n);/询问是否退票scanf(%d,&flag);if(flag)c1=c-next;c-next=c-next-next;p-left=p-left+c1-num;free(c1);PR(退票成功nn);waited(p);guide();以上三个模块是改程序最主要的功能实现的代码。初次之外还有部分其他显示模块。精品文档4 测试与运行由需求分析可知该程序运行后实现功能后的结果。此处是功能界面,用户可以按照提示进行操作进行查询功能时:进行查询模块式会显示出查询方式,按照查询方式可以准确的得到航班的信息进行订票模块时:在此处模块,订票可以根据提示进行购票,可以订多张票,输入舱位的等级和订票人名字排队订票系统:如果该航班剩余的票量小于所要购买的数量,则会提示是否进行排队购票。退票系统:在该模块,进行退票操作时,系统会进行信息的核对,如果正确,将会显示客户的信息。然后提示是否退票。精品文档5 结束语 此次数据结构课程设计为航空订票系统。在写程序的时候还是遇到了很多的问题。有些功能怎么也实现不了。经过和同学的探讨还有上网查找资料,最后终于克服了这些问题,成功的运行出了程序。通过这次学习,使我对编写程序的兴趣更大了。除此之外,此次课程设计帮我们熟练地运用所学习的知识,还让我们熟练的去融合他们,写出一个全新的程序来。在这次课程设计中要衷心的感谢老师对我们的帮助,使得我们对所学知识的熟练运用。总而言之,这次的课程设计既有趣又训练了我们对知识的运用。精品文档 6参考文献1阮宏一,鲁静数据结构课程设计C/C+描述.电子工业出版社2马巧梅,庞晓琼等.数据结构课程设计案例教程第三版.人民邮电出版社3袁蔚敏.数据结构 清华大学出版社精品文档 7 源代码 源代码:#include#include#include#include#define PR printf#define SC scanftypedef struct customer/客户信息char name20;/客户姓名int num;/订票量int level;/舱位等级customer *next;customer,*Lcustomer;typedef struct airline/航线信息char end_addr20;/航线终点char line_num5;/航班号char plant_num8;/飞机号int day;/飞行日期int total;/定员int left;/剩余票数customer *booked;/已定客户信息customer *wait;/排队等候订票信息airline *next;airline,*Lairline;airline *L;/将航班信息定义为全局变量,减少参数传递Lairline search_line()/按航班号查找航班char a5;airline *p;p=L-next;PR(请输入航班号);SC(%s,a);for(;p;p=p-next)if(!strcmp(a,p-line_num) break;return p;Lairline search_plant()/按飞机号查找航班char a8;airline *p;p=L-next;PR(请输入飞机号);SC(%s,a);for(;p;p=p-next)if(!strcmp(a,p-plant_num) break;return p;Lairline search_day()/按飞行日期查找航班int a;airline *p;p=L-next;PR(请输入飞行日期);SC(%d,&a);for(;p;p=p-next)if(a=p-day) break;return p;Lairline search_addr()/按航班终点查找航班char a20;airline *p;p=L-next;PR(请输入航班终点);SC(%s,a);for(;p;p=p-next)if(!strcmp(a,p-end_addr) break;return p;void guide()/主菜单界面PR( -航空订票客服系统-n);PR(=n);PR(tt显示所有航线= 1n);PR(tt查询航线信息= 2n);PR(tt订票业务 = 3n);PR(tt退票业务 = 4n);PR(tt退出系统 = 0n);PR(=n);PR(tt清除屏幕信息= 9nn);PR(请按上面指引操作:t);void print_customer(airline *p)/显示航班客户信息customer *c;if(p-booked)c=p-booked;PR(已定票客户信息n票数t/t客户姓名n);for(;c;c=c-next)PR(%5dt/t%sn,c-num,c-name);PR(nn);elsePR(暂时没有客户订票nn);if(p-wait)c=p-wait;PR(排队订票客户信息n票数t/t客户姓名n);for(;c;c=c-next)PR(%5dt/t%sn,c-num,c-name);PR(nn);elsePR(暂时没有客户排队订票nn);void book()/订票系统int i;int flag=0;airline *p;customer *cst,*c;PR(请输入查询航班的方式:n);PR(航班号-1n);PR(终点站-2n);PR(飞行日期-3n);for(;!flag;)SC(%d,&i);switch(i)case 1: p=search_line();flag=1;break;case 2: p=search_addr();flag=1;break;case 3: p=search_day();flag=1;break;default:PR(操作错误,请重新输入n);break;if(p)PR(终点站 航班号 飞机号 飞行周日 余票量n);PR(%-20s%10s%10s%8d%8dn,p-end_addr,p-line_num,p-plant_num,p-day,p-left);cst=(customer *)malloc(sizeof(customer);PR(请输入订票数量:);SC(%d,&cst-num);PR(请输入舱位等级(1/2/3));SC(%d,&cst-level);PR(请输入您的名字);SC(%s,cst-name);if(cst-numleft)cst-next=p-booked;p-booked=cst;p-left=p-left-cst-num;PR(订票成功,座位号为%d%dn,p-total-p-left-cst-num+1,p-total-p-left);elsePR(余票不足,是否排队等候?n是(y)n否(n)n);SC(%d,&flag);if(flag)if(!p-wait)cst-next=p-wait;p-wait=cst;elsec=p-wait;for(;c-next;c=c-next);cst-next=c-next;c-next=cst;else PR(没有该航班n);guide();void waited(airline *p)/排队订票系统int flag;customer *q,*q0,*h;if(!p-wait) return;q=(customer *)malloc(sizeof(customer);q-level=0;q-num=123;strcpy(q-name,00000);q-next=p-wait;h=q;for(;p-left0&q-next;)if(q-next-numleft)PR(%s,您正在排队定%d张票,现有票,是否定n是(y)n否(n)n,q-next-name,q-next-num);SC(%d,&flag);if(flag)q0=q-next;q-next=q-next-next;q0-next=p-booked;p-booked=q0;p-left=p-left-q0-num;PR(排队订票成功nn);elseq=q-next;elseq=q-next;p-wait=h-next;void refund()/退票系统int flag;char a20;airline *p;customer *c,*c1;p=search_line();c=p-booked;if(!p)PR(没有该航班nn);guide();return;PR(请输入您的姓名);SC(%s,a);if(!p-booked-name)PR(对不起,没有找到您的信息nn);guide();return ;if(!strcmp(a,p-booked-name)PR(退票信息n姓名/终点站/票数n%s/%s/%dn,p-booked-name,p-end_addr,p-booked-num);PR(确认要退票?n是(y)n否(n)n);scanf(%d,&flag);if(flag)p-booked=p-booked-next;p-left=p-left+c-num;free(c);PR(退票成功nn);waited(p);guide();elsefor(;c-next;c=c-next)if(!strcmp(a,c-next-name)break;if(!c-next)PR(对不起,没有找到您的信息nn);guide();return ;elsePR(退票信息n姓名/终点站/票数n%s/%s/%dn,c-next-name,p-end_addr,c-next-num);PR(确认要退票?n是(y)n否(n)n);scanf(%d,&flag);if(flag)c1=c-next;c-next=c-next-next;p-left=p-left+c1-num;free(c1);PR(退票成功nn);waited(p);guide();void search()/航班查询系统int i;int flag=0;airline *p;PR(请输入查询航班的方式:n);PR(航班号-1n);PR(飞机号-2n);PR(飞行日期-3n);PR(航班终点-4n);SC(%d,&i);for(;!flag;)switch(i)case 1: p=search_line();flag=1;break;case 2: p=search_plant();flag=1;break;case 3: p=search_day();flag=1;break;case 4: p=search_addr();flag-=1;break;default:PR(操作错误,请重新输入n);break;if(p)PR(终点站 航班号 飞机号 飞行周日 余票量n);PR(%-20s%10s%10s%8d%8dn,p-end_addr,p-line_num,p-plant_num,p-day,p-left);PR(是否订票(确定请按1));SC(%d,&i);if(i=1)book();else PR(没有该航班n);void InitLine()/初始化航线信息airline *p,*q;L=(airline *)malloc(sizeof(airline);L-booked=NULL;L-wait=NULL;L-next=NULL;strcpy(L-end_addr,00000000);strcpy(L-line_num,000);strcpy(L-plant_num,0000000);L-day=L-left=L-total=0;q=L;p=(airline *)malloc(sizeof(airline);p-booked=NULL;p-wait=NULL;strcpy(p-end_addr,广州);strcpy(p-line_num,005);strcpy(p-plant_num,PZH113);p-day=5;p-left=120;p-total=120;p-next=q-next;q-next=p; p=(airline *)malloc(sizeof(airline);p-booked=NULL;p-w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年哈尔滨石化分公司春季高校毕业生招聘考前自测高频考点模拟试题完整参考答案详解
- 2025年福建省龙岩市新罗区苏坂中心幼儿园招聘1人模拟试卷有答案详解
- 2025广东广州市黄埔区穗东街道庙头社区合同制人员招聘5人模拟试卷有完整答案详解
- 赣州发展投资控股集团有限责任公司2025年公开招聘笔试第一轮人员笔试历年参考题库附带答案详解
- 山东海洋文化旅游发展集团有限公司2025年度公开招聘拟聘用人员笔试历年参考题库附带答案详解
- 2025陕西西安翻译学院后勤集团招聘食品安全快检实验室检测员笔试历年参考题库附带答案详解
- 2025陕西法士特齿轮有限责任公司招聘笔试历年参考题库附带答案详解
- 2025陕西安康市新华书店有限责任公司招聘20人笔试历年参考题库附带答案详解
- 2025年宁波慈溪市中西医结合医疗健康集团招聘派遣制工作人员3人考前自测高频考点模拟试题附答案详解(模拟题)
- 2025贵州贵阳机场股份公司飞机地勤分公司招聘笔试历年参考题库附带答案详解
- 初中三年级全学期信息科技《认识物联网》教学课件
- 部编版初中语文《艾青诗选》整本书阅读公开课堂实录
- 2024-2029年中国司美格鲁肽行业市场现状分析及竞争格局与投资发展研究报告
- 奥氮平氟西汀胶囊-药品解读
- 4D厨房区域区间管理责任卡
- 提高住院患者卒中知识知晓率
- 公司组织知识清单范例
- 烘焙类产品的特性及应用
- 第三章转录及转录调控
- GB/T 7193-2008不饱和聚酯树脂试验方法
- GB/T 3810.3-2016陶瓷砖试验方法第3部分:吸水率、显气孔率、表观相对密度和容重的测定
评论
0/150
提交评论