PROJECT DESCRIPTION
The task of the final project is to develop a web application that supports the functionality according to the task variant.
Variants
The cash register There are roles: cashier, senior cashier, commodity expert. The commodity expert can create goods and indicate their quantity in the warehouse. The cashier can:
- create order (check);
- add selected products by their code or by product name in the order;
- specify / change the quantity of a certain product or weight;
- close the order (check). The senior cashier can:
- cancel check;
- cancel the goods in the receipt;
- create X and Z reports.
ОПИС ПРОЕКТУ Завдання фінального проекту - розробити веб-застосунок, що підтримує функціональність відповідно до варіанту завдання. Вимоги до реалізації:
- На основі сутностей предметної області створити класи, які їм відповідають.
- Класи і методи повинні мати назви, що відображають їх функціональність, і повинні бути рознесені по пакетам.
- Оформлення коду має відповідати Java Code Convention.
- Інформацію щодо предметної області зберігати у реляційній базі даних (в якості СУБД рекомендується використовувати MySQL або PostgreSQL).
- Для доступу до даних використовувати JDBC API із застосуванням готового або ж розробленого самостійно пулу з'єднань. НЕ допускається використання ORM фреймворків
- Застосунок має підтримувати роботу з кирилицею (бути багатомовним), в тому числі при зберіганні інформації в базі даних: a. повинна бути можливість перемикання мови інтерфейсу; b. повинна бути підтримка введення, виведення і зберігання інформації (в базі даних), записаної на різних мовах; c. в якості мов обрати мінімум дві: одна на основі кирилиці (українська або російська), інша на основі латиниці (англійська).
- Архітектура застосунка повинна відповідати шаблону MVC. НЕ допускається використання MVC-фреймворків
- При реалізації бізнес-логіки необхідно використовувати шаблони проектування: Команда, Стратегія, Фабрика, Будівельник, Сінглтон, Фронт-контролер, Спостерігач, Адаптер та ін. Використання шаблонів повинно бути обґрунтованим
- Використовуючи сервлети і JSP, реалізувати функціональність, наведену в постановці завдання.
- Використовувати Apache Tomcat у якості контейнера сервлетів.
- На сторінках JSP застосовувати теги з бібліотеки JSTL та розроблені власні теги (мінімум: один тег custom tag library і один тег tag file).
- Реалізувати захист від повторної відправки даних на сервер при оновленні сторінки (реалізувати PRG).
- При розробці використовувати сесії, фільтри, слухачі.
- У застосунку повинні бути реалізовані аутентифікація і авторизація, розмежування прав доступу користувачів системи до компонентів програми. Шифрування паролів заохочується.
- Впровадити у проект журнал подій із використанням бібліотеки log4j.
- Код повинен містити коментарі документації (всі класи верхнього рівня, нетривіальні методи і конструктори).
- Застосунок має бути покритим модульними тестами (мінімальний відсоток покриття 40%). Написання інтеграційних тестів заохочуються.
- Реалізувати механізм пагінації сторінок з даними.
- Всі поля введення повинні бути із валідацією даних.
- Застосунок має коректно реагувати на помилки та виключні ситуації різного роду (кінцевий користувач не повинен бачити stack trace на стороні клієнта).
- Самостійне розширення постановки задачі по функціональності заохочується! (додавання капчі, формування звітів у різних форматах, тощо)
- Використання HTML, CSS, JS фреймворків для інтерфейсу користувача (Bootstrap, Materialize, ін.) заохочується! За три дні до моменту старту захистів проектів (інтерв’ю) необхідно підготувати у вигляді окремого файлу схему бази даних, а також надати посилання на репозиторій із проектом