# dev-mir2011/bank-management-system-cpp architecture

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

- Interactive diagram: https://gitdiagram.com/dev-mir2011/bank-management-system-cpp
- Repository: https://github.com/dev-mir2011/bank-management-system-cpp

## Overview

This is a single-user, console-based bank management application. Staff enter through the main menu, then manage accounts, perform authenticated banking operations, inspect transaction history, or use the admin panel for reports. Account and transaction records persist in CSV files; separate text files hold admin credentials and identifier counters. The graph preserves the documented account, transaction, history, and admin capabilities. Some source excerpts are partial, so uncertain internal calls are omitted.

Main entry points: [`BankManagementSystem/src/account.cpp`](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/account.cpp) (Account management), [`BankManagementSystem/src/admin.cpp`](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/admin.cpp) (Admin panel), [`BankManagementSystem/src/transaction_csv.cpp`](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/transaction_csv.cpp) (Transaction CSV access), [`BankManagementSystem/src/account_csv.cpp`](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/account_csv.cpp) (Account CSV access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Console entry"]
  node_main["Main menu<br/>[main.cpp]"]
end

subgraph group_banking["Banking operations"]
  node_account_ops["Account management<br/>[account.cpp]"]
  node_transaction_ops["Transaction menu<br/>[transactions.cpp]"]
  node_admin["Admin panel<br/>[admin.cpp]"]
  node_account_model["Account model<br/>[account.cpp]"]
  node_transaction_model["Transaction record<br/>[transaction.cpp]"]
end

subgraph group_security["PIN security"]
  node_auth["PIN authentication<br/>[authentication.cpp]"]
  node_pin_hash["PIN hashing<br/>[hash_pin.cpp]"]
end

subgraph group_persistence["File persistence"]
  node_account_csv["Account CSV access<br/>[account_csv.cpp]"]
  node_transaction_csv["Transaction CSV access"]
  node_accounts_file[("Account records<br/>[accounts.csv]")]
  node_transactions_file[("Transaction log<br/>[transactions.csv]")]
  node_admin_file["Admin credentials<br/>[admin.txt]"]
  node_account_counter["Account number counter"]
  node_transaction_counter["Transaction ID counter"]
end

node_staff(("Bank staff"))

node_staff -->|"uses"| node_main
node_main -->|"opens accounts"| node_account_ops
node_main -->|"opens history"| node_transaction_ops
node_main -->|"opens admin"| node_admin
node_account_ops -->|"creates"| node_account_model
node_account_ops -->|"checks PIN"| node_auth
node_account_ops -->|"reads and updates"| node_account_csv
node_account_ops -->|"logs activity"| node_transaction_csv
node_account_ops -->|"creates records"| node_transaction_model
node_account_ops -->|"allocates numbers"| node_account_counter
node_account_ops -->|"allocates IDs"| node_transaction_counter
node_auth -->|"reads PIN hash"| node_account_csv
node_auth -->|"hashes PIN"| node_pin_hash
node_transaction_ops -->|"checks PIN"| node_auth
node_transaction_ops -->|"validates accounts"| node_account_csv
node_transaction_ops -->|"reads history"| node_transaction_csv
node_admin -->|"checks password"| node_admin_file
node_admin -->|"reports accounts"| node_account_csv
node_admin -->|"reports transactions"| node_transaction_csv
node_admin -->|"checks status"| node_account_ops
node_account_csv -->|"reads and writes"| node_accounts_file
node_transaction_csv -->|"reads and writes"| node_transactions_file
node_transaction_csv -->|"assigns IDs"| node_transaction_counter

click node_main "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/main.cpp"
click node_account_ops "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/account.cpp"
click node_transaction_ops "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/transactions.cpp"
click node_admin "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/admin.cpp"
click node_account_model "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/account.cpp"
click node_transaction_model "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/transaction.cpp"
click node_auth "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/authentication.cpp"
click node_pin_hash "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/hash_pin.cpp"
click node_account_csv "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/account_csv.cpp"
click node_transaction_csv "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/transaction_csv.cpp"
click node_accounts_file "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/data/accounts.csv"
click node_transactions_file "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/data/transactions.csv"
click node_admin_file "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/data/admin.txt"
click node_account_counter "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/data/last_account_no.txt"
click node_transaction_counter "https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/data/last_transaction_id.txt"

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 toneBlue
class node_account_ops,node_transaction_ops,node_admin,node_account_model,node_transaction_model toneAmber
class node_auth,node_pin_hash toneMint
class node_account_csv,node_transaction_csv,node_accounts_file,node_transactions_file,node_admin_file,node_account_counter,node_transaction_counter toneRose
class node_staff toneIndigo
```

## Components

### Console entry

- [Main menu](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/main.cpp): `BankManagementSystem/src/main.cpp`

### Banking operations

- [Account management](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/account.cpp): `BankManagementSystem/src/account.cpp`
- [Transaction menu](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/transactions.cpp): `BankManagementSystem/src/transactions.cpp`
- [Admin panel](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/admin.cpp): `BankManagementSystem/src/admin.cpp`
- [Account model](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/account.cpp): `BankManagementSystem/src/account.cpp`
- [Transaction record](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/transaction.cpp): `BankManagementSystem/src/transaction.cpp`

### PIN security

- [PIN authentication](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/authentication.cpp): `BankManagementSystem/src/authentication.cpp`
- [PIN hashing](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/hash_pin.cpp): `BankManagementSystem/src/hash_pin.cpp`

### File persistence

- [Account CSV access](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/account_csv.cpp): `BankManagementSystem/src/account_csv.cpp`
- [Transaction CSV access](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/src/transaction_csv.cpp): `BankManagementSystem/src/transaction_csv.cpp`
- [Account records](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/data/accounts.csv): `BankManagementSystem/data/accounts.csv`
- [Transaction log](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/data/transactions.csv): `BankManagementSystem/data/transactions.csv`
- [Admin credentials](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/data/admin.txt): `BankManagementSystem/data/admin.txt`
- [Account number counter](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/data/last_account_no.txt): `BankManagementSystem/data/last_account_no.txt`
- [Transaction ID counter](https://github.com/dev-mir2011/bank-management-system-cpp/blob/main/BankManagementSystem/data/last_transaction_id.txt): `BankManagementSystem/data/last_transaction_id.txt`

### Other components

- **Bank staff**

## Connections

- Bank staff → Main menu: uses
- Main menu → Account management: opens accounts
- Main menu → Transaction menu: opens history
- Main menu → Admin panel: opens admin
- Account management → Account model: creates
- Account management → PIN authentication: checks PIN
- Account management → Account CSV access: reads and updates
- Account management → Transaction CSV access: logs activity
- Account management → Transaction record: creates records
- Account management → Account number counter: allocates numbers
- Account management → Transaction ID counter: allocates IDs
- PIN authentication → Account CSV access: reads PIN hash
- PIN authentication → PIN hashing: hashes PIN
- Transaction menu → PIN authentication: checks PIN
- Transaction menu → Account CSV access: validates accounts
- Transaction menu → Transaction CSV access: reads history
- Admin panel → Admin credentials: checks password
- Admin panel → Account CSV access: reports accounts
- Admin panel → Transaction CSV access: reports transactions
- Admin panel → Account management: checks status
- Account CSV access → Account records: reads and writes
- Transaction CSV access → Transaction log: reads and writes
- Transaction CSV access → Transaction ID counter: assigns IDs
