# moazabdulsalam/oop-bank-project architecture

> Architecture diagram of the GitHub repository moazabdulsalam/oop-bank-project, 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/moazabdulsalam/oop-bank-project
- Repository: https://github.com/moazabdulsalam/oop-bank-project

## Overview

This is a console banking system: a user enters the application menu, selects client, transaction, user, log, or currency functions, and the corresponding screens operate on domain objects backed by text files. The documented product also includes login, permission checks, transfer and login auditing, and currency conversion. Sampled code confirms menu dispatch, client persistence and transfers, user persistence and audit records, and currency-rate operations; links for unsampled screen internals are omitted where their wiring cannot be verified.

Main entry points: [`Bank OOP Project/clsMainScreen.h`](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsMainScreen.h) (Main menu), [`Bank OOP Project/clsBankClient.h`](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsBankClient.h) (Bank client model), [`Bank OOP Project/clsUser.h`](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsUser.h) (User model), [`Bank OOP Project/clsTransactionsScreen.h`](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsTransactionsScreen.h) (Transaction menu)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_navigation["Console navigation"]
  node_main["Main menu<br/>[clsMainScreen.h]"]
  node_entry["Application entry"]
  node_login["Login screen<br/>[clsLogenScreen.h]"]
  node_screenbase["Screen base<br/>[clsScrean.h]"]
  node_helpers["Parsing and validation<br/>[clsString.h]"]
end

subgraph group_banking["Clients and banking"]
  node_clientops["Client screens"]
  node_addclient["Add client"]
  node_updateclient["Update client"]
  node_deleteclient["Delete client"]
  node_findclient["Find client"]
  node_transactions["Transaction menu"]
  node_deposit["Deposit screen"]
  node_withdraw["Withdraw screen"]
  node_transfer["Transfer screen"]
  node_clientmodel["Bank client model<br/>[clsBankClient.h]"]
  node_clientsfile[("Client records<br/>[Clients.txt]")]
end

subgraph group_identity["Users and audit"]
  node_users["User management<br/>[clsManageusers.h]"]
  node_usermodel["User model<br/>[clsUser.h]"]
  node_usersfile[("User records<br/>[Users.txt]")]
  node_loginlog[("Login audit<br/>[LoginRegister.txt]")]
  node_loginregister["Login register screen"]
  node_transferlogscreen["Transfer log screen"]
  node_transferlog[("Transfer records<br/>[TransferLog.txt]")]
end

subgraph group_currency["Currency exchange"]
  node_currencyexchange["Currency exchange"]
  node_currencyconvert["Currency calculator"]
  node_currencylist["Currency screens"]
  node_currencymodel["Currency model<br/>[clsCurrency.h]"]
  node_currencyfile[("Currency rates<br/>[Currencies.txt]")]
end

node_operator(("Bank operator"))

