Challenge

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

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.