diff --git a/.idea/misc.xml b/.idea/misc.xml index 9c8e7400..a6e1098c 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..2a1b406e --- /dev/null +++ b/src/main/kotlin/Archive.kt @@ -0,0 +1 @@ +data class Archive(val nameArchive: String, val notes: MutableList = mutableListOf()) diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt index aade54c5..0b7c4f50 100644 --- a/src/main/kotlin/Main.kt +++ b/src/main/kotlin/Main.kt @@ -1,3 +1,139 @@ +import java.util.Scanner + fun main(args: Array) { - println("Hello World!") + val scanner = Scanner(System.`in`) + val archives = mutableListOf() + println("Привет! Это приложение заметки, она умеет хранить архив заметок.") + println("Для выбора действия введи номер.") + while (startProgram(scanner, archives)) {} + scanner.close() +} + +fun startProgram(scanner: Scanner, archives: MutableList): Boolean{ + while (true) { + println("Вы в главном меню. Выберите действие:") + println("1. Создание и просмотр архива") + println("0. Завершить работу") + val number = tryCatch(scanner) + when (number) { + 1 -> workingWithArchives(scanner, archives) + 0 -> return exitTheProgram() + else -> println("Неверный ввод, попробуйте снова.") + } + } +} + +fun workingWithArchives(scanner: Scanner, archives: MutableList) { + while (true) { + println("Меню архивов.") + if (archives.isEmpty()) { + println("Нет доступных архивов. Создайте архив.") + } else { + println("Список архивов:") + for (index in archives.indices) { + val archive = archives[index] + println("${index + 1}. ${archive.nameArchive}") + } + } + println("${archives.size + 1}. Создать архив") + println("0. Вернуться в главное меню.") + + val number1 = tryCatch(scanner) + + when (number1) { + archives.size + 1 -> createArchive(scanner, archives) + in 1..archives.size -> workingWithNotes(scanner, archives[number1 - 1]) + 0 -> return + else -> println("Неверный ввод, попробуйте снова.") + } + } +} + +fun workingWithNotes(scanner: Scanner, archive: Archive) { + while (true){ + println("Меню заметок для архива: ${archive.nameArchive}.") + if (archive.notes.isEmpty()) { + println("Нет доступных заметок. Создайте заметку.") + } else { + println("Список заметок:") + for (index in archive.notes.indices) { + val note = archive.notes[index] + println("${index + 1}. ${note.nameNote}") + } + } + println("${archive.notes.size + 1}. Создать заметку") + println("0. Вернуться в меню архивов.") + val number2 = tryCatch(scanner) + when (number2) { + in 1..archive.notes.size -> { + contentOfTheNote(archive.notes[number2 - 1]) + } + archive.notes.size + 1 -> createNote(scanner, archive) + 0 -> return + else -> println("Неверный ввод, попробуйте снова.") + } + } +} + +fun contentOfTheNote (note: Note){ + println("Название заметки: \"${note.nameNote}\"") + println("Содержание: ${note.content}") +} + +fun exitTheProgram(): Boolean { + println("Вы завершили приложение. Ждем вас еще раз, были очень рады!") + return false +} + +fun createArchive(scanner: Scanner, archives: MutableList) { + while (true) { + scanner.nextLine() + println("Введите название архива, который желаете создать:") + val archiveName = scanner.nextLine() + if (archiveName.isNotEmpty()) { + archives.add(Archive(archiveName)) + println("Архив \"$archiveName\" создан.") + break + } else { + println("Ошибка!!!") + println("Название заметки не может быть пустым.") + println("Попробуйте снова.") + } + } +} + +fun createNote(scanner: Scanner, archive: Archive) { + while (true) { + scanner.nextLine() + println("Введите название заметки:") + val noteName = scanner.nextLine() + if (noteName.isNotEmpty()) { + println("Введите содержание заметки:") + val noteContent = scanner.nextLine() + if (noteContent.isNotEmpty()) { + archive.notes.add(Note(noteName, noteContent)) + println("Заметка \"$noteName\" создана в архиве \"${archive.nameArchive}\".") + break + } else { + println("Ошибка!!!") + println("Название заметки не может быть пустым.") + println("Попробуйте снова.") + } + } else { + println("Ошибка!!!") + println("Название заметки не может быть пустым.") + println("Попробуйте снова.") + } + } +} + +fun tryCatch(scanner: Scanner): Int { + while (true) { + try { + return scanner.nextInt() + } catch (e: Exception) { + println("Неверный ввод, попробуйте снова.") + scanner.nextLine() + } + } } \ 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..37f5df3e --- /dev/null +++ b/src/main/kotlin/Note.kt @@ -0,0 +1 @@ +data class Note(val nameNote: String, val content: String)