node_operator -->|"starts"| node_entry
node_entry -->|"launches"| node_login
node_entry -->|"opens"| node_main
node_main -->|"dispatches"| node_clientops
node_main -->|"dispatches"| node_addclient
node_main -->|"dispatches"| node_updateclient
node_main -->|"dispatches"| node_deleteclient
node_main -->|"dispatches"| node_findclient
node_main -->|"dispatches"| node_transactions
node_main -->|"dispatches"| node_users
node_main -->|"dispatches"| node_loginregister
node_main -->|"dispatches"| node_currencyexchange
node_main -->|"authenticates"| node_login
node_login -->|"checks credentials"| node_usermodel
node_clientops -->|"lists clients"| node_clientmodel
node_addclient -->|"saves client"| node_clientmodel
node_updateclient -->|"updates client"| node_clientmodel
node_deleteclient -->|"deletes client"| node_clientmodel
node_findclient -->|"finds client"| node_clientmodel
node_clientmodel -->|"reads and writes"| node_clientsfile
node_transactions -->|"dispatches"| node_deposit
node_transactions -->|"dispatches"| node_withdraw
node_transactions -->|"dispatches"| node_transfer
node_deposit -->|"updates balance"| node_clientmodel
node_withdraw -->|"updates balance"| node_clientmodel
node_transfer -->|"transfers funds"| node_clientmodel
node_clientmodel -->|"appends transfer"| node_transferlog
node_users -->|"manages users"| node_usermodel
node_usermodel -->|"reads and writes"| node_usersfile
node_usermodel -->|"reads audit"| node_loginlog
node_loginregister -->|"lists audit records"| node_usermodel
node_main -.->|"opens logs"| node_transferlogscreen
node_transferlogscreen -.->|"reads transfer records"| node_clientmodel
node_currencyexchange -.->|"offers conversion"| node_currencyconvert
node_currencyexchange -.->|"offers currency views"| node_currencylist
node_currencyconvert -.->|"converts amounts"| node_currencymodel
node_currencylist -.->|"lists and searches"| node_currencymodel
node_currencymodel -->|"reads and writes"| node_currencyfile
node_clientmodel -->|"parses records"| node_helpers
node_usermodel -->|"parses records"| node_helpers
node_currencymodel -->|"parses records"| node_helpers

