A modern console-based banking application written in C++, designed to simulate real-world banking operations with client, user, and transaction management features.
Itβs a clean, well-structured project ideal for learning OOP, file handling, and system architecture in C++.
This project demonstrates how to build a complete banking system using Object-Oriented Programming principles.
It provides separate modules for user login, client accounts, and transaction handling while saving data securely in files.
The system is fully menu-driven and offers role-based access, making it useful for both beginners learning C++ and intermediate developers practicing clean software design.
- Login with username and password
- Permission-based access to system features
- Active session management
- Add, view, update, and delete bank clients
- Search by account number
- Manage PIN codes, balances, and personal details
- Deposit and withdraw money from client accounts
- Check total and individual account balances
- Validate balance before withdrawals
- Create, edit, and delete system users
- Assign roles and permissions to users
- View full user list
- Persistent data stored in text files
- Custom serialization/deserialization
- Automatic data file creation on first run
Each screen is an independent UI module that handles its own logic, making the system easy to maintain and extend.
- Windows 10/11
- Visual Studio 2019+ with C++ support
- C++17 standard or newer
- Clone this repository or download the ZIP
- Open the
.slnfile in Visual Studio - Build the project (
Ctrl+Shift+B) - Run the program (
F5)
On first launch, the system will create
Clients.txtandUsers.txtautomatically.
BankSystem/ β βββ BankSystem.cpp
βββ Global.h
βββ clsPerson.h
βββ clsBankClient.h
βββ clsUser.h
β
βββ clsMainScreen.h
βββ clsLoginScreen.h
βββ clsTransactionsScreen.h
βββ clsClientListScreen.h
βββ clsAddNewClientScreen.h
βββ clsUpdateClientScreen.h
βββ clsDeleteClientScreen.h
βββ clsFindClientScreen.h
βββ clsDepositScreen.h
βββ clsWithdrawScreen.h
βββ clsTotalBalancesScreen.h
βββ clsManageUsersScreen.h
β
βββ clsScreen.h
βββ clsInputValidate.h
βββ clsString.h
βββ clsUtil.h
βββ clsDate.h
β
βββ Users.txt
βββ Clients.txt
βββ README.md
- Start the program
- Go to User.txt and git (user and password)
- Use the main menu to:
- 1 Show Client List
- 2 Add New Client
- 3 Update Client Info
- 4 Delete Client
- 5 Find Client
- 6 Transactions (deposit, withdraw, check balance)
- 7 Manage Users
- 8 Logout
Data format FirstName#//#LastName#//#Email#//#Phone#//#AccountNumber#//#PinCode#//#Balance
Storage
Users.txtβ user accountsClients.txtβ bank clients
Memory
- Uses stack allocation and RAII principles
- No raw dynamic memory to prevent leaks
- Windows-only (uses Windows console)
- No concurrent access handling
- Minimal error handling
- Limited input validation
- Implement secure password hashing
- Migrate to a real database (SQLite/MySQL)
- Create a GUI or web interface
- Mobile version support
This project is built for educational purposes.
Contributions are welcome β especially in:
- Security
- Code quality
- New features
- Bug fixing