📄 模拟航空售票系统.cpp
字号:
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
typedef struct passenger_infermation{ //存储乘客信息
char name[15];
int ID;
char plane_name[20];
int seatnum;
}passenger;
typedef struct queue{ //存储飞机信息
passenger *data[101]; //定义指向passenger型指针数组,
int last; //用来存放指向乘客信息的指针
char plane_name[20];
char destination[10];
char date[15];
int capacity;
int remain;
}queue;
typedef struct seat{
int data[100];
int front;
int rear;
}seat;
void Initiate(); //信息初始化
void Reserve();
void Entry(queue *q,seat s,int *t); //订票
void Withdraw();
void Outqueue(queue *q,seat *s); //退票
void Reserver(int number);
void Search(queue *q); //乘客信息
void Plane();
void Introduct();
void Pinformation(queue *q); //航班信息
int Empty(seat s);
queue CA1;
queue CA2;
seat seat1;
seat seat2;
int s1=0;
int s2=0;
void main()
{
char option;
int c;
Initiate();
Introduct();
while(1){
cout<<endl<<"选项:"<<endl;
cout<<"订票--r"<<endl;
cout<<"退票--w"<<endl;
cout<<"航班信息--p"<<endl;
cout<<"旅客信息--v"<<endl;
cin>>option;
switch(option){
case 'r':Reserve();continue;
case 'w':Withdraw();continue;
case 'v':cout<<"CA001:1"<<endl;
cout<<"CA002:2"<<endl;
cin>>c;
if(c==1){
Reserver(1);
continue;
}
if(c==2){
Reserver(2);
continue;
}
continue;
case 'p':Plane();continue;
case 'q':break;
default: continue;
}
}
}
void Initiate() //飞机信息初始化
{
CA1.capacity=3;
CA1.last=0;
strcpy(CA1.plane_name,"CHINA AIRLINE001");
strcpy(CA1.destination,"Shanghai");
strcpy(CA1.date,"Wednesday 14:00");
CA1.remain=CA1.capacity;
CA2.capacity=100;
CA2.last=0;
strcpy(CA2.plane_name,"CHINA AIRLINE002");
strcpy(CA2.destination,"Beijing");
strcpy(CA2.date,"Monday 10:30");
CA2.remain=CA2.capacity;
seat1.front=seat1.rear=seat2.front=seat2.rear=0;
}
void Introduct()
{
cout<<endl<<"Introduction:"<<endl;
cout<<" This is a simulation of selling system for an airport."<<endl;
cout<<"Here we assume that there are two planes CA1(1 for short) and CA2(2)"<<endl<< "in the airport,"
<<"and this system can only handle with the operations" <<endl<<"of the next week."<<endl;
}
void Reserve() //订票
{
queue *q;
char number;
cout<<"输入要预定的班机号 1 or 2"<<endl;
cin>>number;
switch(number){
case '1':q=&CA1;
Entry(q,seat1,&s1);break;
case '2':q=&CA2;
Entry(q,seat2,&s2);break;
}
}
void Entry(queue *q,seat s,int *t)
{
int id;
passenger *p;
while(1){
if(q->last==q->capacity){
cout<<"票已全部预定"<<endl;
break;
}
q->last++;
p=(passenger*)malloc(sizeof(passenger));
strcpy(p->plane_name,q->plane_name);
cout<<"输入你的英文姓名"<<endl;
cin>>p->name;
cout<<"输入你的身份证号码"<<endl;
cin>>id;
p->ID=id;
if(!Empty(s)){
s.front=(s.front+1)%100;
p->seatnum=s.data[s.front];
q->data[q->last]=p;
q->remain--;
cout<<"已完成"<<endl;
break;
}
else{
p->seatnum=++*t;
q->data[q->last]=p;
q->remain--;
cout<<"已完成"<<endl;
break;
}
}
}
void Withdraw() //退票
{
int number;
queue *q;
cout<<"输入要退票的班机号 1 or 2"<<endl;
cin>>number;
switch(number){
case 1: q=&CA1;
Outqueue(q,&seat1);
break;
case 2: q=&CA2;
Outqueue(q,&seat2);
break;
}
}
void Outqueue(queue *q,seat *s)
{
int i=1;
int id;
if(q->last==0)
cout<<"没有预定信息"<<endl;
else while(1){
cout<<"输入乘客身份证号"<<endl;
cin>>id;
while(1){
if(i==q->last+1){
cout<<"没有该乘客信息"<<endl;
break;
}
if(q->data[i]->ID==id){
s->rear=(s->rear+1)%100;
s->data[s->rear]=q->data[i]->seatnum;
while(i!=q->last){
q->data[i]=q->data[i+1];
i++;
}
q->remain++;
q->last--;
cout<<"已完成"<<endl;
break;
}
i++;
continue;
}
break;
}
}
void Reserver(int number) //乘客信息
{
int i=1;
queue *q;
switch(number){
case 1: q=&CA1;
Search(q);
break;
case 2: q=&CA2;
Search(q);
break;
}
}
void Search(queue *q)
{
int i=1;
char press;
while(1){
if(q->last==0)
cout<<"No data"<<endl;
if(i==q->last+1) break;
else{
cout<<"seat:"<<q->data[i]->seatnum<<endl;
cout<<"Name:"<<q->data[i]->name<<endl;
cout<<"Plane:"<<q->data[i]->plane_name<<endl;
i++;
}
}
cout<<"Plane infermation:press p,any button else to quit"<<endl;
cin>>press;
if(press=='P'||press=='p')
Pinformation(q);
}
void Plane() //航班信息
{
int num;
queue *q;
cout<<"输入航班号 1 or 2"<<endl;
cin>>num;
if(num==1){
q=&CA1;
Pinformation(q);
}
if(num==2){
q=&CA2;
Pinformation(q);
}
}
void Pinformation(queue *q)
{
char list;
cout<<q->plane_name<<endl;
cout<<"Destination:"<<q->destination<<endl;
cout<<"Date:"<<q->date<<endl;
cout<<"Capacity:"<<q->capacity<<endl;
cout<<"Remain tickets:"<<q->remain<<endl;
cout<<"Passengers List:press L,eny button else to quit"<<endl;
cin>>list;
if(list=='l'||list=='L')
Search(q);
}
int Empty(seat s)
{
if(s.front==s.rear)
return 1;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -