/Learning_Netology_Java_4.5.1

Домашнее задание к занятию 4.5. Коллекции TreeMap и TreeSet.

Primary LanguageJava

Задача 1. Пропущенные вызовы

Описание

Совсем недавно мы с вами создавали программу для хранения номеров телефонов. Следующая программа будет будет немного схожа по тематике. Нужно написать программу для хранения пропущенных звонков, используя уже изученные коллекции, в том числе коллекцию TreeMap. Программа должна хранить список пропущенных вызовов в формате: дата и время звонка и, конечно, имя контакта.

Функционал программы

  1. Добавление контакта (имя, фамилия, номер телефона, группа контакта: работа, друзья, семья);
  2. Добавление пропущенного вызова;
  3. Вывод всех пропущенных вызовов с указанием фамилии и имени. Если контакта нет в списке контактов, вывести только номер телефона;
  4. Очистка пропущенных вызовов.

После запуска программа должна предложить пользователю выполнить любое действие из списка выше, а после завершения действия (например, ввода данных нового контакта), снова вывести список доступных действий (меню).

Пример

Программа: пропущенные вызовы.

Меню:
1. Добавить контакт
2. Добавить пропущенный вызов
3. Вывести все пропущенные вызовы
4. Очистить пропущенные вызовы
5. Выход
Выберите пункт из меню (1-4):
2 <enter>
Добавьте номер пропущенного вызова
+7(918)-918-18-18 <enter>
Добавлен.

Меню:
1. Добавить контакт
2. Добавить пропущенный вызов
3. Вывести все пропущенные вызовы
4. Очистить пропущенные вызовы
5. Выход
Выберите пункт из меню (1-4):
3 <enter>
Список пропущенных вызовов:
14:20:39 2019-03-21 +7(918)-918-18-18

Меню:
1. Добавить контакт
2. Добавить пропущенный вызов
3. Вывести все пропущенные вызовы
4. Очистить пропущенные вызовы
5. Выход
5 <enter>
Выход

Реализация

  1. Создадим класс-файл Contact.java со следующими полями:
  • Name (Имя — String);
  • Surname (Фамилия — String);
  • Phone (Номер телефона — String);
  • Group (Группа — Enum).

Переопределим метод toString для этого класса в удобочитаемый вид.

  1. Создадим класс-перечисление Group.java (enum):
  • WORK("Работа");
  • FRIENDS("Друзья");
  • FAMILY("Семья").
  1. Для хранения контактов предлагаю использовать HashMap, в качестве ключа использовать номер телефона, а в качестве значения хранить контактные данные. Лучше вынести эту коллекцию в отдельный класс Contacts.java, где добавить методы для работы с этой коллекцией.
Map<String, Contact> contacts = new HashMap<>();

Нужно реализовать следующие public методы:

  • Добавление контакта (имя, фамилия, номер телефона, группа контакта: работа, друзья, семья).
  • Удаление контакта по имени и фамилии.
  • Поиск контакта по номеру.

Переопределим метод toString в удобочитаемый вид.

  1. Для хранения пропущенных вызовов использовать TreeMap, где ключ — время пропущенного вызова, а значение — номер телефона. Для хранения времени звонка подойдет тип данных LocalDateTime — у него уже определен метод compareTo для использования в коллекции TreeMap. Нужно также создать отдельный класс для хранения и работы с этой коллекцией MissedCalls.java.
Map<LocalDateTime, String> missedCalls = new TreeMap<>();

Нужно реализовать следующие public методы:

  • Добавление пропущенного вызова.
  • Возвращение списка пропущенных вызовов.
  • Очистка списка пропущенных вызовов.
  1. Необходимо создать класс Main.java, в котором после запуска программы предоставить пользователю выбор следующих методов:
  • Добавление контакта (имя, фамилия, номер телефона, группа контакта: работа, друзья, семья).
  • Добавление пропущенного вызова.
  • Вывод всех пропущенных вызовов с указанием фамилии и имени. Если контакта нет в списке контактов, вывести только номер телефона.
  • Очистка пропущенных вызовов.
  • Завершить работу программы (выход).

Для этого нужно будет создать в классе Main.java объекты классов Contacts.java и MissedCalls.java и передавать пользовательские вызовы в эти объекты.

Дополнительное задание

Добавить возможность редактирования и удаления контактов из телефонной книги.