#include <iostream.h>
#include <fstream.h>
#include <string.h>
using namespace std;
string karachi="Karachi",lahore="Lahore",peshawar="Peshawar";
class Airfare
{
private:
char seatType;
int price;
float tax;
double airlinecharg;
double fare;
string destination, name, date, address, flightNo, seatNo;
public:
enum Type
{
economy,
business,
first
};
Type type;
void getData();
void readData();
void setDestination(string i){destination=i;};
double calculatePrice();
float CalculateTax();
void calFare();
void writeDatafile();
void writeDatascreen();
Airfare(){
seatType=' ';
price=tax=airlinecharg=fare=0.0;
destination=name=date=address=flightNo=seatNo="default";};
};
void Airfare::getData()
{
int i;
do
{
cout<<"Please select the Seat Type:"<<endl;
cout<<" 1 for Economy Class"<<endl;
cout<<" 2 for Business Class"<<endl;
cout<<" 3 for First Class"<<endl;
cin>>i;
}
while(i>3 || i<1);
type = Type(i);
}
void Airfare::readData()
{
string line;
ifstream myfile ("data.txt");
if (myfile.is_open())
{
getline (myfile,line);
name=line;
getline (myfile,line);
address=line;
getline (myfile,line);
date=line;
getline (myfile,line);
destination=line;
getline (myfile,line);
flightNo=line;
getline (myfile,line);
seatNo=line;
myfile.close();
}
else cout << "Unable to open file";
}
double Airfare::calculatePrice()
{
if(destination == karachi )
{
switch (type)
{
case 1://economy class
airlinecharg=(tax+3000)*0.15;
return tax+3000+airlinecharg;
break;
case 2://business class
airlinecharg=(tax+5000)*0.15;
return tax+5000+airlinecharg;
break;
case 3://first class
airlinecharg=(tax+7000)*0.15;
return tax+7000+airlinecharg;
break;
};
}
if(destination == lahore )
{
switch (type)
{
case 1://economy class
airlinecharg=(tax+4000)*0.15;
return tax+4000+airlinecharg;
break;
case 2://business class
airlinecharg=(tax+6000)*0.15;
return tax+6000+airlinecharg;
break;
case 3://first class
airlinecharg=(tax+7000)*0.15;
return tax+7000+airlinecharg;
break;
};
}
if(destination == peshawar )
{
switch (type)
{
case 1://economy class
airlinecharg=(tax+2500)*0.15;
return tax+2500+airlinecharg;
break;
case 2://business class
airlinecharg=(tax+4500)*0.15;
return tax+4500+airlinecharg;
break;
case 3://first class
airlinecharg=(tax+7000)*0.15;
return tax+7000+airlinecharg;
break;
};
}
}
float Airfare::CalculateTax()
{
if(destination == karachi )
{
switch (type)
{
case 1://economy class
tax=4000*0.10;
break;
case 2://business class
tax=6000*0.20;
break;
case 3://first class
tax=7000*0.30;
break;
};
}
if(destination == lahore )
{
switch (type)
{
case 1://economy class
tax=3000*0.10;
break;
case 2://business class
tax=3000*0.20;
break;
case 3://first class
tax=7000*0.30;
break;
};
}
if(destination == peshawar )
{
switch (type)
{
case 1://economy class
tax=2500*0.10;
break;
case 2://business class
tax=4500*0.20;
break;
case 3://first class
tax=7000*0.30;
break;
};
}
fare=calculatePrice();
}
void Airfare::writeDatafile()
{
ofstream myfile ("fare.txt");
if (myfile.is_open())
{
myfile<<"_________________________________________________________________________"<<endl;
myfile<<"| Name | Address | Date | Destination | Flight No.| Seat No.| Fare |"<<endl;
myfile<<"-------------------------------------------------------------------------"<<endl;
myfile<<"| "<<name<<" | "<<address<<" | "<<date<<" | "<<destination<<" | "<<flightNo<<" | "<<seatNo<<" | "<<fare<<" | "<<endl;
myfile<<endl;
myfile<<endl;
myfile<<endl;
myfile<<endl;
myfile<<endl;
myfile<<endl;
myfile<<endl;
myfile<<endl;
myfile<<"-------------------------------------------------------------------------"<<endl;
myfile.close();
}
else cout << "Unable to open file";
}
void Airfare::writeDatascreen()
{
cout<<"_________________________________________________________________________"<<endl;
cout<<"| Name | Address | Date | Destination | Flight No.| Seat No.| Fare |"<<endl;
cout<<"-------------------------------------------------------------------------"<<endl;
cout<<"| "<<name<<" | "<<address<<" | "<<date<<" | "<<destination<<" | "<<flightNo<<" | "<<seatNo<<" | "<<fare<<" | "<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<"-------------------------------------------------------------------------"<<endl;
}
void Airfare::calFare()
{
fare=calculatePrice();
}
main()
{
Airfare a;
a.getData();
a.readData();
a.CalculateTax();
a.calculatePrice();
a.calFare();
a.writeDatafile();
a.writeDatascreen();
system("pause");
}