Repository navigation
Bank System - Release Notes
Version 1.0.0
Release Date: March 25, 2026
Summary
Initial release of the Bank System application, a complete banking management system via command-line interface (CLI). The application offers essential features for banking operations with a robust and well-structured architecture.
Main Features
Account Management
- Create new bank accounts with account holder name
- Switch between existing bank accounts
- View detailed information of the main account
- Modify account status (Active, Blocked, Closed)
Financial Operations
- Deposits: Transfer funds to the main account
- Withdrawals: Withdraw funds from the main account
- Transfers: Send funds between accounts
Queries and Reports
- List all bank accounts
- Search for specific accounts by ID
- List all transactions from an account
- Search for specific transactions by ID
- View complete transaction history with details
Session Management
- Maintains an active main account during the session
- Clear display of account status in each operation
Improvements and Fixes
Exception Handling
- Robust exception handling in all operations
- Clear and informative error messages for the user
- Data input validation with immediate feedback
User Interface
- Intuitive and well-structured menu
- Automatic screen clearing for better visualization
- Adequate spacing between information for better readability
- Automatic pause after each operation for review
Validations
- Validation of monetary values (BigDecimal)
- Verification of valid account IDs
- Confirmation of critical actions (status change, account switching)
System Requirements
- Java 11 or higher
- Maven 3.6 or higher
How to Install
-
Clone the repository:
git clone https://github.com/Combxzzz/BankSystem-Java.git cd BankSystem-java -
Compile the project:
mvn clean compile
-
Run the application:
mvn exec:java -Dexec.mainClass="app.Application"
How to Use
When starting the application, you will be prompted to create an initial account. The main menu offers the following options:
Main Menu
1 - Create Account Create a new bank account
2 - Deposit Make a deposit to the main account
3 - Withdraw Make a withdrawal from the main account
4 - Transfer Transfer funds to another account
5 - Accounts List or search accounts
6 - Transactions List or search transactions
7 - Switch Account Switch the active main account
8 - Switch Account Status Change the status of the main account
0 - Exit Exit the application
Usage Example
Welcome to Bank System
Create Account
Holder name: John Smith
Account created! ID: 1
Main account defined!
====================================
MAIN ACCOUNT
ID: 1
Holder: John Smith
Balance: 0.00
Status: ACTIVE
====================================
=== MENU ===
1 - Create Account
2 - Deposit
3 - Withdraw
4 - Transfer
5 - Accounts
6 - Transactions
7 - Switch Account
8 - Switch Account Status
0 - Exit
Option: 2
Deposit
Amount: 500.00
Description: Initial deposit
Deposit successful!
Architecture
The application follows a well-defined layered architecture:
Presentation Layer (app/)
Application.java: CLI interface with menus and user interactionsSession.java: Session management and active main account
Service Layer (service/)
BankAccountService.java: Business logic for accountsTransactionService.java: Business logic for transactions
Repository Layer (repository/)
Repository.java: Generic interface for data accessAbstractRepository.java: Base implementation for repositoriesBankAccountRepository.java: Account data accessTransactionRepository.java: Transaction data access
Model Layer (model/)
BankAccount.java: Bank account entityTransaction.java: Transaction entityenums/AccountStatus.java: Possible account statesenums/TransactionType.java: Transaction types
Compatibility Notes
- The application uses
BigDecimalfor monetary operations, ensuring precision - Supports multiple accounts per session
- In-memory persistence (ideal for demonstrations and testing)
Known Limitations
- Data is stored in memory and does not persist after application termination
- Interface limited to terminal/CLI
- No authentication or security implemented
- No support for multiple currencies
Future Versions
The following features are planned for future releases:
- Relational database persistence
- Graphical interface (GUI)
- User authentication and authorization
- Multiple currency support
- Unit and integration tests
- REST API for integration with other systems
- Reports and PDF statements
Contributing
To contribute to the project, follow these steps:
- Fork the repository
- Create a branch for your feature:
git checkout -b feature/your-feature-name - Commit your changes:
git commit -am 'Add new feature' - Push to the branch:
git push origin feature/your-feature-name - Open a Pull Request
License
This project is licensed under the MIT License. See the LICENSE file for details.
Support
For questions, suggestions, or bug reports, open an issue on the repository or contact the development team.
Changelog
v1.0.0 (March 25, 2026)
- Initial release
- All main features implemented
- Complete CLI interface
- Layered architecture
- Exception handling
- Complete documentation