Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eeeac462bb | ||
|
|
fb3874d58f | ||
|
|
1e0093db02 | ||
|
|
6a71058531 |
No files matched your search
+22
@@ -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
|
||||||
@@ -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
@@ -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 []
|
||||||
@@ -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
|
||||||
Reference in new issue
Block a user