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..daa7eeda
--- /dev/null
+++ b/src/main/kotlin/Archive.kt
@@ -0,0 +1,23 @@
+class Archive(val name: String) : NavigationMenu() {
+ private val noteList: MutableList = mutableListOf()
+
+ fun createNote() {
+ println("Название заметки:")
+ val nameNote = IsEmptyInputCheck.checkEmptyInput("Название заметки не может быть пустым")
+ println("Содержимое заметки")
+ val content = IsEmptyInputCheck.checkEmptyInput("Содержимое заметки не может быть пустым")
+ noteList.add(Note(nameNote, content))
+ println("Заметка $nameNote успешно создана")
+ }
+
+ fun showNoteList() {
+ if (noteList.isEmpty()) {
+ println("Архив $name пуст")
+ } else {
+ 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
new file mode 100644
index 00000000..97eca469
--- /dev/null
+++ b/src/main/kotlin/Archives.kt
@@ -0,0 +1,33 @@
+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 {
+ val menuItems = archiveList.map { it.name }
+ showMenu(Operations.ARCHIVES_MENU, menuItems, "Вернуться к главному меню") { index ->
+ openArchiveMenu(archiveList[index])
+ }
+ }
+ }
+
+ fun openArchiveMenu(archive: Archive) {
+ val menuItems = listOf("Добавить заметку", "Просмотреть заметки")
+ showMenu(Operations.NOTES_MENU, menuItems, "Вернуться к списку архивов") { input ->
+ when (input) {
+ 0 -> archive.createNote()
+ 1 -> {
+ println("Переходим в заметки архива ${archive.name}...")
+ archive.showNoteList()
+ }
+ }
+ }
+ }
+}
\ 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/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/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
new file mode 100644
index 00000000..09668302
--- /dev/null
+++ b/src/main/kotlin/Note.kt
@@ -0,0 +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
new file mode 100644
index 00000000..fd8c3890
--- /dev/null
+++ b/src/main/kotlin/Start.kt
@@ -0,0 +1,15 @@
+class Start : NavigationMenu() {
+ private val archives = Archives()
+
+ fun startProgramm() {
+ 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