Skip to content

Sombres21/ProjectJava

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Система управління бібліотечним фондом (Library Management System)

Командний навчальний проєкт з дисципліни «Бази даних» (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

📂 Опис архітектурного рішення (MVC)

Проєкт реалізовано за класичним архітектурним патерном Model-View-Controller:

  1. Model (ua.edu.sumdu.library.model):
    • Book.java — клас предметної області (Книга), що містить атрибути: ID, Назва, Автор, ISBN, Жанр, Рік видання, Доступність. Реалізує строгу бізнес-валідацію.
  2. View (src/main/resources/.../main-view.fxml, style.css):
    • Графічний FXML-інтерфейс у стилі Dark Mode. Забезпечує форми введення, фільтрацію результатів пошуку, кнопки керування таблицею та виведення статусів.
  3. Controller (ua.edu.sumdu.library.controller):
    • MainController.java — обробляє дії користувача (кліки, вибір рядків), координує взаємодію між View та Model. Операції з БД виконуються у фонових потоках (javafx.concurrent.Task) для максимальної плавності UI.
  4. Service/JDBC Layer (ua.edu.sumdu.library.service, ua.edu.sumdu.library.util):
    • DbConnection.java — зчитує налаштування з конфігураційного файлу db.properties та створює підключення.
    • DatabaseService.java — інкапсулює у собі всі SQL CRUD-запити та пошук за двома критеріями.

💾 Схема бази даних (ER-діаграма)

База даних представлена таблицею 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)                       |
+-------------------------------------------------------------+

🎯 Реалізований функціонал (CRUD + Пошук)

  • Create: Додавання нової книги в бібліотечний фонд за допомогою зручної форми валідації.
  • Read / Search:
    • Відображення повного переліку книг у таблиці результатів TableView.
    • Багатокритеріальний пошук: швидка фільтрація за Назвою (частковий збіг), Жанром та Статусом доступності (доступна/видана).
  • Update: Можливість редагування обраної книги. При виборі рядка у таблиці та натисканні «Редагувати», дані автоматично завантажуються у форму.
  • Delete: Видалення книги з бази даних із попереднім підтвердженням дії у спливаючому діалоговому вікні.
  • Валідація: Контроль заповнення обов'язкових полів, відповідності формату ISBN (10 або 13 символів) та коректності року видання.
  • Обробка помилок: Інформативне інформування користувача про успіх операцій або виникнення помилок у статус-барі внизу вікна та через спливаючі повідомлення.

📝 Правила розробки у репозиторії

🪵 Правила роботи з гілками (Branching Rules)

  1. main — стабільна гілка. Сюди не робляться прямі коміти. Код потрапляє виключно через Pull Request із гілки develop.
  2. develop — основна гілка інтеграції.
  3. feature/назва-фічі — персональні гілки розробників для реалізації окремих завдань (наприклад, feature/book-model, feature/jdbc-setup, feature/ui-layout).

✍️ Правила комітів (Commit Messages Guidelines)

Коміти повинні мати зрозумілі префікси англійською або українською мовою:

  • [feat] — додавання нової функціональності
  • [fix] — виправлення багу
  • [refactor] — рефакторинг та покращення структури коду
  • [docs] — робота з документацією, коментарями або Javadoc
  • [test] — написання або виправлення тестів

🔀 Правила злиття гілок (Merge Rules & Pull Requests)

  1. Розробник створює Pull Request (PR) із своєї гілки feature/... в develop.
  2. Принаймні один інший розробник повинен провести Code Review та схвалити зміни.
  3. Всі конфлікти повинні бути вирішені локально перед злиттям.
  4. Після завершення та тестування всіх функцій, Team Lead створює фінальний PR з develop в main.

🚀 Як запустити проєкт локально

Для запуску необхідний встановлений JDK (версії 8 або вище) та Maven.

  1. Клонуйте репозиторій:
    git clone https://github.com/prykhodko-bohdan/library-management.git
    cd library-management
  2. Запустіть юніт-тести для перевірки:
    mvn test
  3. Запустіть додаток:
    mvn clean javafx:run

📚 Документація API (Javadoc)

Технічна документація проєкту згенерована за допомогою Javadoc і доступна за наступним посиланням (якщо увімкнено GitHub Pages):
🔗 Javadoc API Documentation (або відкрийте файл docs/index.html локально у вашому браузері).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages