# ayhmibrahim/bank-management-system architecture

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

- Interactive diagram: https://gitdiagram.com/ayhmibrahim/bank-management-system
- Repository: https://github.com/ayhmibrahim/bank-management-system

## Overview

This educational C++ console bank system evolves from client CRUD into a final version with transactions, login, user administration, and permission checks. The main workflow is console input → login → main menu → permission-checked action, with client balances and user records persisted in text files. The sampled code is a partial excerpt of the final, single-file implementation; menu-to-action and authentication relationships also follow the README’s documented flow, so uncertain internal call wiring is omitted.

Main entry points: [`Project 3.2 [ Bank 1 ] ( 2nd Extension )/Bank Management System.cpp`](https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp) (Main menu), [`Project 3.2 [ Bank 1 ] ( 2nd Extension )/Users.txt`](https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Users.txt) (User records), [`Project 3.2 [ Bank 1 ] ( 2nd Extension )/Clients.txt`](https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Clients.txt) (Client records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Console interaction"]
  node_cli["Console entry"]
  node_mainmenu["Main menu"]
end

subgraph group_access["Access and users"]
  node_login["Login flow"]
  node_permission["Permission checks"]
  node_usermgmt["User management"]
end

subgraph group_banking["Bank operations"]
  node_clientops["Client management"]
  node_transactions["Transactions"]
end

subgraph group_persistence["File persistence"]
  node_recordio["Record and file I/O"]
  node_clientsfile[("Client records<br/>[Clients.txt]")]
  node_usersfile[("User records<br/>[Users.txt]")]
end

node_operator(("Bank operator"))

node_operator -->|"uses console"| node_cli
node_cli -->|"starts login"| node_login
node_login -->|"checks credentials"| node_usersfile
node_login -->|"opens menu"| node_mainmenu
node_mainmenu -->|"checks access"| node_permission
node_mainmenu -->|"dispatches client actions"| node_clientops
node_mainmenu -->|"dispatches transactions"| node_transactions
node_mainmenu -->|"dispatches user actions"| node_usermgmt
node_clientops -->|"loads and saves"| node_recordio
node_transactions -->|"loads and saves"| node_recordio
node_usermgmt -->|"loads and saves"| node_recordio
node_recordio -->|"reads and writes"| node_clientsfile
node_recordio -->|"reads and writes"| node_usersfile

click node_cli "https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp"
click node_login "https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp"
click node_mainmenu "https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp"
click node_permission "https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp"
click node_clientops "https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp"
click node_transactions "https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp"
click node_usermgmt "https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp"
click node_recordio "https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp"
click node_clientsfile "https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Clients.txt"
click node_usersfile "https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Users.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_cli,node_mainmenu toneBlue
class node_login,node_permission,node_usermgmt toneAmber
class node_clientops,node_transactions toneMint
class node_recordio,node_clientsfile,node_usersfile toneRose
class node_operator toneIndigo
```

## Components

### Console interaction

- [Console entry](https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp): `Project 3.2 [ Bank 1 ] ( 2nd Extension )/Bank Management System.cpp`
- [Main menu](https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp): `Project 3.2 [ Bank 1 ] ( 2nd Extension )/Bank Management System.cpp`

### Access and users

- [Login flow](https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp): `Project 3.2 [ Bank 1 ] ( 2nd Extension )/Bank Management System.cpp`
- [Permission checks](https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp): `Project 3.2 [ Bank 1 ] ( 2nd Extension )/Bank Management System.cpp`
- [User management](https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp): `Project 3.2 [ Bank 1 ] ( 2nd Extension )/Bank Management System.cpp`

### Bank operations

- [Client management](https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp): `Project 3.2 [ Bank 1 ] ( 2nd Extension )/Bank Management System.cpp`
- [Transactions](https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp): `Project 3.2 [ Bank 1 ] ( 2nd Extension )/Bank Management System.cpp`

### File persistence

- [Record and file I/O](https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Bank%20Management%20System.cpp): `Project 3.2 [ Bank 1 ] ( 2nd Extension )/Bank Management System.cpp`
- [Client records](https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Clients.txt): `Project 3.2 [ Bank 1 ] ( 2nd Extension )/Clients.txt`
- [User records](https://github.com/ayhmibrahim/bank-management-system/blob/Programming-Foundations-Journey/Project%203.2%20%5B%20Bank%201%20%5D%20(%202nd%20Extension%20)/Users.txt): `Project 3.2 [ Bank 1 ] ( 2nd Extension )/Users.txt`

### Other components

- **Bank operator**

## Connections

- Bank operator → Console entry: uses console
- Console entry → Login flow: starts login
- Login flow → User records: checks credentials
- Login flow → Main menu: opens menu
- Main menu → Permission checks: checks access
- Main menu → Client management: dispatches client actions
- Main menu → Transactions: dispatches transactions
- Main menu → User management: dispatches user actions
- Client management → Record and file I/O: loads and saves
- Transactions → Record and file I/O: loads and saves
- User management → Record and file I/O: loads and saves
- Record and file I/O → Client records: reads and writes
- Record and file I/O → User records: reads and writes
