#include<iostream>
#include<string>
using namespace std;
class passenger
{
	//data member
string name;
string passport_number;
long contact_number;
public :
	//set functions
	void set_name(string );
	void set_contact_number(long);
	void set_passport_number(string );
	//get functions
	string get_name();
	long get_contact_number();
	string get_passport_number();
	//pramiterized constractor
passenger(string ,long ,string );
//defult constractor
passenger();
//print
	void print();
};
////////////////////////////////////////////////////////////////////////////////////////
	//set functions
void passenger::set_name(string n)
	{name=n;}
void passenger::set_contact_number(long c)
	{contact_number=c;}
void passenger::set_passport_number(string p)
	{passport_number=p;}
		//get functions
string passenger::get_name()
	{
		return name;
	}
long passenger::get_contact_number()
	{
		return contact_number;
	}
string passenger::get_passport_number()
	{
		return passport_number;
	}
//pramiterized constractor
passenger::passenger(string pan,long cn,string m){ name=m;
 passport_number=pan;
 contact_number=cn;}
//defult constractor
passenger::passenger(){name="";
contact_number=0;
passenger::passport_number="";}
//print
void passenger:: print()
	{
	cout<<"\n your name is "<<get_name();
	cout<<"\n contact_number is "<<get_contact_number();
	cout<<"\n your passport_number is "<<get_passport_number()<<"\n\t......\n";}
//***************************************************************************************
class Reservation{
private:
	static int sn;
	 string ID; //first two letters of passanger name plus sn
	bool smokerSeat;
	string s;
	passenger passenger1;
		
public:
	
	//Constructor taking the parameters of Passenger
	Reservation(string psngrName, long psngrPhone, string psngrPassport, bool 	smoke);
	
	//Constructor taking a Passenger object
	Reservation(passenger& psngr, bool smoke);
	
	passenger getPassenger();	
	bool isSmoker();
	
	string getReservationNumber();
	void printDetails();
};
//////////////////////////////////////////////////////////////////////////////////////
	//Constructor taking the parameters of Passenger
Reservation::Reservation(string psngrName, long psngrPhone, string psngrPassport, bool smoke)
{
	passenger1.set_name(psngrName);
passenger1.set_contact_number(psngrPhone);
passenger1.set_passport_number(psngrPassport);
smokerSeat=smoke;
}
int Reservation::sn=1234;	
	//Constructor taking a Passenger object
Reservation::Reservation(passenger& psngr, bool smoke)
{
	passenger1.set_name(psngr.get_name());
passenger1.set_passport_number(psngr.get_passport_number());
passenger1.set_contact_number(psngr.get_contact_number());
smokerSeat=smoke;}

passenger Reservation:: getPassenger()
	{return this->passenger1; }		
	bool Reservation::isSmoker()
	{
		return smokerSeat;
	};
	string Reservation:: getReservationNumber()	
	{string s= passenger1.get_name();
	//to convert number to string
	char a[20];
	itoa(sn,a,10);
	//to cut first laters and ad sn to firsl latters
	ID=s.substr(0,2)+a;
			return ID;}
	void Reservation:: printDetails()
	{cout<< "The name: \t"<<passenger1.get_name()<<"\n";
	cout<<" Contact Number:\t"<<passenger1.get_contact_number()<<endl;
	cout<<" Passport Number :\t"<<passenger1.get_passport_number()<<endl;
	cout<<"ID :\t"<<getReservationNumber()<<"\n";
	cout<<" smoking : "<<(isSmoker()?"Yes":"NO")<<endl;
	
	};
	//********************************************************************************
int main()
{string na;
long cn;
string pass;
	passenger khaled;
	cout<<"enter your name \t";
	cin>>na;
	khaled.set_name(na);
	cout<<"\nenter your contact number\t";
	cin>>cn;
	khaled.set_contact_number(cn);
	cout<<"\nenter your passport number\t";
	cin>>pass;
	khaled.set_passport_number(pass);
	cout<<"\n\t......................your daitiles.........................\n";
	Reservation R1(khaled,1);// 1 smoke  0 not smoke
	R1.printDetails();
	cout<<endl;
	Reservation R2("ahmed",214758,"12235435",0);
	R2.printDetails();
	return 0;
}