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
1,462 changes: 1,462 additions & 0 deletions .idea/caches/deviceStreaming.xml

Large diffs are not rendered by default.

13 changes: 13 additions & 0 deletions .idea/deviceManager.xml

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

8 changes: 8 additions & 0 deletions .idea/markdown.xml

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

3 changes: 1 addition & 2 deletions .idea/misc.xml

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

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

fun main() {
showArchiveMenu()
}
8 changes: 8 additions & 0 deletions src/main/kotlin/archive/Archive.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package archive

import note.Note

data class Archive(
val name: String,
val notes: MutableList<Note> = mutableListOf()
)
41 changes: 41 additions & 0 deletions src/main/kotlin/archive/ArchiveMenu.kt
Original file line number Diff line number Diff line change
@@ -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()
}
}
40 changes: 40 additions & 0 deletions src/main/kotlin/menu/menu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package menu

import java.util.Scanner

class Menu(
private val title: String,
private val items: MutableList<Pair<String, () -> 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()
break
}
}
}
6 changes: 6 additions & 0 deletions src/main/kotlin/note/Note.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package note

data class Note(
val name: String,
val content: String
)
46 changes: 46 additions & 0 deletions src/main/kotlin/note/NotesMenu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package note

import archive.Archive
import menu.Menu
import java.util.Scanner

fun showNotesMenu(archive: Archive) {
val scanner = Scanner(System.`in`)
var exit = false

while (!exit) {
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("Назад") {
exit = true
}

menu.show()
}
}
7 changes: 7 additions & 0 deletions src/main/kotlin/storage/Storage.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package storage

import archive.Archive

object Storage {
val archives = mutableListOf<Archive>()
}