Compare commits

...
4 Commits
Author SHA1 Message Date
a-limasov eeeac462bb Тема 3. Коммит 4: Финальные улучшения
- Добавлен .gitignore для игнорирования временных файлов
- Исключены JSON-файлы данных из репозитория
- Игнорирование __pycache__, venv, IDE файлов
2026-08-28 12:23:40 +03:00
a-limasov fb3874d58f Тема 3. Коммит 3: Обновление main.py с сохранением
- Добавлены пункты меню: Сохранить, Загрузить
- Автозагрузка при старте приложения
- Автосохранение перед выходом
- Добавлено удаление задач (пункт 4)
2026-08-28 12:23:30 +03:00
a-limasov 1e0093db02 Тема 3. Коммит 2: Интеграция хранения в TaskManager
- Добавлены методы save() и load() в TaskManager
- Делегирование функциям из storage.py
- Прозрачный интерфейс для работы с файлом
2026-08-28 12:23:13 +03:00
a-limasov 6a71058531 Тема 3. Коммит 1: Модуль хранения данных
- Создан модуль storage.py
- Функция save_tasks_to_file() - сохранение в JSON
- Функция load_tasks_from_file() - загрузка из JSON
- Обработка ошибок: FileNotFoundError, JSONDecodeError
2026-08-28 12:22:52 +03:00
4 changed files with 103 additions and 7 deletions

No files matched your search

+22
View File
@@ -0,0 +1,22 @@
# Файлы данных
*.json
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
env/
venv/
*.egg-info/
# IDE
.vscode/
.idea/
*.swp
*.swo
# OS
.DS_Store
Thumbs.db
+27 -7
View File
@@ -1,6 +1,6 @@
""" """
Менеджер задач - Версия 2.0 Менеджер задач - Версия 3.0
Тема 2: Работа со списком задач Тема 3: Сохранение данных в файл
""" """
from task import Task from task import Task
@@ -13,16 +13,19 @@ def print_menu():
print("1. Добавить задачу") print("1. Добавить задачу")
print("2. Показать все задачи") print("2. Показать все задачи")
print("3. Завершить задачу") print("3. Завершить задачу")
print("4. Статистика") print("4. Удалить задачу")
print("5. Сохранить")
print("6. Загрузить")
print("7. Статистика")
print("0. Выход") print("0. Выход")
def main(): def main():
manager = TaskManager() manager = TaskManager()
# Добавим несколько демонстрационных задач # Автоматическая загрузка при старте
manager.add_task("Изучить Python", "Основы языка") manager.load()
manager.add_task("Сделать проект", "Менеджер задач") print("Данные загружены!")
while True: while True:
print_menu() print_menu()
@@ -50,12 +53,29 @@ def main():
print("Задача выполнена!") print("Задача выполнена!")
elif choice == "4": elif choice == "4":
idx = int(input("Номер задачи для удаления: ")) - 1
if manager.remove_task(idx):
print("Задача удалена!")
else:
print("Задача не найдена")
elif choice == "5":
manager.save()
print("Данные сохранены в tasks.json")
elif choice == "6":
manager.load()
print("Данные загружены из tasks.json")
elif choice == "7":
print(f"Всего задач: {len(manager.list_tasks())}") print(f"Всего задач: {len(manager.list_tasks())}")
print(f"Выполнено: {manager.get_completed_count()}") print(f"Выполнено: {manager.get_completed_count()}")
print(f"В ожидании: {manager.get_pending_count()}") print(f"В ожидании: {manager.get_pending_count()}")
elif choice == "0": elif choice == "0":
print("До свидания!") # Автосохранение перед выходом
manager.save()
print("Данные сохранены. До свидания!")
break break
+44
View File
@@ -0,0 +1,44 @@
"""
Модуль для сохранения и загрузки данных
Работа с файлами JSON
"""
import json
from task import Task
def save_tasks_to_file(tasks, filename="tasks.json"):
"""Сохранить список задач в файл JSON"""
data = []
for task in tasks:
data.append({
"title": task.title,
"description": task.description,
"completed": task.completed
})
with open(filename, "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
return True
def load_tasks_from_file(filename="tasks.json"):
"""Загрузить список задач из файла JSON"""
try:
with open(filename, "r", encoding="utf-8") as f:
data = json.load(f)
tasks = []
for item in data:
task = Task(item["title"], item.get("description", ""))
if item.get("completed", False):
task.mark_complete()
tasks.append(task)
return tasks
except FileNotFoundError:
return []
except json.JSONDecodeError:
print("Ошибка чтения файла. Данные могут быть повреждены.")
return []
+10
View File
@@ -4,6 +4,7 @@
""" """
from task import Task from task import Task
from storage import save_tasks_to_file, load_tasks_from_file
class TaskManager: class TaskManager:
@@ -41,3 +42,12 @@ class TaskManager:
def get_pending_count(self): def get_pending_count(self):
"""Вернуть количество ожидающих задач""" """Вернуть количество ожидающих задач"""
return len(self.tasks) - self.get_completed_count() return len(self.tasks) - self.get_completed_count()
def save(self, filename="tasks.json"):
"""Сохранить задачи в файл"""
return save_tasks_to_file(self.tasks, filename)
def load(self, filename="tasks.json"):
"""Загрузить задачи из файла"""
self.tasks = load_tasks_from_file(filename)
return self.tasks