数据结构课程设计航空客运订票系统文档格式.docx
- 文档编号:19021391
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:25
- 大小:20.27KB
数据结构课程设计航空客运订票系统文档格式.docx
《数据结构课程设计航空客运订票系统文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计航空客运订票系统文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
/*舱位等级的价格*/
Customer*CustName;
/*该航班的已定票乘客名单*/
Customer*ReplName;
/*该航班的候补乘客名单*/
structFlight*Next;
/*指示下一航线结点*/
}Flight,*PFlight;
intCustomer_Count=0;
/*所有航线的定票乘客总数*/
Flight*Head;
/*航线头指针*/
Flight*p2;
/*航线结点指针*/
Customer*Custp1[MAX];
/*各条航线乘客结点指针*/
Customer*Replp1[MAX];
/*各条航线候补结点指针*/
intIsEmpty=1;
/*是否有定票乘客*/
intIsReplace=1;
/*是否有候补乘客*/
Customer*prior;
/*满足要求的定票乘客的前结点,以作删除操作*/
intshouldsave=0;
/*-------------询问是否继续的函数-------------*/
charContinue()
charanswer;
while
(1)
{
printf("
\n\t您是否想继续(Y/N)?
"
);
scanf("
%s"
&
answer);
system("
cls"
if(answer=='
y'
||answer=='
Y'
)
return'
;
elseif(answer=='
n'
N'
else
\n\t输入有误,请重新输入!
}
}
/*---------------操作出错函数---------------*/
voidErrorMess()
\n\t对不起,您的操作有误!
getch();
/*--------------系统退出函数---------------*/
intExitSystem()
\n\t您是否想要退出系统(Y/N)?
return1;
return0;
/*--------------航线查找函数-------------*/
/*Find_Line()为重载函数*/
intFind_Line(PFlightL,char*key)/*核对航线是否唯一*/
intflag=0;
/*该标志位0表示未找到相关信息,反之即找到,以下标志位同理*/
Flight*p1;
p1=L;
/*赋航线首地址*/
if(p1==p2)/*首航线不作比较*/
returnflag;
while(p1!
=p2&
&
p1!
=NULL)/*本航班号不纳入比较范围,否则会一直提示航线不唯一*/
{
if(strcmp(p1->
Flight_No,key)==0)
flag=1;
break;
p1=p1->
Next;
/*指向下一航班结点*/
intFind_Line(PFlightL,char*key,PFlight&
p2,int&
Flight_No)/*航线查找函数*/
/*该标志位0表示未找到相关信息,反之即找到*/
/*赋航线首结点*/
=NULL)
Flight_No,key)==0)/*不包括当前航线*/
p2=p1;
/*指向下一航班结点*/
if(p1!
=NULL)/*遇结束符不作统计范围*/
Flight_No++;
/*---------------航班查找函数---------------*/
voidLine_search()
p1=Head;
charDesname[50];
//查询终点站航班关键字
if(Head==NULL)
printf("
\n\t没有到达您想要的终点站的航班!
getch();
return;
\n\t请输入终点站名:
Desname);
\n\t您所查询的航班的信息:
\n"
\n_____________________________________________________________________________\n"
=NULL)
Des_Name,Desname)==0)
Des_NameFlight_NoPlane_NoWeek_DayCust_NumFree_Num1_Price2_Price3_Price\n"
\n%-9s%-10s%-9s%-9d%-9d%-9d%-8d%-8d%-8d"
p1->
Des_Name,p1->
Flight_No,p1->
Plane_No,p1->
Week_Day,
p1->
Customer_Amount,p1->
Free_Amount,p1->
Price[0],p1->
Price[1],p1->
Price[2]);
}
\n______________________________________________________________________________\n"
Continue();
/*-----------------航线添加函数-------------*/
voidLine_Add()
/*建立临时航线结点*/
if(Head==NULL)/*航线为空*/
p1=p2=newFlight;
/*建立首个航线*/
Head=p2;
p1=newFlight;
/*建立航线结点*/
p2->
Next=p1;
/*前一航线结点指向当前航班结点*/
/*保留当前航班结点地址*/
\n\t添加新的航线!
p2->
Des_Name);
while
(1)/*数据合法性检验*/
\n\t请输入唯一的航班号:
Flight_No);
if(Find_Line(Head,p2->
Flight_No))/*存在航班号*/
\n\t航班号已经存在!
\n\t请输入飞机号:
Plane_No);
\n\t请输入航班日期(请输入1—7):
%d"
Week_Day);
if(p2->
Week_Day<
1||p2->
Week_Day>
7)
\n\t输入日期有误,请重新输入!
\n\t请输入座位数量:
Customer_Amount);
\n\t请输入头等舱的价钱:
Price[0]);
\n\t请输入二等舱的价钱:
Price[1]);
\n\t请输入三等舱的价钱:
Free_Amount=p2->
Customer_Amount;
/*剩余票数与乘员定额相同*/
CustName=NULL;
/*该航线定票乘客头指针为空*/
ReplName=NULL;
/*初始候补名单为空*/
shouldsave=1;
if(Continue()=='
Next=NULL;
/*航线的下一结点为空*/
/*------------航线是否为空函数-------------*/
intEmpty_Flight()
\n\t对不起,航线不存在,按任意键返回!
getch();
/*------------航线查看函数-----------------*/
voidLine_See()
if(Empty_Flight())/*航班线为空*/
\n\n\t航班信息:
\n____________________________________________________________________________\n"
\n\t按任意键返回!
/*-------------航线管理菜单------------*/
voidLinemanageMenu()
charc;
\n\t\t航线管理菜单:
\n_____________________________________________________________________________\n\n"
\t1.添加新的航线\n"
\t2.查询航线\n"
\t3.查看航线\n"
\t4.返回主菜单\n"
\t请选择您想要的服务:
c);
switch(c)
case'
1'
:
Line_Add();
break;
case'
2'
Line_search();
3'
Line_See();
4'
return;
/*---------------订票办理函数---------------*/
voidbookingMenu()
intTicket_Count,IDinfor,i,flag=0;
intFlight_No=0;
/*记录满足条件的航线的定票结点*/
/*记下满足条件的航线结点地址*/
Customer*p2;
/*临时性定票乘员结点*/
Customer*p3;
/*临时性候补乘员结点*/
charanswer[7];
/*用户输入的航班数据*/
chartemp;
inttag=0;
/*候补乘客标志位*/
intIsRepl=0;
/*是否执行候补操作标志位*/
\n\t现在您可以订票!
flag=0;
/*标志位清零以重新作出判断*/
Flight_No=0;
tag=0;
\n\t请输入航线号:
if(Find_Line(Head,answer,p1,Flight_No))/*调用航线查找函数,若存在则进行以下操作*/
\n\t请输入您想要订购的票的数量:
Ticket_Count);
if(Ticket_Count==0)
\n\t请再次输入飞机号:
if(p1->
Free_Amount>
=Ticket_Count)
Customer_Count++;
/*定票乘客总数增1*/
/*表明进入了订票实际操作*/
IsRepl=1;
/*定票量满足,无需进入候补操作*/
CustName==NULL)/*首个定票乘客,并记录相关属性*/
Custp1[Flight_No]=p2=newCustomer;
/*建立该航线的首位乘客结点*/
CustName=Custp1[Flight_No];
else/*建立该航线的后续乘客结点*/
p2=newCustomer;
Custp1[Flight_No]->
Next=p2;
Custp1[Flight_No]=p2;
IsEmpty=0;
/*定票乘员不为空*/
Amount=Ticket_Count;
/*订票数*/
IDinfor=p1->
Customer_Amount-p1->
Free_Amount+1;
/*算出座位号*/
IDinfor=IDinfor;
/*赋座位号*/
Free_Amount-=Ticket_Count;
/*减去定票数*/
\n\t请输入您的姓名:
Custp1[Flight_No]->
Name);
\n\t请输入舱位等级:
Rank);
if(!
(Custp1[Flight_No]->
Rank>
='
Rank<
))
\n\t请输入您的ID信息:
scanf("
IDinfor);
if(Ticket_Count<
10)/*为显示规整,作相应处理*/
\n\t"
\n\t恭喜您订票成功!
for(i=1;
i<
=Ticket_Count;
i++)/*打印座位号*/
\n\t您所预定的座位号是%d"
IDinfor++);
if(i%10==0)
}/*满足定票数*/
elseif(p1->
Free_Amount==0)
\n\t对不起,票已售完!
IsRepl=0;
\n\t对不起,当前没有多余的票!
IsRepl)
\n\t您是否想成为候补乘客(Y/N)?
temp);
if(temp=='
||temp=='
)/*以下为候补操作*/
ReplName==NULL)
Replp1[Flight_No]=p3=newCustomer;
/*建立该航线的首位候补乘客结点*/
ReplName=Replp1[Flight_No];
p3=newCustomer;
Replp1[Flight_No]->
Next=p3;
Replp1[Flight_No]=p3;
IsReplace=0;
/*候补乘客不为空*/
tag=1;
/*已选择列入候补乘客名单*/
Replp1[Flight_No]->
/*候补乘客的座位*/
/*候补乘客的订票数*/
(Replp1[Flight_No]->
\n\t输入有误,请重新输入."
\n\t没有剩余座位!
/*候补乘客无座提示*/
shouldsave=1;
}/*进入候补名单*/
}/*票数满足*/
}/*航线存在*/
\n\t对不起,航线不存在!
/*航线不存在*/
if(flag)/*此处不作处理,则会地址溢出*/
/*末位定票乘客的指针置空*/
if(tag)
/*末位候补乘客的指针置空*/
\n\t您已经成功排入候补订票队列中!
\n\t是否退出菜单?
(y/n)"
if(c=='
}/*while*/
}
/*-----------------订票乘客信息-----------------*/
voidDisplay_Reserve()
if(Empty_Flight())
\n\t订票乘客信息"
if(IsEmpty)
\n\t对不起,没有订票乘客信息!
NameFlight_NoPlane_NoTic_AmountDes_NameRank_NoID\n"
CustName!
p2=p1->
CustName;
while(p2!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 航空 客运 订票 系统