数据结构航空订票系统课程设计报告_第1页
数据结构航空订票系统课程设计报告_第2页
数据结构航空订票系统课程设计报告_第3页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、WORD格式*学院学生课程设计报告摘要摘要飞机在现代的生活中扮演者非常重要的角色。 它能够快速的把人们送到自己想要去的地方,既快速,又方便。所以现在坐飞机时很普遍的。但是都到机场去买票浪费时间,因此,航空订票系统应运而生。有了航空订票系统,用户可以在该系统进展飞机票的查询,订票,退票等操作。方便了大家关键词航空订票系统、查询、订票、退票专业资料整理WORD格式I专业资料整理WORD格式目录摘要 .I1需求分析.11.1需求概述 . .11.2需求环境 . .11.3功能描述 . .12概要设计.22.1程序功能模块 . .22.2程序流程图 . .22.3课程设计的思想 . .23详细设计 .

2、33.1程序初始化 . .33.1.1代码功能 . .33.1.2功能实现代码 .33.2查询航班信息 . .53.2.1代码功能 . .53.2.3功能实现代码 .63.3订票模块 . .73.3.1代码功能 .73.3.2功能实现代码 .74测试与运行.135完毕语.166参考文献 .177附录 .18专业资料整理WORD格式1专业资料整理WORD格式*学院学生课程设计报告需求分析1 需求分析1.1需求概述航线管理。每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日星期几、乘员定额、余票量客户管理。有关订票的客房信息包括*、订票量、舱位等级 (1,2 和 3) 以及等替补的客房包括

3、*、所需标量 。系统实现主要操作操作和功能。系统实现的主要操作规程和功能如下: 查询航线。根据旅客提出的终点站名输出以下信息:航班号、飞机号、飞行日期、余标额。承办订票业务。根据客户提出的要求航班号、订票数额查询该航班票额情况,假设有余票,那么为客户办理订票手续,输出座位号;假设已满或者余票少于订票额,那么需要重新询问客户要求;假设需要,可等待排队侯补承办退票业务。根据客户提供的情况日期、航班 ,为客户输退票手续,然后查询该航班是否有人排队候补, 首先询问排在第一的客户, 假设所退票额满足该客户的要求, 那么为其订票手续, 否那么依次询问其他排队候补的客户。1.2需求环境本课程设计需要的设备为

4、硬件要求和软件配置要求具体要求如下:硬件要求:一台计算机。软件配置: WINDOWS7/VC+6。.01.3功能描述本次课程设计是航空订票系统主要是由查询航班信息,订票还有退票三大主要功能。除此之外,还有系统的界面等等。专业资料整理WORD格式1专业资料整理WORD格式*学院学生课程设计论文概要设计2 概要设计2.1程序功能模块由需求分析知, 本次课程设计是航空订票系统其主要由三大模块构成, 即查询模块这局部由我负责 ,订票系统模块和退票系统模块构成。2.2程序流程图专业资料整理WORD格式开场航空订票系统该程序开场运行后进如航空订票系统用户可以进展航班信息的查询,订票和退票操作。专业资料整理

5、WORD格式查询模块订票系统模块退票系统模块使用完毕,退出系统图 2.1 为该系统总的流程图2.3课程设计的思想由需求分析知道需要实现几个功能定义了两个构造体。 这两个构造体分别用来表示顾客信息和航班信息。 有构造体可以知道一些根本信息, 比方顾客的*,定的机票和航班的时间等等信息。使得实验代码的可读性大大增强。专业资料整理WORD格式2专业资料整理WORD格式3 详细设计3.1程序初始化3.1.1 代码功能这一块还是由我负责。我初始化了五个航班的根本信息。在初始化程序中,主要是航班的根本信息。 比方航班号,出发时间和剩下的机票数目等等根本信息。通过运用指针和链表来进展对初始化信息的书写。 在

6、初始化时将三个重点的信息分别初始化为:*航班号 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_ad

7、dr,"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

8、");strcpy(p->plant_num,"PZH113");专业资料整理WORD格式3专业资料整理WORD格式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"

9、;);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,"P

10、ZH133");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,"* ");专业资料整理WORD格式4专业资料整理WORD格式strcpy(p->line_num,"002");strcpy(p->plant_num,"PZH132

11、");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

12、=120;p->total=120;p->next=q->next;q->next=p;3.2查询航班信息3.2.1 代码功能此模块主要由我负责,在此模块我实现了查询航班的功能。当进入查询功能时,通过输入数字用户可以查询航班的根本信息, 比方目的地,剩下的机票数目,出发的时间等等根本信息。 如果输入的数字在界面中没有显示那么会提示用户没有这次航班。在这个模块我使用了个 switch 语句来实现对查询方式的选择。通过判断输入的数字进入到相对应的查询方式。 如果输入的信息有误的话, 系统将会提示用户没有这次航班,需要重新输入。专业资料整理WORD格式5专业资料整理WORD格

13、式3.2.2 查询模块流程图查询1234航班号飞机号飞行日期航班终点3.2.2 查询模块的流程图在该模块用户可以进展查询功能。 用户根据提示可以按照航班号、 飞机号、飞行日期和航班重点来查询航班的根本信息。 这些根本信息包括了飞行航班号、 飞机号、剩余票量和处分日期等等。 在该模块用户必须根据提示进展输入, 否那么系统会提示输入有误,需要重新输入。3.2.3功能实现代码void search()/ 航班查询系统int i;int flag=0;airline *p;PR(" 请输入查询航班的方式:n");PR(" 航班号 ->1n");PR(&qu

14、ot; 飞机号 ->2n");PR(" 飞行日期 ->3n");PR(" 航班终点 ->4n");SC("%d",&i);for(;!flag;)switch(i)/switch语句来进展航班的查询方式专业资料整理WORD格式6专业资料整理WORD格式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=searc

15、h_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();elsePR("没有该航班 n&qu

16、ot;);3.3订票模块3.3.1代码功能在此模块可以根据提示可以从航班号,飞行日期和终点站来进展订票。如果订票时余票缺乏所需要的票的数目时就可以进展排队购票选择。3.3.2功能实现代码void book()/ 订票系统int i;int flag=0;airline *p;customer *cst,*c;PR("请输入查询航班的方式:n");PR("航班号 ->1n");专业资料整理WORD格式7专业资料整理WORD格式PR("终点站 ->2n");PR("飞行日期 ->3n");for(;!

17、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->en

18、d_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->

19、num<=p->left)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 是 yn 否 n n"); SC("%d",&flag);if(fl

20、ag)if(!p->wait)专业资料整理WORD格式8专业资料整理WORD格式cst->next=p->wait;p->wait=cst;elsec=p->wait;for(;c->next;c=c->next);cst->next=c->next;c->next=cst;elsePR("没有该航班 n");guide();排队订票时的排队订票系统:void waited(airline *p)/ 排队订票系统int flag;customer *q,*q0,*h;if(!p->wait) return;q

