航空客运订票系统.docx

上传人:b****2 文档编号:122305 上传时间:2023-04-28 格式:DOCX 页数:13 大小:19.11KB
下载 相关 举报
航空客运订票系统.docx_第1页
第1页 / 共13页
航空客运订票系统.docx_第2页
第2页 / 共13页
航空客运订票系统.docx_第3页
第3页 / 共13页
航空客运订票系统.docx_第4页
第4页 / 共13页
航空客运订票系统.docx_第5页
第5页 / 共13页
航空客运订票系统.docx_第6页
第6页 / 共13页
航空客运订票系统.docx_第7页
第7页 / 共13页
航空客运订票系统.docx_第8页
第8页 / 共13页
航空客运订票系统.docx_第9页
第9页 / 共13页
航空客运订票系统.docx_第10页
第10页 / 共13页
航空客运订票系统.docx_第11页
第11页 / 共13页
航空客运订票系统.docx_第12页
第12页 / 共13页
航空客运订票系统.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

航空客运订票系统.docx

《航空客运订票系统.docx》由会员分享,可在线阅读,更多相关《航空客运订票系统.docx(13页珍藏版)》请在冰点文库上搜索。

航空客运订票系统.docx

航空客运订票系统

课程设计报告

课程名称数据结构

课题名称航空客运订票系统

专业通信工程

班级

学号

姓名

指导教师

2013年6月29日

湖南工程学院

课程设计任务书

课程名称数据结构

课题航空客运订票系统

专业班级

学生姓名

学号

指导老师张鏖烽田娟秀李杰君

审批

任务书下达日期2013年6月23日

任务完成日期2013年6月29日

1.需求分析................................................................1

2.概要设计................................................................1

定义“航线”类型...................................................2

主函数.............................................................2

调用关系...........................................................3

3.详细设计................................................................3

航线与客户的存储结构...............................................3

各个系统模块.......................................................3

算法设计...........................................................4

主函数功能.........................................................6

整个系统的流程图...................................................7

存储结构设计.......................................................7

4.调试分析................................................................7

5.用户使用说明............................................................8

6.测试结果...............................................................10

7.心得体会...............................................................12

8.附录...................................................................13

课题名称航空客运订票系统

1.需求分析

航空客运订票的业务活动包括:

查询航线、客票预订和办理退票等。

试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。

【基本要求】

(1)每条航线所涉及的信息有:

终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);

(2)系统能实现的操作和功能如下:

①录入:

可以录入航班情况,全部数据可以只放在内存中,最好存储在文件中;

②查询航线:

根据旅客提出的终点站名输出下列信息:

航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;

③承办订票业务:

根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。

若需要,可登记排队候补;

④承办退票业务:

根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。

初始化航班信息如下:

通过输入0~5这六个数字选择相应的操作,如:

查询航班,订票,退票等操作;

2.概要设计

两个客户名单可分别由线性表和队列实现。

为查找方便,已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。

由于预约人数无法预计,队列也应以链表作存储结构。

整个系统需汇总各条航线的情况登录在一张线性表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。

每条航线是这张表上的一个记录,包含上述8个域、其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。

注:

由于“航线”可只用一条单链表记录,故采用全局变量,减少参数的传递。

定义“航线”类型

