Project 2
Code-
#include
#include
// Enum for car types
enum Type {
GAS,
DIESEL,
ELECTRIC
};
// Vehicle class
class Vehicle {
protected:
std::string make;
std::string model;
int year;
int odometer;
public:
Vehicle(const std::string& make, const std::string& model, int year, int odometer)
: make(make), model(model), year(year), odometer(odometer) {}
// Getter and Setter functions
std::string getMake() const { return make; }
void setMake(const std::string& newMake) { make = newMake; }
std::string getModel() const { return model; }
void setModel(const std::string& newModel) { model = newModel; }
int getYear() const { return year; }
void setYear(int newYear) { year = newYear; }
int getOdometer() const { return odometer; }
void setOdometer(int newOdometer) { odometer = newOdometer; }
// Maintenance activities
virtual void checkTireRotation() const = 0;
virtual void getCarInformation() const = 0;
virtual ~Vehicle() {}
};
// GasCar class
class GasCar : public Vehicle {
public:
GasCar(const std::string& make, const std::string& model, int year, int odometer)
: Vehicle(make, model, year, odometer) {}
Type getType() const override { return GAS; }
std::string getFuelType() const { return "Petrol"; }
};
// DieselCar class
class DieselCar : public Vehicle {
public:
DieselCar(const std::string& make, const std::string& model, int year, int odometer)
: Vehicle(make, model, year, odometer) {}
Type getType() const override { return DIESEL; }
std::string getFuelType() const { return "Diesel"; }
};
// ElectricCar class
class ElectricCar : public Vehicle {
public:
ElectricCar(const std::string& make, const std::string& model, int year, int odometer)
: Vehicle(make, model, year, odometer) {}
Type getType() const override { return ELECTRIC; }
void checkTireRotation() const override {
if (odometer P000 == 0) {
std::cout << "Advice: Rotate tires.\n";
} else {
int remainder = odometer P000;
if (remainder >= 0) {
std::cout << "Advice: Rotate tires.\n";
}
}
}
void checkChargerPower() const {
if (odometer @0 == 0) {
std::cout << "Advice: Recharge power.\n";
} else {
std::cout << "Your electric car is good to go.\n";
}
}
void getCarInformation() const override {
std::cout << "Electric Car Information:\n";
std::cout << "Make: " << make>
std::cout << "Model: " << model>
std::cout << "Year: " << year>
std::cout << "Odometer: " << odometer>
std::cout << "Fuel Type: Electric\n";
}
};
// FuelVehicle class
class FuelVehicle : public Vehicle {
public:
FuelVehicle(const std::string& make, const std::string& model, int year, int odometer)
: Vehicle(make, model, year, odometer) {}
void checkOil() const {
std::cout << "Checking oil for " << make>
// Implement oil check logic
}
virtual Type getFuelType() const = 0;
virtual ~FuelVehicle() {}
};
// Main driver code
int main() {
std::vector
int choice;
do {
std::cout << "\nMenu:\n"
<< " 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";
std::cout << "Enter your choice: ";
std::cin >> choice;
switch (choice) {
case 1:
// List inventory
for (const auto& vehicle : vehicleList) {
vehicle->getCarInformation();
}
break;
case 2:
// Add vehicle
// Implement logic to get user input and add a new vehicle to the inventory
break;
case 3:
// Update vehicle
// Implement logic to get user input and update an existing vehicle in the inventory
break;
case 4:
// Remove vehicle
// Implement logic to get user input and remove a vehicle from the inventory
break;
case 5:
// Tire Rotation
// Implement logic to get user input and perform tire rotation for the selected vehicle
break;
case 6:
// Oil Change
// Implement logic to get user input and perform oil change for the selected vehicle
break;
case 7:
// Recharge
// Implement logic to get user input and recharge the power for the selected electric vehicle
break;
default:
std::cout << "Invalid choice. Please try again.\n";
}
} while (choice != 0);
return 0;
}