数据结构航空订票系统课程设计报告.docx
- 文档编号:5116615
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:31
- 大小:255.54KB
数据结构航空订票系统课程设计报告.docx
《数据结构航空订票系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据结构航空订票系统课程设计报告.docx(31页珍藏版)》请在冰豆网上搜索。
数据结构航空订票系统课程设计报告
摘要之马矢奏春创作
创作时间:
二零二一年六月三十日
飞机在现代的生活中饰演者非常重要的角色.它能够快速的把人们送到自己想要去的处所,既快速,又方便.所以现在坐飞机时很普遍的.可是都到机场去买票浪费时间,因此,航空订票系统应运而生.有了航空订票系统,用户可以在该系统进行飞机票的查询,订票,退票等把持.方便了年夜家
关键词航空订票系统、查询、订票、退票
5结束语.......................................................................................................................16
6参考文献..................................................................................................................17
7附录..........................................................................................................................18
1需求分析
1.1需求概述
航线管理.每条航线所涉及的信息有:
终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量
客户管理.有关订票的客房信息(包括姓名、订票量、舱位品级(1,2和3)以及等替补的客房名单(包括姓名、所需标量).
系统实现主要把持把持和功能.系统实现的主要把持规程和功能如下:
1查询航线.根据旅客提出的终点站名输出下列信息:
航班号、飞机号、飞行日期、余标额.
2承办订票业务.根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户规画订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队侯补
3承办退票业务.根据客户提供的情况(日期、航班),为客户输退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额满足该客户的要求,则为其订票手续,否则依次询问其他排队候补的客户.
1.2需求环境
本课程设计需要的设备为硬件要求和软件配置要求具体要求如下:
①硬件要求:
一台计算机.
②软件配置:
WINDOWS7/V.
1.3功能描述
本次课程设计是航空订票系统主要是由查询航班信息,订票还有退票三年夜主要功能.除此之外,还有系统的界面等等.
2概要设计
2.1法式功能模块
由需求分析知,本次课程设计是航空订票系统其主要由三年夜模块构成,即查询模块(这部份由我负责),订票系统模块和退票系统模块构成.
2.2法式流程图
该法式开始运行后
进如航空订票系统
用户可以进行航班
信息的查询,订票
和退票把持.
2.3课程设计的思想
由需求分析知道需要实现几个功能界说了两个结构体.这两个结构体分别用来暗示顾客信息和航班信息.有结构体可以知道一些基本信息,比如顾客的姓名,定的机票和航班的时间等等信息.使得实验代码的可读性年夜年夜增强.
3详细设计
3.1法式初始化
代码功能
这一块还是由我负责.我初始化了五个航班的基本信息.在初始化法式中,主要是航班的基本信息.比如航班号,动身时间和剩下的机票数目等等基本信息.通过运用指针和链表来进行对初始化信息的书写.在初始化时将三个重点的信息分别初始化为:
①广州航班号005飞机号PZH113机票数120
②天津航班号004飞机号PZH121机票数120
③北京航班号003飞机号PZH133机票数120
④上海航班号002飞机号PZH132机票数120
⑤成都航班号001飞机号PZH122机票数120
3.1.2功能实现代码
voidInitLine()//初始化航线信息
{
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查询航班信息
代码功能
此模块主要由我负责,在此模块我实现了查询航班的功能.当进入查询功能时,通过输入数字用户可以查询航班的基本信息,比如目的地,剩下的机票数目,动身的时间等等基本信息.如果输入的数字在界面中没有显示则会提示用户没有这次航班.在这个模块我使用了个switch语句来实现对查询方式的选择.通过判断输入的数字进入到相对应的查询方式.如果输入的信息有误的话,系统将会提示用户没有这次航班,需要重新输入.
在该模块用户可以进行查询功能.用户根据提示可以依照航班号、飞机号、飞行日期和航班重点来查询航班的基本信息.这些基本信息包括了飞行航班号、飞机号、剩余票量和惩罚日期等等.在该模块用户必需根据提示进行输入,否则系统会提示输入有误,需要重新输入.
3.2.3功能实现代码
voidsearch()//航班查询系统
{
inti;
intflag=0;
airline*p;
PR("请输入查询航班的方式:
\n");
PR("航班号---->1\n");
PR("飞机号---->2\n");
PR("飞行日期-->3\n");
PR("航班终点-->4\n");
SC("%d",&i);
for(;!
flag;)
switch(i)//switch语句来进行航班的查询方式
{
case1:
p=search_line();flag=1;break;
case2:
p=search_plant();flag=1;break;
case3:
p=search_day();flag=1;break;
case4:
p=search_addr();flag-=1;break;
default:
PR("把持毛病,请重新输入\n");break;
}
if(p)
{
PR("终点站航班号飞机号飞行周日余票量\n");
PR("%-20s%10s%10s%8d%8d\n",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功能实现代码
voidbook()//订票系统
{
inti;
intflag=0;
airline*p;
customer*cst,*c;
PR("请输入查询航班的方式:
\n");
PR("航班号--->1\n");
PR("终点站--->2\n");
PR("飞行日期->3\n");
for(;!
flag;)
{
SC("%d",&i);
switch(i)//运用一个switch语句进行航班查询
{
case1:
p=search_line();flag=1;break;
case2:
p=search_addr();flag=1;break;
case3:
p=search_day();flag=1;break;
default:
PR("把持毛病,请重新输入\n");break;
}
}
if(p)
{
PR("终点站航班号飞机号飞行周日余票量\n");
PR("%-20s%10s%10s%8d%8d\n",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->num<=p->left)
{
cst->next=p->booked;
p->booked=cst;
p->left=p->left-cst->num;
PR("订票胜利,座位号为%d~%d\n",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;
}
else
{
c=p->wait;
for(;c->next;c=c->next);
cst->next=c->next;
c->next=cst;
}
}
}
}
else
PR("没有该航班\n");
guide();
}
排队订票时的排队订票系统:
voidwaited(airline*p)//排队订票系统
{
intflag;
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->left>0&&q->next;)
{
if(q->next->num
{
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("排队订票胜利\n\n");
}
else
q=q->next;
}
else
q=q->next;
}
p->wait=h->next;
}
在此模块,用户可以根据系统的提示进行退票把持.当进行退票把持时需要进行信息的核对,如果正确,打印出信息,再询问是否退票.
voidrefund()//退票系统
{
intflag;
chara[20];
airline*p;
customer*c,*c1;
p=search_line();
c=p->booked;
if(!
p)
{
PR("没有该航班\n\n");
guide();
return;
}
PR("请输入您的姓名");
SC("%s",a);
if(!
p->booked->name)//进行信息的查找判断是否有用户的信息
{
PR("对不起,没有找到您的信息\n\n");
guide();
return;
}
if(!
strcmp(a,p->booked->name))//核对完信息后输出要退票乘客的信息
{
PR("退票信息\n姓名/终点站/票数\n%s/%s/%d\n",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("退票胜利\n\n");
waited(p);
guide();
}
}
else
{
for(;c->next;c=c->next)
if(!
strcmp(a,c->next->name))
break;
if(!
c->next)
{
PR("对不起,没有找到您的信息\n\n");
guide();
return;
}
else
{
PR("退票信息\n姓名/终点站/票数\n%s/%s/%d\n",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("退票胜利\n\n");
waited(p);
guide();
}
}
}
}
以上三个模块是改法式最主要的功能实现的代码.初度之外还有部份其他显示模块.
4测试与运行
由需求分析可知该法式运行后实现功能后的结果.
此处是功能界面,用户可以依照提示进行把持
进行查询功能时:
进行查询模块式会显示出查询方式,依照查询方式可以准确的获得航班的信息
进行订票模块时:
在此处模块,订票可以根据提示进行购票,可以订多张票,输入舱位的品级和订票人名字
排队订票系统:
如果该航班剩余的票量小于所要购买的数量,则会提示是否进行排队购票.
退票系统:
在该模块,进行退票把持时,系统会进行信息的核对,如果正确,将会显示客户的信息.然后提示是否退票.
5结束语
此次数据结构课程设计为航空订票系统.在写法式的时候还是遇到了很多的问题.有些功能怎么也实现不了.经过和同学的探讨还有上网查找资料,最后终于克服了这些问题,胜利的运行出了法式.
通过这次学习,使我对编写法式的兴趣更年夜了.除此之外,此次课程设计帮我们熟练地运用所学习的知识,还让我们熟练的去融合他们,写出一个全新的法式来.
在这次课程设计中要衷心的感谢老师对我们的帮手,使得我们对所学知识的熟练运用.总而言之,这次的课程设计既有趣又训练了我们对知识的运用.
6参考文献
[1]阮宏一,鲁静《数据结构课程设计C/C++描述》.电子工业出书社
[3]袁蔚敏.《数据结构》清华年夜学出书社
7源代码
源代码:
#include
#include
#include
#include
#definePRprintf
#defineSCscanf
typedefstructcustomer//客户信息
{
charname[20];//客户姓名
intnum;//订票量
intlevel;//舱位品级
customer*next;
}customer,*Lcustomer;
typedefstructairline//航线信息
{
charend_addr[20];//航线终点
charline_num[5];//航班号
charplant_num[8];//飞机号
intday;//飞行日期
inttotal;//定员
intleft;//剩余票数
customer*booked;//已定客户信息
customer*wait;//排队等待订票信息
airline*next;
}airline,*Lairline;
airline*L;//将航班信息界说为全局变量,减少参数传递
Lairlinesearch_line()//按航班号查找航班
{
chara[5];
airline*p;
p=L->next;
PR("请输入航班号");
SC("%s",a);
for(;p;p=p->next)
if(!
strcmp(a,p->line_num))break;
returnp;
}
Lairlinesearch_plant()//按飞机号查找航班
{
chara[8];
airline*p;
p=L->next;
PR("请输入飞机号");
SC("%s",a);
for(;p;p=p->next)
if(!
strcmp(a,p->plant_num))break;
returnp;
}
Lairlinesearch_day()//按飞行日期查找航班
{
inta;
airline*p;
p=L->next;
PR("请输入飞行日期");
SC("%d",&a);
for(;p;p=p->next)
if(a==p->day)break;
returnp;
}
Lairlinesearch_addr()//按航班终点查找航班
{
chara[20];
airline*p;
p=L->next;
PR("请输入航班终点");
SC("%s",a);
for(;p;p=p->next)
if(!
strcmp(a,p->end_addr))break;
returnp;
}
voidguide()//主菜单界面
{
PR("------------航空订票客服系统----------\n");
PR("==============================================\n");
PR("\t\t显示所有航线==>1\n");
PR("\t\t查询航线信息==>2\n");
PR("\t\t订票业务==>3\n");
PR("\t\t退票业务==>4\n");
PR("\t\t退出系统==>0\n");
PR("==============================================\n");
PR("\t\t清除屏幕信息==>9\n\n");
PR("请按上面指引把持:
\t");
}
voidprint_customer(airline*p)//显示航班客户信息
{
customer*c;
if(p->booked)
{
c=p->booked;
PR("已定票客户信息\n票数\t/\t客户姓名\n");
for(;c;c=c->next)
PR("%5d\t/\t%s\n",c->num,c->name);
PR("\n\n");
}
else
PR("暂时没有客户订票\n\n");
if(p->wait)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 航空 订票 系统 课程设计 报告