机票系统
来源:互联网 发布:网络推广服务合同书 编辑:程序博客网 时间:2024/04/29 00:07
#include <iostream>
//#include"ticket.h"
#include "string"
using namespace std;
#define Null 0
//乘客结构体
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];
int Amount;
int Level;
char FlightNum[10]; //所定航班号
struct Replace *next;
}Replace;
//Customer *Cusrear;
//Replace *Reprear;
typedef struct Flight //航线信息
{char Des[10]; //终点站名
char PlaneNum[10]; //航班号
char Week;//飞行周
int Ration;//乘员定额
int FreeTicket; //剩余票数
float Price[3];//舱位等级的价格
int ReplacePas;//候补乘客数
Customer *CustName;//已订票乘客名单
Replace *ReplName;//候补乘客名单
struct Flight *next;//指示下一航线节点
} Flight,*PFlight;
//Flight *head;//定义航线头节点
//Flight *rear;//建立航线尾节点
void FlightInsert(Flight *head)//航班添加
{
Flight *p;
p=new Flight;
cout<<"请输入终点站名:"<<endl;
cin>>p->Des;
//cout<<"请输入航班号:"<<endl;
//cin>>p->FlightNum;
cout<<"请输入飞机号:"<<endl;
cin>>p->PlaneNum;
cout<<"请输入飞行周:"<<endl;
cin>>p->Week;
cout<<"请输入乘员定额:"<<endl;
cin>>p->Ration;
p->FreeTicket=p->Ration;
cout<<"请输入舱位等级的价格:"<<endl;
cout<<"请输入头等舱价格:"<<endl;
cin>>p->Price[0];
cout<<"请输入普通舱价格:"<<endl;
cin>>p->Price[1];
cout<<"请输入经济舱价格:"<<endl;
cin>>p->Price[2];
p->ReplName=new Replace;
p->CustName=new Customer;
p->CustName->next=Null;
p->ReplName->next=Null;
p->ReplacePas=0;
p->next=head->next;
head->next=p;
//rear->next=p;// 利用尾指针便于航班的添加
//rear=p;
//rear->next=Null;
}
void FlightSearch(Flight *head)//查询航班
{
Flight *p,*q;
char FlightNum[10];
int i=0;
while (i!=1)
{cout<<"请输入需要查询的航班号:"<<endl;
cin>>FlightNum;
p=head;
while(p->next&&strcmp(p->next->PlaneNum,FlightNum))
{
p=p->next;
}
q=p->next;
if(q==Null)
{cout<<"对不起不存在该航班"<<endl;}
else
{cout<<"航班号:"<<q->PlaneNum<<endl;
cout<<"目的地:"<<q->Des<<endl;
cout<<"飞行周:"<<q->Week<<endl;
cout<<"乘员定额:"<<q->Ration<<endl;
cout<<"剩余票数:"<<q->FreeTicket<<endl;
cout<<"候补乘客数:"<<q->ReplacePas<<endl;
cout<<"头等舱价格:"<<q->Price[0]<<endl;
cout<<"普通舱价格:"<<q->Price[1]<<endl;
cout<<"经济舱价格:"<<q->Price[0]<<endl;}
cout<<"1、返回主菜单 2、继续"<<endl;
cin>>i;
}
}
void FlightRework(Flight *head)//修改航班信息
{
int Customer_Number;
Flight *p,*q;
char FlightNum[10];
char i='0';
p=head;
cout<<"请输入需要修改的航班号:"<<endl;
cin>>FlightNum;
while(p->next&&strcmp(p->next->PlaneNum,FlightNum))
{p=p->next;}
q=p->next;
if (q==Null)
{ cout<<"对不起不存在此航班"<<endl;
}
else
{
while(i!='8')
{cout<<"********请输入要修改的信息********"<<endl;
cout<<"1、航班号 "<<endl;
cout<<"2、目的地 3、飞行周"<<endl;
cout<<"4、乘员定额 5、头等舱价格"<<endl;
cout<<"6、普通舱价格 7、经济舱价格"<<endl;
cout<<"8、退出"<<endl;
cout<<"********请输入要修改的信息********"<<endl;
cin>>i;
switch(i)
{case '1':cout<<"请输入航班号:"<<endl;
cin>>q->PlaneNum;break;
case '2':cout<<"请输入目的地:"<<endl;
cin>>q->Des;break;
case '3':cout<<"请输入航班号飞行周:"<<endl;
cin>>q->Week;break;
case '4':cout<<"请输入乘员定额:"<<endl;
Customer_Number=q->Ration-q->FreeTicket;
cin>>q->Ration;
q->FreeTicket=q->Ration-Customer_Number;break;
case '5':cout<<"请输入头等舱价格:"<<endl;
cin>>q->Price[0];break;
case '6':cout<<"请输入普通舱价格:"<<endl;
cin>>q->Price[1];break;
case '7':cout<<"请输入经济舱价格:"<<endl;
cin>>q->Price[2];break;
case '8':break;
default:cout<<"error\n";break;
}
}
}
}
void FlightDelete(Flight *head) //利用表头指针定位要删除的航班信息
{
Flight *p,*q;
char FlightNum[10];
int i=0;
while(i!=1)
{cout<<"请输入需要删除的航班号:"<<endl;
cin>>FlightNum;
p=head;
while(p->next&&strcmp(p->next->PlaneNum,FlightNum))
{p=p->next;}
q=p->next;
if(q!=Null)
{
// if(q->next==Null)
// {rear=p;}
p->next=p->next->next;
delete q;}
else
{cout<<"你所要删除的航班不存在"<<endl;}
cout<<"1、退出 2、继续"<<endl;
cin>>i;
}
}
void FlightBuyTicket(Flight *head)//订票
{
int Ticket_Amount;
void BuyTicket(Flight *,int);
void Buyreplace(Flight *,int,int);
Flight *p,*q;
char Des[10];
int i=2;
while(i!=1)
{cout<<"请输入目的地:"<<endl;
cin>>Des;
p=head;
while(p->next&&strcmp(p->next->Des,Des))
{p=p->next; }
q=p->next;
if (q==Null)
{cout<<"对不起不存在此航班"<<endl;}
else
{while(i!=1)
{cout<<"输入需要购买的票数"<<endl;
cin>>Ticket_Amount;
while(Ticket_Amount==0)
{ cout<<"请输入一个非零数"<<endl;
cin>>Ticket_Amount;
}
if(Ticket_Amount<=q->FreeTicket)
{BuyTicket(q,Ticket_Amount);}//买票
else
{int n;
cout<<"剩余票数小于订票数,是否需要列入候补名单?(1、是 2、否)"<<endl;
cin>>n;
Buyreplace(q,Ticket_Amount,n);//进入替补名单
}
cout<<"1、返回菜单 2、继续"<<endl;
cin>>i;
}
}
}
}
void BuyTicket(Flight *q, int Ticket_Amount)//买票
{int n=Ticket_Amount;
Customer *Cus2,*Cusrear;
Cus2=new Customer;
Cus2->SeatNum=q->Ration-q->FreeTicket+1;
strcpy(Cus2->FlightNum,q->PlaneNum);
Cus2->Amount=Ticket_Amount;
cout<<"请输入姓名:"<<endl;
cin>>Cus2->Name;
cout<<"请输入舱位等级(1-3)"<<endl;
cin>>Cus2->Level;
cout<<"你的座位号为:"<<endl;
for(int i=1;i<=Ticket_Amount;i++)
{
cout<<Cus2->SeatNum++<<" ";
}
cout<<endl;
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(Flight *q,int Ticket_Amount,int n)//进入替补队列
{Replace *Rep2,*Reprear;
Rep2=new Replace;
if(n==1)
{
q->ReplacePas+=Ticket_Amount;
strcpy(Rep2->FlightNum,q->PlaneNum);
Rep2->Amount=Ticket_Amount;
cout<<"请输入姓名:"<<endl;
cin>>Rep2->Name;
cout<<"请输入舱位等级(1-3)"<<endl;
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 FlightCancelTicket(Flight *head)//退票
{
//void BuyTicket(Flight,int);
Flight *q,*p;
Customer *h,*j,*Cusrear;
Customer *Cus2;
Replace *rep;
char FlightNum[10];
char Customer_Name[10];
int Replace_Amount;//候补第一个人的订票数
int i=0;
while(i!=1)
{ cout<<"请输入要退订的航班号:"<<endl;
cin>>FlightNum;
p=head;
while(p->next&&strcmp(p->next->PlaneNum,FlightNum))
{
p=p->next;
}
q=p->next;
if(q==NULL)
{cout<<"对不起不存在次航班"<<endl;}
else
{
while(i!=2)
{cout<<"请输入姓名:"<<endl;
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<<"查无此人"<<endl;
}
else
{
if(j->next==NULL)//当删除最后一个节点
Cusrear=h;
h->next=h->next->next;
q->FreeTicket+=j->Amount;
delete j;
cout<<"删除成功!"<<endl;
}
if(q->ReplName->next!=NULL)
{
Replace_Amount=q->ReplName->next->Amount;
if(Replace_Amount<=q->FreeTicket)
{
rep=q->ReplName->next;
Cus2=new Customer;
Cus2->SeatNum=q->Ration-q->FreeTicket+1;
strcpy(Cus2->FlightNum,q->PlaneNum);
strcpy(Cus2->Name,rep->Name);
Cus2->Amount=rep->Amount;
Cus2->Level=rep->Level;
cout<<"乘客"<<rep->Name<<"已经成功买票"<<endl;
cout<<"座位号:";
for(int i=1;i<=(rep->Amount);i++)
{
cout<<Cus2->SeatNum++<<" ";
}
cout<<endl;
}
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;
}
cout<<"2 退出姓名录入"<<endl;
cin>>i;
}
}
cout<<"1 返回主菜单"<<endl;
cin>>i;
}
}
void main()
{ Flight *head,*rear;
head=rear=new Flight;
head->next=Null;
rear->next=Null;
char i='0';
while(i!='7')
{
cout<<"********航空订票系统*********"<<endl;
cout<<"1、增加航线 5、预订机票"<<endl;
cout<<"2、查询航线 6、退订机票"<<endl;
cout<<"3、修改航线 7、退出系统"<<endl;
cout<<"4、删除航线 "<<endl;
cout<<"*****************************"<<endl;
cin>>i;
switch(i)
{case '1': FlightInsert(head );break;
case '2': FlightSearch(head);break;
case '3': FlightRework(head);break;
case '4': FlightDelete(head);break;
case '5': FlightBuyTicket(head);break;
case '6': FlightCancelTicket(head);break;
case '7':break;
default:cout<<"error\n";break;
}
}
}
- 机票系统
- 机票预订系统
- 机票预定系统
- vb 机票订购系统
- ABE 机票查询系统演示
- 机票预定系统可行性分析
- 机票销售信息管理系统原码
- 实时机票/火车票抓取系统概述
- 实时机票/火车票抓取系统整体架构
- 机票预订系统的可行性分析
- 机票B2B/B2C/B2G分销系统
- 机票管理系统(Android版)
- 机票预订系统的可行性分析
- 开发手机客户端旅游、机票、酒店等系统
- 作业 | 机票预订系统和银行计算机储蓄系统的数据流图及实体图
- 机票常识
- 机票助手
- 机票 NFD
- Unable to connect to a repository at URL
- Android Handler不同界面发送数据
- UML序列图总结
- 多targets讲解
- hibernate连接池
- 机票系统
- CISCO实验模拟器完全攻略
- FatFs中文介绍和移植方法(转载)
- Visual Assist X V10.7.1929.0 官方原版+破解补丁+破解方法
- 编码规范
- UITextField 与 键盘
- Memcache与Spring集成实例
- Xcode中断点的威力
- Miyeok Guk (Korean Seaweed Soup) - Миён Гук (Корейский суп из морепродуктов)