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 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/kotlin/menu/menu.kt b/src/main/kotlin/menu/menu.kt
index 0279359e..6dcc7983 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() //
}
}
}
From acf371d2b412b82c9617e5c4b821d47ad668042b Mon Sep 17 00:00:00 2001
From: Abel <9moonin9@gmail.com>
Date: Mon, 16 Mar 2026 00:25:19 +0500
Subject: [PATCH 6/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=20=D0=9F=D0=9E=D0=A1?=
=?UTF-8?q?=D0=9B=D0=95=D0=94=D0=9D=D0=98=D0=99=20=D0=A8=D0=90=D0=9D=D0=A1?=
=?UTF-8?q?=20=D0=92=D0=AB=D0=99=D0=A2=D0=98=20=D0=98=D0=97=20=D0=9D=D0=95?=
=?UTF-8?q?=D0=91=D0=AB=D0=A2=D0=98=D0=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/deviceManager.xml | 13 +++++++++++++
src/main/kotlin/archive/ArchiveMenu.kt | 2 +-
src/main/kotlin/menu/menu.kt | 4 ++--
src/main/kotlin/note/NotesMenu.kt | 7 ++++---
4 files changed, 20 insertions(+), 6 deletions(-)
create mode 100644 .idea/deviceManager.xml
diff --git a/.idea/deviceManager.xml b/.idea/deviceManager.xml
new file mode 100644
index 00000000..91f95584
--- /dev/null
+++ b/.idea/deviceManager.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/kotlin/archive/ArchiveMenu.kt b/src/main/kotlin/archive/ArchiveMenu.kt
index 0f4f16a6..5ed3fbb6 100644
--- a/src/main/kotlin/archive/ArchiveMenu.kt
+++ b/src/main/kotlin/archive/ArchiveMenu.kt
@@ -10,7 +10,7 @@ fun showArchiveMenu() {
val scanner = Scanner(System.`in`)
while (true) {
- val menu = Menu("Список архивов")
+ val menu = Menu("Список архивов:")
menu.addItem("Создать архив") {
print("Введите название архива: ")
diff --git a/src/main/kotlin/menu/menu.kt b/src/main/kotlin/menu/menu.kt
index 6dcc7983..4d8fd03f 100644
--- a/src/main/kotlin/menu/menu.kt
+++ b/src/main/kotlin/menu/menu.kt
@@ -33,8 +33,8 @@ class Menu(
continue
}
- items[choice - 1].second.invoke() //
+ items[choice - 1].second.invoke()
+ break
}
}
}
-
diff --git a/src/main/kotlin/note/NotesMenu.kt b/src/main/kotlin/note/NotesMenu.kt
index 6a2f6d28..56186818 100644
--- a/src/main/kotlin/note/NotesMenu.kt
+++ b/src/main/kotlin/note/NotesMenu.kt
@@ -5,9 +5,10 @@ import menu.Menu
import java.util.Scanner
fun showNotesMenu(archive: Archive) {
- val scanner = Scanner(System.`in`) //
+ val scanner = Scanner(System.`in`)
+ var exit = false
- while (true) {
+ while (!exit) {
val menu = Menu("Заметки архива \"${archive.name}\"")
menu.addItem("Создать заметку") {
@@ -37,7 +38,7 @@ fun showNotesMenu(archive: Archive) {
}
menu.addItem("Назад") {
- return@showNotesMenu
+ exit = true
}
menu.show()