Добавить методы setMake(), setNumber(), setCapacity(), setState() в класс Bus, чтобы можно было изменять значения полей автобуса.
Добавить методы setName(), setAge(), setExperience() в класс Driver, чтобы можно было изменять значения полей водителя.
Реализовать методы removeBusFromPark() и removeDriverFromPark() в классе BusFleet, чтобы можно было удалить автобус или водителя из парка.
Добавить методы addViolation() и removeViolation() в класс Driver, чтобы можно было добавлять и удалять информацию о нарушениях водителя.
Реализовать методы addSchedule() и removeSchedule() в классе Driver, чтобы можно было добавлять и удалять графики работы водителя.
Добавить методы addStop() и removeStop() в класс Route, чтобы можно было добавлять и удалять остановки на маршруте.
Реализовать методы printDriverViolations() и printDriverSchedules() в классе Driver, чтобы можно было выводить информацию о нарушениях и графиках работы водителя.
Добавить методы printBusViolations() и printBusSchedules() в классе Bus, чтобы можно было выводить информацию о нарушениях и графиках работы автобуса.  #include <iostream>
#include <string>
#include <vector>

class Driver {
private:
    std::string fullName;
    int age;
    int experience;

public:
    Driver(std::string name, int age, int experience) : fullName(name), age(age), experience(experience) {}

    std::string getName() {
        return fullName;
    }

    int getAge() {
        return age;
    }

    int getExperience() {
        return experience;
    }

    void printDriverInfo() {
        std::cout << "Водитель: " << getName() << ", возраст: " << getAge() << " лет, опыт: " << getExperience() << " лет" << std::endl;
    }
};

class Bus {
private:
    std::string make;
    int number;
    int capacity;
    std::string state;

public:
    Bus(std::string make, int number, int capacity, std::string state) : make(make), number(number), capacity(capacity), state(state) {}

    std::string getMake() {
        return make;
    }

    int getNumber() {
        return number;
    }

    int getCapacity() {
        return capacity;
    }

    std::string getState() {
        return state;
    }

    void printBusInfo() {
        std::cout << "Автобус: Марка: " << getMake() << ", номер: " << getNumber() << ", вместимость: " << getCapacity() << ", состояние: " << getState() << std::endl;
    }
};

class Route {
private:
    std::vector<std::pair<std::string, std::string>> stops;

public:
    void addStop(std::string stop, std::string arrivalTime) {
        stops.push_back(std::make_pair(stop, arrivalTime));
    }

    std::vector<std::pair<std::string, std::string>> getStops() {
        return stops;
    }

    void printRouteStops() {
        std::cout << "Маршрут:" << std::endl;
        for (auto stop : getStops()) {
            std::cout << stop.first << ", прибытие: " << stop.second << std::endl;
        }
    }
};

class Violation {
private:
    std::string violation;
    std::string when;

public:
    Violation(std::string violation, std::string when) : violation(violation), when(when) {}

    std::string getViolation() {
        return violation;
    }

    std::string getWhen() {
        return when;
    }

    void printViolationInfo() {
        std::cout << "Нарушение: " << getViolation() << " " << getWhen() << std::endl;
    }
};

class Schedule {
private:
    std::string day;
    std::string time;

public:
    Schedule(std::string day, std::string time) : day(day), time(time) {}

    std::string getDay() {
        return day;
    }

    std::string getTime() {
        return time;
    }

    void printScheduleInfo() {
        std::cout << "График: " << getDay() << " " << getTime() << "\n" << std::endl;
    }
};

class BusFleet {
private:
    int totalBuses;
    int busesOnRoute;
    std::vector<Bus> busesInPark;

public:
    BusFleet(int totalBuses, int busesOnRoute) : totalBuses(totalBuses), busesOnRoute(busesOnRoute) {}

    int getTotalBuses() {
        return totalBuses;
    }

    int getBusesOnRoute() {
        return busesOnRoute;
    }

    void addBusToPark(Bus bus) {
        busesInPark.push_back(bus);
    }

    std::vector<Bus> getBusesInPark() {
        return busesInPark;
    }
};

int main() {
    // Создаем объекты водителей и автобусов
    Driver driver1("Иванов И.И.", 30, 9);
    Driver driver2("Петров П.С.", 35, 13);
    Driver driver3("Сидоров В.И.", 44, 15);
    Driver driver4("Ким А.С.", 49, 16);
    Driver driver5("Осипов И.М.", 30, 9);
    Driver driver6("Воронин К.Н.", 40, 18);
    Driver driver7("Синичкин А.А.", 24, 4);
    Driver driver8("Кузнецов С.С.", 37, 14);
    Driver driver9("Щербаков Р.А.", 33, 11);
    Driver driver10("Ульянов В.Ю.", 50, 27);
    
    Bus bus1("Mercedes", 101, 50, "исправен");
    Bus bus2("Volvo", 102, 40, "исправен");
    Bus bus3("Volvo", 103, 45, "не исправен");
    Bus bus4("Mercedes", 104, 35, "исправен");
    Bus bus5("Volvo", 105, 30, "в ремонте");
    Bus bus6("Mercedes", 106, 40, "исправен");
    Bus bus7("Volvo", 107, 50, "иправен");
    Bus bus8("Mercedes", 108, 55, "исправен");
    Bus bus9("Solaris", 109, 35, "в ремонте");
    Bus bus10("Mercedes", 110, 60, "исправен");

    // Создаем объекты маршрутов, нарушений и графиков
    Route route1;
    route1.addStop("Остановка 1", "8:05");
    route1.addStop("Остановка 2", "9:15");
    route1.addStop("Остановка 3", "11:25");
    route1.addStop("Остановка 4", "12:45");
    route1.addStop("Остановка 5", "13:55");

    Route route2;
    route2.addStop("Остановка 1", "8:08");
    route2.addStop("Остановка 2", "9:45");
    route2.addStop("Остановка 3", "11:05");
    route2.addStop("Остановка 4", "13:57");
    route2.addStop("Остановка 5", "15:05");
    route2.addStop("Остановка 6", "17:55");

    Violation violation1("превышение скорости", "2023-10-28 в 12:17");
    Schedule schedule1("Пн-Чт", "8:00 - 14:00");
    Schedule schedule2("Пн-Ср", "8:00 - 18:00");

    
    // Создаем объект автобусного парка и добавляем автобусы
    BusFleet fleet(10, 2);
    fleet.addBusToPark(bus1);
    fleet.addBusToPark(bus2);
    fleet.addBusToPark(bus3);
    fleet.addBusToPark(bus4);
    fleet.addBusToPark(bus5);
    fleet.addBusToPark(bus6);
    fleet.addBusToPark(bus7);
    fleet.addBusToPark(bus8);
    fleet.addBusToPark(bus9);
    fleet.addBusToPark(bus10);

    // Выводим все автобусы, которые стоят в парке
    std::cout << "Все автобусы в парке:" << std::endl;
    for (auto bus : fleet.getBusesInPark()) {
        bus.printBusInfo();
    }

    // Выводим всех водителей, которые работают в парке
    std::cout << "\nВодители, работающие в парке:" << std::endl;
    driver1.printDriverInfo();
    driver2.printDriverInfo();
    driver3.printDriverInfo();
    driver4.printDriverInfo();
    driver5.printDriverInfo();
    driver6.printDriverInfo();
    driver7.printDriverInfo();
    driver8.printDriverInfo();
    driver9.printDriverInfo();
    driver10.printDriverInfo();
    
    std::cout << "\nАвтобусы на маршруте:" << std::endl;
    driver1.printDriverInfo();
    bus1.printBusInfo();
    route1.printRouteStops();
    violation1.printViolationInfo();
    schedule1.printScheduleInfo();
    
    driver2.printDriverInfo();
    bus2.printBusInfo();
    route2.printRouteStops();
    schedule2.printScheduleInfo();

    return 0;
}