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

Large diffs are not rendered by default.

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.

2 changes: 1 addition & 1 deletion Readme.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
# Пустой репозиторий для работы с Kotlin кодом в Android Studio
# Проектная работа №3 ЯП
39 changes: 39 additions & 0 deletions src/main/kotlin/Archive.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
class Archive(private val name: String) : Menu() {
override val menuTitle: String = "Архив $name"
override val menuItemName: String = "Заметка"

override fun toString(): String {
return name
}
override fun add() {
println("Введите название заметки.")
getText()
?.let { title ->
addItem(Note(title))
println("Добавлена заметка \"$title\".")
}
?: println("Нечитаемое название заметки.")
}

override fun remove() {
println("Введите индекс заметки.")
getIndex()
?.let { index ->
removeItem(index)
println("Заметка удалена.")
}
?: println("Неверный индекс заметки.")
}

override fun select() {
println("Введите индекс заметки.")
getIndex()
?.let { index -> selectItem(index) }
?: println("Неверный индекс заметки.")
}

override fun show() {
println("Заметки:")
showItem()
}
}
39 changes: 39 additions & 0 deletions src/main/kotlin/ArchiveList.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
class ArchiveList : Menu() {
override val menuTitle: String = "Архивный список"
override val menuItemName: String = "Архив"

override fun toString(): String {
return "Архивный список"
}

override fun add() {
println("Введите название архива.")
getText()
?.let { title ->
addItem(Archive(title))
println("Добавлен архив \"$title\".")
}
?: println("Нечитаемое название архива.")
}

override fun remove() {
println("Введите индекс архива.")
getIndex()
?.let { index ->
removeItem(index)
println("Архив удален.")
}
?: println("Неверный индекс архива.")
}

override fun select() {
println("Введите индекс архива.")
getIndex()
?.let { index -> selectItem(index) }
?: println("Неверный индекс архива.")
}
override fun show() {
println("Архивы:")
showItem()
}
}
8 changes: 6 additions & 2 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!")
import java.util.Scanner

fun main() {
ArchiveList().start()
println("Спасибо что воспользовались приложением 'Заметки' :)")

}
87 changes: 87 additions & 0 deletions src/main/kotlin/Menu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
import java.util.Scanner

abstract class Menu {
private var list: MutableList<Menu> = mutableListOf()
protected val scanner: Scanner = Scanner(System.`in`)

open val menuTitle: String = ""
open val menuItemName:String = ""

fun start() {
showMenu()
handleMenu()
}

protected open fun showMenu() {
println("⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍")
println("$menuTitle:")
println("⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍")
println("1. Создать $menuItemName")
println("2. Убрать $menuItemName")
println("3. Выбрать $menuItemName")
println("4. Показать всё")
println("5. Выйти")
println("⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍")
println("Здесь могли быть рандомные цитаты при каждом запуске, но я пока не умею так делать :(.")
}
protected open fun handleMenu(){
while (true) {
scanner.nextLine().toIntOrNull()
?.let { value ->
when(value) {
1 -> add()
2 -> remove()
3 -> select()
4 -> show()
5 -> return
else -> println("Неверная команда.")
}
showMenu()
}
?: println("Введите число из списка")
}
}
abstract fun add()

abstract fun remove()

abstract fun select()

abstract fun show()

protected fun getText(): String? {
val data: String?
while (scanner.hasNext()) {
data = scanner.nextLine()
return data.ifEmpty { null }
}
return null
}
protected fun getIndex(): Int? {
getText()
?.toIntOrNull()
?.let { index ->
if ((index > 0) && (index <= list.size)) {
return index - 1
} else {
return null
}
}
?: return null
?: return null
}
protected fun addItem(item: Menu) {
list.add(item)
}
protected fun removeItem(index: Int){
list.removeAt(index)
}
protected fun selectItem(index: Int){
list.elementAt(index).start()
}
protected fun showItem() {
var index = 0
for (item in list)
println(" ${++index}: $item")
}
}
51 changes: 51 additions & 0 deletions src/main/kotlin/Note.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
class Note(private val title: String, private var content: String = "") : Menu() {
override fun toString(): String {
return "Название: $title\n" +
"Текст: $content"
}

override fun showMenu() {
println("⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍")
println("Заметка: $title")
println("⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍⚍")
println("1. Показать текст своей заметки")
println("2. Записать текст в свою заметку")
println("3. Убрать текст в своей заметке")
println("4. Назад")

}

override fun handleMenu() {
while (true) {
scanner.nextLine().toIntOrNull()
?.let { value ->
when(value) {
1 -> show()
2 -> add()
3 -> remove()
4 -> return
else -> println("Введите верное число")
}
showMenu()
}
?: println("Введите число")
}
}

override fun add() {
println("Введите текст заметки")
getText()?.let { text -> content = text }
}

override fun remove() {
content = ""
println("Текст удален")
}

override fun select() {}


override fun show() {
println(this)
}
}