Skip to content

Roman-Samoilenko/Lab3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Отчет по лабораторной работе № 3

№ группы: ПМ - 2401

Выполнил: Самойленко Роман Алексеевич

Вариант: 24

Cодержание:

1. Постановка задачи

  • Условия задачи

Разработать программу для создания и управления задачами с рабочим временем с 9:00 до 21:00. Реализовать функции добавления, удаления, анализа задач и управления временными промежутками.

  1. Вывод списка задач Отображает список всех задач в хронологическом порядке. Каждая задача представлена в формате: «номер - время начала - время окончания - название задачи».
  2. Добавление задачи Добавляет новую задачу с указанным временем начала (в формате «hh:mm»), временем выполнения (в минутах) и названием. Задачи с пересекающимся временем не добавляются. Задачи с некорректным временем (вне интервала 9:00-21:00) также не добавляются.
  3. Самая длинная задача Выводит информацию о самой продолжительной задаче. Если таких задач несколько, возвращается первая из них.
  4. Задачи на заданном промежутке времени Возвращает все задачи, которые пересекаются с указанным временным промежутком (задачи, начало или конец которых попадает в промежуток).
  5. Задачи, завершённые до указанного времени Возвращает все задачи, завершённые до указанного времени.
  6. Удаление задачи по номеру Удаляет задачу с указанным номером.
  7. Удаление задач, начинающихся на заданном промежутке Удаляет все задачи, которые начинаются в пределах указанного временного промежутка.
  8. Удаление задач, пересекающих промежуток Удаляет все задачи, пересекающие указанный временной промежуток. Если задача частично находится в промежутке, она обрезается.
  9. Удаление самых коротких задач Удаляет все задачи с минимальной продолжительностью.
  10. Добавление задачи в первый доступный временной интервал Добавляет задачу с указанным названием и временем выполнения (в минутах) в первый доступный временной интервал. Если задача не может быть размещена, добавление не выполняется.
  • Подробное описание, как Вы понимаете, того, что вам нужно сделать. Можно с примерами

2. Выбор структуры данных

  • Для хранения задачи класс Task.
  • Для хранения списка задач ArrayList, т.к. его проще изменять, чем массив.
  • Для хранения времени LocalTime.

3. Опиcания классов

Класс Task.

Класс для задач имеет приватные поля для хранения времени начала и окончания задачи, названия и id. Доступ к значениям полей осуществляется через геттеры, а изменение значений полей — через сеттеры. Метод toString переопределен так: id + " - " + startTime + " - " + endTime + " - " + name.

Класс TaskManager.

Класс представляет собой ArrayList из Task и совокупность методов для управления объектами класса Task. Класс включает следующие методы: isValidTask(LocalTime startTime, int duration): Проверяет, корректно ли задано время начала задачи и не пересекается ли она с уже существующими задачами. Возвращает true, если задача может быть добавлена, и false в противном случае.

addTask(LocalTime startTime, int duration, String name): Добавляет новую задачу в список, если она валидна. Выводит сообщение о результате операции.

removeTask(int id): Удаляет задачу по id.

printAllTasks(): Выводит все задачи в отсортированном порядке по времени начала.

getLongestTask(): Находит и возвращает самую длинную задачу.

getTasksInRange(LocalTime startRange, LocalTime endRange): Возвращает список задач, которые находятся в заданном временном промежутке.

getCompletedTasksBefore(LocalTime time): Возвращает список завершенных задач до указанного времени.

removeTasksInStartRange(LocalTime startRange, LocalTime endRange): Удаляет задачи, которые начинаются в заданном диапазоне.

removeAndTrimTasksInRange(LocalTime startRange, LocalTime endRange): Удаляет задачи, которые полностью перекрывают указанный диапазон времени. Если задача частично перекрывает диапазон, она обрезается.

removeShortestTasks(): Удаляет все задачи с минимальной продолжительностью.

addTaskInFirst(int duration, String name): Находит первый свободный временной промежуток для добавления новой задачи с указаной продолжительностью.

4. Анализ правильности решения

  1. Тест на создания задач после 21:00
  • Input:

    add
    20:00
    61
    задача 1
    
  • Output:

    Некорректное время или пересечение с существующими задачами, задача не создана.
    
  1. Тест на создания пересекающихся задач
  • Input:

    add
    20:00
    59
    задача 1
    add
    19:00
    65
    задача 2
    
  • Output:

    Задача создана.
    Некорректное время или пересечение с существующими задачами, задача не создана.
    
  1. Тест поиск самой длинной первой задачи
  • Input:

    add
    14:00
    10
    t1
    add
    17:00
    10
    t2
    max
    
  • Output:

    Задача создана.
    Задача создана.
    1 - 14:00 - 14:10 - t1
    
  1. Тест на возвращение задач, которые пересекаются с указанным временным промежутком (задачи, начало или конец которых попадает в промежуток).
  • Input:

    add
    14:00
    10
    t1
    add
    15:00
    10
    t2
    add
    16:00
    10
    t3
    add
    17:00
    10
    t4
    range
    14:14
    17:05
    
  • Output:

    Задача создана.
    Задача создана.
    Задача создана.
    Задача создана.
    [2 - 15:00 - 15:10 - t2, 3 - 16:00 - 16:10 - t3, 4 - 17:00 - 17:10 - t4]  
    
  1. Тест на возвращение задач, завершённых до указанного времени.
  • Input:

    add
    14:00
    10
    t1
    add
    15:00
    10
    t2
    completed
    15:05
    
  • Output:

    Задача создана.
    Задача создана.
    В 15:05 эти задачи будут выполнены:
    [1 - 14:00 - 14:10 - t1]
    
  1. Тест на удаление задач, пересекающих указанный временной промежуток. Если задача частично находится в промежутке, она обрезается.
  • Input:

    add
    14:00
    10
    t1
    add
    15:00
    10
    t2
    look
    del time
    13:00
    14:05
    look
    
  • Output:

    Задача создана.
    Задача создана.
    1 - 14:00 - 14:10 - t1
    2 - 15:00 - 15:10 - t2
    Все задачи, начинающиеся на этом временном промежутке удалены.
    2 - 15:00 - 15:10 - t2
    
  1. Тест на добавление задач с указанным названием и временем выполнения (в минутах) в первый доступный временной интервал. Если задача не может быть размещена, добавление не выполняется.
  • Input:

    add
    14:00
    10
    t1
    add first
    20
    t2
    
  • Output:

    Задача создана.
    Нашёлся первый свободный временной промежуток: 09:00 - 09:20.
    Задача создана.
    
  1. Тест на добавление задач с указанным названием и временем выполнения (в минутах) в первый доступный временной интервал. Если задача не может быть размещена, добавление не выполняется.
  • Input:

    add
    09:00
    600
    t1
    add first
    200
    t2
    
  • Output:

    Задача создана.
    Не удалось добавить задачу, не нашёлся свободный временной промежуток нужной длины.
    

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published