click node_main "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsMainScreen.h"
click node_entry "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/Bank%20OOP%20Project.cpp"
click node_login "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsLogenScreen.h"
click node_screenbase "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsScrean.h"
click node_clientops "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsClientListScrean.h"
click node_addclient "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsAddNewClientScreen.h"
click node_updateclient "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsUpdateClientScreen.h"
click node_deleteclient "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsDeleteClientScreen.h"
click node_findclient "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsFindClientScreen.h"
click node_transactions "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsTransactionsScreen.h"
click node_deposit "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsDepositeScreen.h"
click node_withdraw "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsWithdrawScreen.h"
click node_transfer "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsTransferScreen.h"
click node_clientmodel "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsBankClient.h"
click node_clientsfile "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/Clients.txt"
click node_users "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsManageusers.h"
click node_usermodel "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsUser.h"
click node_usersfile "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/Users.txt"
click node_loginlog "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/LoginRegister.txt"
click node_loginregister "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsLoginRegisterScreen.h"
click node_currencyexchange "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsShowCurrencyExchangeScreen.h"
click node_currencyconvert "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsCurrencyCalculaterScreen.h"
click node_currencylist "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsCurrenciesListScreen.h"
click node_currencymodel "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsCurrency.h"
click node_currencyfile "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/Currencies.txt"
click node_transferlogscreen "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsTransferLogScreen.h"
click node_transferlog "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/TransferLog.txt"
click node_helpers "https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsString.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_main,node_entry,node_login,node_screenbase,node_helpers toneBlue
class node_clientops,node_addclient,node_updateclient,node_deleteclient,node_findclient,node_transactions,node_deposit,node_withdraw,node_transfer,node_clientmodel,node_clientsfile toneAmber
class node_users,node_usermodel,node_usersfile,node_loginlog,node_loginregister,node_transferlogscreen,node_transferlog toneMint
class node_currencyexchange,node_currencyconvert,node_currencylist,node_currencymodel,node_currencyfile toneRose
class node_operator toneIndigo
```

## Components

### Console navigation

- [Main menu](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsMainScreen.h): `Bank OOP Project/clsMainScreen.h`
- [Application entry](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/Bank%20OOP%20Project.cpp): `Bank OOP Project/Bank OOP Project.cpp`
- [Login screen](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsLogenScreen.h): `Bank OOP Project/clsLogenScreen.h`
- [Screen base](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsScrean.h): `Bank OOP Project/clsScrean.h`
- [Parsing and validation](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsString.h): `Bank OOP Project/clsString.h`

### Clients and banking

- [Client screens](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsClientListScrean.h): `Bank OOP Project/clsClientListScrean.h`
- [Add client](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsAddNewClientScreen.h): `Bank OOP Project/clsAddNewClientScreen.h`
- [Update client](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsUpdateClientScreen.h): `Bank OOP Project/clsUpdateClientScreen.h`
- [Delete client](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsDeleteClientScreen.h): `Bank OOP Project/clsDeleteClientScreen.h`
- [Find client](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsFindClientScreen.h): `Bank OOP Project/clsFindClientScreen.h`
- [Transaction menu](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsTransactionsScreen.h): `Bank OOP Project/clsTransactionsScreen.h`
- [Deposit screen](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsDepositeScreen.h): `Bank OOP Project/clsDepositeScreen.h`
- [Withdraw screen](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsWithdrawScreen.h): `Bank OOP Project/clsWithdrawScreen.h`
- [Transfer screen](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsTransferScreen.h): `Bank OOP Project/clsTransferScreen.h`
- [Bank client model](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsBankClient.h): `Bank OOP Project/clsBankClient.h`
- [Client records](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/Clients.txt): `Bank OOP Project/Clients.txt`

### Users and audit

- [User management](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsManageusers.h): `Bank OOP Project/clsManageusers.h`
- [User model](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsUser.h): `Bank OOP Project/clsUser.h`
- [User records](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/Users.txt): `Bank OOP Project/Users.txt`
- [Login audit](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/LoginRegister.txt): `Bank OOP Project/LoginRegister.txt`
- [Login register screen](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsLoginRegisterScreen.h): `Bank OOP Project/clsLoginRegisterScreen.h`
- [Transfer log screen](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsTransferLogScreen.h): `Bank OOP Project/clsTransferLogScreen.h`
- [Transfer records](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/TransferLog.txt): `Bank OOP Project/TransferLog.txt`

### Currency exchange

- [Currency exchange](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsShowCurrencyExchangeScreen.h): `Bank OOP Project/clsShowCurrencyExchangeScreen.h`
- [Currency calculator](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsCurrencyCalculaterScreen.h): `Bank OOP Project/clsCurrencyCalculaterScreen.h`
- [Currency screens](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsCurrenciesListScreen.h): `Bank OOP Project/clsCurrenciesListScreen.h`
- [Currency model](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/clsCurrency.h): `Bank OOP Project/clsCurrency.h`
- [Currency rates](https://github.com/moazabdulsalam/oop-bank-project/blob/main/Bank%20OOP%20Project/Currencies.txt): `Bank OOP Project/Currencies.txt`

### Other components

- **Bank operator**

## Connections

- Bank operator → Application entry: starts
- Application entry → Login screen: launches
- Application entry → Main menu: opens
- 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 → Transaction menu: dispatches
- Main menu → User management: dispatches
- Main menu → Login register screen: dispatches
- Main menu → Currency exchange: dispatches
- Main menu → Login screen: authenticates
- Login screen → User model: checks credentials
- Client screens → Bank client model: lists clients
- Add client → Bank client model: saves client
- Update client → Bank client model: updates client
- Delete client → Bank client model: deletes client
- Find client → Bank client model: finds client
- Bank client model → Client records: reads and writes
- Transaction menu → Deposit screen: dispatches
- Transaction menu → Withdraw screen: dispatches
- Transaction menu → Transfer screen: dispatches
- Deposit screen → Bank client model: updates balance
- Withdraw screen → Bank client model: updates balance
- Transfer screen → Bank client model: transfers funds
- Bank client model → Transfer records: appends transfer
- User management → User model: manages users
- User model → User records: reads and writes
- User model → Login audit: reads audit
- Login register screen → User model: lists audit records
- Main menu → Transfer log screen: opens logs
- Transfer log screen → Bank client model: reads transfer records
- Currency exchange → Currency calculator: offers conversion
- Currency exchange → Currency screens: offers currency views
- Currency calculator → Currency model: converts amounts
- Currency screens → Currency model: lists and searches
- Currency model → Currency rates: reads and writes
- Bank client model → Parsing and validation: parses records
- User model → Parsing and validation: parses records
- Currency model → Parsing and validation: parses records
