From 0ada7019e72e37e78655507e905ceca4418efdb9 Mon Sep 17 00:00:00 2001 From: Abel <9moonin9@gmail.com> Date: Wed, 11 Mar 2026 19:21:17 +0500 Subject: [PATCH 1/6] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=207=20?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B8=D0=BD=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/caches/deviceStreaming.xml | 1450 ++++++++++++++++++++++++ .idea/markdown.xml | 8 + .idea/misc.xml | 3 +- src/main/kotlin/Main.kt | 8 +- src/main/kotlin/archive/Archive.kt | 8 + src/main/kotlin/archive/ArchiveMenu.kt | 41 + src/main/kotlin/menu/menu.kt | 41 + src/main/kotlin/note/Note.kt | 6 + src/main/kotlin/note/NotesMenu.kt | 45 + src/main/kotlin/storage/Storage.kt | 7 + 10 files changed, 1612 insertions(+), 5 deletions(-) create mode 100644 .idea/caches/deviceStreaming.xml create mode 100644 .idea/markdown.xml create mode 100644 src/main/kotlin/archive/Archive.kt create mode 100644 src/main/kotlin/archive/ArchiveMenu.kt create mode 100644 src/main/kotlin/menu/menu.kt create mode 100644 src/main/kotlin/note/Note.kt create mode 100644 src/main/kotlin/note/NotesMenu.kt create mode 100644 src/main/kotlin/storage/Storage.kt diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml new file mode 100644 index 00000000..d966f1b5 --- /dev/null +++ b/.idea/caches/deviceStreaming.xml @@ -0,0 +1,1450 @@ + + + + + + \ No newline at end of file diff --git a/.idea/markdown.xml b/.idea/markdown.xml new file mode 100644 index 00000000..c61ea334 --- /dev/null +++ b/.idea/markdown.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 9c8e7400..49f7d9bd 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,5 @@ - - + \ No newline at end of file diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt index aade54c5..e67cdeb8 100644 --- a/src/main/kotlin/Main.kt +++ b/src/main/kotlin/Main.kt @@ -1,3 +1,5 @@ -fun main(args: Array) { - println("Hello World!") -} \ No newline at end of file +import archive.showArchiveMenu + +fun main() { + showArchiveMenu() +} diff --git a/src/main/kotlin/archive/Archive.kt b/src/main/kotlin/archive/Archive.kt new file mode 100644 index 00000000..b61d2693 --- /dev/null +++ b/src/main/kotlin/archive/Archive.kt @@ -0,0 +1,8 @@ +package archive + +import note.Note + +data class Archive( + val name: String, + val notes: MutableList = mutableListOf() +) diff --git a/src/main/kotlin/archive/ArchiveMenu.kt b/src/main/kotlin/archive/ArchiveMenu.kt new file mode 100644 index 00000000..0f4f16a6 --- /dev/null +++ b/src/main/kotlin/archive/ArchiveMenu.kt @@ -0,0 +1,41 @@ +package archive + +import menu.Menu +import storage.Storage +import note.showNotesMenu +import java.util.Scanner +import kotlin.system.exitProcess + +fun showArchiveMenu() { + val scanner = Scanner(System.`in`) + + while (true) { + val menu = Menu("Список архивов") + + menu.addItem("Создать архив") { + print("Введите название архива: ") + val name = scanner.nextLine().trim() + + if (name.isEmpty()) { + println("Ошибка: имя архива не может быть пустым.") + return@addItem + } + + Storage.archives.add(Archive(name)) + println("Архив \"$name\" создан.") + } + + Storage.archives.forEach { archive -> + menu.addItem(archive.name) { + showNotesMenu(archive) + } + } + + menu.addItem("Выход из программы") { + println("Завершение работы.") + exitProcess(0) + } + + menu.show() + } +} diff --git a/src/main/kotlin/menu/menu.kt b/src/main/kotlin/menu/menu.kt new file mode 100644 index 00000000..0e61a5dd --- /dev/null +++ b/src/main/kotlin/menu/menu.kt @@ -0,0 +1,41 @@ +package menu + +import java.util.Scanner + +class Menu( + private val title: String, + private val items: MutableList Unit>> = mutableListOf() +) { + private val scanner = Scanner(System.`in`) + + fun addItem(name: String, action: () -> Unit) { + items.add(name to action) + } + + fun show() { + while (true) { + println(" $title ") + items.forEachIndexed { index, item -> + println("${index + 1}. ${item.first}") + } + + print("Введите номер пункта: ") + val input = scanner.nextLine() + + val choice = input.toIntOrNull() + if (choice == null) { + println("Ошибка: нужно вводить цифру.") + continue + } + + if (choice !in 1..items.size) { + println("Ошибка: пункта с таким номером нет.") + continue + } + + items[choice - 1].second.invoke() + return + } + } +} + diff --git a/src/main/kotlin/note/Note.kt b/src/main/kotlin/note/Note.kt new file mode 100644 index 00000000..711c0450 --- /dev/null +++ b/src/main/kotlin/note/Note.kt @@ -0,0 +1,6 @@ +package note + +data class Note( + val name: String, + val content: String +) diff --git a/src/main/kotlin/note/NotesMenu.kt b/src/main/kotlin/note/NotesMenu.kt new file mode 100644 index 00000000..0a624217 --- /dev/null +++ b/src/main/kotlin/note/NotesMenu.kt @@ -0,0 +1,45 @@ +package note + +import archive.Archive +import menu.Menu +import java.util.Scanner + +fun showNotesMenu(archive: Archive) { + val scanner = Scanner(System.`in`) + + while (true) { + val menu = Menu("Заметки архива \"${archive.name}\"") + + menu.addItem("Создать заметку") { + print("Введите название заметки: ") + val name = scanner.nextLine().trim() + if (name.isEmpty()) { + println("Ошибка: имя заметки не может быть пустым.") + return@addItem + } + + print("Введите текст заметки: ") + val content = scanner.nextLine().trim() + if (content.isEmpty()) { + println("Ошибка: текст заметки не может быть пустым.") + return@addItem + } + + archive.notes.add(Note(name, content)) + println("Заметка \"$name\" создана.") + } + + archive.notes.forEach { note -> + menu.addItem(note.name) { + println("\n=== ${note.name} ===") + println(note.content) + } + } + + menu.addItem("Назад") { + return@addItem + } + + menu.show() + } +} diff --git a/src/main/kotlin/storage/Storage.kt b/src/main/kotlin/storage/Storage.kt new file mode 100644 index 00000000..98b3e283 --- /dev/null +++ b/src/main/kotlin/storage/Storage.kt @@ -0,0 +1,7 @@ +package storage + +import archive.Archive + +object Storage { + val archives = mutableListOf() +} From adf5fa23fa198ed285f2cbb5e4637b4489bdc891 Mon Sep 17 00:00:00 2001 From: Abel <9moonin9@gmail.com> Date: Wed, 11 Mar 2026 19:22:07 +0500 Subject: [PATCH 2/6] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=207=20?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B8=D0=BD=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/note/NotesMenu.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/note/NotesMenu.kt b/src/main/kotlin/note/NotesMenu.kt index 0a624217..2ab96263 100644 --- a/src/main/kotlin/note/NotesMenu.kt +++ b/src/main/kotlin/note/NotesMenu.kt @@ -5,7 +5,7 @@ import menu.Menu import java.util.Scanner fun showNotesMenu(archive: Archive) { - val scanner = Scanner(System.`in`) + val scanner = Scanner(System.`in`) // while (true) { val menu = Menu("Заметки архива \"${archive.name}\"") From 0e874b1d3371fcda1ac9cd07d9bbb122eb665361 Mon Sep 17 00:00:00 2001 From: Abel <9moonin9@gmail.com> Date: Thu, 12 Mar 2026 21:27:39 +0500 Subject: [PATCH 3/6] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=207=20?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B8=D0=BD=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/menu/menu.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/menu/menu.kt b/src/main/kotlin/menu/menu.kt index 0e61a5dd..95e0cee5 100644 --- a/src/main/kotlin/menu/menu.kt +++ b/src/main/kotlin/menu/menu.kt @@ -33,7 +33,7 @@ class Menu( continue } - items[choice - 1].second.invoke() + items[choice - 1].second.invoke() // return } } From 1e44446a9b6a7bb5fcce1f1695a1926270770202 Mon Sep 17 00:00:00 2001 From: Abel <9moonin9@gmail.com> Date: Fri, 13 Mar 2026 18:30:41 +0500 Subject: [PATCH 4/6] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=207=20?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B8=D0=BD=D1=82=20=D0=B8=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/menu/menu.kt | 3 +-- src/main/kotlin/note/NotesMenu.kt | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/menu/menu.kt b/src/main/kotlin/menu/menu.kt index 95e0cee5..0279359e 100644 --- a/src/main/kotlin/menu/menu.kt +++ b/src/main/kotlin/menu/menu.kt @@ -33,8 +33,7 @@ class Menu( continue } - items[choice - 1].second.invoke() // - return + items[choice - 1].second.invoke() / } } } diff --git a/src/main/kotlin/note/NotesMenu.kt b/src/main/kotlin/note/NotesMenu.kt index 2ab96263..6a2f6d28 100644 --- a/src/main/kotlin/note/NotesMenu.kt +++ b/src/main/kotlin/note/NotesMenu.kt @@ -37,7 +37,7 @@ fun showNotesMenu(archive: Archive) { } menu.addItem("Назад") { - return@addItem + return@showNotesMenu } menu.show() From a614621edee3e9be7ba24d9552f08da17ff20b06 Mon Sep 17 00:00:00 2001 From: Abel <9moonin9@gmail.com> Date: Sun, 15 Mar 2026 22:48:28 +0500 Subject: [PATCH 5/6] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=207=20?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B8=D0=BD=D1=82=20=D0=B8=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/caches/deviceStreaming.xml | 12 ++++++++++++ src/main/kotlin/menu/menu.kt | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml index d966f1b5..f883ea2f 100644 --- a/.idea/caches/deviceStreaming.xml +++ b/.idea/caches/deviceStreaming.xml @@ -764,6 +764,18 @@