数据结构航空客运订票系统.docx

上传人:b****5 文档编号:14678054 上传时间:2023-06-26 格式:DOCX 页数:30 大小:214.99KB
下载 相关 举报
数据结构航空客运订票系统.docx_第1页
第1页 / 共30页
数据结构航空客运订票系统.docx_第2页
第2页 / 共30页
数据结构航空客运订票系统.docx_第3页
第3页 / 共30页
数据结构航空客运订票系统.docx_第4页
第4页 / 共30页
数据结构航空客运订票系统.docx_第5页
第5页 / 共30页
数据结构航空客运订票系统.docx_第6页
第6页 / 共30页
数据结构航空客运订票系统.docx_第7页
第7页 / 共30页
数据结构航空客运订票系统.docx_第8页
第8页 / 共30页
数据结构航空客运订票系统.docx_第9页
第9页 / 共30页
数据结构航空客运订票系统.docx_第10页
第10页 / 共30页
数据结构航空客运订票系统.docx_第11页
第11页 / 共30页
数据结构航空客运订票系统.docx_第12页
第12页 / 共30页
数据结构航空客运订票系统.docx_第13页
第13页 / 共30页
数据结构航空客运订票系统.docx_第14页
第14页 / 共30页
数据结构航空客运订票系统.docx_第15页
第15页 / 共30页
数据结构航空客运订票系统.docx_第16页
第16页 / 共30页
数据结构航空客运订票系统.docx_第17页
第17页 / 共30页
数据结构航空客运订票系统.docx_第18页
第18页 / 共30页
数据结构航空客运订票系统.docx_第19页
第19页 / 共30页
数据结构航空客运订票系统.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构航空客运订票系统.docx

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

数据结构航空客运订票系统.docx

数据结构航空客运订票系统

 

课程设计报告

 

课程名称:

数据结构

设计题目:

航空客运订票系统

院系:

班级:

设计者:

学号:

指导教师:

 

课程设计报告

一、题目分析

主要功能包括:

1、录入:

可以录入航班情况(如:

输入航班号,飞机编号,查询起降时间,起飞抵达城市,剩余的票数)。

2、查询:

可以查询某个航线的情况(如:

输入航班号,飞机编号,查询起降时间,起飞抵达城市,剩余的票数);可以输入降落城市及航班号,查询飞机航班情况。

3、订票:

根据客户要求(航班号、订票数量)查询该航班的余票数情况,若有余票,则可以订票;若余票数不足,则需要重新询问客户要求,否则不能完成订票。

4、退票:

可退票,根据客户的,订票数量查询是否为真实信息,为客户办理退票。

5、退出系统。

二、总体设计

拿到课程设计题目后,经过仔细的研究,还是决定做航空客运订票系统,它可以使自己很好的巩固在数据结构当中所学到的知识以及各算法,做到学以致用,并在运用的基础上,进一步去创新。

1、主程序流程图及其说明

主程序的流程图如下图所示:

利用switch语句,用户只需根据自己的需要,输入相应的命令即可达到效果。

例如,若需要查询航班信息时,则输入2;需要为客户预定机票时,则输入4;若需要退出系统,则输入5即可。

2、子程序流程图及其说明

⑴、录入航班信息的流程图及其说明:

主要功能是将新的航班信息写入新建链表中,然后把新链表与储存航班的链表合并,得到新的航班信息,实现对新航班的增加。

录入航班信息的流程图如下图所示:

⑵、查询航班信息流程图及其说明:

先输入所要查找的航班,可通过降落城市查询或根据航班号查询。

然后判断该航班是否存在,若存在,则输出相关的航班信息;若不存在,则提示该航班不存在。

查询航班信息的流程图如下图所示:

⑶、订票、退票流程图及其说明:

订票说明:

先输入降落城市,找到该航班并显示该航班信息,若找不到则提示不存在该航班。

再通过需要订票的数量来判断余票量是否足够。

若足够则录入客户,完成订票;若余票不足,则提示是否要取消并重新订票。

订票的流程图如下图所示:

 

退票说明:

先通过输入客户的及订票数目,确定是否存在该客户信息,若符合条件,则完成退票;若无该客户信息,则提示该航班没有人订票或者是该客户没有订该航班的票。

退票的流程图如下图所示:

 

三、详细设计

1、数据结构设计

typedefstructbooked

{//单链表

charname1[15];//已订票客户

intnumber1;//已订票数量

structbooked*next1;

}booked,*Link;

typedefstructbook

{//单链表

charname2[15];//预定票客户

intnumber2;//要订票数量

structbook*next2;//下一个链队结点指针

}book,*Qptr;

typedefstruct{

Qptrfront;//单链队头结点

Qptrrear;//单链队尾结点

}linkQueue;

 

2、函数说明

(1)主函数

main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。

(2)其他各功能函数包括

函数名

功能

voidenter()

录入航班信息

voidrefer()

查询航线信息

intInsertLinklist(Linklist&head1);

声明录入航班信息

voidcityrefer();

通过降落城市查询

voidflynumrefer();

通过航班号查询

voidreserve();

订票

voidrefund();

退票

3、分工函数设计(截图分析及相关说明)

⑴、主函数

voidmain()

{

H=(structbooked*)malloc(sizeof(booked));

Q.front=Q.rear=(Qptr)malloc(sizeof(book));//申请空间并初始化队列

InitLinklist();

intn;

do{//打印主界面

printf("\t+++++++++++++++++++++++++++++\n\n");

printf("\t*->1.录入航班信息*\n\n");

printf("\t*->2.查询航班信息*\n\n");

printf("\t*->3.订票功能*\n\n");

printf("\t*->4.退票功能*\n\n");

printf("\t*->5.退出*\n\n");

printf("\t+++++++++++++++++++++++++++++\n");

printf("\t请选择:

");

scanf("%d",&n);

printf("\n");

switch(n)

{

case1:

enter();//录入功能

break;

case2:

refer();//查询功能

break;

case3:

reserve();//订票功能

break;

case4:

refund();//退票功能

break;

case5:

printf("【感使用航空客运订票系统】\n");

break;//退出

}

}while(n==1||n==2||n==3||n==4);

}

[运行结果]:

2、录入航班信息

voidenter()//录入航班信息

{

intj=1,m;

do{

if(!

InsertLinklist(L))//向其中加入航班信息

{

printf("存已满\n");

}//向链表中加一结点

printf("\t是否要输入下一个航线记录?

\n");

printf("\t是请输入1\n");

printf("\t否请输入2\n");

scanf("%d",&m);//选择是否输入下一条航线

}while(m==1);

}

LinklistInitLinklist()

{

L=(Linklist)malloc(sizeof(fly));

if(!

L)

L->next=NULL;//建立一个带有头结点的单链表

return(L);

}

intInsertLinklist(Linklist&L)//向航线链表添加新的结点

{

Linklistp;

p=(Linklist)malloc(sizeof(fly));//为一个新的结点分配空间

printf("\t请依次输入下面几项容:

\n\n");

printf("航班号:

");

scanf("%s",p->flynum);

printf("飞机编号:

");

scanf("%s",p->plane);

printf("起飞城市:

");

scanf("%s",p->city1);

printf("降落城市:

");

scanf("%s",p->city);

printf("飞行日期:

");

scanf("%s",p->date);

printf("剩余的票数:

");

scanf("%d",&p->rest);

p->booked=(booked*)malloc(sizeof(booked));//申请存储空间

p->book=Q.front=Q.rear=(Qptr)malloc(sizeof(book));//申请存储空间

p->next=L->next;

L->next=p;

return1;

}

[运行结果]:

3、查询航班信息

①.通过降落城市查询

voidcityrefer()//通过降落城市查询

{

charc[15];

Linklistp=L;

intm;

printf("\t请输入你要查询的降落城市:

");

scanf("%s",c);

do{

p=p->next;

if(p)

{

if(stricmp((*p).city,c)==0)

{

printf("\t航班信息:

\n");

printf("\t航班号:

%s\n",p->flynum);

printf("\t飞机编号:

%s\n",p->plane);

printf("\t起飞城市:

%s\n",p->city1);

printf("\t降落城市:

%s\n",p->city);

printf("\t飞行日期:

%s\n",p->date);

printf("\t剩余的票数:

%d\n",p->rest);

break;

}

else

{

printf("\t【对不起,没有您要查找的降落城市.】\n\n");

m=0;

}

}

}while(m!

=0);

}

[运行结果]:

②.通过航班号查询

voidflynumrefer()//通过航班号查询

{

charc[15];

Linklistp=L;

intm;

printf("\t请输入你要查询的航班号:

");

scanf("%s",c);

do{

p=p->next;

if(p)

{

if(strcmpi((*p).flynum,c)==0)

{

printf("\t航班信息:

\n");

printf("\t航班号:

%s\n",p->flynum);

printf("\t飞机编号:

%s\n",p->plane);

printf("\t起飞城市:

%s\n",p->city1);

printf("\t降落城市:

%s\n",p->city);

printf("\t飞行日期:

%s\n",p->date);

printf("\t剩余的票数:

%d\n",p->rest);

break;

}

else

{

printf("\t【对不起,没有您要查找的航班.】\n");

m=0;

}

}

}while(m!

=0);

}

 

[运行结果]:

 

四、源程序代码

#include

#include

#include

#include

typedefstructbooked

{//单链表

charname1[15];//已订票客户

intnumber1;//已订票数量

structbooked*next1;

}booked,*Link;

typedefstructbook

{//单链表

charname2[15];//预定票客户

intnumber2;//要订票数量

structbook*next2;//下一个链队结点指针

}book,*Qptr;

typedefstruct{

Qptrfront;//单链队头结点

Qptrrear;//单链队尾结点

}linkQueue;

typedefstructfly

{//创建一个航线的结构体

charflynum[15];//航班号

charplane[15];//飞机编号

chardate[12];//飞行日期

charcity1[15];//起飞城市

charcity[15];//降落城市

intrest;//剩余的票数

structfly*next;//指向下一个链结点的指针

structbooked*booked;//定义一个指向已订票客户的头结点指针

structbook*book;

}fly,*Linklist;

structfly*L=NULL;//定义全局变量

structbooked*H;//为已订票客户链队来申请空间

linkQueueQ;//linkQueue类型的来申请空间

LinklistInitLinklist();//声明

intInsertLinklist(Linklist&head1);//声明录入航班信息

voidcityrefer();//通过降落城市查询

voidflynumrefer();//通过航班号查询

voidenter();//录入信息

voidrefer();//查询信息

voidreserve();//订票

voidrefund();//退票

voidmain()

{

H=(structbooked*)malloc(sizeof(booked));

Q.front=Q.rear=(Qptr)malloc(sizeof(book));//申请空间并初始化队列

InitLinklist();

intn;

do{//打印主界面

printf("\t+++++++++++++++++++++++++++++\n\n");

printf("\t*->1.录入航班信息*\n\n");

printf("\t*->2.查询航班信息*\n\n");

printf("\t*->3.订票功能*\n\n");

printf("\t*->4.退票功能*\n\n");

printf("\t*->5.退出*\n\n");

printf("\t+++++++++++++++++++++++++++++\n");

printf("\t请选择:

");

scanf("%d",&n);

printf("\n");

switch(n)

{

case1:

enter();//录入功能

break;

case2:

refer();//查询功能

break;

case3:

reserve();//订票功能

break;

case4:

refund();//退票功能

break;

case5:

printf("【感使用航空客运订票系统】\n");

break;//退出

}

}while(n==1||n==2||n==3||n==4);

}

voidenter()//录入航班信息

{

intj=1,m;

do{

if(!

InsertLinklist(L))//向其中加入航班信息

{

printf("存已满\n");

}//向链表中加一结点

printf("\t是否要输入下一个航线记录?

\n");

printf("\t是请输入1\n");

printf("\t否请输入2\n");

scanf("%d",&m);//选择是否输入下一条航线

}while(m==1);

}

LinklistInitLinklist()

{

L=(Linklist)malloc(sizeof(fly));

if(!

L)

L->next=NULL;//建立一个带有头结点的单链表

return(L);

}

intInsertLinklist(Linklist&L)//向航线链表添加新的结点

{

Linklistp;

p=(Linklist)malloc(sizeof(fly));//为一个新的结点分配空间

printf("\t请依次输入下面几项容:

\n\n");

printf("航班号:

");

scanf("%s",p->flynum);

printf("飞机编号:

");

scanf("%s",p->plane);

printf("起飞城市:

");

scanf("%s",p->city1);

printf("降落城市:

");

scanf("%s",p->city);

printf("飞行日期:

");

scanf("%s",p->date);

printf("剩余的票数:

");

scanf("%d",&p->rest);

p->booked=(booked*)malloc(sizeof(booked));//申请存储空间

p->book=Q.front=Q.rear=(Qptr)malloc(sizeof(book));//申请存储空间

p->next=L->next;

L->next=p;

return1;

}

voidrefer()//查询航线信息

{

intn;

printf("\t查找航线信息\n");

printf("\t++++++++++++++++++++++++++++++++\n\n");

printf("\t*->1.通过降落城市查询*\n\n");

printf("\t*->2.通过航班号查询*\n\n");

printf("\t++++++++++++++++++++++++++++++++\n");

printf("\t请选择:

");

scanf("%d",&n);

switch(n)

{

case1:

cityrefer();

break;

case2:

flynumrefer();

break;

default:

break;

}

}

voidcityrefer()//通过降落城市查询

{

charc[15];

Linklistp=L;

intm;

printf("\t请输入你要查询的降落城市:

");

scanf("%s",c);

do{

p=p->next;

if(p)

{

if(stricmp((*p).city,c)==0)

{

printf("\t航班信息:

\n");

printf("\t航班号:

%s\n",p->flynum);

printf("\t飞机编号:

%s\n",p->plane);

printf("\t起飞城市:

%s\n",p->city1);

printf("\t降落城市:

%s\n",p->city);

printf("\t飞行日期:

%s\n",p->date);

printf("\t剩余的票数:

%d\n",p->rest);

break;

}

else

{

printf("\t【对不起,没有您要查找的降落城市.】\n\n");

m=0;

}

}

}while(m!

=0);

}

voidflynumrefer()//通过航班号查询

{

charc[15];

Linklistp=L;

intm;

printf("\t请输入你要查询的航班号:

");

scanf("%s",c);

do{

p=p->next;

if(p)

{

if(strcmpi((*p).flynum,c)==0)

{

printf("\t航班信息:

\n");

printf("\t航班号:

%s\n",p->flynum);

printf("\t飞机编号:

%s\n",p->plane);

printf("\t起飞城市:

%s\n",p->city1);

printf("\t降落城市:

%s\n",p->city);

printf("\t飞行日期:

%s\n",p->date);

printf("\t剩余的票数:

%d\n",p->rest);

break;

}

else

{

printf("\t【对不起,没有您要查找的航班.】\n");

m=0;

}

}

}while(m!

=0);

}

 

voidreserve()//订票

{

Linklistp=L;//Linklist类型的L来指向链表头

booked*h=H,*h1;//booked定义客户的结点,以便插入与删除

charc[15];

intm=1,ticket;

intbookedt=0,bookt=0;

printf("请输入降落城市:

");

scanf("%s",c);

p=L->next;

if(p){

do{//查找是否有该航班

if(!

p)

{

printf("【对不起,没有您要查找的航班.】\n\n");

return;

}

m=stricmp(p->city,c);

//通过比较来判定

if(m==0)

{

printf("\t航班信息:

\n");

printf("\t航班号:

%s\n",p->flynum);

printf("\t飞机编号:

%s\n",p->plane);

printf("\t起飞城市:

%s\n",p->city1);

printf("\t降落城市:

%s\n",p->city);

printf("\t飞行日期:

%s\n",p->date);

printf("\t剩余的票数:

%d\n",p->rest);

}

else

p=p->next;//促使循环

}while(m!

=0);

if(m==0)

{//当有该航班时,进行订票

do{

printf("\n请输入您要订的票数:

\n");

scanf("%d",&ticket);

if(ticket<=p->rest)

{

h=p->booked;

if(h)

{

h1=h;

h=h->next1;

h=(structbooked*)malloc(sizeof(booked));

printf("请输入客户:

\n");

scanf("%s",h->name1);

h->number1=ticket;

h->next1=h1->next1;

h1->next1=h;

p->rest=p->rest-ticket;

printf("【订票成功!

】\n");

m=2;

}

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

当前位置:首页 > 临时分类 > 批量上传

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

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