# manuraj-180106/bank-account-management-system architecture

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

- Interactive diagram: https://gitdiagram.com/manuraj-180106/bank-account-management-system
- Repository: https://github.com/manuraj-180106/bank-account-management-system

## Overview

This is a console-based bank account management system. A user chooses menu operations in the controller; the service applies banking rules, the repository finds or stores accounts, and account objects enforce type-specific behavior. The README also documents account lookup/listing, savings interest, current-account overdrafts, and transfers. The repository is in-memory, not persistent. The transaction model exists, but the sampled service does not use it to record transaction history; unsampled wiring is not inferred.

Main entry points: [`src/service/BankService.java`](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/service/BankService.java) (Bank service), [`src/model/Account.java`](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/Account.java) (Account base), [`src/controller/BankController.java`](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/controller/BankController.java) (Menu controller), [`src/main/Main.java`](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/main/Main.java) (Application entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Console entry"]
  node_main["Application entry<br/>[Main.java]"]
  node_controller["Menu controller"]
end

subgraph group_service["Banking operations"]
  node_bank_service["Bank service<br/>[BankService.java]"]
end

subgraph group_domain["Account domain"]
  node_account["Account base<br/>[Account.java]"]
  node_savings["Savings account"]
  node_current["Current account"]
  node_customer["Customer<br/>[Customer.java]"]
  node_account_type["Account type<br/>[AccountType.java]"]
  node_transactable["Transaction interface<br/>[Transactable.java]"]
  node_transaction["Transaction model<br/>[Transaction.java]"]
end

subgraph group_storage["Account storage"]
  node_repository[("Account repository")]
end

node_user(("Console user"))

node_user -->|"enters choices"| node_controller
node_controller -->|"shows results"| node_user
node_main -->|"creates"| node_repository
node_main -->|"creates with repository"| node_bank_service
node_main -->|"starts"| node_controller
node_controller -->|"requests operations"| node_bank_service
node_controller -->|"creates customer"| node_customer
node_controller -->|"reads returned account"| node_account
node_bank_service -->|"finds and stores"| node_repository
node_bank_service -->|"selects account type"| node_account_type
node_bank_service -->|"creates savings"| node_savings
node_bank_service -->|"creates current"| node_current
node_bank_service -->|"operates on accounts"| node_account
node_repository -->|"stores and returns"| node_account
node_savings -->|"extends"| node_account
node_current -->|"extends"| node_account
node_account -->|"implements"| node_transactable
node_account -->|"contains"| node_customer

click node_main "https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/main/Main.java"
click node_controller "https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/controller/BankController.java"
click node_bank_service "https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/service/BankService.java"
click node_repository "https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/repository/AccountRepository.java"
click node_account "https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/Account.java"
click node_savings "https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/SavingsAccount.java"
click node_current "https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/CurrentAccount.java"
click node_customer "https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/Customer.java"
click node_account_type "https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/AccountType.java"
click node_transactable "https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/Transactable.java"
click node_transaction "https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/Transaction.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_controller,node_user toneBlue
class node_bank_service toneAmber
class node_account,node_savings,node_current,node_customer,node_account_type,node_transactable,node_transaction toneMint
class node_repository toneRose
```

## Components

### Console entry

- [Application entry](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/main/Main.java): `src/main/Main.java`
- [Menu controller](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/controller/BankController.java): `src/controller/BankController.java`

### Banking operations

- [Bank service](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/service/BankService.java): `src/service/BankService.java`

### Account domain

- [Account base](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/Account.java): `src/model/Account.java`
- [Savings account](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/SavingsAccount.java): `src/model/SavingsAccount.java`
- [Current account](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/CurrentAccount.java): `src/model/CurrentAccount.java`
- [Customer](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/Customer.java): `src/model/Customer.java`
- [Account type](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/AccountType.java): `src/model/AccountType.java`
- [Transaction interface](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/Transactable.java): `src/model/Transactable.java`
- [Transaction model](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/model/Transaction.java): `src/model/Transaction.java`

### Account storage

- [Account repository](https://github.com/manuraj-180106/bank-account-management-system/blob/main/src/repository/AccountRepository.java): `src/repository/AccountRepository.java`

### Other components

- **Console user**

## Connections

- Console user → Menu controller: enters choices
- Menu controller → Console user: shows results
- Application entry → Account repository: creates
- Application entry → Bank service: creates with repository
- Application entry → Menu controller: starts
- Menu controller → Bank service: requests operations
- Menu controller → Customer: creates customer
- Menu controller → Account base: reads returned account
- Bank service → Account repository: finds and stores
- Bank service → Account type: selects account type
- Bank service → Savings account: creates savings
- Bank service → Current account: creates current
- Bank service → Account base: operates on accounts
- Account repository → Account base: stores and returns
- Savings account → Account base: extends
- Current account → Account base: extends
- Account base → Transaction interface: implements
- Account base → Customer: contains
