Project 3
#include <iostream>
#include<string>
using namespace std;
enum Type{//enum type is declaraed for vechicle type
gas,diesel,electric
};
class Vehicle//abstract class is created
{
protected://declaraing members in proteced
string make;
string model;
int year;
int odometer;
public:
virtual Type getType() = 0;//declaraing virtual type function
void setmake()
{
do {
cout << "Enter a make of a vehicle: ";
getline(cin, make);
if (!make.empty()) {
break; // Exit the loop if input is not blank
}
cout << "Invalid input. Please try again." << endl;
} while (1);
}
void setmodel()
{
do
{
cout<<"Enter the model of the vehicle"<<endl;
getline(cin,model);
if(!model.empty())
{
break;
}
cout<<"invalid input try again";
}while(1);
}
void setyear()
{
while(1)
{
cout<<"Enter the year of the vehicle"<<endl;
cin>>year;
if(year>999)//checking the condition only accept the 4 digits
{
break;
}
cout<<"invalid input try again"<<endl;
}
}
void setodometer()
{
cout<<"Enter the odemeter reading of vehicle"<<endl;
cin>>odometer;
}
void checkTireRotation()
{
cout<<"Tire status :";
if(odometer>=50000)
{
cout<<"Tires need to be changed"<<endl;
}
else
{
cout<<"Tires are good to go"<<endl;
}
}
void checkpower()
{
cout<<"Battery level status :";
if(odometer>=400)
{
cout<<"battery need to be changed"<<endl;
}
else
{
cout<<"battery are good to go"<<endl;
}
}
void oilchange()
{
cout<<"oil level status"<<endl;
if(odometer>=50000)
{
cout<<"oil need to be changed"<<endl;
}
else
{
cout<<"oil is good to go"<<endl;
}
}
void updatevehicle()
{
cout<<make<<endl;
cout<<"Toyota"<<endl;
cout<<"Bharat benz"<<endl;
}
void listinventory()
{
cout<<"Toyota"<<endl;
cout<<"Bharat benz"<<endl;
}
void removevehicle()
{
cout<<make<<endl;
cout<<"Toyota"<<endl;
}
};
class Vehicle_type : public Vehicle
{
public:
Type getType()
{
int t;
cout<<"Enter the vehicle type(0=GAS 1=DIESEL 2=ELECTRIC)"<<endl;
cin>>t;
if(t==0)
{
cout<<"VEHICLE TYPE :GAS VEHICLE"<<endl;
return gas;
}
else if(t==1)
{
cout<<"VEHICLE TYPE :DIESEL VEHICLE"<<endl;
return diesel;
}
else if(t==2)
{
cout<<"VEHICLE TYPE :ELECTRIC VEHICLE"<<endl;
return electric;
}
else
{
return getType();
}
}
};
int main()
{
Vehicle_type obj;//object is created for derived class
obj.getType();
//Vehicle goel;
int select;
cout<<"0.QUIT"<<endl;//menu function
cout<<"1. List inventory"<<endl;
cout<<"2. Add vehicle"<<endl;
cout<<"3. Update vehicle"<<endl;
cout<<"4. Remove vehicle"<<endl;
cout<<"5. Tire Rotation"<<endl;
cout<<"6. Oil Change"<<endl;
cout<<"7. Recharge"<<endl;
while(1)
{
cout<<"PRESS THE MENU :";
cin>>select;
switch(select)//using switch case to call a function.
{
case 0:cout<<"EXIT"<<endl;
break;
case 1:obj.listinventory();
break;
case 2:obj.setmake();
obj.setmodel();
obj.setyear();
obj.setodometer();
break;
case 3:obj.updatevehicle();
break;
case 4:obj.removevehicle();
break;
case 5:obj.checkTireRotation();
break;
case 6:obj.oilchange();
break;
case 7:obj.checkpower();
break;
default:cout<<"Invalid try again";
}
}
return (0);
}