21、=(customer *)malloc(sizeof(customer);q->level=0;q->num=123;strcpy(q->name,"00000");q->next=p->wait;h=q;for(;p->left>0&&q->next;)if(q->next->num<p->left)PR("%s,您正在排队定 %dX票,现有票,是否认 n 是yn 否n n",q->next->name,q->next->num);SC(&q

22、uot;%d",&flag);if(flag)q0=q->next;q->next=q->next->next;专业资料整理WORD格式9专业资料整理WORD格式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 代码功能在此模块,用户可以根据系统的提示进展退票操作

23、。 当进展退票操作时需要进展信息的核对,如果正确,打印出信息,再询问是否退票。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("对不起,没有找到您的

24、信息nn");guide();return ;专业资料整理WORD格式10专业资料整理WORD格式if(!strcmp(a,p->booked->name) /核对完信息后输出要退票乘客的信息PR("退票信息n姓名/终点站/票数n%s/%s/%dn",p->booked->name,p->end_addr,p->booked->num); PR("确认要退票 n 是 yn 否 n)n"); scanf("%d",&flag);if(flag)p->booked=p-&g

25、t;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-

26、>end_addr,c->next->num);PR("确认要退票? n 是 yn 否 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();专业资料整理WORD格式11专业资料整理WORD格式以上三个模块是改程序最主要的功能实现的代码。 初次之外还有

27、局部其他显示模块。专业资料整理WORD格式12专业资料整理WORD格式4 测试与运行由需求分析可知该程序运行后实现功能后的结果。此处是功能界面,用户可以按照提示进展操作进展查询功能时:专业资料整理WORD格式13专业资料整理WORD格式进展查询模块式会显示出查询方式,按照查询方式可以准确的得到航班的信息进展订票模块时:在此处模块,订票可以根据提示进展购票,可以订多X票,输入舱位的等级和订票人名字排队订票系统:如果该航班剩余的票量小于所要购置的数量,那么会提示是否进展排队购票。专业资料整理WORD格式14专业资料整理WORD格式退票系统:在该模块,进展退票操作时,系统会进展信息的核对,如果正确,

28、将会显示客户的信息。然后提示是否退票。专业资料整理WORD格式15专业资料整理WORD格式5 完毕语此次数据构造课程设计为航空订票系统。 在写程序的时候还是遇到了很多的问题。有些功能怎么也实现不了。 经过和同学的探讨还有上网查找资料, 最后终于抑制了这些问题,成功的运行出了程序。通过这次学习, 使我对编写程序的兴趣更大了。 除此之外, 此次课程设计帮我们熟练地运用所学习的知识, 还让我们熟练的去融合他们, 写出一个全新的程序来。在这次课程设计中要衷心的感谢教师对我们的帮助, 使得我们对所学知识的熟练运用。总而言之,这次的课程设计既有趣又训练了我们对知识的运用。专业资料整理WORD格式16专业资

29、料整理WORD格式6 参考文献1 阮宏一,鲁静"数据构造课程设计 C/C+描述" . 电子工业2 马巧梅,庞晓琼等 . "数据构造课程设计案例教程"第三版 . 人民邮电3 袁蔚敏 . "数据构造" 清华大学专业资料整理WORD格式17专业资料整理WORD格式7源代码源代码:#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<string.h>#define PR printf#define SC scanftyped

30、ef 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 *ne

31、xt;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;专业资料整理WORD格式18专业资料整理WORD格式Lairline search_plant()/ 按飞机号查找航班char a8;airline

32、 *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

33、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");专业资料整理WORD格式19专业资料整理WORD格式PR(&

34、quot;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("已定

35、票客户信息 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");e

36、lsePR("暂时没有客户排队订票 nn");void book()/ 订票系统int i;int flag=0;airline *p;customer *cst,*c;专业资料整理WORD格式20专业资料整理WORD格式PR("请输入查询航班的方式:n");PR("航班号 ->1n");PR("终点站 ->2n");PR("飞行日期 ->3n");for(;!flag;)SC("%d",&i);switch(i)case 1: p=search_l

37、ine();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 *)ma

38、lloc(sizeof(customer);PR("请输入订票数量: ");SC("%d",&cst->num);PR("请输入舱位等级 1/2/3 ");SC("%d",&cst->level);PR("请输入您的名字 ");SC("%s",cst->name);if(cst->num<=p->left)cst->next=p->booked;p->booked=cst;p->left=p->

39、left-cst->num;PR("订票成功,座位号为 %d%dn",p->total-p->left-cst->num+1,p->total-p->left);elsePR("余票缺乏,是否排队等候?n 是 y n 否 nn");SC("%d",&flag);if(flag)专业资料整理WORD格式21专业资料整理WORD格式if(!p->wait)cst->next=p->wait;p->wait=cst;elsec=p->wait;for(;c->n

40、ext;c=c->next);cst->next=c->next;c->next=cst;elsePR("没有该航班 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;

41、h=q;for(;p->left>0&&q->next;)if(q->next->num<p->left)PR("%s,您正在排队定 %dX票,现有票,是否认 n 是yn 否nn",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;专业资料整理W

42、ORD格式22专业资料整理WORD格式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("请输入您的* ");S

43、C("%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 是 yn 否 n)n");scanf("%d",&

44、flag);if(flag)p->booked=p->booked->next;p->left=p->left+c->num;专业资料整理WORD格式23专业资料整理WORD格式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 是 yn 否 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);gui

温馨提示

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

评论

0/150

提交评论