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


# База данных для хранения заявок
requests = []

def add_request():
    num = input("Введите уникальный номер заявки: ")
    # Проверка на уникальность номера заявки
    for req in requests:
        if req['num'] == num:
            print("Ошибка: номер заявки не должен повторяться!")
            return
    
    name = input("Введите ФИО клиента: ")
    tech_type = input("Введите тип техники: ")
    problem = input("Введите описание проблемы: ")
    status = "новая" # Начальный статус по умолчанию
    
    try:
        cost = float(input("Введите стоимость ремонта: "))
        if cost < 0:
            print("Ошибка: стоимость не может быть отрицательной!")
            return
    except ValueError:
        print("Ошибка: стоимость должна быть числом!")
        return
    
    # Сохраняем данные в виде словаря
    requests.append({
        'num': num, 'name': name, 'type': tech_type, 
        'problem': problem, 'status': status, 'cost': cost
    })
    print("Заявка успешно добавлена!")

def show_all_requests():
    # Если заявок нет, программа выводит сообщение
    if not requests:
        print("Заявок нет.")
        return
    for req in requests:
        print(f"№ {req['num']} | Клиент: {req['name']} | Техника: {req['type']} | Проблема: {req['problem']} | Статус: {req['status']} | Стоимость: {req['cost']}")

def find_request():
    num = input("Введите номер заявки для поиска: ")
    for req in requests:
        if req['num'] == num:
            print(f"Найдено -> № {req['num']}, Клиент: {req['name']}, Статус: {req['status']}, Стоимость: {req['cost']}")
            return
    print("Заявка с таким номером не найдена.")

def change_status():
    num = input("Введите номер заявки для изменения статуса: ")
    for req in requests:
        if req['num'] == num:
            print("Доступные статусы: новая, в работе, готово")
            new_status = input("Введите новый статус: ")
            if new_status in ["новая", "в работе", "готово"]:
                req['status'] = new_status
                print("Статус успешно изменен.")
            else:
                print("Ошибка: неверный статус.")
            return
    print("Заявка не найдена.")

def delete_request():
    num = input("Введите номер заявки для удаления: ")
    for req in requests:
        if req['num'] == num:
            requests.remove(req)
            print("Заявка успешно удалена.")
            return
    print("Заявка не найдена.")

def show_status_counts():
    counts = {"новая": 0, "в работе": 0, "готово": 0}
    for req in requests:
        if req['status'] in counts:
            counts[req['status']] += 1
    print(f"Новая: {counts['новая']}, В работе: {counts['в работе']}, Готово: {counts['готово']}")

def main():
    while True:
        print("\n--- Меню учета заявок ---")
        print("1. Добавить заявку")
        print("2. Показать все заявки")
        print("3. Найти заявку по номеру")
        print("4. Изменить статус заявки")
        print("5. Удалить заявку")
        print("6. Показать количество заявок по статусам")
        print("7. Выйти из программы")
        
        choice = input("Выберите действие: ")
        if choice == '1': add_request()
        elif choice == '2': show_all_requests()
        elif choice == '3': find_request()
        elif choice == '4': change_status()
        elif choice == '5': delete_request()
        elif choice == '6': show_status_counts()
        elif choice == '7': break
        else: print("Неверный ввод, попробуйте снова.")

# Запуск программы
main()