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

Large diffs are not rendered by default.

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.

5 changes: 5 additions & 0 deletions src/main/kotlin/Archive.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

class Archive(val name: String) {
val notes = mutableListOf<Note>()
}

56 changes: 56 additions & 0 deletions src/main/kotlin/ArchiveMenu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@

import menu.NoteMenu
import java.util.Scanner

class ArchiveMenu {

private val archives = mutableListOf<Archive>()
private val scanner = Scanner(System.`in`)

fun start() {
val menu = Menu("Список архивов")

menu.addItem("Создать архив") { createArchive() }
menu.addItem("Открыть архив") { openArchive() }
menu.addItem("Выход") {
println("Выход из программы")
System.exit(0)
}

menu.show()
}

private fun createArchive() {
println("Введите имя архива:")
val name = scanner.nextLine()

if (name.isBlank()) {
println("Имя не может быть пустым")
return
}

archives.add(Archive(name))
println("Архив создан")
}

private fun openArchive() {
if (archives.isEmpty()) {
println("Архивов нет")
return
}

archives.forEachIndexed { index, archive ->
println("$index. ${archive.name}")
}

println("Введите номер архива:")
val index = scanner.nextLine().toIntOrNull()

if (index == null || index !in archives.indices) {
println("Неверный номер")
return
}

NoteMenu(archives[index]).start()
}
}
10 changes: 7 additions & 3 deletions src/main/kotlin/Main.kt
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
fun main(args: Array<String>) {
println("Hello World!")
}


fun main() {
val archiveMenu = ArchiveMenu()
archiveMenu.start()
}
// Д
48 changes: 48 additions & 0 deletions src/main/kotlin/Menu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@



import java.util.Scanner


class Menu(private val title: String) {

private val items = mutableListOf<MenuItem>()
private val scanner = Scanner(System.`in`)

fun addItem(title: String, exit: Boolean = false, action: () -> Unit) {
items.add(MenuItem(title, action, exit))
}

fun show() {

loop@ while (true) {

println("\n$title")

items.forEachIndexed { index, item ->
println("$index. ${item.title}")
}

val input = scanner.nextLine()
val number = input.toIntOrNull()

if (number == null) {
println("Введите цифру")
continue
}

if (number !in items.indices) {
println("Такой цифры нет")
continue
}

val item = items[number]

item.action()

if (item.exit) {
break
}
}
}
}
5 changes: 5 additions & 0 deletions src/main/kotlin/MenuItem.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class MenuItem(
val title: String,
val action: () -> Unit,
val exit: Boolean = false
)
3 changes: 3 additions & 0 deletions src/main/kotlin/Note.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@


class Note(val title: String, val text: String)
90 changes: 90 additions & 0 deletions src/main/kotlin/NoteMenu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package menu

import Archive
import Menu
import Note
import NoteScreen
import java.util.Scanner

class NoteMenu(private val archive: Archive) {

private val scanner = Scanner(System.`in`)

fun start() {
val menu = Menu("Архив: ${archive.name}")

menu.addItem("Создать заметку") { createNote() }
menu.addItem("Открыть заметку") { openNote() }
menu.addItem("Назад", exit = true) {}

menu.show()
}

private fun createNote() {
println("Введите название заметки:")
val title = scanner.nextLine()

if (title.isBlank()) {
println("Название не может быть пустым")
return
}

println("Введите текст заметки:")
val text = scanner.nextLine()

if (text.isBlank()) {
println("Текст не может быть пустым")
return
}

archive.notes.add(Note(title, text))
println("Заметка создана")
}

private fun openNote() {
if (archive.notes.isEmpty()) {
println("Заметок нет")
return
}

archive.notes.forEachIndexed { index, note ->
println("$index. ${note.title}")
}

println("Введите номер заметки:")
val index = scanner.nextLine().toIntOrNull()

if (index == null || index !in archive.notes.indices) {
println("Неверный номер")
return
}

NoteScreen(archive.notes[index]).show()
}
}


























11 changes: 11 additions & 0 deletions src/main/kotlin/NoteScreen.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@

import java.util.Scanner

class NoteScreen(private val note: Note) {
fun show() {
println("\nЗаметка: ${note.title}")
println(note.text)
println("\nНажмите Enter чтобы вернуться")
Scanner(System.`in`).nextLine()
}
}