ADTLairline{

数据对象:

D={ai|ai∈航线链表集,i=1,2,3……,n,n>=0}

数据关系:

R1={|ai-1,ai∈D,i=1,2,3……,n}

基本操作:

Lairlinesearch_line()照航班查找

Lairlinesearch_line()

{

chara[10];airline*p;p=L->next;

P("Pleaseinputthenumberofline:

");S("%s",a);

for(;p;p=p->next)

if(!

strcmp(a,p->line_num))break;

returnp;

}

注:

通过建立节点p实现链表的遍历,利用for循环挨个查找,直到找到为止,再返回找到的这个节点,实现传递。

2.订票系统

voidbook()

{inti;intflag=0;airline*p;customer*cst,*c;

P("Pleasechoosethewayofviewing:

\n");始化航线

voidInitLine()班查询

voidsearch()

{inti;intflag=0;airline*p;

P("Pleaseinputthewayofviewingtheflight:

\n");

P("Thenumberoftheflight------------>1\n");

照飞机型号查找

{

chara[10];airline*p;p=L->next;

P("Pleaseinputthenumberofplane:

");

S("%s",a);

for(;p;p=p->next)

if(!

strcmp(a,p->plane_num))break;

returnp;

}

Lairlinesearch_date()照日期查询航班

{

inta;airline*p;p=L->next;P("Pleaseinputthedateofplane:

");

S("%d",&a);航班终点查找航班

{chara[20];airline*p;p=L->next;

P("Pleaseinputthefinaladdressoftheplane:

");S("%s",a);

for(;p;p=p->next)

if(!

strcmp(a,p->ter_address))break;

returnp;

}

/******************主界面******************/

voidboundary()

{

P("***********欢迎您进入航空订票客服系统***********\n");

P("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");

P("O(∩_∩)O请选择您要进行的业务:

\n");

P("\t\t显示所有航线==>请输入1\n");

P("\t\t查询航线信息==>请输入2\n");

P("\t\t进入订票系统==>请输入3\n");

P("\t\t进入退票系统==>请输入4\n");

P("\t\t退出客服系统==>请输入0\n");

P("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");

P("\t\t清除屏幕信息==>请输入5\n");

P("请按照以上的信息提示进行操作:

\t");

}

/*********显示乘客信息*****************/

voidprint_customer(airline*p)

{

customer*c;

if(p->booked)

{c=p->booked;

P("已经购票的乘客的信息\n\t票数\t姓名\t\n");

for(;c;c=c->next)

P("%5d\t\t%s\n",c->num,c->name);P("\n\n");

}

elseP("╮(╯_╰)╭暂时没有客户订票!

\n\n");

if(p->wait)

{

c=p->wait;

P("排队购票的乘客的信息\n\t票数\t姓名\t\n\n");

for(;c;c=c->next)

P("%5d\t\t%s\n",c->num,c->name);

P("\n\n");

}

else

P("暂时没有客户排队订票\n\n");

}

/*********插入新航班(创建链表)*****************/

voidinsert_line()

{airline*p,*q;intflag=1;

for(;flag;)

{

q=(Lairline)malloc(sizeof(airline));

P("Pleaseinputthenumberoftheplane:

");

S("%s",q->line_num);

for(p=L;p->next;p=p->next)

if(strcmp(p->next->line_num,q->line_num)>=0)break;

if(p->next&&strcmp(p->next->line_num,q->line_num)==0)

{

P("航班已存在,请重新输入\n");

continue;,q->next->name,q->next->num);

P("Doyouwanttobookthetickets?

YES

(1)NO(0)");S("%d",&flag);

if(flag)//如果选择订票

{q0=q->next;q->next=q->next->next;//插入q0节点

q0->next=p->booked;p->booked=q0;

p->remain=p->remain-q0->num;//q0定完票后,余票进行修改

P("SUCCESS!

!

!

O(∩_∩)O\n\n\n");

}

elseq=q->next;//没有选择订票}

elseq=q->next;//余票不足时

}p->wait=h->next;

}

/***********************退票系统*****************************/

voidRefund()

{

intflag;

chara[20];

airline*p;

customer*c,*c1;

p=search_line();//查找到对应的航班

c=p->booked;//已经订票的客户为c

if(!

p)

{

P("Theairlineisnotexist!

!

!

\n\n");

boundary();//返回主界面

return;

}

P("Pleaseinputyourname:

");

S("%s",a);

if(!

p->booked->name)//如果未找到这个人的信息

{

P("Sorry!

Yourinformationisn'tfound!

╮(╯_╰)╭\n");

boundary();//返回主界面

return;

}

if(!

strcmp(a,p->booked->name))//

{

P("Theinformationofreturningtickets:

\n");//退票信息

P("Name:

%s\tFinalAddress:

%s\tTickets:

%d\t\n",p->booked->name,p->ter_address,p->booked->num);

P("Doyouwanttoreturnthetickets?

YES

(1)NO(0)\n");//是否退票

S("%d",&flag);

if(flag)//如果退票

{

p->booked=p->booked->next;//删除节点操作

p->remain=p->remain+c->num;//余票数目增加

free(c);

P("SUCCESS!

O(∩_∩)O\n\n\n\n\n");//退票成功

waited(p);//再次询问是否排队订票

boundary();//返回主菜单

}}

else

{for(;c->next;c=c->next)

if(!

strcmp(a,c->next->name))//查找这个订票人的信息

break;

if(!

c->next)//没有找到这个人的信息

{P("Sorry!

Can'tfindyourinformation!

\n\n");

boundary();return;

}

else//找到了此人的订票信息

{P("Theinformationofreturningtickets:

\n");

P("Name:

%s\tFinalAddress:

%s\tTickets:

%d\t\n",p->booked->name,p->ter_address,p->booked->num);

P("Doyouwanttoreturnthetickets?

YES

(1)NO(0)\n");//是否退票

S("%d",&flag);

if(flag)//确定退票

{c1=c->next;

c->next=c->next->next;//删除节点

p->remain=p->remain+c1->num;//余票数目增加

free(c1);

P("Theoperationissuccessful!

!

!

O(∩_∩)O\n\n");

waited(p);

boundary();

}}}}

/***************航班查询系统*****************************/

voidsearch()

{inti;intflag=0;airline*p;

P("Pleaseinputthewayofviewingtheflight:

\n");//请输入查询航班的方式

P("Thenumberoftheflight------------>1\n");//航班号

P("Thenumberoftheplane------------->2\n");//飞机号码

P("Thedateoftheflight-------------->3\n");//航班日期

P("Thefinaladdressoftheflight----->4\n");//航班终点

S("%d",&i);for(;!

flag;)

switch(i)//按照选择项进行操作

{case1:

p=search_line();flag=1;break;

case2:

p=search_plane();flag=1;break;

case3:

p=search_date();flag=1;break;

case4:

p=search_address();flag-=1;break;

default:

P("Wrong,inputagain!

\n");break;}

if(p)

{P("终点站航班号飞机号飞行周日余票量\n");

P("%-9s%9s%13s%10d%15d\n",p->ter_address,p->line_num,p->plane_num,p->date,p->remain);

P("Bookingthetickets?

(Sure,pleaseinput1;Elseinputanynumber!

)");

S("%d",&i);

if(i==1)book();

ElseP("\n\n\n\n");boundary();}

ElseP("Theflightisnotexist!

!

!

╮(╯_╰)╭\n\n\n");}

/********************显示所有航班信息***************************/

voidprintline()

{intflag;airline*p;p=L->next;

P("终点站航班号飞机号飞行周日余票量\n");

for(;p;p=p->next)

{P("%-15s%7s%15s%8d%12d\n",p->ter_address,p->line_num,p->plane_num,p->date,p->remain);}P("\n\n\n\n\n");boundary();}

/*********************初始化航线信息****************************/

voidInitLine()

{airline*p,*q;

L=(airline*)malloc(sizeof(airline));L->booked=NULL;//初始化航线信息

L->wait=NULL;L->next=NULL;strcpy(L->ter_address,"00000000");

strcpy(L->line_num,"000");strcpy(L->plane_num,"0000000");

L->date=L->remain=L->total=0;q=L;

p=(airline*)malloc(sizeof(airline));//航线一

p->booked=NULL;p->wait=NULL;

strcpy(p->ter_address,"jiangsu");strcpy(p->line_num,"003");strcpy(p->plane_num,"3333333");

p->date=1;p->remain=120;p->total=120;p->next=q->next;q->next=p;

p=(airline*)malloc(sizeof(airline));//航线二

p->booked=NULL;p->wait=NULL;strcpy(p->ter_address,"shanghai");

strcpy(p->line_num,"002");strcpy(p->plane_num,"2222222");

p->date=2;p->remain=120;p->total=120;p->next=q->next;q->next=p;

p=(airline*)malloc(sizeof(airline));//航线三

p->booked=NULL;p->wait=NULL;strcpy(p->ter_address,"hunan");

strcpy(p->line_num,"001");strcpy(p->plane_num,"1111111");

p->date=3;p->remain=120;p->total=120;p->next=q->next;q->next=p;}

voidmain()

{intflag=1;boundary();InitLine();

do{switch(getchar())

{case'1':

printline();break;

case'2':

search();break;

case'3':

book();break;

case'4':

Refund();break;

case'5':

system("cls");boundary();break;

case'0':

flag=0;break;

}}while(flag);}

课程设计评分表

课程名称:

数据结构

项目

评价

设计方案的合理性与创造性

设计与调试结果

设计说明书的质量

答辩陈述与回答问题情况

课程设计周表现情况

综合成绩

教师签名:

日期:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2