# baraaelgendy/bank_system_oop architecture

> Architecture diagram of the GitHub repository baraaelgendy/bank_system_oop, 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/baraaelgendy/bank_system_oop
- Repository: https://github.com/baraaelgendy/bank_system_oop

## Overview

This is a console banking and currency-exchange application. An employee logs in, then uses the main menu to manage clients and users, process transactions, inspect login history, or work with currencies. Screens handle interaction and permissions; entity classes provide domain operations and file-based persistence. The README documents account lockout, encrypted passwords, and currency calculation, but their detailed wiring is not shown in the sampled source, so those links are limited to the documented subsystem paths.

Main entry points: [`clsMainMenuScreen.h`](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsMainMenuScreen.h) (Main menu), [`clsBankClient.h`](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsBankClient.h) (Client account), [`clsTransactionsMenu.h`](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsTransactionsMenu.h) (Transactions menu), [`clsLoginScreen.h`](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsLoginScreen.h) (Login screen)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Console interface"]
  node_entry["Application entry"]
  node_mainmenu["Main menu"]
end

subgraph group_access["Access management"]
  node_login["Login screen<br/>[clsLoginScreen.h]"]
  node_userscreen["User management"]
  node_user["User records<br/>[clsUser.h]"]
  node_usersfile[("User data<br/>[Users.txt]")]
  node_loginhistory["Login history"]
  node_loginfile[("Login log<br/>[LoginRegister.txt]")]
end

subgraph group_banking["Banking operations"]
  node_clientmenu["Client screens<br/>[clsListClients.h]"]
  node_clientadd["Add client"]
  node_clientupdate["Update client"]
  node_clientdelete["Delete client<br/>[clsDeleteClient.h]"]
  node_clientfind["Find client"]
  node_client["Client account<br/>[clsBankClient.h]"]
  node_clientsfile[("Client data<br/>[Clients.txt]")]
  node_transactions["Transactions menu"]
  node_deposit["Deposit screen<br/>[clsDepositScreen.h]"]
  node_withdraw["Withdrawal screen"]
  node_transfer["Transfer screen"]
  node_transferlog["Transfer history"]
  node_transferfile[("Transfer log<br/>[TransferLog.txt]")]
end

subgraph group_currency["Currency exchange"]
  node_currencyui["Currency menu"]
  node_currencycalc["Currency calculator"]
  node_currencyfind["Find currency<br/>[clsFindCurrency.h]"]
  node_currencyupdate["Update rate"]
  node_currency["Currency records<br/>[clsCurrency.h]"]
  node_currenciesfile[("Currency data<br/>[Currencies.txt]")]
end

subgraph group_shared["Shared domain"]
  node_validation["Input validation<br/>[clsInputValidate.h]"]
  node_screenbase["Screen base<br/>[clsScreen.h]"]
  node_person["Person identity<br/>[clsPerson.h]"]
end

node_employee(("Employee"))

node_employee -->|"starts"| node_entry
node_entry -->|"shows"| node_login
node_login -->|"authenticates"| node_user
node_user -->|"reads/writes"| node_usersfile
node_login -->|"opens on success"| node_mainmenu
node_mainmenu -->|"dispatches"| node_clientmenu
node_mainmenu -->|"dispatches"| node_clientadd
node_mainmenu -->|"dispatches"| node_clientupdate
node_mainmenu -->|"dispatches"| node_clientdelete
node_mainmenu -->|"dispatches"| node_clientfind
node_mainmenu -->|"dispatches"| node_transactions
node_mainmenu -->|"dispatches"| node_userscreen
node_mainmenu -->|"dispatches"| node_loginhistory
node_mainmenu -->|"dispatches"| node_currencyui
node_userscreen -->|"manages"| node_user
node_loginhistory -->|"reads"| node_loginfile
node_clientmenu -->|"lists"| node_client
node_clientadd -->|"creates"| node_client
node_clientupdate -->|"updates"| node_client
node_clientdelete -->|"deletes"| node_client
node_clientfind -->|"searches"| node_client
node_client -->|"reads/writes"| node_clientsfile
node_transactions -->|"dispatches"| node_deposit
node_transactions -->|"dispatches"| node_withdraw
node_transactions -->|"dispatches"| node_transfer
node_transactions -->|"dispatches"| node_transferlog
node_deposit -->|"updates balance"| node_client
node_withdraw -->|"updates balance"| node_client
node_transfer -->|"transfers funds"| node_client
node_transfer -->|"appends"| node_transferfile
node_transferlog -->|"reads history"| node_client
node_transferlog -->|"reads"| node_transferfile
node_currencyui -->|"opens"| node_currencycalc
node_currencyui -->|"dispatches"| node_currencyfind
node_currencyui -->|"dispatches"| node_currencyupdate
node_currencycalc -->|"converts using rates"| node_currency
node_currencyfind -->|"searches"| node_currency
node_currencyupdate -->|"updates rate"| node_currency
node_currency -->|"reads/writes"| node_currenciesfile
node_clientadd -->|"validates input"| node_validation
node_clientupdate -->|"validates input"| node_validation
node_clientfind -->|"validates input"| node_validation
node_login -->|"validates input"| node_validation
node_client -->|"inherits identity"| node_person
node_user -->|"inherits identity"| node_person

