Compare commits
5
Commits
74c384e6ce
..
v2.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c9e4a3ba8 | ||
|
|
7e236a5782 | ||
|
|
0284f12908 | ||
|
|
e03731f188 | ||
|
|
dd7dba4d7c |
No files matched your search
@@ -1,3 +1,15 @@
|
|||||||
# course-students
|
# Менеджер задач - Учебный проект
|
||||||
|
|
||||||
Публичный репозиторий для студентов образовательного курса
|
Приложение для управления задачами в рамках образовательного курса по программированию.
|
||||||
|
|
||||||
|
## Структура курса
|
||||||
|
|
||||||
|
- **Тема 1**: Основы Python, создание проекта
|
||||||
|
- **Тема 2**: Работа со списками задач
|
||||||
|
- **Тема 3**: Сохранение данных в файл
|
||||||
|
|
||||||
|
## Запуск
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python main.py
|
||||||
|
```
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
"""
|
||||||
|
Менеджер задач - Версия 2.0
|
||||||
|
Тема 2: Работа со списком задач
|
||||||
|
"""
|
||||||
|
|
||||||
|
from task import Task
|
||||||
|
from task_manager import TaskManager
|
||||||
|
|
||||||
|
|
||||||
|
def print_menu():
|
||||||
|
"""Вывести меню программы"""
|
||||||
|
print("\n=== Менеджер задач ===")
|
||||||
|
print("1. Добавить задачу")
|
||||||
|
print("2. Показать все задачи")
|
||||||
|
print("3. Завершить задачу")
|
||||||
|
print("4. Статистика")
|
||||||
|
print("0. Выход")
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
manager = TaskManager()
|
||||||
|
|
||||||
|
# Добавим несколько демонстрационных задач
|
||||||
|
manager.add_task("Изучить Python", "Основы языка")
|
||||||
|
manager.add_task("Сделать проект", "Менеджер задач")
|
||||||
|
|
||||||
|
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":
|
||||||
|
print(f"Всего задач: {len(manager.list_tasks())}")
|
||||||
|
print(f"Выполнено: {manager.get_completed_count()}")
|
||||||
|
print(f"В ожидании: {manager.get_pending_count()}")
|
||||||
|
|
||||||
|
elif choice == "0":
|
||||||
|
print("До свидания!")
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
"""
|
||||||
|
Модуль для работы с задачами
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
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}"
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
"""
|
||||||
|
Менеджер списка задач
|
||||||
|
Управление коллекцией задач
|
||||||
|
"""
|
||||||
|
|
||||||
|
from task import Task
|
||||||
|
|
||||||
|
|
||||||
|
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()
|
||||||
Reference in new issue
Block a user