A robust, dual-application core banking system simulation built entirely in C++20.
NexusBank-CLI is a complete banking system simulation consisting of two standalone console applications that work together:
| Application | Purpose | Target User |
|---|---|---|
| NexusBank Manager | Administrative operations and client management | Bank Staff / Administrators |
| NexusBank ATM | Self-service banking transactions | Bank Clients |
Both applications share a common flat-file database (Data/), enabling seamless data persistence and real-time synchronization between staff and client operations.
| Category | Features |
|---|---|
| Client Management | Full CRUD operations: List, Add, Update, Delete, and Find clients |
| User Management | Manage system users with granular permission controls |
| Permissions System | Bitwise permission flags (List, Add, Delete, Update, Find, Transactions, Manage Users) |
| Transactions | Process deposits, withdrawals, and view total bank balances |
| Security | Role-based access control with login authentication |
| Feature | Description |
|---|---|
| Quick Withdraw | Pre-set withdrawal amounts ($20, $50, $100, $200, $400, $600, $800, $1000) |
| Normal Withdraw | Custom withdrawal amounts (multiples of 5) |
| Deposit | Add funds to account balance |
| Balance Inquiry | View current account balance |
| Secure Login | Account Number + PIN authentication |
| Technology | Usage |
|---|---|
| C++20 | Core language standard |
| STL Containers | std::vector for in-memory data processing |
| File I/O | std::fstream for persistent storage |
| Modular Design | Procedural architecture with clearly separated concerns |
- Custom Serialization/Deserialization — Records are converted to/from delimited strings
- In-Memory Processing — Data loaded into vectors for efficient manipulation
- Flat-File Database — Human-readable
.txtfiles with custom delimiter
The system uses a custom flat-file database with #//# as the field delimiter.
AccountNumber#//#PinCode#//#Name#//#Phone#//#Balance
Example:
A001#//#1234#//#John Doe#//#555-0100#//#5000.00
A002#//#5678#//#Jane Smith#//#555-0200#//#12500.50
Username#//#Password#//#Permissions
Example:
Admin#//#Admin#//#-1
Teller01#//#pass123#//#35
Note: Permission value
-1grants full access. Other values use bitwise flags:1= List Clients |2= Add Client |4= Delete Client |8= Update Client |16= Find Client |32= Transactions |64= Manage Users
- C++20 compatible compiler (GCC 10+, Clang 10+, or MSVC 2019+)
- Windows OS (uses
system("cls")andsystem("pause"))
- Open
NexusBank_CLI/NexusBank_CLI.slnxorNexusBank_ATM/NexusBank_ATM.slnx - Set configuration to Debug or Release
- Build the solution (
Ctrl+Shift+B) - Run with
F5orCtrl+F5
Important: Ensure the
Datafolder is located two levels up from the executable (..\..\Data\).
# Compile NexusBank Manager
g++ -std=c++20 -o NexusBank_Manager.exe NexusBank_CLI/NexusBank_CLI.cpp
# Compile NexusBank ATM
g++ -std=c++20 -o NexusBank_ATM.exe NexusBank_ATM/NexusBank_ATM.cpp:: Compile NexusBank Manager
cl /std:c++20 /EHsc NexusBank_CLI\NexusBank_CLI.cpp /Fe:NexusBank_Manager.exe
:: Compile NexusBank ATM
cl /std:c++20 /EHsc NexusBank_ATM\NexusBank_ATM.cpp /Fe:NexusBank_ATM.exe| Application | Username/Account | Password/PIN |
|---|---|---|
| Manager | Admin |
Admin |
| ATM | Admin |
Admin |
NexusBank-CLI/
├── Data/
│ ├── Clients.txt # Client database
│ └── Users.txt # User/admin database
├── NexusBank_ATM/
│ ├── NexusBank_ATM.cpp # ATM application source
│ └── *.vcxproj # Visual Studio project files
├── NexusBank_CLI/
│ ├── NexusBank_CLI.cpp # Manager application source
│ └── *.vcxproj # Visual Studio project files
└── README.md
This project is available for educational purposes.
NexusBank-CLI — Banking made simple. 💳