Skip to content

v1.0.0

Latest

Choose a tag to compare

@Combxzzz Combxzzz released this 25 Mar 14:24
80c0267

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

  1. Clone the repository:

    git clone https://github.com/Combxzzz/BankSystem-Java.git
    cd BankSystem-java
  2. Compile the project:

    mvn clean compile
  3. 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 interactions
  • Session.java: Session management and active main account

Service Layer (service/)

  • BankAccountService.java: Business logic for accounts
  • TransactionService.java: Business logic for transactions

Repository Layer (repository/)

  • Repository.java: Generic interface for data access
  • AbstractRepository.java: Base implementation for repositories
  • BankAccountRepository.java: Account data access
  • TransactionRepository.java: Transaction data access

Model Layer (model/)

  • BankAccount.java: Bank account entity
  • Transaction.java: Transaction entity
  • enums/AccountStatus.java: Possible account states
  • enums/TransactionType.java: Transaction types

Compatibility Notes

  • The application uses BigDecimal for 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:

  1. Fork the repository
  2. Create a branch for your feature: git checkout -b feature/your-feature-name
  3. Commit your changes: git commit -am 'Add new feature'
  4. Push to the branch: git push origin feature/your-feature-name
  5. 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