The Bank System is a robust, object-oriented project developed in C++ utilizing Object-Oriented Design (OOD) principles. It features functionalities for user authentication, role-based permissions, and account transfers, all built with a focus on scalability and security. The permission system is implemented using binary system data structures and algorithms (DSA).
- Login: Secure user authentication with username and password.
- Logout: Ensures active sessions are terminated securely.
- Admin Role:
- Manage users (add, update, delete accounts).
- View all transactions.
- Generate system reports.
- Standard User Role:
- View account details.
- Perform balance inquiries.
- Transfer funds to other accounts.
- Secure fund transfers between accounts.
- Logs and tracks each transaction for transparency.
- Built using binary system data structures.
- Flexible system to assign and manage roles dynamically.
The project adheres to the following principles:
- Single Responsibility Principle (SRP): Each class has a single, well-defined responsibility.
- Open/Closed Principle (OCP): Classes are open for extension but closed for modification.
- Liskov Substitution Principle (LSP): Ensures derived classes can substitute their base classes without altering functionality.
- Interface Segregation Principle (ISP): Interfaces are client-specific to avoid unnecessary dependencies.
- Dependency Inversion Principle (DIP): High-level modules are not dependent on low-level modules; both rely on abstractions.
- Programming Language: C++
- Data Structures: Binary system for permission management.
This layer contains the core logic and functionality of the system.
Client.h: Manages client-related operations.Currency.h: Handles currency-related operations.Person.h: Abstract representation of a person in the system.User.h: Defines user-specific functionalities.
This layer consists of all the UI screens for interacting with the system.
AddNewClientScreen.h: Interface for adding a new client.ClientListScreen.h: Interface for displaying a list of clients.DeleteClientScreen.h: Interface for deleting a client.FindClientScreen.h: Interface for searching for a client.UpdateClientScreen.h: Interface for updating client details.
CurrenciesListScreen.h: Interface for listing available currencies.CurrencyCalculatorScreen.h: Screen for calculating currency conversions.CurrencyExchangeMainScreen.h: Main interface for currency exchange.FindCurrencyScreen.h: Screen for searching currencies.UpdateCurrencyRateScreen.h: Interface for updating currency rates.
GlobalUser.h: Manages global user operations.InterfaceCommunication.h: Handles communication between interface layers.LoginScreen.h: User login screen.MainScreen.h: Main screen after login.Screen.h: Base class for all screens.
This layer contains utility files and helper functions used across the project.
Date.h: Manages date-related functionalities.Input_Validation.h: Contains input validation utilities.MainComponents.h: Core components shared across layers.Period.h: Represents a period for financial operations.String.h: Provides string-related helper functions.Utility.h: General-purpose utility functions.
This section includes assets, configurations, and additional files required by the system.
Contains the implementation of system functionalities and integrations.
- C++ Compiler (e.g., GCC, Clang, or Visual Studio Compiler)
- CMake (optional, for build automation)
-
Clone the repository:
git clone https://github.com/yourusername/bank-system.git
-
Navigate to the project directory:
cd bank-system -
Compile the project:
g++ -o BankSystem src/*.cpp -
Run the executable:
./BankSystem
- Login as Admin.
- Manage user accounts (add/update/delete).
- View all transactions and generate system reports.
- Login with valid credentials.
- View account balance.
- Transfer funds securely to other accounts.
- Encryption: Enhance security by encrypting sensitive data.
- Database Integration: Replace file-based storage with an SQL/NoSQL database.
- Mobile App Support: Extend functionality to mobile platforms.
Contributions are welcome! Please fork the repository and create a pull request with detailed descriptions of your changes.
This project is licensed under the MIT License - see the LICENSE file for details.
For any inquiries or feedback, please reach out to:
- Name: Zeyad Mohamed Abdou
- Email: zeyadana2020@gamil.com