Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
848 changes: 848 additions & 0 deletions .idea/caches/deviceStreaming.xml

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 8 additions & 3 deletions src/main/kotlin/Main.kt
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
fun main(args: Array<String>) {
println("Hello World!")
}
import menus.archivesMenu
import java.util.*

fun main() {
val scanner = Scanner(System.`in`)
println("=== Программа Заметки ===")
archivesMenu(scanner)
}
36 changes: 36 additions & 0 deletions src/main/kotlin/menus/ArchivesMenu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package menus

import models.Archive
import java.util.*

fun archivesMenu(scanner: Scanner) {
val archives = mutableListOf<Archive>()

fun inputNumber(limit: Int): Int {
while (true) {
val input = scanner.nextLine()
val num = input.toIntOrNull()
if (num == null || num !in 0 until limit) {
print("Ошибка: повторите ввод: ")
} else return num
}
}

while (true) {
println("\n--- Список архивов ---")
println("0. Создать архив")
archives.forEachIndexed { i, archive ->
println("${i + 1}. ${archive.name.ifEmpty { "(без имени)" }}")
}
println("${archives.size + 1}. Выход из программы")

when (val choice = inputNumber(archives.size + 2)) {
0 -> createArchiveMenu(archives, scanner)
in 1..archives.size -> notesMenu(archives[choice - 1], scanner)
archives.size + 1 -> {
println("Выход из программы...")
return
}
}
}
}
11 changes: 11 additions & 0 deletions src/main/kotlin/menus/CreateArchiveMenu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package menus

import models.Archive
import java.util.*

fun createArchiveMenu(archives: MutableList<Archive>, scanner: Scanner) {
println("\nВведите название архива (можно оставить пустым):")
val name = scanner.nextLine().trim()
archives.add(Archive(name))
println("Архив добавлен!")
}
16 changes: 16 additions & 0 deletions src/main/kotlin/menus/CreateNoteMenu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package menus

import models.Archive
import models.Note
import java.util.*

fun createNoteMenu(archive: Archive, scanner: Scanner) {
println("\nВведите название новой заметки (можно оставить пустым):")
val name = scanner.nextLine().trim()

println("Введите текст заметки (можно оставить пустым):")
val text = scanner.nextLine().trim()

archive.notes.add(Note(name, text))
println("Заметка добавлена!")
}
31 changes: 31 additions & 0 deletions src/main/kotlin/menus/NotesMenu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package menus

import models.Archive
import java.util.*

fun notesMenu(archive: Archive, scanner: Scanner) {
fun inputNumber(limit: Int): Int {
while (true) {
val input = scanner.nextLine()
val num = input.toIntOrNull()
if (num == null || num !in 0 until limit) {
print("Ошибка: повторите ввод: ")
} else return num
}
}

while (true) {
println("\n--- Архив: ${archive.name.ifEmpty { "(без имени)" }} ---")
println("0. Создать заметку")
archive.notes.forEachIndexed { i, note ->
println("${i + 1}. ${note.name.ifEmpty { "(без названия)" }}")
}
println("${archive.notes.size + 1}. Назад")

when (val choice = inputNumber(archive.notes.size + 2)) {
0 -> createNoteMenu(archive, scanner)
in 1..archive.notes.size -> viewNoteMenu(archive.notes[choice - 1], scanner)
archive.notes.size + 1 -> return
}
}
}
16 changes: 16 additions & 0 deletions src/main/kotlin/menus/ViewNoteMenu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package menus

import models.Note
import java.util.*

fun viewNoteMenu(note: Note, scanner: Scanner) {
while (true) {
println("\n--- Просмотр заметки ---")
println("Название: ${note.name.ifEmpty { "(без названия)" }}")
println("Текст: ${note.text.ifEmpty { "(пусто)" }}")
println("0. Назад")

val input = scanner.nextLine()
if (input == "0") return
}
}
6 changes: 6 additions & 0 deletions src/main/kotlin/models/Archive.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package models

data class Archive(
val name: String,
val notes: MutableList<Note> = mutableListOf()
)
6 changes: 6 additions & 0 deletions src/main/kotlin/models/Note.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package models

data class Note(
val name: String,
val text: String
)