- Конструктор CheckFields() - разделяет полученную от пользователя строку на массив строк sample из шести элементов. Каждый элемент массива соотвествует одному полю записи: sample[0] - фамилия, sample[1] - имя, sample[2] - отчество, sample[3] - дата рождения, sample[4] - номер телефона, sample[5] - обозначение пола f или m.
- checkData() - метод, проверяющий все поля на соотвтествия критериям. для sampe[0-2] не выполняется никаких проверок, т.к. они являются обычными строковыми полями. sample[3] проверяется парсингом на соотвтествие значению даты в формате (dd.mm.yyyy). sample[4] проверяется парсингом на соответвие целочисленному значению, sample[5] проверяется парсингом на соответсвие символьному значению (f или m). В случае если элементы samlpe[3-5] не могут выполнить парсинг, либо не соответствуют доп. условиям бросается исключение и тут же обрабатывается, показывая в случае ошибки, какое поле заполнено неверно, а также присвая значения null для некорректного элемента.
2. InputAmmount : класс, для получение от пользователя текстовой строки и проверки что она содержит шесть полей (т.е. в строке имеется ровно 5 пробелов). Для этого реализовано три метода:
-
get() - получение строки от пользователя и вывод на экран подсказки по вводимым данным;
-
ammountofFields() - метод считает количество пробелов в строке и возвращает число равное количеству данных в веденной строке;
-
info() - вспомогательный метод для просмотра введенной пользователем строки;
-
checkAmmount() - метод для проверки соотвтствия количества данных. В случае если количество полей не ровно 6 (Фамилия, имя, отчество, дата рождения, номер телефона, пол), метод возращает код ошибки (-1);
-
CorrectInput() метод реализующий бесконечный ввод (пока пользователь не введет верное количество полей), в ходе выполнения пользователю выводятся сообщения о том, ввел ли он корректные, либо некорректные данные.
3. InputPrompt - класс, отвечающий за получение от пользователя ответа на запрос, хочет ли он ввести ещё одну запись, либо закончить выполнение программы.
4. Record - класс, отвечающий за хранение одного экземпляра записи. Он содержит шесть полей в разных форматах, а также перегруженный метод toString() для получения всех данных экземпляра в строковом виде. Данный метод помогает записать данные в файл в необходимом формате.
5. SaveToFile Класс для записи полей экземпляра Record в файл. Содержит один метод saveTXT() для записи (либо добавления) текущей записи в формате .txt . В методе через геттер берется строковое поле с фамилией экземпляра Record и назначается как имя файла. В случае если такой файл уже существует, в него записывается новая строка.
- Создаются экземпляры классов InputAmmount, SaveToFile, InputPrompt.
- Создаем цикл, внутри которого происходит создание новой записи. Вне зависимсоти от того, корректно ли пользователь ввел данные, ему предлагается создать ещё одну запись (повторить цикл). В результате выполнения цикла программа либо завершает работу, либо пользователь вводит новые данные.
- Внутри цикла происходит сперва проверка что пользователь ввел необходимое количество данных в бесконечном цикле.
- После проверяются все поля записи на соответствие требованиям, в случае если все введенно корректно, появяится соответствующее сообщение. Если в одном из полей была допущена ошибка, в программе отобразится где именно данные введенны неправильно.
- Если все данные были введенны корректно, в программе создается экземпляр класса Record, и происходит запись в файлс с помощью класса SaveToFile.