A mini C++ project aimed at simulating a fully functional bank system with account management, secure login, transaction tracking, and customer service features. This project represents a complete overhaul of the original legacy codebase in New_Bank_Record.cpp
, culminating in a modern, modular, and user-friendly version in BankSystem.cpp
.
A demo video and some screenshots are attached for reference.
- Dhruvam Panchal - 202401415
- Dwij Patel - 202401418
- Shubh Patel - 202401478
- Yashraj Solanki - 202401481
- Creating/modifying/searching bank accounts
- Deposits, withdrawals, fund transfers
- Managing customer and employee logins
- Service request queuing
- Transaction history tracking
- Why BST? Efficient searching, in-order display, and scalability for large datasets.
- Tradeoff: Requires memory and additional code complexity compared to flat files.
- Operations Implemented:
insert()
search()
modify()
inorder()
traversal for listing accounts
-
Account Creation & Modification
- Fully guided input
- Duplicate checks
- Password protection
-
Employee and Customer Roles
- Separate login interfaces
- Role-based menus and features
-
Transaction Management
- Deposit, withdraw, and fund transfer
- Balance update logic with timestamp logging
-
Transaction History
- Maintained using both vector and stack
- Last 10 transactions available to user
-
Customer Service Queue
- Request submission
- FIFO processing by employees
- Service type categorization
-
UI & Experience
- Color-coded CLI using
SetConsoleTextAttribute()
- Consistent screen clearing and user prompts
- Loading screen and instruction screens enhance user flow
- Color-coded CLI using
- Password encryption with hashing
- Multi-platform support (remove WinAPI/conio dependency)
- GUI version using Qt or web frontend
- Admin dashboard for analytics
The Bank Record System is a command-line interface (CLI) application that enables banking operations such as:
This project demonstrates best practices in object-oriented design, file handling, data structures, and UI improvement in C++.
Feature | Legacy (New_Bank_Record.cpp ) |
Upgraded (BankSystem.cpp ) |
---|---|---|
UI/UX | Monochrome CLI, static colors, limited options | Color-coded UI, structured menus, improved instructions |
Modularization | Flat structure, spaghetti code | Fully OOP with encapsulated classes and functions |
Data Structures | Arrays, flat file parsing | BST , map , vector , stack , queue |
Security | Hardcoded login credentials | Password masking, hashed credentials (extension-ready) |
Performance | Line-by-line CSV rewrites | In-memory BST with efficient lookups and updates |
Data Persistence | Fragile CSV management | Cleaner CSV handling, separate credential files |
Customer Service | Not implemented | Implemented via service queue (FIFO) |
Transaction History | Absent | Supported via vector and stack tracking |
Code Readability | Poor | Highly readable, maintainable structure |
Structure | Purpose |
---|---|
map<string, string> |
Stores account & employee login credentials (hash map for O(1) lookup) |
vector<string> |
Maintains transaction history (append-only log) |
stack<string> |
Tracks recent transactions for LIFO viewing |
queue<string> |
Handles customer service requests (FIFO discipline) |
BST (Binary Search Tree) |
Core storage of account records for O(log n) search, insert, modify |
Decision | Tradeoff Justification |
---|---|
BST over flat file search | Better performance, but increased code complexity |
Using console-based UI | Simplified deployment, less interactive than GUI |
CSV storage instead of DB | Lightweight, portable, but less robust |
Windows-only conio.h + WinAPI |
Simplified development, but not cross-platform |
No real password encryption | Left open for extension; current approach masks password input |
Bank-Management-System/
├── BankSystem.cpp # Final upgraded implementation
├── New_Bank_Record.cpp # Original legacy code
├── Account_info.csv # Stores user credentials
├── Employee_info.csv # Stores employee credentials
├── Bank_Record.csv # Stores all account data
└── README.md # This file
This project is open-source and free to use under the MIT License.


