Project 3
code//
/*
* maintenence.cpp
*
* Created on: Jul 17, 2023
* Author: GOURAV SANKADA
* Email:[email protected]
*/
/*
* maintainance.cpp
*
#include
#include
#include
#include
using namespace std;
//creating base class vehicle
class vehicle
{
public:
string make;
string model;
int make_year;
long int odometer_reading;
public:
//vehicle types gas or diesel or electric
enum type {
GAS,
DIESEL,
ELECTRIC
};
// vehicle(string make, int model, int make_year, long int odometer_reading)
// {
// cout<<"make"<<endl;
// cin>>make;
// cout<<"model"<<endl;
// cin>>model;
// cout<<"make year"<<endl;
// cin>>make_year;
// cout<<"odometer reading"<<endl;
// cin>>odometer_reading;
// }
virtual void getfueltype();//pure virtual function for getting fuel type as per instruction in the project
string getmake()//function to get the make of the vehicles
{
return make;
}
string getmodel()
{
return model;//to get the model
}
int getyear()
{
return make_year;//yeart of manufacturing
}
long int getodoreading()//odometer reading
{
return odometer_reading;
}
string getnewmake()
{
string make;
cout<<"Enter make: "<<endl;
cin>>make;
return make;
}
string getnewModel()
{
string model;
cout<<"Enter model: "<<endl;
cin>>model;
return model;
}
long int getnewodometer()
{
long int odo_read;
cout<<"Enter odometer reading: "<<endl;
cin>>odo_read;
return odo_read;
}
int getnewyear()
{
int year;
cout<<"Enter year of manufacture: "<<endl;
cin>>year;
return year;
}
type current_state;///
int getnewtype()
{
int type;
cout<<"Enter the type of vehicle: "<<endl;
fflush(stdout);
cin>>type;
// if(type==GAS)
// {
// current_state = GAS;
// cout<<"gas vehicle"<<endl;
// }
// else if(type==DIESEL)
// {
// current_state = DIESEL;
// cout<<"diesel vehicle"<<endl;
//
// }
//
// else if(type==ELECTRIC)
// {
// current_state = ELECTRIC;
// cout<<"electric vehicle"<<endl;
// }
return type;
}
// void setnewtype(type t)
// {
//
// }
void setmake(string make_val)
{
make = make_val;
}
void setmodel(string model_val)
{
model = model_val;
}
void setyear(int year_val)
{
make_year = year_val;
}
void setodoreading(int odo_val)
{
odometer_reading = odo_val;
}
// void settype(int type_val)
// {
// type = type_val;
// }
vector<vehicle*> inventory;//using vectors to list the vehicles inventory management
void addvehicle(vehicle* v)//this function add new vehicle to list invemtory
{
cout << "Enter the make of the vehicle: ";
cin >> v->make;
cout << "Enter the model of the vehicle: ";
cin >> v->model;
cout << "Enter the year of the vehicle: ";
cin >> v->make_year;
cout << "Enter the odometer reading of the vehicle: ";
cin >> v->odometer_reading;
inventory.push_back(v);
cout << "Vehicle added to inventory.n";
}
void listvehicle()//this function display the inventory list of vehicles
{
if (inventory.empty()) {
cout << "The inventory is empty." << endl;
return;
}
cout << "Inventory:" << endl;
for (size_t i = 0; i < inventory.size(); i++) {
vehicle* v = inventory[i];
cout << i << endl;
}
}
void updatelist(unsigned int index, string make, string model, int make_year, long int odometer_reading)
{
cout << "Enter the index of the vehicle to update: ";
cin >> index;
if (index >= inventory.size()) {
cout << "Vehicle not found." << endl;
}
else
{
cout << "Enter the make of the vehicle: ";
cin >> make;
cout << "Enter the model of the vehicle: ";
cin >> model;
cout << "Enter the year of the vehicle: ";
cin>>make_year;
vehicle* v = inventory[index];
v->setmake(make);
v->setmodel(model);
v->setyear(make_year);
v->setodoreading(odometer_reading);
}
}
void removevehicle()
{
if (inventory.empty()) {
cout << "Inventory is empty.n";
return;
}
unsigned int vehicleIndex;
cout << "Enter the index of the vehicle to remove: ";
cin >> vehicleIndex;
if (vehicleIndex < 1 || vehicleIndex > inventory.size()) {
cout << "Invalid vehicle index.n";
return;
}
inventory.erase(inventory.begin() + vehicleIndex - 1);
cout << "Vehicle removed from inventory.n";
}
void checktyrerotation()
{
int reference=50000;
cout<<"distance traveled: "<<"Kms"<<endl;
cin>>odometer_reading;
cout<<"reference point to change tyre: "<<reference<<endl;
int remainder = odometer_reading-reference;
if(remainder>=0)
{
cout<<"vehicle traveled more than 50000 kms"<<endl;
cout<<"change vehicle tyres"<<endl;
cout<<"blink tyre shaped red light"<<endl;
}
else
{
cout<<" blink tyre shaped green light"<<endl;
cout<<"tyres are in good condition"<<endl;
}
}
void oilchange()
{
cout<<"check engine oil of vehicle"<<endl;
int refrence_level=20;
int oil_left;
cout<<"Enter the level of oil left in vehicle"<<endl;
cin>>oil_left;
if(oil_left<=refrence_level)
{
cout<<"change oil"<<endl;
}
else
{
cout<<"no need to change oil"<<endl;
}
}
void checkbatterypower()
{
int reference_power=400;
cout<<"enter odometer reading:"<<endl;
cin>>odometer_reading;
int rem=odometer_reading-reference_power;
if(rem>=0)
{
cout<<"change battery"<<endl;
}
else
{
cout<<"no need to change battery"<<endl;
}
}
void getcarinformation()
{
cout<<"make"<<endl;
cin>>make;
cout<<"model_no"<<endl;
cin>>model;
cout<<"manufactured year"<<endl;
cin>>make_year;
cout<<"odometer reading"<<endl;
cin>>odometer_reading;
}
void display()
{
int select;
while(1)
{
cout<<"choose the select option"<<endl;
cin>>select;
switch(select){
case 1: cout<< " 1. List inventory.n"<<endl;
listvehicle();
break;
case 2:cout<< " 2. Add vehicle.n"<<endl;
addvehicle(new vehicle);
// string make; int model;
// int make_year;long int odometer_reading;
// cout << "Enter vehicle make: "<<endl;
// cin >> make;
// cout << "Enter vehicle model: "<<endl;
// cin >> model;
// cout << "Enter vehicle year: "<<endl;
// cin >> make_year;
// cout << "Enter vehicle odometer reading: "<<endl;
// cin >> odometer_reading;
break;
case 3: cout<< " 3. Update vehiclen"<<endl;
unsigned int index;
updatelist(index, make, model, make_year, odometer_reading);
break;
case 4: cout<< " 4. Remove vehiclen"<<endl;
removevehicle();
break;
case 5:cout<< " 5. Tire Rotationn"<<endl;
checktyrerotation();
break;
case 6: cout<< " 6. Oil Changen"<<endl;
oilchange();
break;
case 7: cout<< " 7. Rechargen"<<endl;
int type;
cout<<"enter type"<<endl;
cin>>type;
if(type==GAS||type==DIESEL)
{
cout<<"no battery check"<<endl;
}
else
{
checkbatterypower();
}
break;
default: cout<< " 0. Quit.n"<<endl;
cout<<"Invalid selection"<<select;
}
}
}
};
class gas_vehicle: public vehicle
{
public:
// gas_vehicle(string make,int model, int make_year,long int odometer_reading):vehicle(make, model, make_year, odometer_reading)
// {}
int gettype()
{
return type::GAS;
}
void getFuelType()
{
cout << "Fuel Type: Gas" << endl;
}
};
class electric_vehicle: public vehicle
{
public:
// electric_vehicle(string make,int model, int make_year,long int odometer_reading):vehicle(make, model, make_year, odometer_reading)
// {}
int gettype()
{
return type::ELECTRIC;
}
void checkactivities()
{
checktyrerotation();
checkbatterypower();
}
void getFuelType()
{
cout << "Fuel Type: Electric Charging" << endl;
}
};
class diesel_vehicle:public vehicle
{
public:
// diesel_vehicle(string make,int model, int make_year,long int odometer_reading):vehicle(make, model, make_year, odometer_reading)
// {}
int gettype()
{
return type::DIESEL;
}
void getFuelType()
{
cout << "Fuel Type: Diesel" << endl;
}
};
class fuelvehicle:public vehicle
{
public:
void fueltype()
{
getnewtype();
}
void checkoil()
{
oilchange();
}
};
int main()
{
vehicle obj;
obj.getnewtype();
gas_vehicle obj2;
electric_vehicle obj3;
diesel_vehicle obj4;
fuelvehicle obj5;
if(obj.getnewtype()==0)
{
cout<<"enter gas vehicle details"<<endl;
obj2.gettype();
obj.getcarinformation();
}
else if(obj.getnewtype()==2)
{
cout<<"enter ELECTRIC vehicle details"<<endl;
obj3.gettype();
obj3.checkactivities();
obj.getcarinformation();
}
else if(obj.getnewtype()==1)
{
cout<<"enter DIESEL vehicle details"<<endl;
obj4.gettype();
obj4.getFuelType();
obj.getcarinformation();
}
obj5.fueltype();
obj5.checkoil();
obj.display();
}
// output is in the attachment
regards