# mh06a/bankmanagement-java architecture

> Architecture diagram of the GitHub repository mh06a/bankmanagement-java, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mh06a/bankmanagement-java
- Repository: https://github.com/mh06a/bankmanagement-java

## Overview

This is a Java Swing banking application. A user works through the desktop form to register or log in, then can manage a profile and account, add or withdraw/deposit funds, transfer to beneficiaries, and view statements. Main assembles the UI and domain services; those services use a shared database operations layer backed by a MySQL connection. The excerpts show selected calls, while several modules are represented only by SOURCE INDEX references, so their internal interactions are left unverified.

Main entry points: [`src/Main.java`](https://github.com/mh06a/bankmanagement-java/blob/master/src/Main.java) (Application bootstrap), [`src/BankForm.java`](https://github.com/mh06a/bankmanagement-java/blob/master/src/BankForm.java) (Banking form), [`src/DatabaseOperations.java`](https://github.com/mh06a/bankmanagement-java/blob/master/src/DatabaseOperations.java) (Database operations), [`src/BankAccount.java`](https://github.com/mh06a/bankmanagement-java/blob/master/src/BankAccount.java) (Bank account)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop interface"]
  node_main["Application bootstrap<br/>[Main.java]"]
  node_form["Banking form<br/>[BankForm.java]"]
end

subgraph group_identity["Identity and profile"]
  node_registration["Registration and login<br/>[Registration.java]"]
  node_password["Password management"]
  node_profile["Customer profile<br/>[Profile.java]"]
  node_user_data["User data model<br/>[UserData.java]"]
end

subgraph group_banking["Accounts and transactions"]
  node_account["Bank account<br/>[BankAccount.java]"]
  node_account_mgmt["Account management"]
  node_atm_ops["Transaction operations<br/>[ATMOperations.java]"]
  node_add_funds["Add funds<br/>[AddFunds.java]"]
  node_deposit["Deposit funds<br/>[DepositFunds.java]"]
  node_withdraw["Withdraw funds<br/>[WithdrawFunds.java]"]
  node_transfer["Money transfer<br/>[TransferMoney.java]"]
  node_beneficiaries["Beneficiaries<br/>[Beneficiaries.java]"]
  node_statement["Account statements"]
  node_support["Support service"]
end

subgraph group_data["Persistence"]
  node_db_ops["Database operations"]
  node_db_conn["MySQL connection"]
  node_database[("Bank database")]
end

node_user(("Bank user"))

node_user -->|"uses"| node_form
node_main -->|"constructs"| node_form
node_main -->|"creates"| node_db_conn
node_main -->|"creates"| node_db_ops
node_main -->|"creates"| node_account
node_main -->|"creates"| node_profile
node_main -->|"creates"| node_beneficiaries
node_main -->|"creates"| node_statement
node_main -->|"creates"| node_registration
node_main -->|"creates"| node_password
node_main -->|"creates"| node_add_funds
node_main -->|"creates"| node_withdraw
node_main -->|"creates"| node_deposit
node_main -->|"creates"| node_transfer
node_main -->|"creates"| node_account_mgmt
node_form -->|"calls"| node_profile
node_form -->|"calls"| node_account
node_form -->|"calls"| node_beneficiaries
node_form -->|"calls"| node_statement
node_form -->|"dispatches to"| node_registration
node_profile -->|"reads and updates"| node_account
node_profile -->|"queries and updates"| node_db_ops
node_account -->|"reads and writes"| node_db_ops
node_statement -->|"loads statements"| node_db_ops
node_beneficiaries -->|"manages records"| node_db_ops
node_transfer -->|"verifies recipient"| node_beneficiaries
node_transfer -->|"updates balances"| node_account
node_transfer -->|"records transfer"| node_db_ops
node_registration -->|"checks credentials"| node_db_ops
node_db_ops -->|"uses connection"| node_db_conn
node_db_conn -->|"connects"| node_database
node_user_data -->|"extends model"| node_account
node_form -.->|"delegates to"| node_password
node_form -.->|"dispatches to"| node_add_funds
node_form -.->|"dispatches to"| node_deposit
node_form -.->|"dispatches to"| node_withdraw
node_form -.->|"dispatches to"| node_transfer
node_form -.->|"delegates to"| node_account_mgmt
node_add_funds -.->|"extends"| node_atm_ops
node_deposit -.->|"extends"| node_atm_ops
node_withdraw -.->|"extends"| node_atm_ops
node_atm_ops -->|"checks balance"| node_account
node_atm_ops -->|"verifies recipient"| node_beneficiaries
node_support -.->|"offers support"| node_form

click node_main "https://github.com/mh06a/bankmanagement-java/blob/master/src/Main.java"
click node_form "https://github.com/mh06a/bankmanagement-java/blob/master/src/BankForm.java"
click node_registration "https://github.com/mh06a/bankmanagement-java/blob/master/src/Registration.java"
click node_password "https://github.com/mh06a/bankmanagement-java/blob/master/src/PasswordManagement.java"
click node_profile "https://github.com/mh06a/bankmanagement-java/blob/master/src/Profile.java"
click node_user_data "https://github.com/mh06a/bankmanagement-java/blob/master/src/UserData.java"
click node_account "https://github.com/mh06a/bankmanagement-java/blob/master/src/BankAccount.java"
click node_account_mgmt "https://github.com/mh06a/bankmanagement-java/blob/master/src/AccountManagement.java"
click node_atm_ops "https://github.com/mh06a/bankmanagement-java/blob/master/src/ATMOperations.java"
click node_add_funds "https://github.com/mh06a/bankmanagement-java/blob/master/src/AddFunds.java"
click node_deposit "https://github.com/mh06a/bankmanagement-java/blob/master/src/DepositFunds.java"
click node_withdraw "https://github.com/mh06a/bankmanagement-java/blob/master/src/WithdrawFunds.java"
click node_transfer "https://github.com/mh06a/bankmanagement-java/blob/master/src/TransferMoney.java"
click node_beneficiaries "https://github.com/mh06a/bankmanagement-java/blob/master/src/Beneficiaries.java"
click node_statement "https://github.com/mh06a/bankmanagement-java/blob/master/src/StatementOfAccounts.java"
click node_support "https://github.com/mh06a/bankmanagement-java/blob/master/src/SupportService.java"
click node_db_ops "https://github.com/mh06a/bankmanagement-java/blob/master/src/DatabaseOperations.java"
click node_db_conn "https://github.com/mh06a/bankmanagement-java/blob/master/src/DatabaseConnection.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_form,node_user toneBlue
class node_registration,node_password,node_profile,node_user_data toneAmber
class node_account,node_account_mgmt,node_atm_ops,node_add_funds,node_deposit,node_withdraw,node_transfer,node_beneficiaries,node_statement,node_support toneMint
class node_db_ops,node_db_conn,node_database toneRose
```

## Components

### Desktop interface

- [Application bootstrap](https://github.com/mh06a/bankmanagement-java/blob/master/src/Main.java): `src/Main.java`
- [Banking form](https://github.com/mh06a/bankmanagement-java/blob/master/src/BankForm.java): `src/BankForm.java`

### Identity and profile

- [Registration and login](https://github.com/mh06a/bankmanagement-java/blob/master/src/Registration.java): `src/Registration.java`
- [Password management](https://github.com/mh06a/bankmanagement-java/blob/master/src/PasswordManagement.java): `src/PasswordManagement.java`
- [Customer profile](https://github.com/mh06a/bankmanagement-java/blob/master/src/Profile.java): `src/Profile.java`
- [User data model](https://github.com/mh06a/bankmanagement-java/blob/master/src/UserData.java): `src/UserData.java`

### Accounts and transactions

- [Bank account](https://github.com/mh06a/bankmanagement-java/blob/master/src/BankAccount.java): `src/BankAccount.java`
- [Account management](https://github.com/mh06a/bankmanagement-java/blob/master/src/AccountManagement.java): `src/AccountManagement.java`
- [Transaction operations](https://github.com/mh06a/bankmanagement-java/blob/master/src/ATMOperations.java): `src/ATMOperations.java`
- [Add funds](https://github.com/mh06a/bankmanagement-java/blob/master/src/AddFunds.java): `src/AddFunds.java`
- [Deposit funds](https://github.com/mh06a/bankmanagement-java/blob/master/src/DepositFunds.java): `src/DepositFunds.java`
- [Withdraw funds](https://github.com/mh06a/bankmanagement-java/blob/master/src/WithdrawFunds.java): `src/WithdrawFunds.java`
- [Money transfer](https://github.com/mh06a/bankmanagement-java/blob/master/src/TransferMoney.java): `src/TransferMoney.java`
- [Beneficiaries](https://github.com/mh06a/bankmanagement-java/blob/master/src/Beneficiaries.java): `src/Beneficiaries.java`
- [Account statements](https://github.com/mh06a/bankmanagement-java/blob/master/src/StatementOfAccounts.java): `src/StatementOfAccounts.java`
- [Support service](https://github.com/mh06a/bankmanagement-java/blob/master/src/SupportService.java): `src/SupportService.java`

### Persistence

- [Database operations](https://github.com/mh06a/bankmanagement-java/blob/master/src/DatabaseOperations.java): `src/DatabaseOperations.java`
- [MySQL connection](https://github.com/mh06a/bankmanagement-java/blob/master/src/DatabaseConnection.java): `src/DatabaseConnection.java`
- **Bank database**

### Other components

- **Bank user**

## Connections

- Bank user → Banking form: uses (evidence: `src/BankForm.java`)
- Application bootstrap → Banking form: constructs (evidence: `src/Main.java`)
- Application bootstrap → MySQL connection: creates (evidence: `src/Main.java`)
- Application bootstrap → Database operations: creates (evidence: `src/Main.java`)
- Application bootstrap → Bank account: creates (evidence: `src/Main.java`)
- Application bootstrap → Customer profile: creates (evidence: `src/Main.java`)
- Application bootstrap → Beneficiaries: creates (evidence: `src/Main.java`)
- Application bootstrap → Account statements: creates (evidence: `src/Main.java`)
- Application bootstrap → Registration and login: creates (evidence: `src/Main.java`)
- Application bootstrap → Password management: creates (evidence: `src/Main.java`)
- Application bootstrap → Add funds: creates (evidence: `src/Main.java`)
- Application bootstrap → Withdraw funds: creates (evidence: `src/Main.java`)
- Application bootstrap → Deposit funds: creates (evidence: `src/Main.java`)
- Application bootstrap → Money transfer: creates (evidence: `src/Main.java`)
- Application bootstrap → Account management: creates (evidence: `src/Main.java`)
- Banking form → Customer profile: calls (evidence: `src/BankForm.java`)
- Banking form → Bank account: calls (evidence: `src/BankForm.java`)
- Banking form → Beneficiaries: calls (evidence: `src/BankForm.java`)
- Banking form → Account statements: calls (evidence: `src/BankForm.java`)
- Banking form → Registration and login: dispatches to (evidence: `src/BankForm.java`)
- Customer profile → Bank account: reads and updates (evidence: `src/Profile.java`)
- Customer profile → Database operations: queries and updates (evidence: `src/Profile.java`)
- Bank account → Database operations: reads and writes (evidence: `src/BankAccount.java`)
- Account statements → Database operations: loads statements (evidence: `src/StatementOfAccounts.java`)
- Beneficiaries → Database operations: manages records (evidence: `src/Beneficiaries.java`)
- Money transfer → Beneficiaries: verifies recipient (evidence: `src/TransferMoney.java`)
- Money transfer → Bank account: updates balances (evidence: `src/TransferMoney.java`)
- Money transfer → Database operations: records transfer (evidence: `src/TransferMoney.java`)
- Registration and login → Database operations: checks credentials (evidence: `src/Registration.java`)
- Database operations → MySQL connection: uses connection (evidence: `src/DatabaseOperations.java`)
- MySQL connection → Bank database: connects (evidence: `src/DatabaseConnection.java`)
- User data model → Bank account: extends model (evidence: `src/BankAccount.java`)
- Banking form → Password management: delegates to (evidence: `src/BankForm.java`)
- Banking form → Add funds: dispatches to (evidence: `src/BankForm.java`)
- Banking form → Deposit funds: dispatches to (evidence: `src/BankForm.java`)
- Banking form → Withdraw funds: dispatches to (evidence: `src/BankForm.java`)
- Banking form → Money transfer: dispatches to (evidence: `src/BankForm.java`)
- Banking form → Account management: delegates to (evidence: `src/BankForm.java`)
- Add funds → Transaction operations: extends (evidence: `src/AddFunds.java`)
- Deposit funds → Transaction operations: extends (evidence: `src/DepositFunds.java`)
- Withdraw funds → Transaction operations: extends (evidence: `src/WithdrawFunds.java`)
- Transaction operations → Bank account: checks balance (evidence: `src/ATMOperations.java`)
- Transaction operations → Beneficiaries: verifies recipient (evidence: `src/ATMOperations.java`)
- Support service → Banking form: offers support
