Загрузка данных


requests_list = []

def add_request():
    print("\n--- Добавление заявки ---")
    while True:
        num = input("Номер заявки: ").strip()
        if any(r["num"] == num for r in requests_list):
            print("Такой номер уже существует, введите другой.")
        else:
            break
    name = input("ФИО клиента: ").strip()
    device = input("Тип техники: ").strip()
    problem = input("Описание проблемы: ").strip()
    while True:
        try:
            cost = float(input("Стоимость ремонта: "))
            if cost < 0:
                print("Стоимость не может быть отрицательной.")
            else:
                break
        except ValueError:
            print("Введите число.")
    requests_list.append({
        "num": num, "name": name, "device": device,
        "problem": problem, "status": "новая", "cost": cost
    })
    print("Заявка добавлена.")

def show_all():
    print("\n--- Все заявки ---")
    if not requests_list:
        print("Заявок нет.")
        return
    for r in requests_list:
        print(f"№{r['num']} | {r['name']} | {r['device']} | {r['status']} | {r['cost']} руб.")
        print(f"  Проблема: {r['problem']}")

def find_request():
    num = input("Номер заявки: ").strip()
    for r in requests_list:
        if r["num"] == num:
            print(f"№{r['num']} | {r['name']} | {r['status']} | {r['cost']} руб.")
            return
    print("Заявка не найдена.")

def change_status():
    num = input("Номер заявки: ").strip()
    for r in requests_list:
        if r["num"] == num:
            new_status = input("Новый статус (новая / в работе / готово): ").strip()
            if new_status in ("новая", "в работе", "готово"):
                r["status"] = new_status
                print("Статус обновлён.")
            else:
                print("Недопустимый статус.")
            return
    print("Заявка не найдена.")

def delete_request():
    num = input("Номер заявки: ").strip()
    for r in requests_list:
        if r["num"] == num:
            requests_list.remove(r)
            print("Заявка удалена.")
            return
    print("Заявка не найдена.")

def show_stats():
    if not requests_list:
        print("Заявок нет.")
        return
    count = {"новая": 0, "в работе": 0, "готово": 0}
    for r in requests_list:
        count[r["status"]] = count.get(r["status"], 0) + 1
    for status, n in count.items():
        print(f"  {status}: {n}")

while True:
    print("\n1. Добавить  2. Все заявки  3. Найти  4. Изменить статус  5. Удалить  6. Статистика  0. Выйти")
    choice = input("Выбор: ").strip()
    if choice == "1": add_request()
    elif choice == "2": show_all()
    elif choice == "3": find_request()
    elif choice == "4": change_status()
    elif choice == "5": delete_request()
    elif choice == "6": show_stats()
    elif choice == "0":
        print("До свидания!")
        break
    else:
        print("Неверный пункт меню.")