Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Шкільна бібліотека
1. Початковий рівень. Створити консольну Kotlin-програму «Шкільна бібліотека» на SQLite та Exposed DSL: книги, читачі, видачі та прострочення. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Шкільна бібліотека»: книги, читачі, видачі та прострочення. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Шкільна бібліотека»: книги, читачі, видачі та прострочення. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 2. Інтернет-магазин
1. Початковий рівень. Створити консольну Kotlin-програму «Інтернет-магазин» на SQLite та Exposed DSL: товари, замовлення, позиції й звіти продажів. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Інтернет-магазин»: товари, замовлення, позиції й звіти продажів. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Інтернет-магазин»: товари, замовлення, позиції й звіти продажів. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 3. Деканат
1. Початковий рівень. Створити консольну Kotlin-програму «Деканат» на SQLite та Exposed DSL: студенти, групи, оцінки та рейтинг. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Деканат»: студенти, групи, оцінки та рейтинг. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Деканат»: студенти, групи, оцінки та рейтинг. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 4. Поліклініка
1. Початковий рівень. Створити консольну Kotlin-програму «Поліклініка» на SQLite та Exposed DSL: лікарі, пацієнти й записи на прийом. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Поліклініка»: лікарі, пацієнти й записи на прийом. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Поліклініка»: лікарі, пацієнти й записи на прийом. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 5. Автопарк
1. Початковий рівень. Створити консольну Kotlin-програму «Автопарк» на SQLite та Exposed DSL: автомобілі, водії, рейси та пробіг. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Автопарк»: автомобілі, водії, рейси та пробіг. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Автопарк»: автомобілі, водії, рейси та пробіг. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 6. Кінотеатр
1. Початковий рівень. Створити консольну Kotlin-програму «Кінотеатр» на SQLite та Exposed DSL: фільми, сеанси, квитки й заповненість залів. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Кінотеатр»: фільми, сеанси, квитки й заповненість залів. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Кінотеатр»: фільми, сеанси, квитки й заповненість залів. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 7. Спортклуб
1. Початковий рівень. Створити консольну Kotlin-програму «Спортклуб» на SQLite та Exposed DSL: члени, абонементи й відвідування. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Спортклуб»: члени, абонементи й відвідування. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Спортклуб»: члени, абонементи й відвідування. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 8. Готель
1. Початковий рівень. Створити консольну Kotlin-програму «Готель» на SQLite та Exposed DSL: номери, гості, бронювання без перетину дат. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Готель»: номери, гості, бронювання без перетину дат. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Готель»: номери, гості, бронювання без перетину дат. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 9. Ветеринарна клініка
1. Початковий рівень. Створити консольну Kotlin-програму «Ветеринарна клініка» на SQLite та Exposed DSL: тварини, власники, візити. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Ветеринарна клініка»: тварини, власники, візити. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Ветеринарна клініка»: тварини, власники, візити. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 10. Склад
1. Початковий рівень. Створити консольну Kotlin-програму «Склад» на SQLite та Exposed DSL: товари, постачальники й рух запасів. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Склад»: товари, постачальники й рух запасів. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Склад»: товари, постачальники й рух запасів. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 11. Футбольна ліга
1. Початковий рівень. Створити консольну Kotlin-програму «Футбольна ліга» на SQLite та Exposed DSL: команди, матчі, турнірна таблиця SQL-запитом. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Футбольна ліга»: команди, матчі, турнірна таблиця SQL-запитом. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Футбольна ліга»: команди, матчі, турнірна таблиця SQL-запитом. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 12. Музична колекція
1. Початковий рівень. Створити консольну Kotlin-програму «Музична колекція» на SQLite та Exposed DSL: виконавці, альбоми, треки й тривалості. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Музична колекція»: виконавці, альбоми, треки й тривалості. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Музична колекція»: виконавці, альбоми, треки й тривалості. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 13. Ресторан
1. Початковий рівень. Створити консольну Kotlin-програму «Ресторан» на SQLite та Exposed DSL: меню, столики, замовлення та виторг. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Ресторан»: меню, столики, замовлення та виторг. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Ресторан»: меню, столики, замовлення та виторг. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 14. Автосервіс
1. Початковий рівень. Створити консольну Kotlin-програму «Автосервіс» на SQLite та Exposed DSL: клієнти, авто, ремонти й запчастини. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Автосервіс»: клієнти, авто, ремонти й запчастини. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Автосервіс»: клієнти, авто, ремонти й запчастини. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 15. Турагенція
1. Початковий рівень. Створити консольну Kotlin-програму «Турагенція» на SQLite та Exposed DSL: тури, клієнти, продажі за сезонами. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Турагенція»: тури, клієнти, продажі за сезонами. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Турагенція»: тури, клієнти, продажі за сезонами. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 16. Курси підвищення кваліфікації
1. Початковий рівень. Створити консольну Kotlin-програму «Курси підвищення кваліфікації» на SQLite та Exposed DSL: слухачі, курси, сертифікати. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Курси підвищення кваліфікації»: слухачі, курси, сертифікати. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Курси підвищення кваліфікації»: слухачі, курси, сертифікати. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 17. Прокат велосипедів
1. Початковий рівень. Створити консольну Kotlin-програму «Прокат велосипедів» на SQLite та Exposed DSL: станції, велосипеди, оренди. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Прокат велосипедів»: станції, велосипеди, оренди. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Прокат велосипедів»: станції, велосипеди, оренди. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 18. Облік проєктів
1. Початковий рівень. Створити консольну Kotlin-програму «Облік проєктів» на SQLite та Exposed DSL: проєкти, завдання, працівники, години. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Облік проєктів»: проєкти, завдання, працівники, години. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Облік проєктів»: проєкти, завдання, працівники, години. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 19. Кафедра
1. Початковий рівень. Створити консольну Kotlin-програму «Кафедра» на SQLite та Exposed DSL: викладачі, дисципліни та навантаження. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Кафедра»: викладачі, дисципліни та навантаження. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Кафедра»: викладачі, дисципліни та навантаження. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 20. Аптека
1. Початковий рівень. Створити консольну Kotlin-програму «Аптека» на SQLite та Exposed DSL: ліки, рецепти, продажі й терміни придатності. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Аптека»: ліки, рецепти, продажі й терміни придатності. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Аптека»: ліки, рецепти, продажі й терміни придатності. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 21. Авіакомпанія
1. Початковий рівень. Створити консольну Kotlin-програму «Авіакомпанія» на SQLite та Exposed DSL: рейси, літаки, пасажири та місця. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Авіакомпанія»: рейси, літаки, пасажири та місця. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Авіакомпанія»: рейси, літаки, пасажири та місця. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 22. Агенція нерухомості
1. Початковий рівень. Створити консольну Kotlin-програму «Агенція нерухомості» на SQLite та Exposed DSL: об’єкти, агенти, угоди. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Агенція нерухомості»: об’єкти, агенти, угоди. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Агенція нерухомості»: об’єкти, агенти, угоди. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 23. Шкільна їдальня
1. Початковий рівень. Створити консольну Kotlin-програму «Шкільна їдальня» на SQLite та Exposed DSL: меню, учні, облік харчування. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Шкільна їдальня»: меню, учні, облік харчування. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Шкільна їдальня»: меню, учні, облік харчування. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 24. Облік обладнання
1. Початковий рівень. Створити консольну Kotlin-програму «Облік обладнання» на SQLite та Exposed DSL: інвентар, відповідальні, переміщення. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Облік обладнання»: інвентар, відповідальні, переміщення. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Облік обладнання»: інвентар, відповідальні, переміщення. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 25. Волонтерський центр
1. Початковий рівень. Створити консольну Kotlin-програму «Волонтерський центр» на SQLite та Exposed DSL: волонтери, заходи, відпрацьовані години. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Волонтерський центр»: волонтери, заходи, відпрацьовані години. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Волонтерський центр»: волонтери, заходи, відпрацьовані години. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 26. Ігрова платформа
1. Початковий рівень. Створити консольну Kotlin-програму «Ігрова платформа» на SQLite та Exposed DSL: ігри, гравці, досягнення. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Ігрова платформа»: ігри, гравці, досягнення. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Ігрова платформа»: ігри, гравці, досягнення. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 27. Благодійний фонд
1. Початковий рівень. Створити консольну Kotlin-програму «Благодійний фонд» на SQLite та Exposed DSL: збори, донори, внески й звіти. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Благодійний фонд»: збори, донори, внески й звіти. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Благодійний фонд»: збори, донори, внески й звіти. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 28. Автошкола
1. Початковий рівень. Створити консольну Kotlin-програму «Автошкола» на SQLite та Exposed DSL: учні, інструктори, заняття, іспити. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Автошкола»: учні, інструктори, заняття, іспити. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Автошкола»: учні, інструктори, заняття, іспити. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 29. Фермерське господарство
1. Початковий рівень. Створити консольну Kotlin-програму «Фермерське господарство» на SQLite та Exposed DSL: поля, культури, врожайність. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Фермерське господарство»: поля, культури, врожайність. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Фермерське господарство»: поля, культури, врожайність. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Варіант 30. Служба доставки
1. Початковий рівень. Створити консольну Kotlin-програму «Служба доставки» на SQLite та Exposed DSL: посилки, відділення, історія статусів. Для основної сутності визначити id, назву й одну числову характеристику. З клавіатури додавати записи, переглядати їх за id, редагувати характеристику та видаляти за id. Відхиляти порожні назви й невідомі ключі, після повторного запуску показувати збережені записи.
2. Базовий рівень. Створити консольну Kotlin-програму «Служба доставки»: посилки, відділення, історія статусів. Описати щонайменше три пов’язані таблиці SQLite із первинними й зовнішніми ключами. Через меню вводити об’єкти та операції, змінювати й видаляти записи відповідно до правил зв’язків. Побудувати DSL-звіт із join та агрегатом кількості або точної суми за основною сутністю; включити групи без операцій. Показати впорядковану таблицю й перевірити невідомі зовнішні ключі.
3. Високий рівень. Створити самостійну Kotlin-програму «Служба доставки»: посилки, відділення, історія статусів. Виділити репозиторій Exposed/SQLite, реалізувати CRUD і складену предметну операцію, яка змінює дві таблиці в одній транзакції. Приймати --db, --action=add|list|report, --record=field:value,..., --help; без аргументів надати меню. Виводити вирівняний звіт із підсумками, помилки до stderr, коди 0/2/1 для успіху, введення та збою. Перевірити відкат після першої зміни, дублікати, зовнішні ключі, повторне відкриття файлу й порожню базу; додати версійну міграцію нового поля без втрати даних.
Порядок виконання та захисту роботи
- Побудувати схему таблиць, ключів і предметних обмежень.
- Створити SQLite-базу з увімкненими зовнішніми ключами.
- Реалізувати репозиторій, CRUD та передбачений варіантом звіт.
- Підтвердити збереження після повторного відкриття файла.
- Перевірити дублікати, невідомі ключі, порожні результати й відкат.
- Пояснити SQL двох запитів та межу кожної транзакції.