Вы находитесь на странице: 1из 11

Федеральное государственное бюджетное образовательное учреждение

высшего образования
«Саратовский государственный технический университет
имени Гагарина Ю.А.»

Институт прикладных информационных технологий и коммуникаций


Направление «Информационные системы и технологии»
Кафедра «Прикладные информационные технологии»

КОНТРОЛЬНАЯ РАБОТА

по дисциплине «Технологии обработки информации.»

Выполнил студент группы


ИФСТипу21
заочной формы обучения
Чернов Максим Олегович
Номер зачетной книжки 193186
Проверил: доцент кафедры ПИТ
к.т.н. Ермаков А.В.

Саратов 2021
Целью работы является формирование компетенции ОПК-2: способность
использовать современные информационные технологии и программные
средства, в том числе отечественного производства, при решении задач
профессиональной деятельности
Для формирования компетенции необходимо осуществить решение задачи
объектно-ориентированного программирования с использованием языка
программирования Java в соответствии с вариантом 6.

Описание задачи:
Имена. Необходимо разработать сущность Имя, которая описывается тремя
параметрами: Фамилия, Личное имя, Отчество. Имя может быть приведено к
строковому виду, включающему традиционное представление всех трех
параметров, например “Иванов Иван Иванович”. Необходимо предусмотреть
возможность того, что какой-либо из параметров может быть не задан, и в
этом случае он не учитывается при приведении к текстовому виду.
Создание имени можно выполнить следующими способами:
 Имя можно создать указав только Личное имя
 Имя можно создать указав Личное имя и Фамилию.
 Имя можно создать указав все три параметра: Личное имя, Фамилию,
Отчество.
Гарантируйте, что:
 Личное имя никогда не может быть пустым. Пустым считается
отсутствие строки, или пустая строка. При попытке задать пустое
значение выбрасывается ошибка с соответствующим текстом.
 Фамилия и Отчество могут быть пустыми только до первого
присвоения, после этого они всегда должны иметь непустое значение.
Пустым считается отсутствие строки, или пустая строка. При попытке
задать пустое значение выбрасывается ошибка с соответствующим
текстом.
 Все три параметра могут быть получены и изменены в любой момент.
Необходимо создать следующие имена:
 Клеопатра
 Александр Сергеевич Пушкин
 Владимир Маяковский
 Христофор Бонифатьевич (здесь Бонифатьевич это отчество, а
Христофор - имя)
Продемонстрируйте работоспособность требований на примерах.
Решение:

