From 371a9638a023c8d0aa86f675e242d82aa21dec66 Mon Sep 17 00:00:00 2001 From: Saharosa Date: Wed, 30 Apr 2025 17:06:02 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=B2=D1=80=D0=BE=D0=B4=D0=B5=20=D0=B3?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B2=D1=8B=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/caches/deviceStreaming.xml | 619 +++++++++++++++++++++++++ .idea/misc.xml | 2 +- src/main/kotlin/Archive.kt | 3 + src/main/kotlin/ArchiveScreen.kt | 24 + src/main/kotlin/CreateArchiveScreen.kt | 16 + src/main/kotlin/CreateNoteScreen.kt | 26 ++ src/main/kotlin/Lst.kt | 2 + src/main/kotlin/Main.kt | 5 +- src/main/kotlin/Note.kt | 2 + src/main/kotlin/NotesScreen.kt | 24 + src/main/kotlin/Screen.kt | 17 + src/main/kotlin/ScreenOfNote.kt | 13 + src/main/kotlin/ScreenPrototype.kt | 3 + src/main/kotlin/fun.kt | 16 + 14 files changed, 770 insertions(+), 2 deletions(-) create mode 100644 .idea/caches/deviceStreaming.xml create mode 100644 src/main/kotlin/Archive.kt create mode 100644 src/main/kotlin/ArchiveScreen.kt create mode 100644 src/main/kotlin/CreateArchiveScreen.kt create mode 100644 src/main/kotlin/CreateNoteScreen.kt create mode 100644 src/main/kotlin/Lst.kt create mode 100644 src/main/kotlin/Note.kt create mode 100644 src/main/kotlin/NotesScreen.kt create mode 100644 src/main/kotlin/Screen.kt create mode 100644 src/main/kotlin/ScreenOfNote.kt create mode 100644 src/main/kotlin/ScreenPrototype.kt create mode 100644 src/main/kotlin/fun.kt diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml new file mode 100644 index 00000000..22baa420 --- /dev/null +++ b/.idea/caches/deviceStreaming.xml @@ -0,0 +1,619 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 9c8e7400..1945ce5f 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..7ae3d5c5 --- /dev/null +++ b/src/main/kotlin/Archive.kt @@ -0,0 +1,3 @@ +class Archive(title: String) : Lst(title){ + val notes: MutableList = mutableListOf() +} \ No newline at end of file diff --git a/src/main/kotlin/ArchiveScreen.kt b/src/main/kotlin/ArchiveScreen.kt new file mode 100644 index 00000000..7ada7440 --- /dev/null +++ b/src/main/kotlin/ArchiveScreen.kt @@ -0,0 +1,24 @@ +import java.util.Scanner + +class ArchiveScreen(val archives: MutableList, var createArchiveScreen: CreateArchiveScreen? = null, var notesScreen: NotesScreen? =null): ScreenPrototype() { + override fun display() { + val size = archives.size + println("Список архивов:\n1. Создать архив") + putList(archives) + println("${archives.size+2}. Выход") + val choise = Scanner(System.`in`).nextLine() + when(choise?.toIntOrNull()){ + 1->createArchiveScreen?.display() + in 2..archives.size+1-> { + notesScreen!!.archive = archives[choise!!.toIntOrNull()!!-2] + notesScreen?.display() + } + archives.size+2-> return + else -> { + println("Некорректный ввод") + this.display() + } + } + } + +} diff --git a/src/main/kotlin/CreateArchiveScreen.kt b/src/main/kotlin/CreateArchiveScreen.kt new file mode 100644 index 00000000..780501b5 --- /dev/null +++ b/src/main/kotlin/CreateArchiveScreen.kt @@ -0,0 +1,16 @@ +import java.util.Scanner + +class CreateArchiveScreen(val archives: MutableList, val archiveScreen: ArchiveScreen): ScreenPrototype() { + override fun display() { + println("\nВведите название архива:\n1. Выход ") + var title = getTitle() + when (title?.toIntOrNull()) { + 1 -> archiveScreen.display() + else -> { + if (archives.add(Archive(title))) println("Архив $title успешно добавлен") + else println("Что то пошло не так") + archiveScreen.display() + } + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/CreateNoteScreen.kt b/src/main/kotlin/CreateNoteScreen.kt new file mode 100644 index 00000000..f4fee8bd --- /dev/null +++ b/src/main/kotlin/CreateNoteScreen.kt @@ -0,0 +1,26 @@ +import java.util.Scanner + +class CreateNoteScreen(val notesScreen: NotesScreen): ScreenPrototype(){ + var notes: MutableList? = null + set(value){ + field = value + } + override fun display() { + println("\nВведите имя заметки\n1. Выход") + var title = getTitle() + when(title?.toIntOrNull()){ + 1->notesScreen.display() + else -> { + println("Введите текст для заметки") + var text = Scanner(System.`in`).nextLine() + while(title==null){ + println("Содержание заметки не может быть пустым") + text = Scanner(System.`in`).nextLine() + } + if(notes!!.add(Note(title,text))) println("Заметка $title успешно добавлен") + else println("Что то пошло не так") + notesScreen.display() + } + } + } +} diff --git a/src/main/kotlin/Lst.kt b/src/main/kotlin/Lst.kt new file mode 100644 index 00000000..d51d3427 --- /dev/null +++ b/src/main/kotlin/Lst.kt @@ -0,0 +1,2 @@ +open class Lst(val title: String) { +} \ No newline at end of file diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt index aade54c5..ccafc74a 100644 --- a/src/main/kotlin/Main.kt +++ b/src/main/kotlin/Main.kt @@ -1,3 +1,6 @@ +import com.sun.source.tree.WhileLoopTree + fun main(args: Array) { - println("Hello World!") + val screen: Screen = Screen() + screen.archiveScreen.display() } \ 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..6c649a32 --- /dev/null +++ b/src/main/kotlin/Note.kt @@ -0,0 +1,2 @@ +class Note (title: String, val text: String): Lst(title){ +} \ No newline at end of file diff --git a/src/main/kotlin/NotesScreen.kt b/src/main/kotlin/NotesScreen.kt new file mode 100644 index 00000000..7b9fbb13 --- /dev/null +++ b/src/main/kotlin/NotesScreen.kt @@ -0,0 +1,24 @@ +class NotesScreen(val archiveScreen: ArchiveScreen,var createNoteScreen: CreateNoteScreen? =null,var note: ScreenOfNote? =null): ScreenPrototype(){ + var archive: Archive? = null + set(value) { + field = value + } + override fun display() { + val notes = archive!!.notes + createNoteScreen!!.notes = notes + val size = notes.size + println("\nЗаметки архива ${archive!!.title}:\n1. Создать заметку") + putList(notes) + println("${notes.size+2}. Выход") + val choise = readLine() + when(choise?.toIntOrNull()){ + 1->createNoteScreen?.display() + in 2..notes.size+1-> note?.display(notes[choise?.toIntOrNull()!!-2]) + notes.size+2-> archiveScreen.display() + else -> { + println("Некорректный ввод") + this.display() + } + } + } +} diff --git a/src/main/kotlin/Screen.kt b/src/main/kotlin/Screen.kt new file mode 100644 index 00000000..5a8cc898 --- /dev/null +++ b/src/main/kotlin/Screen.kt @@ -0,0 +1,17 @@ +class Screen { + private val notes: MutableList = mutableListOf() + private val archives: MutableList = mutableListOf() + val archiveScreen: ArchiveScreen = ArchiveScreen(archives) + val createArchiveScreen: CreateArchiveScreen = CreateArchiveScreen(archives,archiveScreen) + val notesScreen: NotesScreen = NotesScreen(archiveScreen) + val createNoteScreen: CreateNoteScreen = CreateNoteScreen(notesScreen) + val note: ScreenOfNote = ScreenOfNote(notesScreen) + init { + archiveScreen.createArchiveScreen = createArchiveScreen + archiveScreen.notesScreen = notesScreen + notesScreen.createNoteScreen = createNoteScreen + notesScreen.note = note + } + //val archivePair: PairScreens = PairScreens(archiveScreen,createArchiveScreen) + //val notePair: PairScreens = PairScreens(notesScreen,createNoteScreen) +} \ No newline at end of file diff --git a/src/main/kotlin/ScreenOfNote.kt b/src/main/kotlin/ScreenOfNote.kt new file mode 100644 index 00000000..96953d8c --- /dev/null +++ b/src/main/kotlin/ScreenOfNote.kt @@ -0,0 +1,13 @@ +import kotlin.system.exitProcess + +class ScreenOfNote(val notesScreen: NotesScreen) : ScreenPrototype(){ + fun display(note: Note) { + println("\n${note.title}\n${note.text}") + println("\n1. Выход") + when(readLine()?.toIntOrNull()){ + 1->notesScreen.display() + else -> println("Некорректный ввод") + } + } + +} diff --git a/src/main/kotlin/ScreenPrototype.kt b/src/main/kotlin/ScreenPrototype.kt new file mode 100644 index 00000000..984b7050 --- /dev/null +++ b/src/main/kotlin/ScreenPrototype.kt @@ -0,0 +1,3 @@ +abstract class ScreenPrototype { + open fun display(){} +} diff --git a/src/main/kotlin/fun.kt b/src/main/kotlin/fun.kt new file mode 100644 index 00000000..249abc9f --- /dev/null +++ b/src/main/kotlin/fun.kt @@ -0,0 +1,16 @@ +import java.util.Scanner + +fun putList(archives: MutableList){ + val size = archives.size + for (i in 2 until size+2){ + println("$i. ${archives[i-2].title}") + } +} +fun getTitle(): String{ + var title = Scanner(System.`in`).nextLine() + while (title.isBlank()) { + println("Название заметки не может быть пустым") + title = Scanner(System.`in`).nextLine() + } + return title +} \ No newline at end of file From a30d8a67507bcdfa0c0c8edcc9d256f69b396474 Mon Sep 17 00:00:00 2001 From: Saharosa Date: Wed, 30 Apr 2025 17:10:45 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=B2=D1=80=D0=BE=D0=B4=D0=B5=20=D0=B3?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B2=D1=8B=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/CreateArchiveScreen.kt | 6 ++---- src/main/kotlin/NotesScreen.kt | 11 ++++------- src/main/kotlin/ScreenOfNote.kt | 4 +--- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/main/kotlin/CreateArchiveScreen.kt b/src/main/kotlin/CreateArchiveScreen.kt index 780501b5..e7b58553 100644 --- a/src/main/kotlin/CreateArchiveScreen.kt +++ b/src/main/kotlin/CreateArchiveScreen.kt @@ -1,10 +1,8 @@ -import java.util.Scanner - class CreateArchiveScreen(val archives: MutableList, val archiveScreen: ArchiveScreen): ScreenPrototype() { override fun display() { println("\nВведите название архива:\n1. Выход ") - var title = getTitle() - when (title?.toIntOrNull()) { + val title = getTitle() + when (title.toIntOrNull()) { 1 -> archiveScreen.display() else -> { if (archives.add(Archive(title))) println("Архив $title успешно добавлен") diff --git a/src/main/kotlin/NotesScreen.kt b/src/main/kotlin/NotesScreen.kt index 7b9fbb13..95f2985b 100644 --- a/src/main/kotlin/NotesScreen.kt +++ b/src/main/kotlin/NotesScreen.kt @@ -1,20 +1,17 @@ -class NotesScreen(val archiveScreen: ArchiveScreen,var createNoteScreen: CreateNoteScreen? =null,var note: ScreenOfNote? =null): ScreenPrototype(){ +class NotesScreen(private val archiveScreen: ArchiveScreen,var createNoteScreen: CreateNoteScreen? =null,var note: ScreenOfNote? =null): ScreenPrototype(){ var archive: Archive? = null - set(value) { - field = value - } override fun display() { val notes = archive!!.notes createNoteScreen!!.notes = notes val size = notes.size println("\nЗаметки архива ${archive!!.title}:\n1. Создать заметку") putList(notes) - println("${notes.size+2}. Выход") + println("${size+2}. Выход") val choise = readLine() when(choise?.toIntOrNull()){ 1->createNoteScreen?.display() - in 2..notes.size+1-> note?.display(notes[choise?.toIntOrNull()!!-2]) - notes.size+2-> archiveScreen.display() + in 2..size+1-> note?.display(notes[choise?.toIntOrNull()!!-2]) + size+2-> archiveScreen.display() else -> { println("Некорректный ввод") this.display() diff --git a/src/main/kotlin/ScreenOfNote.kt b/src/main/kotlin/ScreenOfNote.kt index 96953d8c..cdc96a16 100644 --- a/src/main/kotlin/ScreenOfNote.kt +++ b/src/main/kotlin/ScreenOfNote.kt @@ -1,6 +1,4 @@ -import kotlin.system.exitProcess - -class ScreenOfNote(val notesScreen: NotesScreen) : ScreenPrototype(){ +class ScreenOfNote(private val notesScreen: NotesScreen) : ScreenPrototype(){ fun display(note: Note) { println("\n${note.title}\n${note.text}") println("\n1. Выход") From 0ed2bc09c0bd688c7708bee08e6077405207d519 Mon Sep 17 00:00:00 2001 From: Saharosa Date: Wed, 30 Apr 2025 17:30:43 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=B2=D1=80=D0=BE=D0=B4=D0=B5=20=D0=B3?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B2=D1=8B=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/ArchiveScreen.kt | 5 ++--- src/main/kotlin/CreateArchiveScreen.kt | 5 +++-- src/main/kotlin/CreateNoteScreen.kt | 13 +++++-------- src/main/kotlin/NotesScreen.kt | 5 ++--- src/main/kotlin/fun.kt | 13 +++++++++++-- 5 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/main/kotlin/ArchiveScreen.kt b/src/main/kotlin/ArchiveScreen.kt index 7ada7440..ee269f35 100644 --- a/src/main/kotlin/ArchiveScreen.kt +++ b/src/main/kotlin/ArchiveScreen.kt @@ -3,9 +3,8 @@ import java.util.Scanner class ArchiveScreen(val archives: MutableList, var createArchiveScreen: CreateArchiveScreen? = null, var notesScreen: NotesScreen? =null): ScreenPrototype() { override fun display() { val size = archives.size - println("Список архивов:\n1. Создать архив") - putList(archives) - println("${archives.size+2}. Выход") + println("Список архивов:\n") + putMenu(archives) val choise = Scanner(System.`in`).nextLine() when(choise?.toIntOrNull()){ 1->createArchiveScreen?.display() diff --git a/src/main/kotlin/CreateArchiveScreen.kt b/src/main/kotlin/CreateArchiveScreen.kt index e7b58553..7f10d73e 100644 --- a/src/main/kotlin/CreateArchiveScreen.kt +++ b/src/main/kotlin/CreateArchiveScreen.kt @@ -1,7 +1,8 @@ class CreateArchiveScreen(val archives: MutableList, val archiveScreen: ArchiveScreen): ScreenPrototype() { override fun display() { - println("\nВведите название архива:\n1. Выход ") - val title = getTitle() + println("\nВведите название архива:") + putExit() + val title = getText() when (title.toIntOrNull()) { 1 -> archiveScreen.display() else -> { diff --git a/src/main/kotlin/CreateNoteScreen.kt b/src/main/kotlin/CreateNoteScreen.kt index f4fee8bd..fd28d081 100644 --- a/src/main/kotlin/CreateNoteScreen.kt +++ b/src/main/kotlin/CreateNoteScreen.kt @@ -6,17 +6,14 @@ class CreateNoteScreen(val notesScreen: NotesScreen): ScreenPrototype(){ field = value } override fun display() { - println("\nВведите имя заметки\n1. Выход") - var title = getTitle() - when(title?.toIntOrNull()){ + println("\nВведите имя заметки") + putExit() + var title = getText() + when(title.toIntOrNull()){ 1->notesScreen.display() else -> { println("Введите текст для заметки") - var text = Scanner(System.`in`).nextLine() - while(title==null){ - println("Содержание заметки не может быть пустым") - text = Scanner(System.`in`).nextLine() - } + var text = getText() if(notes!!.add(Note(title,text))) println("Заметка $title успешно добавлен") else println("Что то пошло не так") notesScreen.display() diff --git a/src/main/kotlin/NotesScreen.kt b/src/main/kotlin/NotesScreen.kt index 95f2985b..8f0b5b17 100644 --- a/src/main/kotlin/NotesScreen.kt +++ b/src/main/kotlin/NotesScreen.kt @@ -4,9 +4,8 @@ class NotesScreen(private val archiveScreen: ArchiveScreen,var createNoteScreen: val notes = archive!!.notes createNoteScreen!!.notes = notes val size = notes.size - println("\nЗаметки архива ${archive!!.title}:\n1. Создать заметку") - putList(notes) - println("${size+2}. Выход") + println("\nЗаметки архива ${archive!!.title}:\n") + putMenu(notes) val choise = readLine() when(choise?.toIntOrNull()){ 1->createNoteScreen?.display() diff --git a/src/main/kotlin/fun.kt b/src/main/kotlin/fun.kt index 249abc9f..d81c73ef 100644 --- a/src/main/kotlin/fun.kt +++ b/src/main/kotlin/fun.kt @@ -6,11 +6,20 @@ fun putList(archives: MutableList){ println("$i. ${archives[i-2].title}") } } -fun getTitle(): String{ +fun getText(): String{ var title = Scanner(System.`in`).nextLine() while (title.isBlank()) { - println("Название заметки не может быть пустым") + println("Данное поле не может быть пустым") title = Scanner(System.`in`).nextLine() } return title +} + +fun putMenu(list: MutableList){ + println("1. Создать") + putList(list) + println("${list.size+2}. Выход") +} +fun putExit(){ + println("Выход") } \ No newline at end of file