Автосервис
Создайте программу записи на техническое обслуживание. Программа должна позволять клиентам записываться на свободное время, отменять запись, следить, чтобы клиенты не пересекались.
напиши код python
python
class Appointment:
def __init__(self, start_time, end_time):
self.start_time = start_time
self.end_time = end_time
class Client:
def __init__(self, name):
self.name = name
self.appointment = None
def make_appointment(self, appointment):
self.appointment = appointment
def cancel_appointment(self):
self.appointment = None
class AutoService:
def __init__(self):
self.appointments = []
def get_available_appointments(self):
available_appointments = []
for appointment in self.appointments:
if appointment.client is None:
available_appointments.append(appointment)
return available_appointments
def schedule_appointment(self, client, start_time, end_time):
new_appointment = Appointment(start_time, end_time)
if self.is_time_available(new_appointment):
client.make_appointment(new_appointment)
self.appointments.append(new_appointment)
return True
return False
def cancel_appointment(self, client):
if client.appointment is not None:
client.cancel_appointment()
self.appointments.remove(client.appointment)
return True
return False
def is_time_available(self, appointment):
for existing_appointment in self.appointments:
if (appointment.start_time >= existing_appointment.start_time and
appointment.start_time < existing_appointment.end_time) or
(appointment.end_time > existing_appointment.start_time and
appointment.end_time <= existing_appointment.end_time):
return False
return True
# Пример использования программы
auto_service = AutoService()
# Создаем доступные слоты для записи
appointments = [
Appointment('09:00', '10:00'),
Appointment('12:00', '13:00'),
Appointment('15:00', '16:00')
]
# Добавляем слоты в автосервис
for appointment in appointments:
auto_service.appointments.append(appointment)
# Создаем клиентов
client1 = Client('John')
client2 = Client('Mary')
# Записываем клиентов на доступные слоты
auto_service.schedule_appointment(client1, '09:00', '10:00')
auto_service.schedule_appointment(client2, '12:00', '13:00')
# Выводим информацию о записях
for appointment in auto_service.appointments:
if appointment.client is not None:
print(f"Время: {appointment.start_time}-{appointment.end_time} | Клиент: {appointment.client.name}")
else:
print(f"Время: {appointment.start_time}-{appointment.end_time} | Свободно")
В этом коде мы определили три класса: `Appointment` (Запись), `Client` (Клиент) и `AutoService` (Автосервис).
Класс `Appointment` имеет атрибуты `start_time` (начало временного интервала записи) и `end_time` (конец временного интервала записи).
Класс `Client` имеет атрибут `name` (имя клиента) и атрибут `appointment` (запись, на которую клиент записан). Метод `make_appointment` используется для записи клиента на техническое обслуживание, а метод `cancel_appointment` - для отмены записи.
Класс `AutoService` имеет атрибут `appointments` (список всех доступных записей в автосервисе). Метод `get_available_appointments` используется для получения списка доступных записей, а метод `schedule_appointment` - для записи клиента на свободное время. Метод `cancel_appointment` используется для отмены записи клиента. Метод `is_time_available` проверяет, доступно ли указанное время для записи.
В примере использования программы мы создаем экземпляр класса `AutoService`, добавляем доступные варианты записи (`appointments`), создаем двух клиентов (`client1` и `client2`) и записываем их на доступные слоты (`schedule_appointment`). Затем мы выводим информацию о записях в формате "Время: начало-конец | Клиент: имя". Если запись свободна, вместо имени клиента выводится "Свободно".Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет