From 4cd38048d7cca74409644a4f3a98d3327d4d8a4a Mon Sep 17 00:00:00 2001 From: Artemiy Date: Fri, 24 Jul 2026 00:57:21 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=81=D0=B8=D0=B3=D0=BD=D0=B0=D0=BB=D0=B0=20=D0=B2?= =?UTF-8?q?=D1=8B=D1=85=D0=BE=D0=B4=D0=B0=20=D0=B8=D0=B7=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 67 +++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 26 deletions(-) diff --git a/main.py b/main.py index 6e97ab5..af0d222 100644 --- a/main.py +++ b/main.py @@ -2,8 +2,11 @@ """ Главное меню программы. Загружает проект при старте и предоставляет доступ ко всем подменю. +Обрабатывает прерывание Ctrl+C для корректного выхода. """ -from core.fs import load_project + +import sys +from core.fs import load_project, save_project_partial from editor import editor_menu from plan import plan_menu from response import response_menu @@ -15,33 +18,45 @@ PROJECT_FILE = "project.json" def main(): mixture, design, responses = load_project(PROJECT_FILE) - while True: - print("\n" + "=" * 50) - print("ГЛАВНОЕ МЕНЮ") - print("1. Редактор состава") - print("2. Планирование эксперимента") - print("3. Ввод значений отклика") - print("4. Анализ значений") - print("5. Крутое восхождение") - print("6. Выход") - print("=" * 50) - choice = input("Выберите пункт: ").strip() + try: + while True: + print("\n" + "=" * 50) + print("ГЛАВНОЕ МЕНЮ") + print("1. Редактор состава") + print("2. Планирование эксперимента") + print("3. Ввод значений отклика") + print("4. Анализ значений") + print("5. Крутое восхождение") + print("6. Выход") + print("=" * 50) + choice = input("Выберите пункт: ").strip() - if choice == "6": - print("До свидания! (данные не сохранены автоматически)") - break - elif choice == "1": - editor_menu(mixture) - elif choice == "2": - design = plan_menu(mixture, design) - elif choice == "3": - responses = response_menu(design, responses) - elif choice == "4": - analysis_menu(mixture, design, responses) - elif choice == "5": - ascent_menu(mixture, design, responses) + if choice == "6": + print("До свидания! (данные не сохранены автоматически)") + break + elif choice == "1": + editor_menu(mixture) + elif choice == "2": + design = plan_menu(mixture, design) + elif choice == "3": + responses = response_menu(design, responses) + elif choice == "4": + analysis_menu(mixture, design, responses) + elif choice == "5": + ascent_menu(mixture, design, responses) + else: + print("Неверный пункт.") + except KeyboardInterrupt: + print("\n\nОбнаружено прерывание (Ctrl+C).") + # Спрашиваем, хочет ли пользователь сохранить текущий проект + save_choice = input("Сохранить текущий проект перед выходом? (y/n, Enter = нет): ").strip().lower() + if save_choice == 'y': + save_project_partial(PROJECT_FILE, mixture, design, responses) + print("Проект сохранён.") else: - print("Неверный пункт.") + print("Выход без сохранения.") + print("До свидания!") + sys.exit(0) if __name__ == "__main__": main()