A secure, console-based banking application built with C++ as a learning project.
It demonstrates object-oriented design, password hashing, file persistence, and efficient data structures.
- ✅ Create new bank accounts with password
- ✅ Secure password hashing (with salt and key stretching)
- 🔄 Login with account number and password (inprocess)
- ✅ Deposit and withdraw funds
- ✅ Persistent storage (accounts saved to file)
- ✅ Fast account lookup using vector + hash map hybrid
- ✅ Password strength validation
- 🔄 Transaction history (planned)
- 🔄 GUI version with Qt (future enhancement)
- C++17 compatible compiler (g++, MinGW, etc.)
Open a terminal in the project folder and run:
g++ src/*.cpp -o bin/banking.exeor Use the provided batch file to compile and run
BankSystem/
│
├── .gitignore
├── README.md
├── build.bat
│
├── data/
│ └── data_file.dat
│
├── images/
│ ├── CreatingNewAccount_Screen.png
│ ├── CurrentMenu_Screen.png
│ └── Logged_Screen.png
│
└── src/
├── BankAccount.cpp
├── BankAccount.h
├── BankDataBase.cpp
├── BankDataBase.h
├── LibFunctions.cpp
├── LibFunctions.h
├── main.cpp
├── PasswordManager.cpp
└── PasswordManager.h
Implementing a secure password hashing algorithm with salt
Using std::vector for fast lookups (to be improved, currently on O(n)
File I/O for persistent data storage
Object-oriented design with multiple classes and namespaces
Defensive programming (input validation, error handling)
This project is a work in progress. Core banking operations work, but I plan to add: Exception handling when dealing with files
Improve the menu after the user successfully loged into their account
See how current menu looks

Transaction history
Account locking after failed attempts
A graphical user interface using Qt