A comprehensive console-based banking application built in C++ that provides complete client and user management functionality with banking operations.
This Bank Management System is a feature-rich console application that demonstrates solid object-oriented programming principles and clean architecture. It provides a complete banking solution with user authentication, client management, and financial transactions.
- User Login System: Secure username/password authentication
- Permission-Based Access Control: Granular permissions for different system functions
- Session Management: Maintains user session throughout the application
- Complete CRUD Operations: Create, Read, Update, Delete client records
- Client Search: Find clients by account number
- Client Information: Personal details, account numbers, PIN codes, and balances
- Soft Delete: Safe deletion with recovery capability
- Deposits: Add money to client accounts
- Withdrawals: Remove money with balance validation
- Balance Inquiries: View individual and total account balances
- Transaction History: Track all financial operations
- User Administration: Add, update, and delete system users
- Permission Management: Assign specific permissions to users
- User List: View all system users
- File-Based Storage: Reliable data storage using text files
- Data Serialization: Custom format for data storage and retrieval
- Backup Capability: Easy data backup and restore
- Screen-Based Navigation: Clean separation of UI screens
- Inheritance Hierarchy: Proper OOP with base classes
- Factory Pattern: Object creation and management
- Data Access Layer: Centralized data operations
clsPerson (Base Class)
โโโ clsBankClient (Client Management)
โโโ clsUser (User Management)
Screen Classes
โโโ clsMainScreen (Main Menu)
โโโ clsLoginScreen (Authentication)
โโโ clsTransactionsScreen (Banking Operations)
โโโ clsClientListScreen (Client Display)
โโโ clsAddNewClientScreen (Client Creation)
โโโ clsUpdateClientScreen (Client Updates)
โโโ clsDeleteClientScreen (Client Deletion)
โโโ clsFindClientScreen (Client Search)
โโโ clsDepositScreen (Deposit Operations)
โโโ clsWithdrawScreen (Withdrawal Operations)
โโโ clsTotalBalancesScreen (Balance Display)
โโโ clsManageUsersScreen (User Management)
- Visual Studio 2019 or later (with C++ support)
- Windows 10/11 (uses Windows-specific console commands)
- C++17 or later standard
- Clone or Download the project to your local machine
- Open
BankSystem.slnin Visual Studio - Build the solution (Ctrl+Shift+B)
- Run the application (F5 or Ctrl+F5)
- The application will create
Users.txtandClients.txtfiles automatically - Default admin credentials may be available in the Users.txt file
- Create your first user account through the user management system
BankSystem/
โโโ BankSystem.cpp # Main application entry point
โโโ Global.h # Global variables and constants
โโโ clsPerson.h # Base class for person data
โโโ clsBankClient.h # Client management class
โโโ clsUser.h # User management class
โโโ clsMainScreen.h # Main menu screen
โโโ clsLoginScreen.h # Login authentication screen
โโโ clsTransactionsScreen.h # Banking transactions menu
โโโ clsClientListScreen.h # Client list display
โโโ clsAddNewClientScreen.h # Add new client screen
โโโ clsUpdateClientScreen.h # Update client screen
โโโ clsDeleteClientScreen.h # Delete client screen
โโโ clsFindClientScreen.h # Find client screen
โโโ clsDepositScreen.h # Deposit operations screen
โโโ clsWithdrawScreen.h # Withdrawal operations screen
โโโ clsTotalBalancesScreen.h # Balance display screen
โโโ clsManageUsersScreen.h # User management screen
โโโ clsScreen.h # Base screen class
โโโ clsInputValidate.h # Input validation utilities
โโโ clsString.h # String manipulation utilities
โโโ clsUtil.h # General utilities
โโโ clsDate.h # Date handling utilities
โโโ Users.txt # User data storage
โโโ Clients.txt # Client data storage
โโโ README.md # This documentation file
- Start the application
- Enter your username and password
- Access the main menu upon successful authentication
- Show Client List - View all registered clients
- Add New Client - Register a new bank client
- Delete Client - Remove a client from the system
- Update Client Info - Modify existing client information
- Find Client - Search for a specific client
- Transactions - Access banking operations
- Manage Users - Administer system users
- Logout - End current session
- Deposits: Select client and enter amount to deposit
- Withdrawals: Select client and enter amount (validates sufficient funds)
- Balance Inquiry: View total balances across all accounts
- Plain Text Storage: Passwords and PINs are stored in plain text
- File-Based Security: Relies on file system permissions
- No Encryption: Data is not encrypted at rest
- Password Hashing: Implement bcrypt or SHA-256 hashing
- Data Encryption: Encrypt sensitive data in files
- Input Validation: Add comprehensive input sanitization
- Audit Logging: Track all system operations
- Database Migration: Consider moving to a proper database
Client and user data is stored in delimited text format:
FirstName#//#LastName#//#Email#//#Phone#//#AccountNumber#//#PinCode#//#Balance
- Users.txt: Contains all system user accounts
- Clients.txt: Contains all bank client records
- Build Output: Executable and debug files in x64/Debug/
- Stack Allocation: Uses RAII principles
- No Dynamic Memory: Avoids memory leaks
- Automatic Cleanup: Proper resource management
- Security: Passwords stored in plain text
- Concurrency: No protection against simultaneous access
- Error Handling: Limited error recovery mechanisms
- Data Validation: Basic input validation only
- Platform Dependency: Windows-specific console commands
- Implement password hashing
- Add comprehensive input validation
- Improve error handling and recovery
- Add transaction logging
- Create data backup functionality
- Migrate to database storage
- Add web-based interface
- Implement multi-user concurrent access
- Add reporting and analytics
- Create mobile application
This project serves as an educational example of C++ application development. Contributions are welcome for:
- Security improvements
- Code optimization
- Additional features
- Documentation enhancements
- Bug fixes
This project is provided as-is for educational purposes. Feel free to use, modify, and distribute according to your needs.
For questions or issues:
- Review the code documentation
- Check the class comments for implementation details
- Examine the data files for format understanding
- Test with sample data to understand functionality
Note: This is a demonstration project showcasing C++ programming concepts and should not be used in production environments without proper security enhancements.