⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 模拟航空售票系统.cpp

📁 航空售票系统.模拟受票中心,可完成定票,售票,退票等基本功能
💻 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 + -