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.