Challenge

Project 3

Build an object-oriented library which can be used to track automobile maintenance. There can be different car types such as petrol, diesel, gas, electric etc., This library should be able to support at least three of the car types.

Maintenance tasks include activities like oil change or replace oil filter, replace air filter, replace fuel filter, tire rotations, infotainment system debug, replace spark plugs, replace the cabin or a/c filter, check the level and refill clutch fluid or brake fluid, examine belts, wipers, hoses, check the tire conditions, check the charging systems and battery.

Every vehicle should have the following details:

  1. Make

  2. Model

  3. Year

  4. Odometer reading

The library interfaces or the API’s (Application Program Interface) should be capable of adding, updating, listing and removing the entries at runtime.

Consider there are three classes such as

  1. Vehicle

    1. This class includes protected members such as Make, Model, Year and Odometer. These members are initialized using the class constructor.

    2. The functions include getter and setter functions of Make(), Model(), Year() and Odometer().

    3. Maintenance activities that should be done are checkTireRotation(), getCarInformation()

    4. Let the three fuel types be

enum Type{

GAS,

DIESEL,

ELECTRIC

};

  1. Let there be a pure virtual method to get the fuel type i.e.,

    1. virtual Type getType() = 0;

  1. GasCar

    1. This is inherited from the vehicle class and has functions getType() and getFuelType()

  2. DieselCar

    1. This class is also a subclass of vehicle and the functions include getFuelType() and getType()

  3. ElectricCar

    1. This is a subclass of Vehicle class and methods include

      1. checkTireRotation()- based on odometer reading, we decide whether the car needs to rotate tires or not.

      2. checkChargerPower- based on odometer reading this advices to recharge power

      3. getType() – to get the fuel type

  4. FuelVehicle

    1. This is an abstract class that inherits vehicle class. The methods in this class include checkOil() and pure virtual function getFuelType()

Maintenance activities that has to be done are as follows,

  1. Check tire rotation: Let the tire cycle be 50,000 km. Calculate the distance the car has run and if this distance run is at 50k km, then advise rotation, else tires are good to go. Also, calculate the remainder of each 50k km, If remainder >=0 then advice to rotate tires.

  2. Check Power: Let the distance be 400km, If the distance the car has run is at 400km, then advise battery to be recharged else your vehicle is good to go.

Now that we have learnt about the classes to be created, we need to write our driver code i.e., main.cpp

  1. In the main class, initialize the inventory and ask the user to select whether to add, update, list or delete the Vehicle list.

    1. addVehicle() – to add new vehicle to inventory

    2. ListVehicle()- to list the vehicles in the inventory

    3. UpdateVehicle()- to update the vehicle in the inventory list

    4. RemoveVehicle()- to remove the vehicle from the inventory list

    5. Tire Rotation() – Check if tires need rotation

    6. OilChange()- check if car requires oil change

    7. Recharge() – check if vehicle needs recharge

  2. Check for the user input, 0-1-2-3-4-5-6-7, Functions will be called based on the input provided by the user. If the input is wrong, ask again.

  3. Menu should be as below,

<< " 0. Quit.\n"

<< " 1. List inventory.\n"

<< " 2. Add vehicle.\n"

<< " 3. Update vehicle\n"

<< " 4. Remove vehicle\n"

<< " 5. Tire Rotation\n"

<< " 6. Oil Change\n"

<< " 7. Recharge\n"

  1. Retrieve the user input on the vehicle’s make, model, year, type and odometer.

    1. getNewMake() – If input is blank, request again

    2. getNewModel() – If input is blank, request again

    3. getYear() – If input doesn’t have 4 digits, request again

    4. getNewOdometer()- Input should be only numericals

    5. getNewType() – Input should be within 0-2, else request again

  2. Retrieve the selected car from the user input

    1. selectCar() – Input should be within the size of vehicle list, else request again

    2. getNewOdometerReading() – New odometer reading is used to calculate the oil change, tire rotation, power recharge etc.

solution:

