Для простого тестирования и демонстрации доступны следующие среды:
-
Локальная Инстанция Приложения:
- http://158.101.219.58:8080/?continue
- Эта среда позволяет интерактивно тестировать функции приложения непосредственно через веб-браузер.
- Дефолтные учетные данные:
- Email:
tester@tester.com
- Пароль:
password
- Email:
-
Live Demo Приложения:
- https://murzin.tech/?continue
- Доступ к полностью функциональной версии системы управления библиотекой, где вы можете попробовать все доступные функции и проверить их правильную реализацию.
- Дефолтные учетные данные:
- Email:
tester@tester.com
- Пароль:
password
- Email:
Library Management System — это веб-приложение для управления библиотекой. Оно позволяет просматривать каталог библиотеки и выполнять действия с библиотечными материалами и пользователями. 📚👥
Проект создан в рамках учебного семинара:
- Курс: IKT - Программирование на Java
Роли (основа для авторизации):
- Администратор
- Библиотекарь
- Читатель
Доступные операции:
- 🆕 Создание пользователя (добавление нового пользователя)
- ✏️ Редактирование и обновление данных пользователя
- 🗑️ Удаление пользователя
- 🔐 Аутентификация (вход/выход)
- 👀 Показать всех пользователей (с поиском, фильтрацией, сортировкой и пагинацией)
- 📄 Показать детали пользователя для конкретного пользователя
- 🧑💼 Показать детали текущего пользователя (Мои данные)
Доступные операции:
Операция | Изображение |
---|---|
➕ Добавить нового автора | |
✏️ Редактировать и обновлять автора | |
🗑️ Удалить автора | |
👀 Просмотреть всех авторов |
Доступные операции:
Операция | Изображение |
---|---|
➕ Добавить новую категорию | |
✏️ Редактировать и обновлять категорию | |
🗑️ Удалить категорию | |
👀 Просмотреть все категории |
Доступные операции:
Операция | Изображение |
---|---|
➕ Добавить новую работу | |
✏️ Редактировать и обновлять работу | |
🗑️ Удалить работу | |
👀 Просмотреть все работы | |
📦 Просмотреть все копии книг конкретной работы |
Доступные операции:
Операция | Изображение |
---|---|
➕ Добавить новую книгу | |
✏️ Редактировать и обновлять книгу | |
🗑️ Удалить книгу | |
👀 Просмотреть все книги |
Операция | Изображение |
---|---|
🆙 Начать займ | |
🏁 Завершить займ | |
📚 Просмотреть все займы конкретной книги | |
👥 Просмотреть займы по читателю |
- 📩 Отправить письмо "Добро пожаловать" пользователю при создании его аккаунта
- 📬 Отправить письмо "Займ начат" читателю при заимствовании книги
- 📥 Отправить письмо "Займ завершен" читателю при возврате книги
- Backend: Java, Spring Boot, Spring Security
- Frontend: Thymeleaf, Bootstrap, HTML5, CSS3, JavaScript, jQuery
- База данных: Flyway, PostgreSQL
- Контейнеризация: Docker
- IDE: IntelliJ IDEA
База данных для Library Management System состоит из следующих таблиц и связей между ними:
-
Поле Тип Описание id
integer (PK) Уникальный идентификатор категории name
varchar Название категории -
Поле Тип Описание id
integer (PK) Уникальный идентификатор работы title
varchar Название работы description
varchar Описание работы -
Поле Тип Описание id
integer (PK) Уникальный идентификатор автора first_name
varchar Имя автора last_name
varchar Фамилия автора -
Поле Тип Описание id
integer (PK) Уникальный идентификатор книги work_id
integer (FK) Ссылка на работу publisher_name
varchar Название издателя year_of_publishing
timestamp Год издания isbn
varchar ISBN книги book_status
status Статус книги available
boolean Доступность книги -
Поле Тип Описание id
integer (PK) Уникальный идентификатор пользователя first_name
varchar Имя пользователя last_name
varchar Фамилия пользователя password
varchar Пароль пользователя email
varchar Email пользователя date_of_birth
timestamp Дата рождения contact_number
varchar Контактный номер enabled
boolean Статус активации -
Поле Тип Описание id
integer (PK) Уникальный идентификатор займа member_id
integer (FK) Ссылка на читателя librarian_id
integer (FK) Ссылка на библиотекаря book_id
integer (FK) Ссылка на книгу date_issued
timestamp Дата выдачи date_returned
timestamp Дата возврата -
Поле Тип Описание id
integer (PK) Уникальный идентификатор роли name
varchar Название роли (Admin, Librarian, Member) -
Поле Тип Описание user_id
integer (FK) Ссылка на пользователя role_id
integer (FK) Ссылка на роль -
Поле Тип Описание work_id
integer (FK) Ссылка на работу author_id
integer (FK) Ссылка на автора -
Поле Тип Описание work_id
integer (FK) Ссылка на работу category_id
integer (FK) Ссылка на категорию
-
work_author:
work_id
↔️ work.id
author_id
↔️ author.id
-
work_category:
work_id
↔️ work.id
category_id
↔️ category.id
-
book:
work_id
↔️ work.id
-
loan:
member_id
↔️ user.id
(читатель)librarian_id
↔️ user.id
(библиотекарь)book_id
↔️ book.id
-
user_role:
user_id
↔️ user.id
role_id
↔️ role.id
- Первичные ключи (PK) гарантируют уникальность записей в каждой таблице.
- Внешние ключи (FK) обеспечивают связи между таблицами и поддерживают целостность данных.
- Роли и пользователи связаны через промежуточную таблицу
user_role
для реализации авторизации. - Займы (loan) связывают книги, читателей и библиотекарей, отслеживая выдачу и возврат книг.
- Книги (book) связаны с работами (work) и могут иметь несколько категорий и авторов через таблицы
work_category
иwork_author
.
Вам необходимо установить следующее:
- Docker вместе с docker-compose
- Java Development Kit (JDK)
- Maven (если не используется предоставленный Maven Wrapper)
Выполните следующие команды в терминале:
-
Перейдите в папку проекта (выполняется из корневой директории репозитория):
cd library-management-system/
-
Соберите
.jar
файл проекта в папкеtarget
:./mvnw clean package -DskipTests
-
Соберите и запустите Docker-окружение и локальный веб-сервер:
docker-compose up
-
Откройте приложение в браузере: http://localhost:8080/
Если вам нужно изменить код и применить изменения:
-
Остановите и удалите Docker-контейнеры и их тома:
docker-compose down
-
Удалите Docker-образ
library-management-system.jar
:docker rmi library-management-system.jar
-
Повторите шаги 2-4.
Вы можете создать установочные пакеты .deb
и .rpm
с помощью jpackage
. Для этого выполните следующие шаги:
-
Для сборки
.deb
пакета:- Установите
fakeroot
:sudo apt-get update sudo apt-get install fakeroot
- Установите
-
Для сборки
.rpm
пакета:- Установите
rpm-build
:sudo apt-get update sudo apt-get install rpm
- Установите
Выполните следующую команду из корневой директории проекта:
jpackage --input target \
--name LibraryManagementSystem \
--main-jar library-management-system.jar \
--type deb \
--icon assets/images/icon.png \
--dest out_dir
Выполните следующую команду из корневой директории проекта:
jpackage --input target \
--name LibraryManagementSystem \
--main-jar library-management-system.jar \
--type rpm \
--icon assets/images/icon.png \
--dest out_dir
--app-version
: Указать версию приложения.--icon
: Добавить иконку приложения (например,icon.png
).--dest
: Указать директорию для сохранения созданного пакета.
Пример с иконкой:
jpackage --input target \
--name LibraryManagementSystem \
--main-jar library-management-system.jar \
--type deb \
--icon assets/images/icon.png \
--dest out_dir
Примечания:
- Убедитесь, что у вас установлен JDK версии 14 или выше, включающий
jpackage
. jpackage
создает установочные пакеты под ту платформу, на которой он запущен. Для создания.rpm
пакета рекомендуется использовать системы на базе RPM (например, Fedora или CentOS).
Вы можете просматривать базу данных PostgreSQL внутри окна базы данных IntelliJ IDEA следующим образом:
-
Перейдите в:
View -> Tool Windows -> Database
-
Добавьте новый источник данных:
- Нажмите кнопку
+
- Выберите
Data Source from URL
и введите следующие данные:
URL:
jdbc:postgresql:///postgres
Driver:PostgreSQL
- Нажмите кнопку
-
Настройте свойства подключения:
- Username:
postgres
- Password:
postgres
- Database:
postgres
- Host:
localhost
- Port:
5432
- Username:
MailHog Web UI, инструмент для тестирования отправки электронной почты разработчиками, доступен по адресу: http://localhost:8025/
Руководитель проекта, Старший разработчик, Главный архитектор, Технический директор, Менеджер по кофе, Гуру базы данных, Инженер по тестированию, Специалист по деплоям, Дизайнер интерфейсов, Администратор серверов, Главный мотиватор, Ответственный за мемы, Оракул системы, Повелитель багов, Легенда кодинга, Исполнитель танцев с бубном, Чародей коммитов, Сейф-провайдер продакшна, Король консоли, Верховный повелитель логов, Локатор потерянных точек с запятой, Мастер слияний, Документатор хаоса, Ломатель продакшна (по пятницам), Специалист по "работает на моей машине", Властелин веток, Хранитель деплой-ключей, Собиратель стек-трейсов:
- Aleksandr Murzin 😘
Programming in Java
Faculty of Electrical Engineering and Information Technology of STU in Bratislava