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:
Make
Model
Year
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
Vehicle
This class includes protected members such as Make, Model, Year and Odometer. These members are initialized using the class constructor.
The functions include getter and setter functions of Make(), Model(), Year() and Odometer().
Maintenance activities that should be done are checkTireRotation(), getCarInformation()
Let the three fuel types be
enum Type{GAS,DIESEL,ELECTRIC};
Let there be a pure virtual method to get the fuel type i.e.,
virtual Type getType() = 0;
GasCar
This is inherited from the vehicle class and has functions getType() and getFuelType()
DieselCar
This class is also a subclass of vehicle and the functions include getFuelType() and getType()
ElectricCar
This is a subclass of Vehicle class and methods include
checkTireRotation()- based on odometer reading, we decide whether the car needs to rotate tires or not.
checkChargerPower- based on odometer reading this advices to recharge power
getType() – to get the fuel type
FuelVehicle
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,
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.
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
In the main class, initialize the inventory and ask the user to select whether to add, update, list or delete the Vehicle list.
addVehicle() – to add new vehicle to inventory
ListVehicle()- to list the vehicles in the inventory
UpdateVehicle()- to update the vehicle in the inventory list
RemoveVehicle()- to remove the vehicle from the inventory list
Tire Rotation() – Check if tires need rotation
OilChange()- check if car requires oil change
Recharge() – check if vehicle needs recharge
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.
Menu should be as below,
0. Quit.\n"
1. List inventory
2. Add vehicle
3. Update vehicle
4. Remove vehicle
5. Tire Rotation
6. Oil Change
7. Recharge
Retrieve the user input on the vehicle’s make, model, year, type and odometer.
getNewMake() – If input is blank, request again
getNewModel() – If input is blank, request again
getYear() – If input doesn’t have 4 digits, request again
getNewOdometer()- Input should be only numericals
getNewType() – Input should be within 0-2, else request again
Retrieve the selected car from the user input
selectCar() – Input should be within the size of vehicle list, else request again
getNewOdometerReading() – New odometer reading is used to calculate the oil change, tire rotation, power recharge etc.
AIM:
To develop an object-oriented library to track automobile maintenance that supports at least three car types including petrol, diesel, gas, and electric cars. The library should allow adding, updating, listing, and removing entries at runtime. Additionally, it should provide maintenance activities such as oil changes, tire rotations, filter replacements, battery checks, and infotainment system debugging.
Key highlights:
1.> Object-oriented library to track automobile maintenance.
2.> Supports different types of cars including petrol, diesel, gas, and electric cars.
3.> Supports maintenance activities like oil changes, tire rotations, filter replacements, battery checks, and infotainment system debugging.
4.> Ability to add, update, list, and remove entries at runtime.
5.> Well-defined classes with a clear inheritance hierarchy.
6.> User-friendly main program to interact with the library.
Project Deliverables:
1.) Complete object-oriented library code with well-defined classes and functions.
2.) User-friendly main program code to interact with the library.
3.) User guide documentation to use the library and the main program.
4.) Sample input/output files to test the library and the main program.
To complete the project, the following key points need to be considered:
Designing an object-oriented library with appropriate classes and methods to track automobile maintenance.
Implementing the maintenance tasks and algorithms such as checking tire rotation, power recharge, and oil change based on the odometer reading.
Writing the driver code (main.cpp) to add, update, list, or remove the vehicles in the inventory based on user input.
Ensuring the library supports at least three types of car fuels (gas, diesel, electric) and all maintenance tasks specified in the project requirements.
Testing the library for its functionality and identifying any bugs or issues that need to be resolved.
Documenting the library with proper comments and explaining the purpose of each method and class.
Creating user-friendly and clear instructions for the driver code and library usage.
Deliverables of the project may include the source code, documentation, and any necessary installation instructions.
initial prototype of the CODE:
#include<iostream>
#include<vector>
#include<limits>
using namespace std;
enum class FuelType {
PETROL,
DIESEL,
GAS,
ELECTRIC
};
class Vehicle {
protected:
string make;
string model;
int year;
int odometer;
}
int main(){
return 0;
}
code:














OUTPUT:





