team-work-it-TrollFace324
Project Task Manager
Участники проекта
- https://gitverse.ru/TrollFace324 - Student 1 (Project Manager & Core Logic)
- https://gitverse.ru/mrBardon - Student 2 (Task Model & Critical Path Implementation)
- https://gitverse.ru/Rad1ence - Student 3 (Dependency Management & Visualization)
Распределение работы
Модели выполнения работы:
- Модель парного программирования - для разработки основных алгоритмов
- Разделение по ответственности - каждый участник отвечал за свой модуль
- Итеративная разработка - поэтапное добавление функциональности
- Code Review - взаимная проверка кода перед мержем
Распределение задач:
Student 1 (@TrollFace324):
- Архитектура проекта
- Основной класс ProjectManager
- Топологическая сортировка
- Интеграция всех компонентов
Student 2 (@mrBardon):
- Модель данных Task
- Алгоритм критического пути (CPM)
- Расчет временных параметров
- Демонстрационная программа
Student 3 (@Rad1ence):
- Управление зависимостями
- Валидация данных
- Визуализация зависимостей
- Обработка ошибок
- Консольное приложение (Program.cs)
Описание проекта
Консольное приложение на C# для управления задачами проекта с зависимостями и приоритетами.
Система управления задачами проекта, которая позволяет:
- Управлять задачами с зависимостями и приоритетами
- Выполнять топологическую сортировку задач
- Обнаруживать циклические зависимости
- Рассчитывать критический путь проекта
- Визуализировать зависимости между задачами
Структура проекта
itis_project/
│
├── demo/
│ ├── cursor_c.md
│ └── output_program.txt
│
├── dev/
│ └── solution.cs
│
├── spec/
│ └── codex.md
│
├── tasks/
│ └── task_variants.md
|
├── README.md
└── CONTRIBUTING.md
Примечание: Весь рабочий код находится в одном файле , который содержит:
- Класс
- модель данных задачиTask - Класс
- основной менеджер проектовProjectManager - Класс
- консольное приложение с менюProgram
Описание кода
Основные компоненты системы:
1. Класс Task (в dev/solution.cs)
Ответственный: @TrollFace324 (Student 1)
Особенности:
- Полностью инкапсулированная модель задачи
- Гибкая система зависимостей через ID
- Переопределенный
для удобного выводаToString() - Поддержка валидации данных
2. Основной менеджер (в dev/solution.cs)
Ответственный: @mrBardon (Student 2)
Ключевые алгоритмы:
Топологическая сортировка:
- Реализация алгоритма DFS (Depth-First Search)
- Рекурсивный обход графа зависимостей через вспомогательный метод TopologicalSortDFS()
- Проверка на циклические зависимости в процессе сортировки
- Возвращает
при обнаружении цикловnull
Рекурсивная проверка циклических зависимостей:
Ответственный: @Rad1ence (Student 3) - интеграция в ProjectManager
- Метод
- основная проверка наличия цикловCircularDependencyCheck() - Метод
- получение списка задач, участвующих в циклахGetCircularDependencyTasks() - Вспомогательный метод
для рекурсивного обходаCircularDependencyCheckDFS()
Критический путь (CPM - Critical Path Method):
Ответственный: @TrollFace324 (Student 1)
Визуализация зависимостей:
Ответственный: @Rad1ence (Student 3)
- Метод
возвращает строку с текстовым представлениемVisualizeDependencies() - Текстовое представление графа задач
- Отображение связей между задачами в топологическом порядке
- Предупреждения о циклических зависимостях
3. Консольное приложение (в dev/solution.cs)
Ответственный: @Rad1ence (Student 3) и @TrollFace324 (Student 1)
Интерактивное меню с следующими функциями:
- Добавить задачу - с полной валидацией входных данных (@Rad1ence)
- Удалить задачу - с автоматическим обновлением зависимостей (@Rad1ence)
- Список всех задач - отображение всех задач проекта (@TrollFace324)
- Найти задачу - поиск по ID или по имени (частичное совпадение) (@TrollFace324)
- Топологическая сортировка - порядок выполнения задач (@mrBardon)
- Проверка циклических зависимостей - обнаружение циклов (@Rad1ence)
- Расчет критического пути - анализ критических задач (@TrollFace324)
- Сортировка по приоритету - упорядочивание по важности (@mrBardon)
- Визуализация зависимостей - текстовое представление графа (@Rad1ence)
Валидация входных данных (@Rad1ence):
- Проверка типов (целые числа)
- Проверка диапазонов (приоритет 1-5, положительные числа)
- Проверка на пустые значения
- Проверка существования задач
- Предупреждения о несуществующих зависимостях
- Защита от самозависимостей
Ключевые особенности реализации
1. Управление зависимостями
- Валидация при добавлении задач
- Рекурсивная проверка на циклические зависимости
- Каскадное обновление при удалении задач
- Поддержка множественных зависимостей
2. Алгоритмы анализа проекта
- Топологическая сортировка (DFS) для определения порядка выполнения
- Метод критического пути (CPM) для планирования проекта
- Расчет временных резервов через forward/backward pass
- Рекурсивный поиск циклов для валидации графа
3. Обработка ошибок
- Защита от некорректных данных на всех уровнях
- Проверка целостности зависимостей
- Информативные сообщения об ошибках
- Graceful handling исключительных ситуаций
4. Структуры данных
- эффективное хранение и поиск задачDictionary<int, Task>- представление графа зависимостейDictionary<int, List<int>>- хранение зависимостей и результатовList<int>- для алгоритмов обхода графа (посещенные узлы, стек рекурсии)HashSet<int>
5. Гибкость использования
- Различные способы сортировки задач (топологическая, по приоритету)
- Множественные варианты поиска (по ID, по имени)
- Расширяемая архитектура
- Удобный консольный интерфейс
Пример использования
Запуск приложения
Пример работы с задачами
Пример консольного меню
╔══════════════════════════════════════════════════════╗
║ МЕНЕДЖЕР ПРОЕКТОВ - УПРАВЛЕНИЕ ЗАДАЧАМИ ║
╠══════════════════════════════════════════════════════╣
║ 1. Добавить задачу ║
║ 2. Удалить задачу ║
║ 3. Список всех задач ║
║ 4. Найти задачу ║
║ 5. Топологическая сортировка ║
║ 6. Проверка циклических зависимостей ║
║ 7. Расчет критического пути ║
║ 8. Сортировка по приоритету ║
║ 9. Визуализация зависимостей ║
║ 0. Выход ║
╚══════════════════════════════════════════════════════╝
Технологический стек
- C# .NET 6.0 - основной язык и платформа
- Алгоритмы графов - DFS, топологическая сортировка
- Методы управления проектами - CPM (Critical Path Method)
- Объектно-ориентированное программирование - инкапсуляция, полиморфизм
Методологии
- Объектно-ориентированное программирование - четкое разделение ответственности
- Алгоритмический подход - эффективные алгоритмы для работы с графами
- Валидация данных - защита от некорректного ввода на всех уровнях
- Модульная архитектура - разделение на логические компоненты
Требования
- .NET 6.0 SDK или выше
- Операционная система: Windows, Linux, macOS
Установка и запуск
- Убедитесь, что установлен .NET 6.0 SDK
- Клонируйте или скачайте проект
- Перейдите в директорию проекта
- Для компиляции и запуска выполните:
Примечание: Весь код находится в одном файле , поэтому можно компилировать его напрямую с помощью компилятора C# или создать проект .NET.
Соответствие спецификации
Проект полностью соответствует требованиям из :
✅ Консольное приложение с меню
✅ Использование нескольких алгоритмов (поиск, сортировка, рекурсия)
✅ Работа с различными структурами данных
✅ Соответствие спецификации
✅ Валидация входных данных
Дополнительная информация
Реализованные функции:
- ✅ Топологическая сортировка (TopologicalSort)
- ✅ Проверка циклических зависимостей (CircularDependencyCheck)
- ✅ Расчет критического пути (CalculateCriticalPath)
- ✅ Добавление, удаление, поиск задач
- ✅ Визуализация зависимостей
- ✅ Сортировка по приоритету
- ✅ Полная валидация входных данных
Алгоритмическая сложность:
- Топологическая сортировка: O(V + E), где V - количество задач, E - количество зависимостей
- Проверка циклов: O(V + E)
- Расчет критического пути: O(V + E)
LLM, использованная при работе: Claude (Sonnet 4.5) в Cursor
Роль Student 2 выполнялась у: @freyliee