public class Main {

private static final String EXIT = "exit";


private static final String HELP = "help";
private static final String VIEW = "view";
private static final String ADD = "add";
private static final String MODIFY = "modify";

public static void main(String[] args) {

List<FullName> names = new ArrayList<>();


printHelp();
Scanner in = new Scanner(System.in);
String input = in.nextLine();

while (!input.equals(EXIT)) {
switch (input) {
case VIEW: {
printNames(names);
break;
}
case ADD: {
addName(names, in);
break;
}
case MODIFY: {
modifyName(names, in);
break;
}
case HELP: {
}
default: {
printHelp();
break;
}

}
input = in.nextLine();
}

private static void printNames(List<FullName> names) {


for (int i = 0; i < names.size(); i++) {
FullName name = names.get(i);
System.out.println(i + " " + name);
}
}

private static void addName(List<FullName> names, Scanner in) {


String personalName;
String fathersName;
String surname;

System.out.println("Enter personal name: ");


personalName = in.nextLine().trim();

System.out.println("Enter fathers name: ");


fathersName = in.nextLine().trim();

System.out.println("Enter surname: ");


surname = in.nextLine().trim();
try {
FullName name = new FullName(personalName, fathersName,
surname);
names.add(name);
System.out.println(name + " is added");
} catch (IncorrectNameException e) {
System.out.println(e.getMessage());
}
}

private static void modifyName(List<FullName> names, Scanner in) {


String personalName;
String fathersName;
String surname;

System.out.println("Select name number for modify: ");


printNames(names);

if (names.isEmpty()){
System.out.println("No names to modify");
return;
}

String nameId = in.nextLine().trim();

int id;
try {
id = Integer.parseInt(nameId);
} catch (NumberFormatException e) {
System.out.println("Put correct number");
modifyName(names, in);
return;
}
if (id < 0 || id >= names.size()) {
System.out.println("Put correct number");
modifyName(names, in);
return;
}

System.out.println("Enter personal name: ");


personalName = in.nextLine().trim();

System.out.println("Enter fathers name: ");


fathersName = in.nextLine().trim();

System.out.println("Enter surname: ");


surname = in.nextLine().trim();

try {
FullName name = names.get(id);
name.setPersonalName(personalName);
name.setFathersName(fathersName);
name.setSurname(surname);
System.out.println(name + " is updated");
} catch (IncorrectNameException e) {
System.out.println(e.getMessage());
}
}

private static void printHelp() {


System.out.println(EXIT);
System.out.println(HELP);
System.out.println(VIEW);
System.out.println(ADD);
System.out.println(MODIFY);
}
}

Главный метод:

public class IncorrectNameException extends RuntimeException{


public static final String PERSONAL_NAME_EMPTY = "Personal name
can't be empty";
public static final String FATHERS_NAME_EMPTY = "Fathers name can't
be empty";
public static final String SURNAME_EMPTY = "Surname can't be empty";

public IncorrectNameException(String message){


super(message);
}
}
public class FullName {

private String personalName;


private String fathersName;
private String surname;

public FullName(String personalName) throws IncorrectNameException {


checkPersonalName(personalName);
this.personalName = personalName;
}

public FullName(String personalName, String surname) throws


IncorrectNameException {
checkPersonalName(personalName);
this.personalName = personalName;
this.surname = surname;
}
public FullName(String personalName, String fathersName, String surname)
throws IncorrectNameException {
checkPersonalName(personalName);
checkSurname(fathersName, surname);
this.personalName = personalName;
this.fathersName = fathersName;
this.surname = surname;
}

public String getPersonalName() {


return personalName;
}

public void setPersonalName(String personalName) throws


IncorrectNameException {
checkPersonalName(personalName);
this.personalName = personalName;
}

public String getFathersName() {


return fathersName;
}

public void setFathersName(String fathersName) throws


IncorrectNameException {
if (this.fathersName != null && !this.fathersName.isEmpty() &&
(fathersName == null || fathersName.isEmpty())) {
throw new
IncorrectNameException(IncorrectNameException.FATHERS_NAME_EMPT
Y);
}
this.fathersName = fathersName;
}
public String getSurname() {
return surname;
}

public void setSurname(String surname) throws IncorrectNameException {


if (this.surname != null && !this.surname.isEmpty() && (surname ==
null || surname.isEmpty())) {
throw new
IncorrectNameException(IncorrectNameException.SURNAME_EMPTY);
}
this.surname = surname;
}

@Override
public String toString() {
return personalName + (fathersName != null ? " " + fathersName : "") +
(surname !=null ? " " + surname : "");
}

private void checkPersonalName(String personalName) throws


IncorrectNameException {
if (personalName == null || personalName.isEmpty()) {
throw new
IncorrectNameException(IncorrectNameException.PERSONAL_NAME_EMP
TY);
}
}

private void checkSurname(String fathersName, String surname) throws


IncorrectNameException {
if (fathersName != null && !fathersName.isEmpty() && (surname ==
null || surname.isEmpty())) {
throw new
IncorrectNameException(IncorrectNameException.SURNAME_EMPTY);
}
}
}
Результат выполнения главного метода:
exit
help
view
add
modify
add
Enter personal name:
Клеопатра
Enter fathers name:

Enter surname:

Клеопатра is added
add
Enter personal name:
Александр
Enter fathers name:
Сергеевич
Enter surname:
Пушкин
Александр Сергеевич Пушкин is added
add
Enter personal name:
Владимир
Enter fathers name:

Enter surname:
Маяковский
Владимир Маяковский is added
add
Enter personal name:
Христофор
Enter fathers name:
Бонифатьевич
Enter surname:

Surname can't be empty


exit

Process finished with exit code 0