Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Початковий рівень має незалежну модель у пам’яті, наступні – PostgreSQL і DAO. Всі предметні поля, інваріанти та звіти визначено в умові; не підмінюйте їх абстрактною таблицею «назва–значення» без потрібної поведінки.
Варіанти
Варіант 1. Проєкти IT-компанії
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Проєкти IT-компанії»: проєкти й працівники в TableView, локальна модель у пам’яті. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: projectId, назва, бюджет у копійках, employeeId; призначення працівника лише до наявного проєкту, бюджет невід’ємний; звіт кількості працівників за проєктом.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Проєкти IT-компанії» з PostgreSQL: проєкти й працівники в TableView, DAO PostgreSQL. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: projectId, назва, бюджет у копійках, employeeId; призначення працівника лише до наявного проєкту, бюджет невід’ємний; звіт кількості працівників за проєктом.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Проєкти IT-компанії» на PostgreSQL: проєкти й працівники в TableView, DAO PostgreSQL. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: projectId, назва, бюджет у копійках, employeeId; призначення працівника лише до наявного проєкту, бюджет невід’ємний; звіт кількості працівників за проєктом. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 2. Шкільна олімпіада
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Шкільна олімпіада»: учасники, бали журі, рейтинг через прив’язки. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: participantId, ім’я, бал 0..100; повторний id відхилити; рейтинг за балом, потім id, звіт кількості учасників і середнього.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Шкільна олімпіада» з PostgreSQL: учасники, бали журі, рейтинг через прив’язки. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: participantId, ім’я, бал 0..100; повторний id відхилити; рейтинг за балом, потім id, звіт кількості учасників і середнього.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Шкільна олімпіада» на PostgreSQL: учасники, бали журі, рейтинг через прив’язки. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: participantId, ім’я, бал 0..100; повторний id відхилити; рейтинг за балом, потім id, звіт кількості учасників і середнього. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 3. Адресна книга
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Адресна книга»: контакти, пошук FilteredList, збереження в пам’яті. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: contactId, ім’я, email; email непорожній і унікальний; пошук за частиною імені, звіт контактів за першою літерою.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Адресна книга» з PostgreSQL: контакти, пошук FilteredList, збереження в БД. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: contactId, ім’я, email; email непорожній і унікальний; пошук за частиною імені, звіт контактів за першою літерою.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Адресна книга» на PostgreSQL: контакти, пошук FilteredList, збереження в БД. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: contactId, ім’я, email; email непорожній і унікальний; пошук за частиною імені, звіт контактів за першою літерою. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 4. Кондитерська
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Кондитерська»: замовлення тортів, калькуляція вартості прив’язками. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: orderId, назва торта, маса в грамах, ціна за кілограм у копійках; маса додатна, ціна невід’ємна; вартість з округленням HALF_UP, звіт сум замовлень.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Кондитерська» з PostgreSQL: замовлення тортів, калькуляція вартості прив’язками. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: orderId, назва торта, маса в грамах, ціна за кілограм у копійках; маса додатна, ціна невід’ємна; вартість з округленням HALF_UP, звіт сум замовлень.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Кондитерська» на PostgreSQL: замовлення тортів, калькуляція вартості прив’язками. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: orderId, назва торта, маса в грамах, ціна за кілограм у копійках; маса додатна, ціна невід’ємна; вартість з округленням HALF_UP, звіт сум замовлень. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 5. Особисті фінанси
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Особисті фінанси»: рахунки, перекази в транзакції, діаграма витрат. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: accountId, назва, баланс у копійках; вигаданий переказ між різними рахунками не може зробити залишок від’ємним; звіт оборотів, без фінансових рекомендацій.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Особисті фінанси» з PostgreSQL: рахунки, перекази в транзакції, діаграма витрат. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: accountId, назва, баланс у копійках; вигаданий переказ між різними рахунками не може зробити залишок від’ємним; звіт оборотів, без фінансових рекомендацій.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Особисті фінанси» на PostgreSQL: рахунки, перекази в транзакції, діаграма витрат. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: accountId, назва, баланс у копійках; вигаданий переказ між різними рахунками не може зробити залишок від’ємним; звіт оборотів, без фінансових рекомендацій. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 6. Пекарня
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Пекарня»: вироби, партії, продаж і залишки за день. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: productId, назва, вироблено, продано; 0 не більше продано не більше вироблено; операція продажу перевіряє залишок, звіт залишків за день.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Пекарня» з PostgreSQL: вироби, партії, продаж і залишки за день. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: productId, назва, вироблено, продано; 0 не більше продано не більше вироблено; операція продажу перевіряє залишок, звіт залишків за день.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Пекарня» на PostgreSQL: вироби, партії, продаж і залишки за день. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: productId, назва, вироблено, продано; 0 не більше продано не більше вироблено; операція продажу перевіряє залишок, звіт залишків за день. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 7. Шаховий клуб
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Шаховий клуб»: гравці, партії, перерахунок рейтингу Ело. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: playerId, ім’я, умовний рейтинг, результат партії 0/0.5/1; різні гравці, формула нового рейтингу R+20*(S-E), E=1/(1+10^((Rother-R)/400)); звіт партій.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Шаховий клуб» з PostgreSQL: гравці, партії, перерахунок рейтингу Ело. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: playerId, ім’я, умовний рейтинг, результат партії 0/0.5/1; різні гравці, формула нового рейтингу R+20*(S-E), E=1/(1+10^((Rother-R)/400)); звіт партій.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Шаховий клуб» на PostgreSQL: гравці, партії, перерахунок рейтингу Ело. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: playerId, ім’я, умовний рейтинг, результат партії 0/0.5/1; різні гравці, формула нового рейтингу R+20*(S-E), E=1/(1+10^((Rother-R)/400)); звіт партій. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 8. Дитячий садок
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Дитячий садок»: групи, діти, облік відвідувань. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: childId, вигадане ім’я, groupId, дата присутності; не дублювати дитину на одну дату, лише синтетичні дані; звіт відвідувань групи.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Дитячий садок» з PostgreSQL: групи, діти, облік відвідувань. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: childId, вигадане ім’я, groupId, дата присутності; не дублювати дитину на одну дату, лише синтетичні дані; звіт відвідувань групи.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Дитячий садок» на PostgreSQL: групи, діти, облік відвідувань. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: childId, вигадане ім’я, groupId, дата присутності; не дублювати дитину на одну дату, лише синтетичні дані; звіт відвідувань групи. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 9. Прокат спорядження
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Прокат спорядження»: лижі й намети, оренди, звіт повернень. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: itemId, назва, дата видачі й повернення; одна активна оренда на предмет, повернення не раніше видачі; звіт неповерненого.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Прокат спорядження» з PostgreSQL: лижі й намети, оренди, звіт повернень. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: itemId, назва, дата видачі й повернення; одна активна оренда на предмет, повернення не раніше видачі; звіт неповерненого.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Прокат спорядження» на PostgreSQL: лижі й намети, оренди, звіт повернень. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: itemId, назва, дата видачі й повернення; одна активна оренда на предмет, повернення не раніше видачі; звіт неповерненого. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 10. Трекер завдань
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Трекер завдань»: статуси, дедлайни, фільтри та сортування. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: taskId, назва, статус TODO/DOING/DONE, ISO-дедлайн; порожню назву відхилити; перехід у DONE і звіт кількостей за статусом.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Трекер завдань» з PostgreSQL: статуси, дедлайни, фільтри та сортування. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: taskId, назва, статус TODO/DOING/DONE, ISO-дедлайн; порожню назву відхилити; перехід у DONE і звіт кількостей за статусом.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Трекер завдань» на PostgreSQL: статуси, дедлайни, фільтри та сортування. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: taskId, назва, статус TODO/DOING/DONE, ISO-дедлайн; порожню назву відхилити; перехід у DONE і звіт кількостей за статусом. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 11. Гуртожиток
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Гуртожиток»: кімнати, поселення, оплата й вільні місця. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: roomId, місткість, residentId, дата поселення; не перевищувати місткість і не поселяти мешканця двічі; звіт вільних місць.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Гуртожиток» з PostgreSQL: кімнати, поселення, оплата й вільні місця. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: roomId, місткість, residentId, дата поселення; не перевищувати місткість і не поселяти мешканця двічі; звіт вільних місць.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Гуртожиток» на PostgreSQL: кімнати, поселення, оплата й вільні місця. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: roomId, місткість, residentId, дата поселення; не перевищувати місткість і не поселяти мешканця двічі; звіт вільних місць. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 12. Каталог подкастів
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Каталог подкастів»: випуски, прослуховування, пошук за темами. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: episodeId, назва, тема, тривалість у секундах, прослухано; тривалість додатна; позначити прослуханим і звіт за темами.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Каталог подкастів» з PostgreSQL: випуски, прослуховування, пошук за темами. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: episodeId, назва, тема, тривалість у секундах, прослухано; тривалість додатна; позначити прослуханим і звіт за темами.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Каталог подкастів» на PostgreSQL: випуски, прослуховування, пошук за темами. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: episodeId, назва, тема, тривалість у секундах, прослухано; тривалість додатна; позначити прослуханим і звіт за темами. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 13. Щоденник харчування
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Щоденник харчування»: прийоми їжі, калорії, графік за тиждень. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: entryId, дата, назва, умовна енергія невід’ємна; лише вигадані дані; звіт сум за днем без дієтичних або медичних порад.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Щоденник харчування» з PostgreSQL: прийоми їжі, калорії, графік за тиждень. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: entryId, дата, назва, умовна енергія невід’ємна; лише вигадані дані; звіт сум за днем без дієтичних або медичних порад.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Щоденник харчування» на PostgreSQL: прийоми їжі, калорії, графік за тиждень. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: entryId, дата, назва, умовна енергія невід’ємна; лише вигадані дані; звіт сум за днем без дієтичних або медичних порад. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 14. Садівник
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Садівник»: рослини, догляд, календар поливу з нагадуваннями. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: plantId, назва, дата останнього поливу, заданий інтервал днів; інтервал додатний; обчислити наступну дату й звіт прострочених на явно задану дату.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Садівник» з PostgreSQL: рослини, догляд, календар поливу з нагадуваннями. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: plantId, назва, дата останнього поливу, заданий інтервал днів; інтервал додатний; обчислити наступну дату й звіт прострочених на явно задану дату.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Садівник» на PostgreSQL: рослини, догляд, календар поливу з нагадуваннями. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: plantId, назва, дата останнього поливу, заданий інтервал днів; інтервал додатний; обчислити наступну дату й звіт прострочених на явно задану дату. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 15. Мовна школа
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Мовна школа»: групи, рівні, слухачі та заповненість груп. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: groupId, рівень enum A1/A2/B1/B2, місткість, studentId; не перевищувати місткість; зарахування і звіт заповненості.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Мовна школа» з PostgreSQL: групи, рівні, слухачі та заповненість груп. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: groupId, рівень enum A1/A2/B1/B2, місткість, studentId; не перевищувати місткість; зарахування і звіт заповненості.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Мовна школа» на PostgreSQL: групи, рівні, слухачі та заповненість груп. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: groupId, рівень enum A1/A2/B1/B2, місткість, studentId; не перевищувати місткість; зарахування і звіт заповненості. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 16. Електронний журнал
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Електронний журнал»: оцінки, середні бали через Bindings. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: studentId, предмет, бал 0..100; додати оцінку й показати середнє через прив’язку; відсутність оцінок не дорівнює нулю.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Електронний журнал» з PostgreSQL: оцінки, середні бали через Bindings. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: studentId, предмет, бал 0..100; додати оцінку й показати середнє через прив’язку; відсутність оцінок не дорівнює нулю.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Електронний журнал» на PostgreSQL: оцінки, середні бали через Bindings. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: studentId, предмет, бал 0..100; додати оцінку й показати середнє через прив’язку; відсутність оцінок не дорівнює нулю. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 17. Театр
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Театр»: вистави, актори, розподіл ролей. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: playId, назва, roleId, actorId; роль вистави має не більше одного поточного виконавця; призначення і звіт ролей без виконавця.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Театр» з PostgreSQL: вистави, актори, розподіл ролей. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: playId, назва, roleId, actorId; роль вистави має не більше одного поточного виконавця; призначення і звіт ролей без виконавця.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Театр» на PostgreSQL: вистави, актори, розподіл ролей. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: playId, назва, roleId, actorId; роль вистави має не більше одного поточного виконавця; призначення і звіт ролей без виконавця. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 18. Ремонт техніки
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Ремонт техніки»: квитанції, статуси ремонту, рахунок клієнту. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: receiptId, пристрій, статус NEW/WORK/DONE, ціна в копійках; ціна невід’ємна, перехід DONE потребує опису роботи; звіт завершених ремонтів.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Ремонт техніки» з PostgreSQL: квитанції, статуси ремонту, рахунок клієнту. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: receiptId, пристрій, статус NEW/WORK/DONE, ціна в копійках; ціна невід’ємна, перехід DONE потребує опису роботи; звіт завершених ремонтів.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Ремонт техніки» на PostgreSQL: квитанції, статуси ремонту, рахунок клієнту. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: receiptId, пристрій, статус NEW/WORK/DONE, ціна в копійках; ціна невід’ємна, перехід DONE потребує опису роботи; звіт завершених ремонтів. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 19. Ліцензії ПЗ
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Ліцензії ПЗ»: ліцензії, терміни дії, попередження про закінчення. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: licenseId, продукт, кількість місць, ISO-кінець дії; місця додатні; фільтр закінчення до заданої дати й звіт активних місць.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Ліцензії ПЗ» з PostgreSQL: ліцензії, терміни дії, попередження про закінчення. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: licenseId, продукт, кількість місць, ISO-кінець дії; місця додатні; фільтр закінчення до заданої дати й звіт активних місць.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Ліцензії ПЗ» на PostgreSQL: ліцензії, терміни дії, попередження про закінчення. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: licenseId, продукт, кількість місць, ISO-кінець дії; місця додатні; фільтр закінчення до заданої дати й звіт активних місць. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 20. Автошкола
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Автошкола»: курсанти, інструктори, розклад занять. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: lessonId, traineeId, instructorId, початок і кінець; кінець після початку, заняття інструктора не перетинаються; звіт годин.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Автошкола» з PostgreSQL: курсанти, інструктори, розклад занять. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: lessonId, traineeId, instructorId, початок і кінець; кінець після початку, заняття інструктора не перетинаються; звіт годин.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Автошкола» на PostgreSQL: курсанти, інструктори, розклад занять. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: lessonId, traineeId, instructorId, початок і кінець; кінець після початку, заняття інструктора не перетинаються; звіт годин. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 21. Зоомагазин
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Зоомагазин»: товари, постачальники, замовлення поповнення. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: productId, назва, залишок, мінімальний запас, supplierId; кількості невід’ємні; замовити різницю до мінімуму й звіт поповнення.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Зоомагазин» з PostgreSQL: товари, постачальники, замовлення поповнення. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: productId, назва, залишок, мінімальний запас, supplierId; кількості невід’ємні; замовити різницю до мінімуму й звіт поповнення.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Зоомагазин» на PostgreSQL: товари, постачальники, замовлення поповнення. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: productId, назва, залишок, мінімальний запас, supplierId; кількості невід’ємні; замовити різницю до мінімуму й звіт поповнення. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 22. Оренда офісів
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Оренда офісів»: приміщення, фільтри за площею й ціною. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: officeId, площа, ціна в копійках, зайнято; площа додатна; фільтр площі й ціни, оренда лише вільного офісу, звіт вільної площі.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Оренда офісів» з PostgreSQL: приміщення, фільтри за площею й ціною. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: officeId, площа, ціна в копійках, зайнято; площа додатна; фільтр площі й ціни, оренда лише вільного офісу, звіт вільної площі.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Оренда офісів» на PostgreSQL: приміщення, фільтри за площею й ціною. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: officeId, площа, ціна в копійках, зайнято; площа додатна; фільтр площі й ціни, оренда лише вільного офісу, звіт вільної площі. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 23. Клуб настільних ігор
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Клуб настільних ігор»: ігри, зустрічі, записи учасників. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: meetingId, назва гри, дата, місткість, memberId; не дублювати учасника й не перевищувати місткість; звіт вільних місць зустрічей.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Клуб настільних ігор» з PostgreSQL: ігри, зустрічі, записи учасників. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: meetingId, назва гри, дата, місткість, memberId; не дублювати учасника й не перевищувати місткість; звіт вільних місць зустрічей.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Клуб настільних ігор» на PostgreSQL: ігри, зустрічі, записи учасників. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: meetingId, назва гри, дата, місткість, memberId; не дублювати учасника й не перевищувати місткість; звіт вільних місць зустрічей. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 24. Медична лабораторія
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Медична лабораторія»: зразки, результати, позначення відхилень від норми. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: sampleId, вигадана мітка, скінченне значення, задані навчальні нижня й верхня межі; нижня не більша за верхню; позначити вихід за інтервал без медичних висновків, звіт кількостей.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Медична лабораторія» з PostgreSQL: зразки, результати, позначення відхилень від норми. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: sampleId, вигадана мітка, скінченне значення, задані навчальні нижня й верхня межі; нижня не більша за верхню; позначити вихід за інтервал без медичних висновків, звіт кількостей.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Медична лабораторія» на PostgreSQL: зразки, результати, позначення відхилень від норми. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: sampleId, вигадана мітка, скінченне значення, задані навчальні нижня й верхня межі; нижня не більша за верхню; позначити вихід за інтервал без медичних висновків, звіт кількостей. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 25. Волонтерський центр
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Волонтерський центр»: волонтери, зміни, розподіл завдань. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: shiftId, дата, місткість, volunteerId, задача; не призначати волонтера двічі на зміну й не перевищувати місткість; звіт незаповнених змін.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Волонтерський центр» з PostgreSQL: волонтери, зміни, розподіл завдань. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: shiftId, дата, місткість, volunteerId, задача; не призначати волонтера двічі на зміну й не перевищувати місткість; звіт незаповнених змін.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Волонтерський центр» на PostgreSQL: волонтери, зміни, розподіл завдань. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: shiftId, дата, місткість, volunteerId, задача; не призначати волонтера двічі на зміну й не перевищувати місткість; звіт незаповнених змін. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 26. Підбір персоналу
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Підбір персоналу»: вакансії, кандидати, етапи співбесід. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: vacancyId, назва, candidateId, етап NEW/INTERVIEW/OFFER/REJECTED; одна заявка кандидата на вакансію; змінити етап і звіт за етапами.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Підбір персоналу» з PostgreSQL: вакансії, кандидати, етапи співбесід. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: vacancyId, назва, candidateId, етап NEW/INTERVIEW/OFFER/REJECTED; одна заявка кандидата на вакансію; змінити етап і звіт за етапами.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Підбір персоналу» на PostgreSQL: вакансії, кандидати, етапи співбесід. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: vacancyId, назва, candidateId, етап NEW/INTERVIEW/OFFER/REJECTED; одна заявка кандидата на вакансію; змінити етап і звіт за етапами. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 27. Навчальний словник
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Навчальний словник»: терміни, категорії, режим карток. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: termId, термін, визначення, категорія; термін непорожній і унікальний; показати/приховати визначення картки й звіт кількостей за категоріями.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Навчальний словник» з PostgreSQL: терміни, категорії, режим карток. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: termId, термін, визначення, категорія; термін непорожній і унікальний; показати/приховати визначення картки й звіт кількостей за категоріями.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Навчальний словник» на PostgreSQL: терміни, категорії, режим карток. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: termId, термін, визначення, категорія; термін непорожній і унікальний; показати/приховати визначення картки й звіт кількостей за категоріями. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 28. Метеоспостереження
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Метеоспостереження»: вимірювання, LineChart, імпорт із CSV. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: measureId, ISO-дата, скінченна температура; унікальна дата; імпорт CSV із повідомленням неправильних рядків, LineChart і звіт min/max/mean.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Метеоспостереження» з PostgreSQL: вимірювання, LineChart, імпорт із CSV. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: measureId, ISO-дата, скінченна температура; унікальна дата; імпорт CSV із повідомленням неправильних рядків, LineChart і звіт min/max/mean.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Метеоспостереження» на PostgreSQL: вимірювання, LineChart, імпорт із CSV. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: measureId, ISO-дата, скінченна температура; унікальна дата; імпорт CSV із повідомленням неправильних рядків, LineChart і звіт min/max/mean. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 29. Колекція монет
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Колекція монет»: монети, країни, оцінка вартості колекції. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: coinId, країна, рік 1..2100, оцінка в копійках; оцінка невід’ємна; фільтр країни й звіт загальної умовної оцінки без інвестиційних порад.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Колекція монет» з PostgreSQL: монети, країни, оцінка вартості колекції. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: coinId, країна, рік 1..2100, оцінка в копійках; оцінка невід’ємна; фільтр країни й звіт загальної умовної оцінки без інвестиційних порад.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Колекція монет» на PostgreSQL: монети, країни, оцінка вартості колекції. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: coinId, країна, рік 1..2100, оцінка в копійках; оцінка невід’ємна; фільтр країни й звіт загальної умовної оцінки без інвестиційних порад. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Варіант 30. Диспетчерська таксі
1. Початковий рівень. Створити самостійний JavaFX-застосунок «Диспетчерська таксі»: водії, замовлення, статуси й прив’язки. Виділити модель і контролер, реалізувати список основних сутностей та форму додавання з властивостями JavaFX. Користувач вводить зазначені поля, бачить новий рядок або помилку; зберігати дані в пам’яті й блокувати некоректну дію прив’язкою. Поля: rideId, driverId, адреси, статус NEW/ASSIGNED/DONE; водій не може мати дві активні поїздки; призначення й звіт завершених поїздок.
2. Базовий рівень. Створити самостійний JavaFX/MVC-застосунок «Диспетчерська таксі» з PostgreSQL: водії, замовлення, статуси й прив’язки. Реалізувати FXML-список, форму редагування, пошук через FilteredList і сортування TableView. Передавати DAO конструктором або фабрикою контролерів; JDBC виконувати в Task. Після успіху оновити список, після помилки зберегти чернетку; перевірити Cancel, невідомий id і повторний запуск. Поля: rideId, driverId, адреси, статус NEW/ASSIGNED/DONE; водій не може мати дві активні поїздки; призначення й звіт завершених поїздок.
3. Високий рівень. Створити самостійний JavaFX/MVC-застосунок «Диспетчерська таксі» на PostgreSQL: водії, замовлення, статуси й прив’язки. Виділити DAO-інтерфейс, сервіс транзакцій, FXML-контролери та модель властивостей; реалізувати CRUD, предметний звіт, Task/Service, стан зайнятості й захист від повторного натискання. Додати --config=path, --report=from:to, --help для звіту без GUI: вирівняна таблиця й підсумки, помилки до stderr, коди 0/2/1. Написати тести сервісу з fake і JDBC-тести відкату та ключів, перевірити скасування й закриття ресурсів; підготувати jpackage-артефакт та описати шлях конфігурації. Поля: rideId, driverId, адреси, статус NEW/ASSIGNED/DONE; водій не може мати дві активні поїздки; призначення й звіт завершених поїздок. Звіт фільтрує головні записи за доданим полем createdOn (ISO-дата створення), обидві межі включно, from не пізніше to. Параметр --report без значення запитує ці дати з клавіатури; EOF дає код 2.
Порядок виконання та захисту
- Опишіть модель, сценарії Save/Cancel і межі транзакцій.
- Реалізуйте та перевірте сервіс без запуску JavaFX.
- Побудуйте FXML і прив’язки, перевірте фактичне завантаження.
- Виконуйте JDBC у Task з незалежними копіями параметрів.
- Перевірте порожній ввід, подвійне натискання, невідомий id, збій БД, скасування та повторне відкриття застосунку.
- Подайте схему БД, код, тести, інструкцію конфігурації й справжні скріншоти синтетичних даних без секретів.