Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Football Transfer Market & Club Management System

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.


Architecture & System Design

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)| +---------+----------+ | +-----------------+-------+-------+-----------------+


Key Features

  • 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 (USD to BDT) 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.

OOP & Java Concepts Applied

  • Inheritance & Abstraction: Player is an abstract base class implemented by specialized position classes (Striker, Midfielder, Defender, Goalkeeper).
  • Interfaces & Polymorphism: Implements Transferable interface with position-specific transfer fee calculation algorithms.
  • Custom Exception Classes: TransferBudgetException and TransferDeadlineException.
  • Multithreading: Async execution for HTTP API polling to prevent UI thread blocking.
  • Collections & Streams: Used Java ArrayList and Stream API for parameter-based search filtering.
  • GUI & Event Driven Programming: Java Swing (JFrame, JTable, DefaultTableModel, JOptionPane).

Package Structure

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

About

A Java Swing desktop application built for simulating a football transfer market with custom exceptions, file persistence, dynamic squad OVR updates, and live USD-to-BDT currency conversion.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages