# raman-120/simple-bank-management-system architecture

> Architecture diagram of the GitHub repository raman-120/simple-bank-management-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-24). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/raman-120/simple-bank-management-system
- Repository: https://github.com/raman-120/simple-bank-management-system

## Overview

This is a console banking application. A user registers or logs in, then enters a menu for balance checks, withdrawals, deposits, transfers, and interest calculations. Account and transaction data is stored as serialized users in Info.ser. The sampled source supports the main control flow and persistence links shown; the console is represented as the external interface.

Main entry points: [`BankManagementSystem/src/BankActivities.java`](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java) (Activity menu), [`BankManagementSystem/src/User.java`](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/User.java) (User account data), [`BankManagementSystem/src/Account.java`](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/Account.java) (Registration and login), [`BankManagementSystem/src/SimpleBankManagementSystem.java`](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/SimpleBankManagementSystem.java) (Application entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application flow"]
  node_main["Application entry"]
  node_account["Registration and login<br/>[Account.java]"]
end

subgraph group_banking["Banking operations"]
  node_activities["Activity menu"]
  node_balance["Balance check"]
  node_withdraw["Withdrawal"]
  node_deposit["Deposit"]
  node_transfer["Money transfer"]
  node_interest["Interest calculation"]
  node_user["User account data<br/>[User.java]"]
end

subgraph group_persistence["Serialized state"]
  node_accountstorage["Account persistence<br/>[Account.java]"]
  node_activitystorage["Activity persistence"]
  node_store[("Serialized user list<br/>[Info.ser]")]
end

node_customer(("Bank customer"))
node_console["Console I/O"]

node_customer -->|"uses"| node_console
node_console -->|"provides input"| node_main
node_main -->|"registers or logs in"| node_account
node_account -->|"loads and saves"| node_accountstorage
node_accountstorage -->|"reads and writes"| node_store
node_account -->|"creates or loads"| node_user
node_account -->|"returns activities"| node_main
node_main -->|"shows and dispatches"| node_activities
node_activities -->|"reads and prints"| node_console
node_activities -->|"dispatches"| node_balance
node_activities -->|"dispatches"| node_withdraw
node_activities -->|"dispatches"| node_deposit
node_activities -->|"dispatches"| node_transfer
node_activities -->|"dispatches"| node_interest
node_balance -->|"reads balance"| node_user
node_withdraw -->|"updates balance"| node_user
node_deposit -->|"updates balance"| node_user
node_transfer -->|"updates balances"| node_user
node_interest -->|"reads balance"| node_user
node_withdraw -->|"persists change"| node_activitystorage
node_deposit -->|"persists change"| node_activitystorage
node_transfer -->|"persists transfer"| node_activitystorage
node_activitystorage -->|"reads and writes"| node_store

click node_main "https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/SimpleBankManagementSystem.java"
click node_account "https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/Account.java"
click node_activities "https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java"
click node_balance "https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java"
click node_withdraw "https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java"
click node_deposit "https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java"
click node_transfer "https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java"
click node_interest "https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java"
click node_user "https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/User.java"
click node_accountstorage "https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/Account.java"
click node_activitystorage "https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java"
click node_store "https://github.com/raman-120/simple-bank-management-system/blob/main/Info.ser"

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_account toneBlue
class node_activities,node_balance,node_withdraw,node_deposit,node_transfer,node_interest,node_user toneAmber
class node_accountstorage,node_activitystorage,node_store toneMint
class node_customer,node_console toneIndigo
```

## Components

### Application flow

- [Application entry](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/SimpleBankManagementSystem.java): `BankManagementSystem/src/SimpleBankManagementSystem.java`
- [Registration and login](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/Account.java): `BankManagementSystem/src/Account.java`

### Banking operations

- [Activity menu](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java): `BankManagementSystem/src/BankActivities.java`
- [Balance check](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java): `BankManagementSystem/src/BankActivities.java`
- [Withdrawal](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java): `BankManagementSystem/src/BankActivities.java`
- [Deposit](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java): `BankManagementSystem/src/BankActivities.java`
- [Money transfer](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java): `BankManagementSystem/src/BankActivities.java`
- [Interest calculation](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java): `BankManagementSystem/src/BankActivities.java`
- [User account data](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/User.java): `BankManagementSystem/src/User.java`

### Serialized state

- [Account persistence](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/Account.java): `BankManagementSystem/src/Account.java`
- [Activity persistence](https://github.com/raman-120/simple-bank-management-system/blob/main/BankManagementSystem/src/BankActivities.java): `BankManagementSystem/src/BankActivities.java`
- [Serialized user list](https://github.com/raman-120/simple-bank-management-system/blob/main/Info.ser): `Info.ser`

### Other components

- **Bank customer**
- **Console I/O**

## Connections

- Bank customer → Console I/O: uses
- Console I/O → Application entry: provides input
- Application entry → Registration and login: registers or logs in
- Registration and login → Account persistence: loads and saves
- Account persistence → Serialized user list: reads and writes
- Registration and login → User account data: creates or loads
- Registration and login → Application entry: returns activities
- Application entry → Activity menu: shows and dispatches
- Activity menu → Console I/O: reads and prints
- Activity menu → Balance check: dispatches
- Activity menu → Withdrawal: dispatches
- Activity menu → Deposit: dispatches
- Activity menu → Money transfer: dispatches
- Activity menu → Interest calculation: dispatches
- Balance check → User account data: reads balance
- Withdrawal → User account data: updates balance
- Deposit → User account data: updates balance
- Money transfer → User account data: updates balances
- Interest calculation → User account data: reads balance
- Withdrawal → Activity persistence: persists change
- Deposit → Activity persistence: persists change
- Money transfer → Activity persistence: persists transfer
- Activity persistence → Serialized user list: reads and writes
