航空客运订票系统课程设计报告.docx
《航空客运订票系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《航空客运订票系统课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
航空客运订票系统课程设计报告
航空客运订票系统
一、设计目的
我们之所以选择做航空订票系统这个课题,主要是因为当今时代的需求。
随着科技与经济的发展,越来越多的人选择乘飞机,这跟我国的经济增长有很大关系,人们在追求快节奏的生活方式,所以做飞机无疑成了首选。
而且随着网络的盛行,航空订票系统就显得尤为重要,我们开发这个系统主要是为了方便大家,让大家能够快速、清晰、准确地了解航班信息,而不至于像以前那样排队等候,从而避免耽搁乘客大量的等待时间。
二、问题描述
航空客运订票的业务活动包括:
查询航线,预订客票,办理退票等。
顾客只要在网上登陆了这个系统并输入相应的航班信息和飞行时间等信息,就可以了解当天的航班信息,方便乘客合理的安排自己的时间。
顾客可以通过这个系统了解到当天将到地点的详细航班信息,包括:
航班号、飞机号以及余票额等相关信息。
三、需求分析
(1)每条航线所涉及带的信息有:
终点站名、航班号、飞机号、飞行日期、余票量、已定票客户名单(包括姓名、订票量、仓位等级1,2,或3)以及等候替补的客户名单(包括姓名、所需票量);
(2)作为示意系统,全部数据可以存放在内存中。
(3)系统能实现的操作功能如下:
①查询航线:
根据旅客提出的终点站名输出下列信息:
航班号、飞机号、星期几飞行、余票额;
②承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班的票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。
若需要,可登记排队候补;
③承办退票业务:
根据客户提供的情况(姓名、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的需求,则为他办理订票手续,否则,依次询问其他排队候补客户。
四、概要设计
1、算法思路
数据用数组存储以及结构体等通过设置关键字并用一定的数据结构对其进行一定的数据排序。
输入航班信息,进行存储及按要求的查找。
在这期间,我们需要书写四个基本函数:
即录入函数、查找函数、订票函数及退票函数。
用if条件语句实现条件的选择,并对子函数进行相关的调用。
按要求输出用户所需信息,实现简单而便捷的快速查询。
2、工作分配
3、程序模块
(1)登陆界面
图3-1
(2)程序的模块为
录入功能:
原始数据的输入(通过文件输入航线的基本信息)。
查询功能:
根据客户需要,查询相关航线。
订票功能:
满足客户的订票任务。
退票功能:
根据客户的不同情况,支持客户的退票请求。
退出功能:
退出系统。
图3-2输入1,通过文件进行航线原始数据的输入
图3-3输入2,通过输入终点站名查询航线信息
图3-4输入3,通过输入终点站名,进行订票
图3-5输入4,通过输入退票客户信息进行退票
图3-6输入5,退出订票系统
五、详细设计
1.数据定义
1.1已定票客户
structyidingpiaokehu
{
charname[M];//顾客名
intordernum;//订票量
intrank;//仓位等级
structyidingpiaokehu*next;//
};
typedefstructyidingpiaokehu*linklist;
1.2未订票客户
structweidingpiaokehu
{
charname[M];//姓名
intordernum;//所需票量
structweidingpiaokehu*next;//同一类型的指针
};
typedefstructweidingpiaokehu*pointer;//为订票客户的结构体
structnode
{
pointerfront;//指向未订票客服的第一个客户
pointerrear;//指向未订票客户的最后一个客户
};
typedefstructnodelinkqueue;//指向未订票客户的指针结构体
1.3航线定义
structlnode
{
charzhongdianzhan[M];//终点站名
charhangbanhao[M];//航班号
charfeijihao[5];//飞机号
intday;//飞行时间
intcapacity;//成员定额
intleftticket;//余票量
intseat[M];
linklistyd;//已定票客户的头指针
linkqueuewd;//为订票客户的头指针和尾指针
};
typedefstructlnodehangxian;
2.函数设计
2.1录入航线信息
voidinsertairline(hangxianl[],intn)
{
ifstreamfin("航线3.txt");
for(inti=1;i<=n;i++)
{
fin>>l[i].zhongdianzhan;
fin>>l[i].hangbanhao;
fin>>l[i].feijihao;
fin>>l[i].day;
fin>>l[i].capacity;
fin>>l[i].leftticket;//初始化时余票量等于乘员定额
l[i].yd=(linklist)malloc(sizeof(structyidingpiaokehu));//为每条航线上的已定票客户开辟存储空间
l[i].yd->next=null;
l[i].wd.front=l[i].wd.rear=(pointer)malloc(sizeof(structweidingpiaokehu));//为每条航线上的未定票客户开辟存储空间
l[i].wd.front->next=null;
for(intj=1;j<=l[i].leftticket;j++)
l[i].seat[j]=0;
}
}
2.2查询航线信息
voidchaxungongneng(hangxianl[],intn)
{
charc[M];
cout<<"请输入终点站名:
"<cin>>c;
inti=1;
while(i<=n)
{
if(!
strcmp(c,l[i].zhongdianzhan))
{
cout<<"输出航线信息:
"<cout<<"航班号:
"<"<<<"飞行日期:
"<"<break;
}
elsei++;
}
if(i>=n+1)
cout<<"对不起没有你要查询的航线!
";
}
2.3订票功能
voiddingpiao(hangxianl[],inti,intnum)
{
linklistp;
p=(linklist)malloc(sizeof(structyidingpiaokehu));
cout<<"请输入客户姓名:
";
cin>>p->name;
cout<";
cin>>p->rank;
p->ordernum=num;
p->next=l[i].yd->next;
l[i].yd->next=p;
l[i].leftticket-=num;
intx=num;
cout<while(x!
=0)
{
for(intj=1;j<=M;j++)
{
if(l[i].seat[j]==0)
{
l[i].seat[j]=1;
cout<}
elsecontinue;
break;
}
x--;
}
cout<";
cout<}
voiddenghoudingpiao(hangxianl[],inti)
{
pointerp;
p=(pointer)malloc(sizeof(structweidingpiaokehu));
cout<";
cin>>p->name;
cout<";
cin>>p->ordernum;
p->next=null;//---------------插入队列
l[i].wd.rear->next=p;
l[i].wd.rear=p;
cout<"<}
voiddingpiaogongneng(hangxianl[],intn)
{
charc[M];
intnum;
intm,p;
do
{
cout<";
cin>>c;
inti=1;
while(i<=n)
{
if(!
strcmp(c,l[i].zhongdianzhan))
{
{
cout<"<cout<<"终点站:
"<"<"<<<"飞行日期:
"<"<do
{
cout<<"请输入订票数额";
cin>>num;
cout<if(num<=l[i].leftticket)
{
dingpiao(l,i,num);//---------------------------------------转入订票;
return;
}
else
{
cout<<"对不起,余票额不足!
"<cout<<"是否还需订票"<cout<<"是请按1,等候订票请按2,退出请按0";
cin>>p;
}
}while(p==1);
if(p==2)
denghoudingpiao(l,i);//---------------------------------------------------插入等候队列;
elsebreak;
}
return;
}
elsei++;
}
if(i>=n+1)
{
cout<<"对不起,没有您要查找的航班!
"<cout<<"是否要查找其他航班信息?
"<cout<<"是请按1,否请按0"<cin>>m;
}
}while(m==1);
}
2.4退票功能
inttuipiao(hangxianl[],inti)
{
charname[M];
intc;
cout<cin>>name;
cout<";
cin>>c;
linklistp,q;
p=l[i].yd->next;
while(p!
=null)
{
q=p;
if(!
strcmp(name,p->name))
{
q->next=p->next;
p->next=null;
free(p);
l[i].seat[c]=0;
l[i].leftticket++;
cout<";
break;
}
elsep=p->next;
}
if(p==null)
{
cout<";
return0;
}
elsereturn1;
}
voidhoubudingpiao(hangxianl[],inti)
{
pointerq;linklistp;
q=l[i].wd.front->next;
p=(linklist)malloc(sizeof(structyidingpiaokehu));
if(q==null)
cout<"<while(q!
=null)
{
if(q->ordernum<=l[i].leftticket)
{
strcpy(p->name,q->name);
p->ordernum=q->ordernum;
p->next=l[i].yd->next;
l[i].yd->next=p;
l[i].leftticket-=q->ordernum;
intx=q->ordernum;
cout<name<<"订票的座位号是";
while(x!
=0)
{
for(intj=1;j<=M;j++)
{
if(l[i].seat[j]==0)
{
l[i].seat[j]=1;
cout<}
elsecontinue;
break;
}
x--;
}
l[i].wd.front->next=q->next;
free(q);//-------------------------释放了q之后,如果不做q=l[i].wd.front->next,while循环就不能进行下去,
q=l[i].wd.front->next;
}
else
q=q->next;
}
}
voidtuipiaogongneng(hangxianl[],intn)
{
charc[M];
intday;
cout<";
cin>>c;
cout<";
cin>>day;
inti=1;
while(strcmp(l[i].hangbanhao,c))
i++;
if(i>n)cout<<"输入航班号错误!
";
elseif(tuipiao(l,i))
{
cout<houbudingpiao(l,i);
}
}
2.5主函数
voidmain()
{
hangxianl[M];intm;
cout<<"输入航线条数:
";
cin>>m;
cout<intn;
do
{
cout<cout<<"****************************"<cout<<"欢迎使用航空客运订票系统:
"<cout<<"*1.录入航线信息*"<cout<<"*2.查询航线信息*"<cout<<"*3.订票功能*"<cout<<"*4.退票功能*"<cout<<"*5.退出*"<cout<<"*请选择*"<cout<<"****************************"<cin>>n;
if(n==1)
insertairline(l,m);
if(n==2)
chaxungongneng(l,m);
if(n==3)
dingpiaogongneng(l,m);
if(n==4)
tuipiaogongneng(l,m);
}while(n>=1&&n<=4);
}
六、测试数据
航线信息:
beijing00011000111010
shanghai00021000221010
guangzhou00031000331010
订票客户信息:
Wangyi11
Wanger12
Wangsan13
Wangsi13
Wangwu11
Wangliu12
另外当订票已满时再订票的话,可以通过转入等候订票
退票完成时,系统将会转入为等候订票客户订票
七、总结
1.不足
经过小组同学的努力,我们也终于结束了这次的课程设计,虽然最后的检验已经通过了,但是其中仍显现出许多的不足。
(1)录入系统,每次输入的数据会覆盖上次输入的数据。
(2)查询系统,只能查找最近输入的数据,并且相同终点站只能显现一个信息。
(3)在数据初始化的时候未对数据按照一定的顺序存放,如果航线信息较多时将影响系统功能
2.心得体会
通过这次课程设计,我们从中学会了很多东西,再一次体会到了团队的力量是多么的伟大。
在编写程序的过程中,我们大家都参考了很多相关资料,还有参考书等。
我们小组的合理分工,各个成员翻阅了很多这方面的资料,图书馆成了我们的首要选择。
这其中可能有辛酸也有快乐,但是我们却体验到其中的很多乐趣,毕竟在学校像这种实践性的机会并不多,所以我们还是很珍惜的,尽量把它做到最好,尽可能把自己所学的专业知识用上,尽管最后的系统仍然存在一些问题,但是我们会在接下来的时间里尽量改变不足,努力是这个系统更加完善,发挥更全面的作用。
以上就是我们在这次课程设计的全部内容,谢谢老师和同学们的观看。