Skip to content

Дипломная работа: "Менеджер задач"

Notifications You must be signed in to change notification settings

maxisss-de/PCS-JAVA_CORE_Task_Manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

Дипломная работа: "Менеджер задач"

Вам предстоит разработать сервер, отвечающий за менеджмент списка дел. Разработать нужно на базе заготовки, размещённой в этом репозитории. Для этого склонируйте этот репозиторий и откройте в IDEA как maven-проект: File -> Open -> Папка репозитория.

TODOs

Центральным для логики программы компонентом будет класс Todos. Объект этого класса должен содержать в себе набор задач, добавленных в систему.

Каждая задача представляет собой обычное значение типа String. Например: "Сходить в магазин", "Пойти на пробежку".

Изначально объект этого класса не должен содержать никаких задач, но должна быть возможность:

  • добавить их через метод add;
  • удалить через метод remove.

Также у этого объекта должна быть возможность получить все актуальные задачи разом через метод getAllTasks - метод возвращает все задачи через пробел в отсортированном лексикографическом (словарном) порядке. Например, если мы добавили задачу "Пробежка", "Акробатика" и "Учёба", то этот метод должен вернуть строку вида Акробатика Пробежка Учёба.

После реализации этого класса нужно написать на него тесты на основе JUnit 5, минимум 3 штуки, тестирующие его в разных сценариях. Для этого не забудьте подключить зависимость в проект (org.junit.jupiter:junit-jupiter:5.7.0). Перед отправкой проекта обязательно убедитесь, что тесты проходят.

Сервер

Ваша программа должна принимать запросы на добавление или удаление задач из списка через сервер. Сервер создаётя и запускается в классе Main, его менять нельзя. Реализацию же самому классу сервера вам предстоит написать самим. После старта, он должен в бесконечном цикле принимать подключения и считывать с них одну строку, в которой будет располагаться json вида:

{ "type": "ADD", "task": "Название задачи" }

где type - тип операции (ADD или REMOVE), а task - сама задача.

Таким образом, одна операция соответствует одному запросу (а не один запрос с кучей строк-операций).

Для парсинга входных данных подключения воспользуйтесь библиотекой GSon (com.google.code.gson:gson:2.8.9). Мы предполагаем, что на сервер всегда приходят корректные данные.

В ответ на запрос сервер должен присылать текущее состояние списка задач после совершения операции и в том виде, в котором его возвращает операция getAllTasks (т.е. без всяких json и тп).

Напоминалка как выглядит простой сервер
      try (ServerSocket serverSocket = new ServerSocket(8989);) { // стартуем сервер один(!) раз
          while (true) { // в цикле(!) принимаем подключения
              try (
                      Socket socket = serverSocket.accept();
                      BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                      PrintWriter out = new PrintWriter(socket.getOutputStream());
                  ) {
                  // обработка одного подключения
              }
          }
      } catch (IOException e) {
          System.out.println("Не могу стартовать сервер");
          e.printStackTrace();
      }

Клиент

Для демонстрационных целей создан класс Client, который пытается добавить задачу со случайным именем из ограниченного набора имён. Вы можете запустить Main, а затем запустить Client, чтобы увидеть, как отработает сервер на ваш запрос.

About

Дипломная работа: "Менеджер задач"

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages