Командний навчальний проєкт з дисципліни «Бази даних» (GUI-додаток: JavaFX + JDBC + СУБД SQLite).
- Team Lead: Приходько Богдан (координація, ведення репозиторію, проектування БД та архітектури MVC, інтеграційне тестування, написання звітів).
- Developer 1: Крамськой Іван (реалізація графічного інтерфейсу JavaFX FXML, розробка контролера дій MainController, стилізація інтерфейсу).
- Developer 2: Авдасьов Владислав (реалізація JDBC Service-рівня роботи з базою даних, PreparedStatement запити, автоматична ініціалізація схеми, юніт-тести).
- Мова програмування: Java (сумісність від Java 8 до Java 21)
- Інтерфейс користувача (GUI): JavaFX + FXML + CSS
- Доступ до даних: JDBC (з впровадженням
PreparedStatementтаtry-with-resources) - База даних: SQLite (вбудована локальна база даних)
- Збірка проєкту: Maven
- Тестування: JUnit 5
Проєкт реалізовано за класичним архітектурним патерном Model-View-Controller:
- Model (
ua.edu.sumdu.library.model):Book.java— клас предметної області (Книга), що містить атрибути: ID, Назва, Автор, ISBN, Жанр, Рік видання, Доступність. Реалізує строгу бізнес-валідацію.
- View (
src/main/resources/.../main-view.fxml,style.css):- Графічний FXML-інтерфейс у стилі Dark Mode. Забезпечує форми введення, фільтрацію результатів пошуку, кнопки керування таблицею та виведення статусів.
- Controller (
ua.edu.sumdu.library.controller):MainController.java— обробляє дії користувача (кліки, вибір рядків), координує взаємодію між View та Model. Операції з БД виконуються у фонових потоках (javafx.concurrent.Task) для максимальної плавності UI.
- Service/JDBC Layer (
ua.edu.sumdu.library.service,ua.edu.sumdu.library.util):DbConnection.java— зчитує налаштування з конфігураційного файлуdb.propertiesта створює підключення.DatabaseService.java— інкапсулює у собі всі SQL CRUD-запити та пошук за двома критеріями.
База даних представлена таблицею books (книги):
+-------------------------------------------------------------+
| books |
+-------------------------------------------------------------+
| [PK] id : INTEGER (AUTOINCREMENT) |
| title : TEXT (NOT NULL) |
| author : TEXT (NOT NULL) |
| isbn : TEXT (NOT NULL) |
| genre : TEXT |
| year : INTEGER |
| available : BOOLEAN (DEFAULT 1) |
+-------------------------------------------------------------+
- Create: Додавання нової книги в бібліотечний фонд за допомогою зручної форми валідації.
- Read / Search:
- Відображення повного переліку книг у таблиці результатів TableView.
- Багатокритеріальний пошук: швидка фільтрація за Назвою (частковий збіг), Жанром та Статусом доступності (доступна/видана).
- Update: Можливість редагування обраної книги. При виборі рядка у таблиці та натисканні «Редагувати», дані автоматично завантажуються у форму.
- Delete: Видалення книги з бази даних із попереднім підтвердженням дії у спливаючому діалоговому вікні.
- Валідація: Контроль заповнення обов'язкових полів, відповідності формату ISBN (10 або 13 символів) та коректності року видання.
- Обробка помилок: Інформативне інформування користувача про успіх операцій або виникнення помилок у статус-барі внизу вікна та через спливаючі повідомлення.
main— стабільна гілка. Сюди не робляться прямі коміти. Код потрапляє виключно через Pull Request із гілкиdevelop.develop— основна гілка інтеграції.feature/назва-фічі— персональні гілки розробників для реалізації окремих завдань (наприклад,feature/book-model,feature/jdbc-setup,feature/ui-layout).
Коміти повинні мати зрозумілі префікси англійською або українською мовою:
[feat]— додавання нової функціональності[fix]— виправлення багу[refactor]— рефакторинг та покращення структури коду[docs]— робота з документацією, коментарями або Javadoc[test]— написання або виправлення тестів
- Розробник створює Pull Request (PR) із своєї гілки
feature/...вdevelop. - Принаймні один інший розробник повинен провести Code Review та схвалити зміни.
- Всі конфлікти повинні бути вирішені локально перед злиттям.
- Після завершення та тестування всіх функцій, Team Lead створює фінальний PR з
developвmain.
Для запуску необхідний встановлений JDK (версії 8 або вище) та Maven.
- Клонуйте репозиторій:
git clone https://github.com/prykhodko-bohdan/library-management.git cd library-management - Запустіть юніт-тести для перевірки:
mvn test - Запустіть додаток:
mvn clean javafx:run
Технічна документація проєкту згенерована за допомогою Javadoc і доступна за наступним посиланням (якщо увімкнено GitHub Pages):
🔗 Javadoc API Documentation
(або відкрийте файл docs/index.html локально у вашому браузері).