Клиенту требовалось centralized desktop-приложение для автоматизации работы небольшого склада или логистической компании, которое бы решало следующие проблемы:
Отсутствие прозрачности: Невозможно было быстро отследить, кто из сотрудников изменил данные о товаре или где находится заказ клиента.
Смешение обязанностей: Все сотрудники имели равный доступ ко всем функциям, что могло lead к ошибкам и нарушению безопасности данных.
Неэффективный учет: Учет товаров и заказов велся в электронных таблицах (Excel), что было медленно, приводило к ошибкам и усложняло генерацию отчетов.
Отсутствие самообслуживания для клиентов: Клиенты не могли самостоятельно просмотреть ассортимент и оформить заказ, что увеличивало нагрузку на менеджеров.
Ключевые требования:
Реализовать три роли пользователей с четко разграниченными правами: Клиент, Сотрудник склада, Администратор.
Обеспечить клиентам возможность регистрации, просмотра каталога товаров и истории своих заказов.
Предоставить сотрудникам инструменты для полного управления номенклатурой товаров (добавление, изменение, удаление).
Дать администраторам полный контроль над системой: управление пользователями, просмотр аудит-логов по товарам, мониторинг всех заказов.
Обеспечить безопасное хранение паролей.
Разработать интуитивно понятный графический интерфейс
Использовать бесплатную и легковесную базу данных (SQLite)
Мы разработали полнофункциональное desktop-приложение на Java, которое полностью удовлетворяет всем требованиям клиента и структурирует работу компании.
Что было сделано:
1. Проектирование и архитектура:
ERD-диаграмма: Спроектирована и реализована нормализованная схема базы данных в SQLite, включающая таблицы Users, Products, Orders, OrderItems и аудит-поля (added_by, modified_date).
UML-диаграммы: Разработаны диаграммы классов, отражающие объектную модель приложения (сущности User, Product, Order, сервисы и DAO-слои).
2. Реализация backend-логики:
Чистая Java + JDBC: Для максимального контроля и производительности работа с базой данных реализована на чистом JDBC с использованием паттерна DAO (Data Access Object) для изоляции бизнес-логики от логики работы с БД.
Многослойная архитектура: Приложение разделено на слои (Presentation GUI, Service, DAO, Model), что обеспечило чистоту кода, легкое тестирование и возможность расширения.
Безопасность: Внедрена библиотека BCrypt для надежного хеширования и проверки паролей. Пароли в базе данных хранятся только в виде хешей.
3. Разработка пользовательского интерфейса (Java Swing):
Ролевой интерфейс: Реализованы отдельные, адаптированные под задачи главные окна для каждой роли:
Окно клиента: С фокусом на каталог товаров с корзиной и историей заказов.
Окно сотрудника: С панелью управления товарами (CRUD-таблица) и списком заказов для смены их статусов.
Окно администратора: С вкладками для управления пользователями (блокировка, назначение ролей), просмотра полного аудит-лога изменений товаров и генерации отчетов.
Интуитивность: GUI спроектирован с акцентом на простоту использования и минимальное количество кликов для выполнения задач.
4. Ключевые реализованные функции:
Модуль аутентификации: Вход и регистрация с валидацией данных.
Модуль управления товарами: Фильтрация, сортировка, добавление с изображениями (опционально), редактирование с записью автора изменения.
Модуль заказов: Клиент формирует заказ из корзины. Система автоматически проверяет наличие товара на складе. Сотрудник видит заказ и меняет его статус по мере обработки.
Панель администратора: Просмотр статистики (общее количество товаров, заказов, пользователей), экспорт данных в CSV/PDF (опционально), блокировка аккаунтов.
Решение позволило клиенту на 80% сократить время на обработку заказов, исключить ошибки учета, связанные с "человеческим фактором", и повысить безопасность данных. Клиенты получили удобный инструмент для самообслуживания, а руководство — мощный инструмент для контроля и анализа работы склада.