c++课程设计航班订票系统docWord格式.docx
《c++课程设计航班订票系统docWord格式.docx》由会员分享,可在线阅读,更多相关《c++课程设计航班订票系统docWord格式.docx(22页珍藏版)》请在冰豆网上搜索。
"
constintF=0,constintP=0,constintD=0,constintM=0,constintL=0);
//对已订票的客户的信息的操作的类
classPOList
private:
voidinit();
PsgOn*head;
PsgOn*tail;
PsgOn*fence;
intleftcnt;
intrightcnt;
intFli;
POList(intsize=10);
voidclear();
boolinsert(charN[20],constintB,constintR);
boolappend(charN[20],constintB,constintR);
boolremove(char*N,int&
B);
voidsetStart();
voidsetEnd();
voidprev();
voidnext();
intleftLength()const;
intrightLength()const;
boolgerValue(char*N,int&
B,int&
R)const;
intn=0;
voidShowAllFlight(FlightNode*F,POList*B);
voidaddFlight(FlightNode*F,POList*B);
voidShowOneFlight(FlightNode*F);
voidBookTicket(FlightNode*F,POList*B);
voidReturnTicket(FlightNode*F,POList*B);
#endif
//PsgOn中的函数的实现
PsgOn:
:
PsgOn(charN[20],constintB,constintR,PsgOn*Ne)
{for(inti=0;
i<
=20;
i++)
{
Name[i]=N[i];
}
Booknum=B;
Rank=R;
next=Ne;
}
PsgOn(PsgOn*Ne)
{next=Ne;
//POList中的函数的实现
voidPOList:
init()
fence=tail=head=newPsgOn;
leftcnt=rightcnt=0;
}
POList:
POList(intsize){init();
boolPOList:
insert(charN[20],constintB,constintR)
fence->
next=newPsgOn(N,B,R,fence->
next);
if(tail==fence)tail=fence->
next;
rightcnt++;
returntrue;
append(charN[20],constintB,constintR)
tail=tail->
next=newPsgOn(N,B,R,NULL);
rightcnt++;
returntrue;
remove(char*N,int&
B)
if(fence->
next==NULL)returnfalse;
N=fence->
next->
Name;
B=fence->
Booknum;
PsgOn*ltemp=fence->
next=ltemp->
if(tail==ltemp)tail=fence;
deleteltemp;
rightcnt--;
setStart()
{fence=head;
rightcnt+=leftcnt;
leftcnt=0;
setEnd()
{fence=tail;
leftcnt+=rightcnt;
rightcnt=0;
prev()
PsgOn*temp=head;
if(fence==head)return;
while(temp->
next!
=fence)temp=temp->
fence=temp;
leftcnt--;
rightcnt++;
next()
if(fence!
=tail)
{fence=fence->
rightcnt--;
leftcnt++;
intPOList:
leftLength()const
{returnleftcnt;
rightLength()const
{returnrightcnt;
gerValue(char*N,int&
R)const
if(rightLength()==0)returnfalse;
R=fence->
Rank;
FlightNode:
FlightNode(charT[20],constintF,constintP,constintD,constintM,constintL)
Terminus[i]=T[i];
Flight=F;
Plane=P;
Day=D;
Maxnum=M;
Left=L;
//列举全部航线
voidShowAllFlight(FlightNode*F,POList*B)
cout<
<
---------------------------------------------"
endl;
航班号"
\t"
终点站"
飞行日"
for(inti=1;
n;
{
cout<
F[i].Flight<
F[i].Terminus<
F[i].Day<
你可以进行以下操作:
1.查看单条航线;
<
2.录入新的航班信息"
3.返回上一级.\n"
请选择:
;
intchioce;
top2:
cin>
>
chioce;
if(chioce==1)
ShowOneFlight(F);
elseif(chioce==2)
addFlight(F,B);
elseif(chioce==3)
return;
else
输入错误!
请重新选择:
gototop2;
voidaddFlight(FlightNode*F,POList*B)
inti=0;
while(n<
50){
请输入航班的信息:
endl
<
请输入新航班的终点站名:
cin>
F[n].Terminus;
do{cout<
请输入新航班的航班号:
F[n].Flight;
if(F[n].Flight%5!
=0)
{cout<
输入有误,请重新输入."
i=1;
else{
for(intj=0;
j<
j++)
if(F[n].Flight==F[j].Flight)
{cout<
航班号已存在,请重新输入。
i=1;
break;
}while(i);
请输入新航班的飞机号:
F[n].Plane;
请输入新航班的飞行日:
F[n].Day;
请输入新航班的成员定额:
F[n].Maxnum;
请输入如新航班的余票量:
F[n].Left;
B[n].Fli=F[n].Flight;
录入成功"
n++;
是否继续录入(y/n)"
charch;
top10:
ch;
if(ch=='
y'
)
elseif(ch=='
n'
gototop10;
//查询单条航线
voidShowOneFlight(FlightNode*F)
charT[20];
intchoice;
cout<
请输入终点站名称:
\n"
cin>
T;
FlightNodetemp[50];
intm=0;
for(inti=0;
=n;
{
if(strcmp(T,F[i].Terminus)==0)
{temp[m]=F[i];
m++;
}
if(m==0)cout<
无此终点站"
else
{
FlightNodetemp1=temp[0];
cout<
航班号:
temp[0].Flight<
ends<
飞机号:
temp[0].Plane<
飞行日:
temp[0].Day<
余票额:
temp[0].Left<
for(intj=1;
m;
{
if(temp[j].Day!
{
cout<
temp[j].Flight<
temp[j].Plane<
temp[j].Day<
temp[j].Left<
if((temp[j].Day>
=3)&
&
(temp[j-1].Day>
temp[j].Day))temp1=temp[j];
}
}
最近一天的航班:
<
temp1.Flight<
temp1.Plane<
temp1.Day<
temp1.Left<
}
请选择所要的操作:
1.继续查询2.返回上一级\n"
top3:
choice;
if(choice==1)
ShowOneFlight(F);
elseif(choice==2)
return;
gototop3;
voidBookTicket(FlightNode*F,POList*B)
intflag=0;
intFl;
intN;
charNa[20];
intchoice;
inttemp;
请输入需乘坐的航班号:
top6:
Fl;
if(!
(Fl%5==0))
无此航班号,请重新输入:
gototop6;
请输入订票额:
N;
请输入您的名字:
Na;
for(inti=0;
if(Fl==B[i].Fli){temp=i;
flag=1;
if(flag==0){cout<
无此航班\n"
return;
if(F[temp].Left>
=N)
charchoice1;
尚有余票,"
F[temp].Day<
F[temp].Plane<
你要订"
N<
张票,确定订票?
(N/Y)"
cin>
choice1;
switch(choice1)
case'
Y'
B[temp].append(Na,N,1);
F[temp].Left=F[temp].Left-N;
cout<
订票成功!
default:
return;
else
余票不足,订票失败"
请选择下一步操作:
1.继续订票2.退票3.返回上一级\n"
top4:
if(choice==1)
BookTicket(F,B);
elseif(choice==2)
ReturnTicket(F,B);
elseif(choice==3)
return;
gototop4;
voidReturnTicket(FlightNode*F,POList*B)
intFtemp;
charNtemp[20];
intBoNum;
intflag1=0;
boolflag2;
flag=0;
intLength;
intLengthR;
请输入要退票的航班号:
Ftemp;
请输入你的名字:
Ntemp;
if(Ftemp==B[i].Fli){temp=i;
flag1=1;
if(flag1==0){cout<
B[temp].setEnd();
Length=B[temp].leftLength();
Length<
B[temp].setStart();
for(intj=0;
=Length;
if(strcmp(B[temp].fence->
Name,Ntemp)==0)
B[temp].prev();
B[temp].remove(Ntemp,BoNum);
F[temp].Left+=BoNum;
flag=1;
B[temp].next();
if(flag==1)
退票成功!
elsecout<
对不起,没有你订票的记录!
1.继续退票2.订票3.返回上级菜单\n"
top5:
ReturnTicket(F,B);
BookTicket(F,B);
elseif(choice==3)
gototop5;
voidmain()
{
FlightNodeF[50];
POListB[50];
//定义各条航线的详细信息
F[0]=FlightNode("
NULL"
1000,1,1,0,0);
B[0]=100;
F[1]=FlightNode("
北京"
1005,100,4,100,100);
B[1].Fli=1005;
F[2]=FlightNode("
哈尔滨"
1010,101,5,100,100);
B[2].Fli=1010;
F[3]=FlightNode("
长春"
1015,102,4,100,100);
B[3].Fli=1015;
F[4]=FlightNode("
天津"
1020,103,2,100,100);
B[4].Fli=1020;
F[5]=FlightNode("
西安"
1025,104,1,100,100);
B[5].Fli=1025;
F[6]=FlightNode("
拉萨"
1030,105,6,100,100);
B[6].Fli=1030;
F[7]=FlightNode("
杭州"
1035,106,7,100,100);
B[7].Fli=1035;
F[8]=FlightNode("
海口"
1040,107,1,100,100);
B[8].Fli=1040;
F[9]=FlightNode("
台北"
1045,108,2,100,100);
B[9].Fli=1045;
F[10]=FlightNode("
东京"
1050,109,3,100,100);
B[10].Fli=1050;
F[11]=FlightNode("
伦敦"
1055,110,4,100,100);
B[11].Fli=1055;
F[12]=FlightNode("
纽约"
1060,111,5,100,100);
B[12].Fli=1060;
F[13]=FlightNode("
巴黎"
1060,112,6,100,100);
B[13].Fli=1060;
F[14]=FlightNode("
悉尼"
1065,113,7,100,100);
B[14].Fli=1065;
F[15]=FlightNode("
温哥华"
1070,114,1,100,100);
B[15].Fli=1070;
F[16]=FlightNode("
华盛顿"
1075,115,2,100,100);
B[16].Fli=1075;
F[17]=FlightNode("
新加坡"
1080,116,3,100,100);
B[17].Fli=1080;
F[18]=FlightNode("
平壤"
1085,117,4,100,100);
B[18].Fli=1085;
F[19]=FlightNode("
汉城"
1090,118,5,100,100);
B[19].Fli=1090;
n=20;
while
(1)
++++++++++++++++++++++++++++++++++++++++++++++++++"
***欢迎使用航空客运订票系统!
!
***"
你可以进行以下的操作:
1==>
查询已有航线\n"
2==>
录入新的航线