A console-based banking simulator built to showcase modern C++ proficiency, including OOP design, STL usage, file handling, templates, and more.
- Project Overview
- Background & Objective
- Features
- Sample Data
- How It Works
- Typical Output
- Challenges & Solutions
- Technical Design & Language Proficiency
- Usage
- Future Work
- Conclusion
This project is a demonstration of C++ and OOP skills, simulating a banking system with account management, transactions, and persistent storage. It uses real-world inspired data and modular code structure.
To bridge theory and practice in C++, I built a banking system that manages user accounts, supports deposits/withdrawals, and logs transactions. The project demonstrates file I/O, STL containers, error handling, and OOP design patterns.
- Loads and saves account data from CSV files
- Unique Account ID generation (static members)
- STL usage:
map,set,vector - Template functions for utility
- Multiple source/header files (modular design)
- Simple file-based transaction logging
- Unit testing with
assert - Makefile for compilation
- Const correctness and encapsulation
users.csv
account_id,username,email,balance,account_type
1000,JohnDoe,john@example.com,1000.00,Savings
1001,MithraDevi,mithra@example.com,5000.75,Current-
Build the Project:
g++ src/main.cpp src/BankAccount.cpp src/BankSystem.cpp -o bank_app
-
Run the Program:
./bank_app
-
Follow the menu to display accounts, deposit, withdraw, and exit.
1. Display All Accounts
2. Deposit
3. Withdraw
4. Exit
Choice: 1
[Account List]
ID: 1000 | Holder: JohnDoe | Balance: $1000.00 | Type: Savings
ID: 1001 | Holder: MithraDevi | Balance: $5000.75 | Type: Current
...
- File I/O robustness: Ensured correct parsing and updating of CSV files.
- Account uniqueness: Used static members for unique IDs.
- Error handling: Managed invalid input and insufficient funds gracefully.
- Modularity: Split code into headers and implementations for maintainability.
- Encapsulation and modularity: Private members, public accessors, separate files.
- Inheritance & polymorphism: Extendable for Savings/Current accounts.
- STL containers: Efficient account and transaction management.
- Templates: Utility functions for comparisons.
- Unit testing: Assert-based tests for reliability.
- Build automation: Makefile for easy compilation.
-
Build:
g++ src/main.cpp src/BankAccount.cpp src/BankSystem.cpp -o bank_app
-
Run:
./bank_app
-
Interact with the menu for banking operations.
- Add login/authentication system
- Introduce interest rate simulation (SavingsAccount)
- File-based persistent storage for transactions
- Export reports in CSV format
This Banking System project demonstrates my skills in C++ and object-oriented programming. It simulates real-world banking operations with robust logic and modular design. Suggestions and contributions are welcome!
This Banking System project demonstrates my skills in C++ and object-oriented programming. It simulates real-world banking operations with robust logic and modular design. Suggestions and contributions are welcome!
