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
Тема 2: Работа со списком задач
Менеджер задач - Версия 3.0
Тема 3: Сохранение данных в файл
"""
from task import Task
@@ -13,16 +13,19 @@ def print_menu():
print("1. Добавить задачу")
print("2. Показать все задачи")
print("3. Завершить задачу")
print("4. Статистика")
print("4. Удалить задачу")
print("5. Сохранить")
print("6. Загрузить")
print("7. Статистика")
print("0. Выход")
def main():
manager = TaskManager()
# Добавим несколько демонстрационных задач
manager.add_task("Изучить Python", "Основы языка")
manager.add_task("Сделать проект", "Менеджер задач")
# Автоматическая загрузка при старте
manager.load()
print("Данные загружены!")
while True:
print_menu()
@@ -50,12 +53,29 @@ def main():
print("Задача выполнена!")
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"Выполнено: {manager.get_completed_count()}")
print(f"В ожидании: {manager.get_pending_count()}")
elif choice == "0":
print("До свидания!")
# Автосохранение перед выходом
manager.save()
print("Данные сохранены. До свидания!")
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 storage import save_tasks_to_file, load_tasks_from_file
class TaskManager:
@@ -41,3 +42,12 @@ class TaskManager:
def get_pending_count(self):
"""Вернуть количество ожидающих задач"""
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