У цьому домашньому завданні потрібно реалізувати один з наведених нижче додатків, використовуючи архітектурний патерн MVT (Model-View-Template). Оскільки ми поки що не використовували фреймворк Django, реалізуйте додаток у консольному варіанті (використовуючи стандартний ввід/вивід Python або бібліотеку Textual), або десктопній версії (наприклад, з використанням бібліотеки Tkinter/PySide6 для графічного інтерфейсу), або веб-фреймворк Flask.
-
Model: Класи або структури для зберігання та маніпуляції даними (наприклад, списки, словники, класи Python для бази даних у пам'яті або файлах).
-
View: Логіка для відображення даних користувачу (консольний вивід, таблиці в терміналі або вікна/форми/сторінки).
-
Template: Шаблони для форматування виводу (наприклад, рядки з форматуванням для консолі або шаблони для GUI).
-
Додаткові Вимоги:
- Використовуйте Python 3.14.
- Зберігайте дані в пам'яті, файлах (наприклад, JSON/CSV) або простій базі даних (як SQLite, якщо потрібно)*
- Додаток повинен бути інтерактивним: меню для вибору дій, обробка помилок.
- Документуйте код (коментарі) та додайте README.md з інструкцією запуску*
- Оберіть один додаток зі списку нижче та реалізуйте його повністю.
Оберіть додаток, реалізуйте патерн, рішення викладіть в репозиторій GitHub.
- Опис: Додаток для зберігання імен, номерів телефонів та email-адрес.
- Функціональність:
- Додавання нового контакту.
- Пошук контакту за іменем або номером.
- Видалення контакту.
- Вивід усіх контактів у табличному форматі (використовуйте бібліотеку
tabulateдля консолі або таблицю в GUI).
- MVT-Підхід: Model — клас Contact; View — функції для виводу; Template — форматовані рядки або форми.
- Опис: Додаток для відстеження доходів та витрат за категоріями.
- Функціональність:
- Ввід доходів/витрат з категоріями (наприклад, "їжа", "транспорт").
- Розрахунок поточного балансу.
- Звіти за період (використовуйте статичні дати, наприклад, за тиждень/місяць).
- MVT-Підхід: Model — список транзакцій; View — звіти в таблиці; Template — форматування балансу.
- Опис: Система для керування списком книг з авторами, роками видання та статусом (прочитано/не прочитано).
- Функціональність:
- Додавання/видалення книг.
- Пошук за автором або назвою.
- Рекомендації на основі жанрів (наприклад, випадковий вибір з жанру).
- MVT-Підхід: Model — клас Book; View — список книг; Template — табличний вивід.
- Опис: Гра, де генеруються слова для вгадування зі статичного словника.
- Функціональність:
- Генерація слова (наприклад, з файлу слів).
- Підрахунок балів за вгадування.
- Таблиця рекордів (топ-5 гравців).
- MVT-Підхід: Model — словник слів; View — ігровий процес; Template — вивід балів.
- Опис: Симуляція погоди для міст зі статичними даними (температура, опади).
- Функціональність:
- "Прогноз" на день (випадковий на основі статичних даних).
- Порівняння погоди між містами.
- Вивід у форматі таблиці.
- MVT-Підхід: Model — дані про міста; View — прогноз; Template — порівняльна таблиця.
- Опис: Тест з питаннями та відповідями з певної теми (наприклад, програмування на пайтон).
- Функціональність:
- Питання з варіантами відповідей.
- Підрахунок балів.
- Повторення помилкових питань.
- MVT-Підхід: Model — список питань; View — тестовий інтерфейс; Template — вивід результатів.
- Опис: Проста система для генерації та зберігання паролів (в пам'яті або файлі).
- Функціональність:
- Генерація випадкових паролів.
- Перевірка сили паролю (довжина, символи).
- Експорт у текстовий файл.
- MVT-Підхід: Model — зберігання паролів; View — інтерфейс; Template — формат експорту.
- Опис: Календар для додавання подій з датами та описами.
- Функціональність:
- Додавання/видалення подій.
- Симуляція нагадувань (вивід на "сьогодні").
- Вивід подій за тиждень/місяць.
- MVT-Підхід: Model — клас Event; View — календарний вивід; Template — табличний формат.
В коментар до цього ДЗ надіслати посилання на публічний репозиторій з Вашим рішенням.