Консольное приложение для банка. Позволяет аутентифицироваться в системе, изменять данные аутентификации, создавать счета и переводить средства между счетами, как своими, так и чужими. Транзакция на счёт другого банка обезопашена с учётом работы в многопоточной среде. Также есть функционал формирования выписки за месяц, год или весь период существования счёта в формате pdf или txt. Есть функционал пополнения счёта в "банкомате" и вывода денег со счёта. После каждой транзакции формируется чек, который помещается в папку check в корне проекта. Выписки помещаются в папку excerpt. Код содержит документацию в формате JavaDoc.
Запуск проекта осуществляется в методе main класса project/controllers/Runner.java. Всё управление происходит через консоль путём ввода числового кода одного из предложенных вариантов.
Банковская логика проекта не позволяет удалять и изменять счета, поэтому для сущности Account реализовано только добавление счёта. На вход подаётся счёт с заданными валютой, датой открытия, id банка-владельца и id пользователя-владельца.
Невозможно удалить пользователя, поэтому реализовано создание и изменение сущности User. На создание подаётся пользователь с заданными именем, id банка-владельца, паролем аккаунта. Изменить у существующего пользователя можно или пароль, или имя. У локального пользователя изменяется одно из полей и изменённый пользователь отправляется в базу данных по своему id.
Реализовано создание, изменение и удаление сущности Bank. Для создания подаётся сущность с заданным названием банка. Для изменения подаётся сущность с заданным названием и id, по id в базе данных обновляется название. Для удаления подаётся id, по нему в базе данных удаляется строка с банком. Каскадом удаляются и пользователи со счетами, принадлежащими этому банку.
Сущность Transaction техническая и не подлежит ручному регулированию.