From 5c3bbaeef080d6aed2d9a8082a6bfe6f07dd4aae Mon Sep 17 00:00:00 2001 From: STer Date: Sun, 3 Nov 2024 12:02:23 +0300 Subject: [PATCH 1/4] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82:=20=D0=A0=D0=B5=D0=B0?= =?UTF-8?q?=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=20=D1=8D=D0=BA=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=20=D1=81=D1=82=D0=B0=D1=80=D1=82=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81?= =?UTF-8?q?=20=D0=B2=D1=8B=D0=B1=D0=BE=D1=80=D0=BE=D0=BC=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D0=BD=D0=B4.=20=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D1=8B=20(=D0=BF=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B2=D0=B0=D1=80=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D0=BE)=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20=D0=B0=D1=80=D1=85=D0=B8?= =?UTF-8?q?=D0=B2=D0=B0=20=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D1=85=20=D0=B0=D1=80=D1=85=D0=B8=D0=B2=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=B2=20=D1=81=D0=BF=D0=B8=D1=81=D0=BE=D0=BA=20=D0=B0=D1=80?= =?UTF-8?q?=D1=85=D0=B8=D0=B2=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/caches/deviceStreaming.xml | 329 +++++++++++++++++++++++++++++++ .idea/misc.xml | 2 +- src/main/kotlin/Archive.kt | 4 + src/main/kotlin/Archives.kt | 15 ++ src/main/kotlin/Main.kt | 3 +- src/main/kotlin/Start.kt | 30 +++ 6 files changed, 381 insertions(+), 2 deletions(-) create mode 100644 .idea/caches/deviceStreaming.xml create mode 100644 src/main/kotlin/Archive.kt create mode 100644 src/main/kotlin/Archives.kt create mode 100644 src/main/kotlin/Start.kt diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml new file mode 100644 index 00000000..5a2f8669 --- /dev/null +++ b/.idea/caches/deviceStreaming.xml @@ -0,0 +1,329 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 9c8e7400..31e1ebce 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/src/main/kotlin/Archive.kt b/src/main/kotlin/Archive.kt new file mode 100644 index 00000000..db7bd6d8 --- /dev/null +++ b/src/main/kotlin/Archive.kt @@ -0,0 +1,4 @@ +class Archive(val name: String) { + + +} \ No newline at end of file diff --git a/src/main/kotlin/Archives.kt b/src/main/kotlin/Archives.kt new file mode 100644 index 00000000..665f2400 --- /dev/null +++ b/src/main/kotlin/Archives.kt @@ -0,0 +1,15 @@ +import java.util.Scanner + +class Archives { + private val archiveList: MutableSet = mutableSetOf() + + fun showArchiveList() { + archiveList.forEachIndexed {index, element -> + println("${index + 1} - ${element.name}")} + } + + fun createArchive() { + val name: String = readLine()!! + archiveList.add(Archive(name)) + } +} diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt index aade54c5..23735d07 100644 --- a/src/main/kotlin/Main.kt +++ b/src/main/kotlin/Main.kt @@ -1,3 +1,4 @@ fun main(args: Array) { - println("Hello World!") + val start = Start() + start.startProgramm() } \ No newline at end of file diff --git a/src/main/kotlin/Start.kt b/src/main/kotlin/Start.kt new file mode 100644 index 00000000..f57e4013 --- /dev/null +++ b/src/main/kotlin/Start.kt @@ -0,0 +1,30 @@ +import java.util.Scanner + +class Start { + private val archives = Archives() +val menu = "Список архивов:\n" + + "0. Создать архив\n" + + "1. Это мой уже созданный архив\n" + + "2. Выход " + + fun startProgramm() { + + while (true) { + println(menu) + val input = readlnOrNull()?.toIntOrNull() + val result = when(input) { + 0 -> { println("Создаем архив...") + archives.createArchive() + } + 1 -> { println("Переходим в ваши архивы...") + archives.showArchiveList() + } + 2 -> {"До свидания!" + break + } + else -> "Некорректная комманда" + } + println(result) + } + } +} \ No newline at end of file From 73e09ca27599d241832803132e5dded29d68ede2 Mon Sep 17 00:00:00 2001 From: STer Date: Sun, 3 Nov 2024 17:43:07 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=D0=92=D1=82=D0=BE=D1=80=D0=BE=D0=B9=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82:=20=D0=94=D0=BE=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=BD=20=D1=8D=D0=BA=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=20=D1=81=D0=BE=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=20=D0=B0=D1=80=D1=85=D0=B8=D0=B2=D0=BE=D0=B2,=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D0=B5=20=D0=B0=D1=80?= =?UTF-8?q?=D1=85=D0=B8=D0=B2=D0=B0=20=D1=81=D0=BE=20=D1=81=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=BA=D0=BE=D0=BC=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=82=D0=BE?= =?UTF-8?q?=D0=BA,=20=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=82=D0=BE=D0=BA?= =?UTF-8?q?=20=D0=B2=20=D0=B0=D1=80=D1=85=D0=B8=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/Archive.kt | 19 ++++++++++++++++++ src/main/kotlin/Archives.kt | 39 ++++++++++++++++++++++++++++++++----- src/main/kotlin/Menu.kt | 4 ++++ src/main/kotlin/MenuInt.kt | 14 +++++++++++++ src/main/kotlin/Note.kt | 4 ++++ src/main/kotlin/Start.kt | 13 ++++--------- 6 files changed, 79 insertions(+), 14 deletions(-) create mode 100644 src/main/kotlin/Menu.kt create mode 100644 src/main/kotlin/MenuInt.kt create mode 100644 src/main/kotlin/Note.kt diff --git a/src/main/kotlin/Archive.kt b/src/main/kotlin/Archive.kt index db7bd6d8..bb41ac31 100644 --- a/src/main/kotlin/Archive.kt +++ b/src/main/kotlin/Archive.kt @@ -1,4 +1,23 @@ class Archive(val name: String) { + private val noteList: MutableSet = mutableSetOf() + + + fun createNote() { + val nameNote = readLine()?: "null" + val content = readLine()?: "null" + + noteList.add(Note(nameNote, content)) + } + + fun showNoteList() { + if (noteList.isEmpty()) { + println("Архив $name пуст") + } + noteList.forEachIndexed {index, note -> + println("${index + 1} - ${note.nameNote}") + } + + } } \ No newline at end of file diff --git a/src/main/kotlin/Archives.kt b/src/main/kotlin/Archives.kt index 665f2400..4487f89e 100644 --- a/src/main/kotlin/Archives.kt +++ b/src/main/kotlin/Archives.kt @@ -1,11 +1,24 @@ -import java.util.Scanner - class Archives { - private val archiveList: MutableSet = mutableSetOf() + private val archiveList: MutableList = mutableListOf() + fun showArchiveList() { - archiveList.forEachIndexed {index, element -> - println("${index + 1} - ${element.name}")} + archiveList.forEachIndexed {index, archive -> + println("${index + 1} - ${archive.name}")} + + while (true) { + println("Выберите номер архива") + val number = readlnOrNull()?.toIntOrNull() + if ((number != null && number <= archiveList.size && number > 0)) { + openArchiveMenu(archiveList[number - 1]) + return + } else if (number == null) { + println("Ошибка. Введите число") + } else { + println("Архива под таким номером не существует") + } + } + } fun createArchive() { @@ -13,3 +26,19 @@ class Archives { archiveList.add(Archive(name)) } } + +fun openArchiveMenu(archive: Archive) { + while (true) { + println("Архив ${archive.name}:\n" + + "0. Создать заметку\n" + + "1. Открыть список заметок\n" + + "2. Вернуться назад ") + val input = readlnOrNull()?.toIntOrNull() + when(input) { + 0 -> archive.createNote() + 1 -> archive.showNoteList() + 2 -> return + else -> println("Некорректная комманда") + } + } +} diff --git a/src/main/kotlin/Menu.kt b/src/main/kotlin/Menu.kt new file mode 100644 index 00000000..51319f3e --- /dev/null +++ b/src/main/kotlin/Menu.kt @@ -0,0 +1,4 @@ +class Menu { + + + } \ No newline at end of file diff --git a/src/main/kotlin/MenuInt.kt b/src/main/kotlin/MenuInt.kt new file mode 100644 index 00000000..2d0001bf --- /dev/null +++ b/src/main/kotlin/MenuInt.kt @@ -0,0 +1,14 @@ +interface MenuInt { + val startMenu: String + get() = "Список архивов:\n" + + "0. Создать архив\n" + + "1. Это мой уже созданный архив\n" + + "2. Выход " + + val archiveMenu: String + get() = "Архив $:\n" + + "0. Создать архив\n" + + "1. Это мой уже созданный архив\n" + + "2. Выход " + +} \ No newline at end of file diff --git a/src/main/kotlin/Note.kt b/src/main/kotlin/Note.kt new file mode 100644 index 00000000..4135582a --- /dev/null +++ b/src/main/kotlin/Note.kt @@ -0,0 +1,4 @@ +data class Note( + val nameNote: String, + val content: String +) diff --git a/src/main/kotlin/Start.kt b/src/main/kotlin/Start.kt index f57e4013..ce1c8c40 100644 --- a/src/main/kotlin/Start.kt +++ b/src/main/kotlin/Start.kt @@ -1,16 +1,11 @@ -import java.util.Scanner - -class Start { +class Start: MenuInt { private val archives = Archives() -val menu = "Список архивов:\n" + - "0. Создать архив\n" + - "1. Это мой уже созданный архив\n" + - "2. Выход " + fun startProgramm() { while (true) { - println(menu) + println(startMenu) val input = readlnOrNull()?.toIntOrNull() val result = when(input) { 0 -> { println("Создаем архив...") @@ -19,7 +14,7 @@ val menu = "Список архивов:\n" + 1 -> { println("Переходим в ваши архивы...") archives.showArchiveList() } - 2 -> {"До свидания!" + 2 -> { println("До свидания!") break } else -> "Некорректная комманда" From ce920f5d6df40a67f9e3f73c6a766a2c7f526f64 Mon Sep 17 00:00:00 2001 From: STer Date: Mon, 4 Nov 2024 12:03:34 +0300 Subject: [PATCH 3/4] =?UTF-8?q?=D0=A2=D1=80=D0=B5=D1=82=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82:=20=D0=94=D0=BE=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=BD=D1=8B=20=D0=B2=D1=81=D0=B5?= =?UTF-8?q?=20=D1=8D=D0=BA=D1=80=D0=B0=D0=BD=D1=8B,=20=D1=80=D0=B5=D0=B0?= =?UTF-8?q?=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=BA=D0=BE=D1=80?= =?UTF-8?q?=D1=80=D0=B5=D0=BA=D1=82=D0=BD=D1=8B=D0=B9=20=D0=B2=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=20=D0=B8=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D1=85=20(=D0=BA=D1=80=D0=BE=D0=BC=D0=B5=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BA=D0=B8=20=D1=81=20=D0=BF=D1=83=D1=81?= =?UTF-8?q?=D1=82=D1=8B=D0=BC=D0=B8=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D0=BC?= =?UTF-8?q?=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/Archive.kt | 34 ++++++++++++++++++++++---- src/main/kotlin/Archives.kt | 48 ++++++++++++++++++++++++++----------- src/main/kotlin/MenuInt.kt | 2 +- src/main/kotlin/Start.kt | 9 ++++--- 4 files changed, 68 insertions(+), 25 deletions(-) diff --git a/src/main/kotlin/Archive.kt b/src/main/kotlin/Archive.kt index bb41ac31..5e4519bd 100644 --- a/src/main/kotlin/Archive.kt +++ b/src/main/kotlin/Archive.kt @@ -1,11 +1,13 @@ class Archive(val name: String) { - private val noteList: MutableSet = mutableSetOf() + private val noteList: MutableList = mutableListOf() fun createNote() { + println("Название заметки:") val nameNote = readLine()?: "null" + println("Содержимое заметки") val content = readLine()?: "null" noteList.add(Note(nameNote, content)) @@ -14,10 +16,32 @@ class Archive(val name: String) { fun showNoteList() { if (noteList.isEmpty()) { println("Архив $name пуст") - } - noteList.forEachIndexed {index, note -> - println("${index + 1} - ${note.nameNote}") - } + } else { + println("Список ваших заметок:") + println("0 - Вернуться назад") + noteList.forEachIndexed { index, note -> + println("${index + 1} - ${note.nameNote}") + } + + while (true) { + println("Введите номер заметки для прочтения содержимого") + val number = readlnOrNull()?.toIntOrNull() + if ((number != null && number <= noteList.size && number > 0)) { + println( + "Заметка - ${noteList[number - 1].nameNote}\n:" + + "${noteList[number - 1].content}" + ) + return + } else if (number == null) { + println("Ошибка. Введите число") + } else if (number == 0) { + return + } else { + println("Заметки под таким номером не существует") + } + } + } } + } \ No newline at end of file diff --git a/src/main/kotlin/Archives.kt b/src/main/kotlin/Archives.kt index 4487f89e..d6d194e0 100644 --- a/src/main/kotlin/Archives.kt +++ b/src/main/kotlin/Archives.kt @@ -3,27 +3,47 @@ class Archives { fun showArchiveList() { - archiveList.forEachIndexed {index, archive -> - println("${index + 1} - ${archive.name}")} + if (archiveList.isEmpty()) { + println("Список архивов пуст") + } else { + println("Список архивов:") + println("0 - Вернуться назад") + archiveList.forEachIndexed { index, archive -> + println("${index + 1} - ${archive.name}") + } - while (true) { - println("Выберите номер архива") - val number = readlnOrNull()?.toIntOrNull() - if ((number != null && number <= archiveList.size && number > 0)) { - openArchiveMenu(archiveList[number - 1]) - return - } else if (number == null) { - println("Ошибка. Введите число") - } else { - println("Архива под таким номером не существует") + while (true) { + println("Выберите номер архива") + val number = readlnOrNull()?.toIntOrNull() + if ((number != null && number <= archiveList.size && number > 0)) { + openArchiveMenu(archiveList[number - 1]) + return + } else if (number == null) { + println("Ошибка. Введите число") + } else if (number == 0) { + return + } else { + println("Архива под таким номером не существует") + } } } } fun createArchive() { - val name: String = readLine()!! - archiveList.add(Archive(name)) + while (true) { + val name: String? = readlnOrNull() + if (name != null) { + if (name.isEmpty()) { + println("Поле не может быть пустым\n" + + "Задайте имя для архива") + } else { + archiveList.add(Archive(name)) + println("Архив $name успешно создан") + return + } + } + } } } diff --git a/src/main/kotlin/MenuInt.kt b/src/main/kotlin/MenuInt.kt index 2d0001bf..ca614e04 100644 --- a/src/main/kotlin/MenuInt.kt +++ b/src/main/kotlin/MenuInt.kt @@ -1,6 +1,6 @@ interface MenuInt { val startMenu: String - get() = "Список архивов:\n" + + get() = "Выберите действие:\n" + "0. Создать архив\n" + "1. Это мой уже созданный архив\n" + "2. Выход " diff --git a/src/main/kotlin/Start.kt b/src/main/kotlin/Start.kt index ce1c8c40..8dccc262 100644 --- a/src/main/kotlin/Start.kt +++ b/src/main/kotlin/Start.kt @@ -3,12 +3,12 @@ class Start: MenuInt { fun startProgramm() { - + println("Добро пожаловать!") while (true) { println(startMenu) val input = readlnOrNull()?.toIntOrNull() - val result = when(input) { - 0 -> { println("Создаем архив...") + when(input) { + 0 -> { println("Задайте имя для архива") archives.createArchive() } 1 -> { println("Переходим в ваши архивы...") @@ -17,9 +17,8 @@ class Start: MenuInt { 2 -> { println("До свидания!") break } - else -> "Некорректная комманда" + else -> println("Некорректная комманда") } - println(result) } } } \ No newline at end of file From 77af67a0be9c94bd70364da54801e443e3dfd9a2 Mon Sep 17 00:00:00 2001 From: STer Date: Mon, 4 Nov 2024 19:20:32 +0300 Subject: [PATCH 4/4] =?UTF-8?q?=D0=A7=D0=B5=D1=82=D0=B2=D0=B5=D1=80=D1=82?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82:=20=D0=9F?= =?UTF-8?q?=D1=80=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D0=B0=20=D0=B4=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=BD=D0=B0=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B3=D0=BB=D0=B0=D1=81=D0=BD=D0=BE=20=D1=82=D1=80=D0=B5=D0=B1?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=D0=BC=20=D0=B7=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F:=20=20-=20=D0=9B=D0=BE=D0=B3=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D1=81=D1=87=D0=B8=D1=82=D1=8B?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D1=8E=20=D0=B2=D0=B2=D0=BE=D0=B4=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=B8=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D0=B0=20?= =?UTF-8?q?=D0=BF=D1=83=D0=BD=D0=BA=D1=82=D0=BE=D0=B2=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D1=8D=D0=BA=D1=80=D0=B0=D0=BD=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83=D0=B5=D1=82=20=D0=BE?= =?UTF-8?q?=D0=B4=D0=B8=D0=BD=20=D0=B8=20=D1=82=D0=BE=D1=82=20=D0=B6=D0=B5?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=B4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/Archive.kt | 38 +++------------ src/main/kotlin/Archives.kt | 71 ++++++++-------------------- src/main/kotlin/IsEmptyInputCheck.kt | 12 +++++ src/main/kotlin/Menu.kt | 4 -- src/main/kotlin/MenuInt.kt | 14 ------ src/main/kotlin/NavigationMenu.kt | 25 ++++++++++ src/main/kotlin/Note.kt | 7 ++- src/main/kotlin/Operations.kt | 14 ++++++ src/main/kotlin/Start.kt | 29 ++++-------- 9 files changed, 94 insertions(+), 120 deletions(-) create mode 100644 src/main/kotlin/IsEmptyInputCheck.kt delete mode 100644 src/main/kotlin/Menu.kt delete mode 100644 src/main/kotlin/MenuInt.kt create mode 100644 src/main/kotlin/NavigationMenu.kt create mode 100644 src/main/kotlin/Operations.kt diff --git a/src/main/kotlin/Archive.kt b/src/main/kotlin/Archive.kt index 5e4519bd..daa7eeda 100644 --- a/src/main/kotlin/Archive.kt +++ b/src/main/kotlin/Archive.kt @@ -1,47 +1,23 @@ -class Archive(val name: String) { - +class Archive(val name: String) : NavigationMenu() { private val noteList: MutableList = mutableListOf() - - fun createNote() { println("Название заметки:") - val nameNote = readLine()?: "null" + val nameNote = IsEmptyInputCheck.checkEmptyInput("Название заметки не может быть пустым") println("Содержимое заметки") - val content = readLine()?: "null" - + val content = IsEmptyInputCheck.checkEmptyInput("Содержимое заметки не может быть пустым") noteList.add(Note(nameNote, content)) + println("Заметка $nameNote успешно создана") } fun showNoteList() { if (noteList.isEmpty()) { println("Архив $name пуст") } else { - println("Список ваших заметок:") - println("0 - Вернуться назад") - noteList.forEachIndexed { index, note -> - println("${index + 1} - ${note.nameNote}") - } - - while (true) { - println("Введите номер заметки для прочтения содержимого") - val number = readlnOrNull()?.toIntOrNull() - if ((number != null && number <= noteList.size && number > 0)) { - - println( - "Заметка - ${noteList[number - 1].nameNote}\n:" + - "${noteList[number - 1].content}" - ) - return - } else if (number == null) { - println("Ошибка. Введите число") - } else if (number == 0) { - return - } else { - println("Заметки под таким номером не существует") - } + val menuItems = noteList.map { it.nameNote } + showMenu(Operations.NOTE_MENU, menuItems, "Вернуться к архивам") { index -> + noteList[index].readNote() } } } - } \ No newline at end of file diff --git a/src/main/kotlin/Archives.kt b/src/main/kotlin/Archives.kt index d6d194e0..97eca469 100644 --- a/src/main/kotlin/Archives.kt +++ b/src/main/kotlin/Archives.kt @@ -1,64 +1,33 @@ -class Archives { - private val archiveList: MutableList = mutableListOf() +class Archives : NavigationMenu() { + private val archiveList: MutableList = mutableListOf() + fun createArchive() { + val nameArchive = IsEmptyInputCheck.checkEmptyInput("Название архива не может быть пустым") + archiveList.add(Archive(nameArchive)) + println("Архив $nameArchive успешно добавлен") + } fun showArchiveList() { if (archiveList.isEmpty()) { println("Список архивов пуст") } else { - println("Список архивов:") - println("0 - Вернуться назад") - archiveList.forEachIndexed { index, archive -> - println("${index + 1} - ${archive.name}") - } - - while (true) { - println("Выберите номер архива") - val number = readlnOrNull()?.toIntOrNull() - if ((number != null && number <= archiveList.size && number > 0)) { - openArchiveMenu(archiveList[number - 1]) - return - } else if (number == null) { - println("Ошибка. Введите число") - } else if (number == 0) { - return - } else { - println("Архива под таким номером не существует") - } + val menuItems = archiveList.map { it.name } + showMenu(Operations.ARCHIVES_MENU, menuItems, "Вернуться к главному меню") { index -> + openArchiveMenu(archiveList[index]) } } - } - fun createArchive() { - while (true) { - val name: String? = readlnOrNull() - if (name != null) { - if (name.isEmpty()) { - println("Поле не может быть пустым\n" + - "Задайте имя для архива") - } else { - archiveList.add(Archive(name)) - println("Архив $name успешно создан") - return - } + fun openArchiveMenu(archive: Archive) { + val menuItems = listOf("Добавить заметку", "Просмотреть заметки") + showMenu(Operations.NOTES_MENU, menuItems, "Вернуться к списку архивов") { input -> + when (input) { + 0 -> archive.createNote() + 1 -> { + println("Переходим в заметки архива ${archive.name}...") + archive.showNoteList() + } } } } -} - -fun openArchiveMenu(archive: Archive) { - while (true) { - println("Архив ${archive.name}:\n" + - "0. Создать заметку\n" + - "1. Открыть список заметок\n" + - "2. Вернуться назад ") - val input = readlnOrNull()?.toIntOrNull() - when(input) { - 0 -> archive.createNote() - 1 -> archive.showNoteList() - 2 -> return - else -> println("Некорректная комманда") - } - } -} +} \ No newline at end of file diff --git a/src/main/kotlin/IsEmptyInputCheck.kt b/src/main/kotlin/IsEmptyInputCheck.kt new file mode 100644 index 00000000..2eefe243 --- /dev/null +++ b/src/main/kotlin/IsEmptyInputCheck.kt @@ -0,0 +1,12 @@ +import java.util.Scanner + +object IsEmptyInputCheck { + + fun checkEmptyInput(errorMessage: String): String { + while (true) { + val input = Scanner(System.`in`).nextLine() + if (input.isNotBlank()) return input + println(errorMessage) + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/Menu.kt b/src/main/kotlin/Menu.kt deleted file mode 100644 index 51319f3e..00000000 --- a/src/main/kotlin/Menu.kt +++ /dev/null @@ -1,4 +0,0 @@ -class Menu { - - - } \ No newline at end of file diff --git a/src/main/kotlin/MenuInt.kt b/src/main/kotlin/MenuInt.kt deleted file mode 100644 index ca614e04..00000000 --- a/src/main/kotlin/MenuInt.kt +++ /dev/null @@ -1,14 +0,0 @@ -interface MenuInt { - val startMenu: String - get() = "Выберите действие:\n" + - "0. Создать архив\n" + - "1. Это мой уже созданный архив\n" + - "2. Выход " - - val archiveMenu: String - get() = "Архив $:\n" + - "0. Создать архив\n" + - "1. Это мой уже созданный архив\n" + - "2. Выход " - -} \ No newline at end of file diff --git a/src/main/kotlin/NavigationMenu.kt b/src/main/kotlin/NavigationMenu.kt new file mode 100644 index 00000000..db65a83e --- /dev/null +++ b/src/main/kotlin/NavigationMenu.kt @@ -0,0 +1,25 @@ +import java.util.* + +open class NavigationMenu { + private val scanner = Scanner(System.`in`) + + fun showMenu(menuName: Operations, menuItems: List, exitMenu: String, numberMenu: (Int) -> Unit + ) { + while (true) { + menuName.getTypeMenu() + menuItems.forEachIndexed { index, value -> + println("${index + 1} - $value") + } + println("0 - $exitMenu") + + val input = scanner.nextLine() + if (input == "0") { + return + } else if (input.toIntOrNull() != null && input.toInt() <= menuItems.size && input.toInt() > 0) { + numberMenu(input.toInt() - 1) + } else { + println("Некорректный ввод. Выберите пункт из списка.") + } + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/Note.kt b/src/main/kotlin/Note.kt index 4135582a..09668302 100644 --- a/src/main/kotlin/Note.kt +++ b/src/main/kotlin/Note.kt @@ -1,4 +1,9 @@ data class Note( val nameNote: String, val content: String -) +) { + + fun readNote() { + println("Заметка: $nameNote\nСодержание: $content") + } +} diff --git a/src/main/kotlin/Operations.kt b/src/main/kotlin/Operations.kt new file mode 100644 index 00000000..a6d78dee --- /dev/null +++ b/src/main/kotlin/Operations.kt @@ -0,0 +1,14 @@ +enum class Operations { + MAIN_MENU, + ARCHIVES_MENU, + NOTES_MENU, + NOTE_MENU; + + fun getTypeMenu(): Unit = + when (this) { + MAIN_MENU -> println("\nГлавне меню:") + ARCHIVES_MENU -> println("\nМеню - спсиок архивов:") + NOTES_MENU -> println("\nМеню - заметки:") + NOTE_MENU -> println("\nМеню - список заметок:") + } +} \ No newline at end of file diff --git a/src/main/kotlin/Start.kt b/src/main/kotlin/Start.kt index 8dccc262..fd8c3890 100644 --- a/src/main/kotlin/Start.kt +++ b/src/main/kotlin/Start.kt @@ -1,24 +1,15 @@ -class Start: MenuInt { +class Start : NavigationMenu() { private val archives = Archives() - fun startProgramm() { - println("Добро пожаловать!") - while (true) { - println(startMenu) - val input = readlnOrNull()?.toIntOrNull() - when(input) { - 0 -> { println("Задайте имя для архива") - archives.createArchive() - } - 1 -> { println("Переходим в ваши архивы...") - archives.showArchiveList() - } - 2 -> { println("До свидания!") - break - } - else -> println("Некорректная комманда") - } - } + val menuItems = listOf("Создать архив", "Это мой уже созданный архив") + showMenu(Operations.MAIN_MENU,menuItems, "Выход") { input -> + when (input) { + 0 -> { println("Задайте имя для архива") + archives.createArchive() } + 1 -> { println("Переходим в ваши архивы...") + archives.showArchiveList() } + } + } } } \ No newline at end of file