click node_entry "https://github.com/baraaelgendy/bank_system_oop/blob/master/Bank_System_OOP.cpp"
click node_login "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsLoginScreen.h"
click node_mainmenu "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsMainMenuScreen.h"
click node_userscreen "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsManageUsersMenu.h"
click node_user "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsUser.h"
click node_usersfile "https://github.com/baraaelgendy/bank_system_oop/blob/master/Users.txt"
click node_loginhistory "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsLoginRegisterScreen.h"
click node_loginfile "https://github.com/baraaelgendy/bank_system_oop/blob/master/LoginRegister.txt"
click node_clientmenu "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsListClients.h"
click node_clientadd "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsAddNewClientScreen.h"
click node_clientupdate "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsUpdateClientScreen.h"
click node_clientdelete "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsDeleteClient.h"
click node_clientfind "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsFindClientScreen.h"
click node_client "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsBankClient.h"
click node_clientsfile "https://github.com/baraaelgendy/bank_system_oop/blob/master/Clients.txt"
click node_transactions "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsTransactionsMenu.h"
click node_deposit "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsDepositScreen.h"
click node_withdraw "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsWithdrawScreen.h"
click node_transfer "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsTransferScreen.h"
click node_transferlog "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsTransferLogScreen.h"
click node_transferfile "https://github.com/baraaelgendy/bank_system_oop/blob/master/TransferLog.txt"
click node_currencyui "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsCurruncyMainScreen.h"
click node_currencycalc "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsCurrencyCalcScreen.h"
click node_currencyfind "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsFindCurrency.h"
click node_currencyupdate "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsUpdateCurrencyRate.h"
click node_currency "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsCurrency.h"
click node_currenciesfile "https://github.com/baraaelgendy/bank_system_oop/blob/master/Currencies.txt"
click node_validation "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsInputValidate.h"
click node_screenbase "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsScreen.h"
click node_person "https://github.com/baraaelgendy/bank_system_oop/blob/master/clsPerson.h"

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_entry,node_mainmenu toneBlue
class node_login,node_userscreen,node_user,node_usersfile,node_loginhistory,node_loginfile toneAmber
class node_clientmenu,node_clientadd,node_clientupdate,node_clientdelete,node_clientfind,node_client,node_clientsfile,node_transactions,node_deposit,node_withdraw,node_transfer,node_transferlog,node_transferfile toneMint
class node_currencyui,node_currencycalc,node_currencyfind,node_currencyupdate,node_currency,node_currenciesfile toneRose
class node_validation,node_screenbase,node_person,node_employee toneIndigo
```

## Components

### Console interface

- [Application entry](https://github.com/baraaelgendy/bank_system_oop/blob/master/Bank_System_OOP.cpp): `Bank_System_OOP.cpp`
- [Main menu](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsMainMenuScreen.h): `clsMainMenuScreen.h`

### Access management

- [Login screen](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsLoginScreen.h): `clsLoginScreen.h`
- [User management](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsManageUsersMenu.h): `clsManageUsersMenu.h`
- [User records](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsUser.h): `clsUser.h`
- [User data](https://github.com/baraaelgendy/bank_system_oop/blob/master/Users.txt): `Users.txt`
- [Login history](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsLoginRegisterScreen.h): `clsLoginRegisterScreen.h`
- [Login log](https://github.com/baraaelgendy/bank_system_oop/blob/master/LoginRegister.txt): `LoginRegister.txt`

### Banking operations

- [Client screens](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsListClients.h): `clsListClients.h`
- [Add client](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsAddNewClientScreen.h): `clsAddNewClientScreen.h`
- [Update client](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsUpdateClientScreen.h): `clsUpdateClientScreen.h`
- [Delete client](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsDeleteClient.h): `clsDeleteClient.h`
- [Find client](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsFindClientScreen.h): `clsFindClientScreen.h`
- [Client account](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsBankClient.h): `clsBankClient.h`
- [Client data](https://github.com/baraaelgendy/bank_system_oop/blob/master/Clients.txt): `Clients.txt`
- [Transactions menu](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsTransactionsMenu.h): `clsTransactionsMenu.h`
- [Deposit screen](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsDepositScreen.h): `clsDepositScreen.h`
- [Withdrawal screen](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsWithdrawScreen.h): `clsWithdrawScreen.h`
- [Transfer screen](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsTransferScreen.h): `clsTransferScreen.h`
- [Transfer history](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsTransferLogScreen.h): `clsTransferLogScreen.h`
- [Transfer log](https://github.com/baraaelgendy/bank_system_oop/blob/master/TransferLog.txt): `TransferLog.txt`

### Currency exchange

- [Currency menu](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsCurruncyMainScreen.h): `clsCurruncyMainScreen.h`
- [Currency calculator](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsCurrencyCalcScreen.h): `clsCurrencyCalcScreen.h`
- [Find currency](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsFindCurrency.h): `clsFindCurrency.h`
- [Update rate](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsUpdateCurrencyRate.h): `clsUpdateCurrencyRate.h`
- [Currency records](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsCurrency.h): `clsCurrency.h`
- [Currency data](https://github.com/baraaelgendy/bank_system_oop/blob/master/Currencies.txt): `Currencies.txt`

### Shared domain

- [Input validation](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsInputValidate.h): `clsInputValidate.h`
- [Screen base](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsScreen.h): `clsScreen.h`
- [Person identity](https://github.com/baraaelgendy/bank_system_oop/blob/master/clsPerson.h): `clsPerson.h`

### Other components

- **Employee**

## Connections

- Employee → Application entry: starts
- Application entry → Login screen: shows
- Login screen → User records: authenticates
- User records → User data: reads/writes
- Login screen → Main menu: opens on success
- Main menu → Client screens: dispatches
- Main menu → Add client: dispatches
- Main menu → Update client: dispatches
- Main menu → Delete client: dispatches
- Main menu → Find client: dispatches
- Main menu → Transactions menu: dispatches
- Main menu → User management: dispatches
- Main menu → Login history: dispatches
- Main menu → Currency menu: dispatches
- User management → User records: manages
- Login history → Login log: reads
- Client screens → Client account: lists
- Add client → Client account: creates
- Update client → Client account: updates
- Delete client → Client account: deletes
- Find client → Client account: searches
- Client account → Client data: reads/writes
- Transactions menu → Deposit screen: dispatches
- Transactions menu → Withdrawal screen: dispatches
- Transactions menu → Transfer screen: dispatches
- Transactions menu → Transfer history: dispatches
- Deposit screen → Client account: updates balance
- Withdrawal screen → Client account: updates balance
- Transfer screen → Client account: transfers funds
- Transfer screen → Transfer log: appends
- Transfer history → Client account: reads history
- Transfer history → Transfer log: reads
- Currency menu → Currency calculator: opens
- Currency menu → Find currency: dispatches
- Currency menu → Update rate: dispatches
- Currency calculator → Currency records: converts using rates
- Find currency → Currency records: searches
- Update rate → Currency records: updates rate
- Currency records → Currency data: reads/writes
- Add client → Input validation: validates input
- Update client → Input validation: validates input
- Find client → Input validation: validates input
- Login screen → Input validation: validates input
- Client account → Person identity: inherits identity
- User records → Person identity: inherits identity
