Compare commits

1 Commits
Author SHA1 Message Date
a-limasov 74c384e6ce Initial commit 2026-08-28 09:21:26 +00:00
6 changed files with 2 additions and 236 deletions

No files matched your search

-22
View File
@@ -1,22 +0,0 @@
# Файлы данных
*.json
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
env/
venv/
*.egg-info/
# IDE
.vscode/
.idea/
*.swp
*.swo
# OS
.DS_Store
Thumbs.db
+2 -14
View File
@@ -1,15 +1,3 @@
# Менеджер задач - Учебный проект
# course-students
Приложение для управления задачами в рамках образовательного курса по программированию.
## Структура курса
- **Тема 1**: Основы Python, создание проекта
- **Тема 2**: Работа со списками задач
- **Тема 3**: Сохранение данных в файл
## Запуск
```bash
python main.py
```
Публичный репозиторий для студентов образовательного курса
-83
View File
@@ -1,83 +0,0 @@
"""
Менеджер задач - Версия 3.0
Тема 3: Сохранение данных в файл
"""
from task import Task
from task_manager import TaskManager
def print_menu():
"""Вывести меню программы"""
print("\n=== Менеджер задач ===")
print("1. Добавить задачу")
print("2. Показать все задачи")
print("3. Завершить задачу")
print("4. Удалить задачу")
print("5. Сохранить")
print("6. Загрузить")
print("7. Статистика")
print("0. Выход")
def main():
manager = TaskManager()
# Автоматическая загрузка при старте
manager.load()
print("Данные загружены!")
while True:
print_menu()
choice = input("Выберите действие: ")
if choice == "1":
title = input("Название задачи: ")
desc = input("Описание (необязательно): ")
manager.add_task(title, desc)
print("Задача добавлена!")
elif choice == "2":
tasks = manager.list_tasks()
if tasks:
for i, task in enumerate(tasks, 1):
print(f"{i}. {task}")
else:
print("Список задач пуст")
elif choice == "3":
idx = int(input("Номер задачи: ")) - 1
task = manager.get_task_by_index(idx)
if task:
task.mark_complete()
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":
# Автосохранение перед выходом
manager.save()
print("Данные сохранены. До свидания!")
break
if __name__ == "__main__":
main()
-44
View File
@@ -1,44 +0,0 @@
"""
Модуль для сохранения и загрузки данных
Работа с файлами 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 []
-20
View File
@@ -1,20 +0,0 @@
"""
Модуль для работы с задачами
"""
class Task:
"""Класс, представляющий одну задачу"""
def __init__(self, title, description=""):
self.title = title
self.description = description
self.completed = False
def mark_complete(self):
"""Отметить задачу как выполненную"""
self.completed = True
def __str__(self):
status = "✓" if self.completed else "○"
return f"[{status}] {self.title}"
-53
View File
@@ -1,53 +0,0 @@
"""
Менеджер списка задач
Управление коллекцией задач
"""
from task import Task
from storage import save_tasks_to_file, load_tasks_from_file
class TaskManager:
"""Класс для управления списком задач"""
def __init__(self):
self.tasks = []
def add_task(self, title, description=""):
"""Добавить новую задачу в список"""
task = Task(title, description)
self.tasks.append(task)
return task
def list_tasks(self):
"""Вернуть список всех задач"""
return self.tasks
def get_task_by_index(self, index):
"""Получить задачу по индексу"""
if 0 <= index < len(self.tasks):
return self.tasks[index]
return None
def remove_task(self, index):
"""Удалить задачу по индексу"""
if 0 <= index < len(self.tasks):
return self.tasks.pop(index)
return None
def get_completed_count(self):
"""Вернуть количество выполненных задач"""
return sum(1 for task in self.tasks if task.completed)
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