航空订票系统代码
![航空订票系统代码](https://img.360docs.net/imge0/06qipcgpfrh3ac9earyn-01.webp)
![航空订票系统代码](https://img.360docs.net/imge0/06qipcgpfrh3ac9earyn-82.webp)
#include
#include
void FlightInsert(); //增加路线
void FlightDelete();//删除路线
void FlightLookup();//航班查询
void FlightRework();//航班路线修改
void FlightBuyticket();//买票
void FlightCancelticket();//取消订票
void Flightclean();//清空
void MainMenu();//主函数
void Display();//显示订票信息
typedef struct Customer //已定票乘客信息{
char Name[10]; //姓名
int Amount; //定票数
int Level; //舱位等级
int SeatNum; //座位号
char FlightNum[10]; //所定航班号
struct Customer *next;
}Customer;
typedef struct Replace //侯补乘客信息{
char Name[10]; //姓名e
int Amount; //定票数
int Level; //舱位等级
char FlightNum[10]; //所定航班号
struct Replace *next;
}Replace;
typedef struct Flight //航班路线信息
{
char From[10]; //起点站名
char Des[10]; //终点站名
char FlightNum[10]; //航班号
char PlaneNum[10]; //航班
char Week[20]; //飞机周日
int Ration; //乘员定额
int FreeTicket; //剩余票数
float Price[3]; //票价
int ReplacePas; //候补乘客数
Replace *ReplName; //该航班的候补乘客名单
Customer *CustName; //该航班的已定票乘客名单
struct Flight *next; //指示下一航班路线结点
}Flight,*PFlight;
int Ration=0; //乘客总数
Flight *head; //建立航班路线头结点
Flight *rear; //建立航班路尾结点
Customer *Cusrear;
Replace *Reprear;
void MainMenu()
{
int i=0;
while (i!=8)
{
cout< cout<<" ***************【欢迎使用航空订票系统】***************"< cout<<" "< cout<<" ***************【按1】增加航班路线***************"< cout<<" "< cout<<" ***************【按2】查询航班路线***************"< cout<<" "< cout<<" ***************【按3】修改航班路线 ***************"< cout<<" "< cout<<" ***************【按4】预订飞机票***************"< cout<<" "< cout<<" ***************【按5】退订飞机票***************"< cout<<" "< cout<<" ***************【按6】清空系统***************"< cout<<" "< cout<<" ***************【按7】已订票名单***************"< cout<<" "< cout<<" ***************【按8】退出系统***************"< cout<<" "< cout<<" *提示:当前为主菜单"< cin>>i; switch(i) { case 1: FlightInsert(); break; //增加航班路线 case 2: FlightLookup(); break; //查询航班路线 case 3: FlightRework(); break; //修改航班路线 case 4: FlightBuyticket(); break; //预订飞机票 case 5: FlightCancelticket(); break; //退订飞机票 case 6: Flightclean(); break; //清空系统 case 7: Display(); break; case 8:;break; default: cout<<"*提示:抱歉,请选择正确的操作!"< cout< cout< break; } } } void FlightInsert() //航班录入 { /*int i=2; while(i!=1) {*/ Flight *p; p=new Flight; cout<<"****正在设定新的路线****"< cout< cout<<"1.请设定起点站名:"< cin>>p->From; cout<<"2.请设定终点站名:"< cin>>p->Des; cout<<"3.请设定航班号:"< cin>>p->FlightNum; cout<<"4.请设定飞机号:"< cin>>p->PlaneNum; cout<<"5.请设定飞行周日:"< cin>>p->Week; cout<<"6.请设定乘员定额:"< cin>>p->Ration; p->FreeTicket=p->Ration; cout<<"7.请设定一等舱的价格:"< cin>>p->Price[0]; cout<<"8.请设定二等舱的价格:"< cin>>p->Price[1]; cout<<"9.请设定三等舱的价格:"< cin>>p->Price[2]; p->ReplName=new Replace; p->CustName=new Customer; p->CustName->next=NULL; p->ReplName->next=NULL; p->ReplacePas=0; rear->next=p; rear=p; rear->next=NULL; cout<<"设置成功!"< cout<<"***********************"< cout< /*cout<<"【按1】返回主菜单【按2】继续"< cin>>i; }*/ } void FlightLookup() //查询航班号 { Flight *p,*q; char FlightNum[10]; p=head; int i=0; while (i!=1) { cout<<"请输入需要查询的航班号:"< cin>>FlightNum; while (p->next && strcmp(p->next->FlightNum,FlightNum)) { p=p->next; } q=p->next; if (q==NULL) { cout<<"*提示:对不起,不存在此航班号,请核实您的信息!"< } else { cout<<"以下是您所查的车次信息:"< cout<<"************************"< cout<<"* 1.航班号:"< cout<<"* 2.飞机号:"< cout<<"* 3.起点站:"< cout<<"* 4.目的地:"< cout<<"* 5.飞机周日:"< cout<<"* 6.成员定额:"< cout<<"* 7.剩余票数:"< cout<<"* 8.候补乘客数:"< cout<<"* 9.一等舱的价格:"< cout<<"* 10.二等舱的价格:"< cout<<"* 11.三等舱的价格:"< cout<<"************************"< } cout<<"您还需要其他的操作么?"< cout< cout<<"【按1】返回主菜单【按2】继续操作"< cin>>i; cout<<"************************"< cout< } } void FlightRework() //修改航班路线信息 { int Customer_Number ; Flight *p,*q; char FlightNum[10]; int i=0; int a=1; p=head; cout<<"请输入需要修改的航班:"< cin>>FlightNum; while (p->next&&strcmp(p->next->FlightNum,FlightNum)) { p=p->next; } q=p->next; if (q==NULL) { cout<<"*提示:对不起,不存在此航班,请核实您的信息!"< } else { while(a) { cout<<" *******【请输入需要修改的数据】*******"< cout<<" "< cout<<" 【按1】航班号"< cout<<" "< cout<<" 【按2】飞机号"< switch(i) { case 1:cout<<"1.请输入航班号:"< cin>>q->FlightNum;break; case 2:cout<<"2.请输入飞机号:"< cin>>q->PlaneNum;break; case 3:cout<<"3.请输入起始站:"< cin>>q->From;break; case 4:cout<<"4.请输入目的地:"< cin>>q->Des;break; case 5:cout<<"5.请输入飞机周日:"< cin>>q->Week;break; case 6:cout<<"6.请输入乘员定额:"< Customer_Number=q->Ration-q->FreeTicket; cin>>q->Ration;q->FreeTicket=q->Ration-Customer_Number;break; case 7:cout<<"7.请输入一等舱的价格:"< cin>>q->Price[0];break; case 8:cout<<"8.请输入二等舱的价格:"< cin>>q->Price[1];break; case 9:cout<<"9.请输入三等舱的价格:"< cin>>q->Price[2];break; case 10:a=0; break; default:cout<<"*提示:对不起,请选择正确的操作!"< cout< cout< break; } } } } void FlightBuyticket() //订票 { int Ticket_Amount; void Buyticket(PFlight ,int ); void Buyreplace(PFlight ,int ,int ); Flight *p,*q; char Des[10]; int i=2; while (i!=1) { cout<<"请输入目的地:"< cin>>Des; p=head; while (p->next&&strcmp(p->next->Des,Des)) { p=p->next; } q=p->next; if (q==NULL) { cout<<"*提示:对不起,不存在此航班,请核实您的信息!"< } else { while(i!=1) { cout<<"请输入需要购买的票数:"< cin>>Ticket_Amount; while(Ticket_Amount==0 && Ticket_Amount<0) { cout<<"*提示:对不起,请输入正确的票数!"< cout< cout<<"请输入需要够买的票数:"< cin>>Ticket_Amount; } if (Ticket_Amount<=q->FreeTicket) { Buyticket(q,Ticket_Amount); } else { int n; cout<<"*提示:抱歉!剩余票数小于定票数,是否需要列入候补名单?(【按1】是【按2】否)"< cin>>n; Buyreplace(q,Ticket_Amount,n); } cout< cout<<"【按1】返回主菜单【按2】继续"< cin>>i; } } } } void FlightCancelticket() //退票 { void Buyticket(PFlight ,int ); Flight *p,*q; Customer *h,*j; char FlightNum[6]; char Customer_Name[10]; int Replace1_Amount; //候补第一个人的定票数 int i; cout<<"**********************************"< while (i!=1) { cout<<"请输入需要退定的航班号:"< cin>>FlightNum; p=head; while (p->next&&strcmp(p->next->FlightNum,FlightNum)) { p=p->next; } q=p->next; if (q==NULL) { cout<<"*提示:对不起,不存在此航班,请核实您的信息!"< } else { while (i!=2) { cout<<"请输入所查姓名:"< cin>>Customer_Name; h=q->CustName; while (h->next&&strcmp(h->next->Name,Customer_Name)) { h=h->next; } j=h->next; if(j==NULL) { cout<<"*提示:对不起,查无此人,请核实您的信息!"< cout< } else { if(j->next==NULL) { //当删除最后一个结点 Cusrear=h; } h->next=h->next->next; q->FreeTicket+=j->Amount; delete j; cout<<"*提示:退票成功!"< if(q->ReplName->next!=NULL) { Replace1_Amount=q->ReplName->next->Amount; if (Replace1_Amount<=q->FreeTicket) { Replace *rep; rep=q->ReplName->next; Customer *Cus2; Cus2=new Customer; Cus2->SeatNum=q->Ration-q->FreeTicket+1; strcpy(Cus2->FlightNum, q->FlightNum ); strcpy(Cus2->Name, rep->Name ); Cus2->Amount=rep->Amount; Cus2->Level=rep->Level; cout<<"*提示:"< cout< cout<<"候补乘客:"< cout< cout<<"航班号:"< cout<<"舱位等级为:"< cout<<"座位号为:"< for(int i=1;i<=(rep->Amount);i++) { cout<<"No."< } cout< if (q->CustName->next==NULL) { Cusrear=q->CustName; Cusrear->next=Cus2; Cusrear=Cus2; Cusrear->next=NULL; } else { Cusrear->next=Cus2; Cusrear=Cus2; Cusrear->next=NULL; } q->FreeTicket-=rep->Amount; q->ReplName->next=q->ReplName->next->next; q->ReplacePas--; delete rep; } } } break; } } cout<<"【按1】返回主菜单,或按任意键返回【继续退票操作】!"< cout< cin>>i; } } void Flightclean()//清空 { head->next=rear->next; cout<<"*提示:系统已经清空!"< cout< } void Buyticket(PFlight q,int Ticket_Amount) //买票 { int n=Ticket_Amount; Customer *Cus2; Cus2=new Customer; Cus2->SeatNum=q->Ration-q->FreeTicket+1; strcpy(Cus2->FlightNum, q->FlightNum ); Cus2->Amount=Ticket_Amount; cout<<"1.请输入姓名:"< cin>>Cus2->Name; cout<<"2.请输入购买票的类型:"< cout<<"【按1】一等舱,【按2】二等舱,【按3】三等舱"< cin>>Cus2->Level; cout<<"*提示:订票成功!"< cout< cout<<"舱位等级:"<<" "< cout<<"座位号为:"< for(int i=1;i<=Ticket_Amount;i++) { cout<<"No."< } cout< if (q->CustName->next==NULL) { Cusrear=q->CustName; Cusrear->next=Cus2; Cusrear=Cus2; Cusrear->next=NULL; } else{ Cusrear->next=Cus2; Cusrear=Cus2; Cusrear->next=NULL; } q->FreeTicket-=Ticket_Amount; } void Buyreplace(PFlight q,int Ticket_Amount,int n) //进入候补队列 { Replace *Rep2; Rep2=new Replace; if(n==1) { q->ReplacePas+=Ticket_Amount; strcpy(Rep2->FlightNum,q->FlightNum); Rep2->Amount=Ticket_Amount; cout<<"1.请输入姓名:"< cin>>Rep2->Name; cout<<"2.请输入购买票的类型:"< cout<<"【按1】一等舱,【按2】二等舱,【按3】三等舱"< cin>>Rep2->Level; if(q->ReplName->next==NULL) { Reprear=q->ReplName; Reprear->next=Rep2; Reprear=Rep2; Reprear->next=NULL; } else{ Reprear->next=Rep2; Reprear=Rep2; Reprear->next=NULL; } } } void Display()//显示订票信息 { cout<<"*提示:抱歉,该项目还在开发!"< cout< int i; cout<<"【按1】返回至主菜单"<