Challenge

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> vehicleList;

    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;

}

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.