-
Notifications
You must be signed in to change notification settings - Fork 716
/
Copy pathMain.kt
139 lines (128 loc) · 5.22 KB
/
Main.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import java.util.Scanner
fun main(args: Array<String>) {
val scanner = Scanner(System.`in`)
val archives = mutableListOf<Archive>()
println("Привет! Это приложение заметки, она умеет хранить архив заметок.")
println("Для выбора действия введи номер.")
while (startProgram(scanner, archives)) {}
scanner.close()
}
fun startProgram(scanner: Scanner, archives: MutableList<Archive>): 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<Archive>) {
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<Archive>) {
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()
}
}
}