team-work-it-TrollFace324

0
5 месяцев назад
4 месяца назад
4 месяца назад
4 месяца назад
5 месяцев назад
4 месяца назад
README.md

Project Task Manager

Участники проекта

Распределение работы

Модели выполнения работы:

  1. Модель парного программирования - для разработки основных алгоритмов
  2. Разделение по ответственности - каждый участник отвечал за свой модуль
  3. Итеративная разработка - поэтапное добавление функциональности
  4. 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

Примечание: Весь рабочий код находится в одном файле

dev/solution.cs
, который содержит:

  • Класс
    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)

Интерактивное меню с следующими функциями:

  1. Добавить задачу - с полной валидацией входных данных (@Rad1ence)
  2. Удалить задачу - с автоматическим обновлением зависимостей (@Rad1ence)
  3. Список всех задач - отображение всех задач проекта (@TrollFace324)
  4. Найти задачу - поиск по ID или по имени (частичное совпадение) (@TrollFace324)
  5. Топологическая сортировка - порядок выполнения задач (@mrBardon)
  6. Проверка циклических зависимостей - обнаружение циклов (@Rad1ence)
  7. Расчет критического пути - анализ критических задач (@TrollFace324)
  8. Сортировка по приоритету - упорядочивание по важности (@mrBardon)
  9. Визуализация зависимостей - текстовое представление графа (@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

Установка и запуск

  1. Убедитесь, что установлен .NET 6.0 SDK
  2. Клонируйте или скачайте проект
  3. Перейдите в директорию проекта
  4. Для компиляции и запуска выполните:

Примечание: Весь код находится в одном файле

dev/solution.cs
, поэтому можно компилировать его напрямую с помощью компилятора C# или создать проект .NET.

Соответствие спецификации

Проект полностью соответствует требованиям из

codex.md
:

✅ Консольное приложение с меню
✅ Использование нескольких алгоритмов (поиск, сортировка, рекурсия)
✅ Работа с различными структурами данных
✅ Соответствие спецификации
✅ Валидация входных данных

Дополнительная информация

Реализованные функции:

  • ✅ Топологическая сортировка (TopologicalSort)
  • ✅ Проверка циклических зависимостей (CircularDependencyCheck)
  • ✅ Расчет критического пути (CalculateCriticalPath)
  • ✅ Добавление, удаление, поиск задач
  • ✅ Визуализация зависимостей
  • ✅ Сортировка по приоритету
  • ✅ Полная валидация входных данных

Алгоритмическая сложность:

  • Топологическая сортировка: O(V + E), где V - количество задач, E - количество зависимостей
  • Проверка циклов: O(V + E)
  • Расчет критического пути: O(V + E)

LLM, использованная при работе: Claude (Sonnet 4.5) в Cursor

Роль Student 2 выполнялась у: @freyliee