A Java-based desktop application
This project simulates a football transfer window where a club manager can browse, filter, search, and purchase real-world players while managing club budgets and dynamic overall squad ratings.
The system is designed following core Object-Oriented Programming (OOP) principles and adheres strictly to standard Java framework libraries.
+-----------------------------------------------------------------------+ | TransferSystemGUI | | (Swing / Event Handling) | +-----------------------------------+-----------------------------------+ | +-------------------------+-------------------------+ | | | v v v +--------------+ +---------------+ +---------------+ | FileManager | | CurrencyAPI | | UserClub | | (File I/O) | | (REST API) | | (Club Logic) | +------+-------+ +---------------+ +-------+-------+ | | +-------------------------+-------------------------+ | v +--------------------+ | Player (Abstract)| +---------+----------+ | +-----------------+-------+-------+-----------------+
- Advanced Search & Filtering: Filter 50+ real players dynamically by position (
ST,MID,DEF,GK), name substrings, minimum overall rating (OVR), and maximum price limit. - Live Financial Data (REST API): Integrated live currency rate fetching (
USDtoBDT) via standard HTTP networking without external third-party dependencies. - Data Persistence (File I/O): Saves market updates locally (
transfer_data.dat) using Java Object Serialization so purchases persist across app restarts. - Custom Exception Handling: Built-in safeguards preventing transfers if the transfer window closes or if the club exceeds its available transfer budget.
- Dynamic Squad Rating: Squad overall OVR dynamically recalculates after every successful signing based on active player statistics.
- Inheritance & Abstraction:
Playeris an abstract base class implemented by specialized position classes (Striker,Midfielder,Defender,Goalkeeper). - Interfaces & Polymorphism: Implements
Transferableinterface with position-specific transfer fee calculation algorithms. - Custom Exception Classes:
TransferBudgetExceptionandTransferDeadlineException. - Multithreading: Async execution for HTTP API polling to prevent UI thread blocking.
- Collections & Streams: Used Java
ArrayListandStream APIfor parameter-based search filtering. - GUI & Event Driven Programming: Java Swing (
JFrame,JTable,DefaultTableModel,JOptionPane).
All project files are organized inside a unified package structure:
src/
└── com/nsu/transferapp/
├── Transferable.java // Interface for market calculations
├── Player.java // Abstract base model class
├── Striker.java // Subclass implementation
├── Midfielder.java // Subclass implementation
├── Defender.java // Subclass implementation
├── Goalkeeper.java // Subclass implementation
├── UserClub.java // Handles budget & squad OVR calculations
├── TransferBudgetException.java // Custom exception
├── TransferDeadlineException.java // Custom exception
├── FileManager.java // Handles object serialization (File I/O)
├── CurrencyAPI.java // REST API HTTP client logic
└── TransferSystemGUI.java // Main GUI application entry point