/*
* Automoblie_Maintenance.cpp
*
* Created on: July 10, 2023
* Author: vinoth kumar
*/
#include<iostream>//library
using namespace std;
enum Type{GAS,DIESEL,ELECTRIC};//enum type list for the vechile
class automobile_maintenance//main class for the automobile maintenance
{
protected://it is a protected function in class
string make,model;
int year,odometer,type;
public://used to access the protected in main class
automobile_maintenance()//constructor details of the vehicles
{
cout<<"the make of the vehicle"<<endl;
cin>>make;

cout<<"the model of the vehicle"<<endl;
cin>>model;

cout<<"the manufacturing year of vehicle"<<endl;
cin>>year;

cout<<"the odometer reading in the vehicle"<<endl;
cin>>odometer;

cout<<"the VEHICLE TYPE to choose\n choose 0 for GAS type\n choose 1 for DIESLE type choose 2 for ELECTRIC type"<<endl;
cin>>type;
}
};
class maintenance : public automobile_maintenance
{ protected://it is a protected function in class
int t,c;
public://used to access the protected in main class
void checkTireRotation()//constructor details of the vehicles
{
cout<<"the information based on the tire rotation is: "<<endl;
if(odometer >= 50000)
{
cout<<"the car tire must be changed the life time is over"<<endl;
}
else
{
t=(50000-odometer);
cout<<"the tires is good condition \n After"<<t<<"kms the tier must be changed"<<endl;
}
}
void checkChargerPower()
{
cout<<"the information based on the battery usage: "<<endl;
if(odometer >= 400)
{
cout<<"the battery must need be changed"<<endl;
}
else
{
c=(400-odometer);
cout<<"the battery is in good condition \n After"<<c<<"kms the battery must be changed"<<endl;
}
}
};

class car : public automobile_maintenance
{
protected://it is a protected function in class
int n;
public://used to access the protected in main class
void fun()//constructor details of the vehicles
{
cout<<"the information based on the customer vehicle: "<<endl;
cin>>n;
switch(n)
{
case 0:
cout<<"GAS type vehicle came to service"<<endl;
cout<<"it runs in liquidfied gas"<<endl;
break;
case 1:
cout<<"DIESEL type vehicle came to service"<<endl;
cout<<"it runs in liquid petrolium"<<endl;
break;
case 2:
cout<<"ELECTICAL type vehicle came to service"<<endl;
cout<<"it runs in rechargeable battery"<<endl;
break;
default:
cout<<"invalid type of vehicle to select"<<endl;
break;
}
}
};
//main function created object to call the class and access the member function to display the output
//object created for each and every function to call the class
int main()
{
int n;
maintenance m;
car c;
m.checkTireRotation();
m.checkChargerPower();
c.fun();
//the list where the company changed in the vehicle and according to the coustomerlist
int y;
cin>>y;
switch(n)
{
case 0:
cout<<"thanks for doing service with us "<<endl;
cout<<"have a safe journey"<<endl;
break;
case 1:
cout<<"the list of the inventory details have been uploaded in a proper manner"<<endl;
cout<<"the list has been got approved from RTO"<<endl;
break;
case 2:
cout<<"if you want to add the another vehicle bill means we can add it"<<endl;
cout<<"you said no need ok"<<endl;
break;
case 3:
cout<<"the old parts has been replaced with the updated parts in the market"<<endl;
cout<<"its an wonderful update in the year"<<endl;
break;
case 4:
cout<<"there is no vehicle is added in the list to remove"<<endl;
break;
case 5:
cout<<"the rotation is in good condition"<<endl;
cout<<"there is no need to change the tire"<<endl;
break;
case 6:
cout<<"the oil tank in the car cleaned completely"<<endl;
cout<<"the new oil is filled in the tank"<<endl;
break;
case 7:
cout<<"as per the customer requirement the battery has changed to new version"<<endl;
cout<<"the battery recharged fully and it has 2 year life time"<<endl;
break;
}
}

output:

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.