This repository contains my Object-Oriented Programming coursework for the University of Greenwich (August 2025).
It’s a Tkinter-based Jukebox Simulation built in Python, allowing users to view, search, filter, create playlists, update tracks, and play music with cover images and audio.
- View Tracks – Browse the music library with dynamic cover images, star ratings, and play counts.
- Search & Filter – Search by name or artist, filter by artist, rating, or play count range.
- Playlist Creation – Add multiple tracks at once, save/load playlists, and play/pause music.
- Track Management – Add, update, or delete tracks with media uploads (image/audio).
- Media Integration – Organized local storage for cover images (
track_images/
) and audio files (track_sounds/
). - OOP Design – Encapsulation, inheritance, and modularity for maintainability and scalability.
- Language: Python 3.12
- GUI Framework: Tkinter & ttk
- Audio Playback: Pygame
- Image Handling: Pillow (PIL)
- Data Storage: CSV files (
tracks.csv
,playlist.csv
) - Testing: unittest / pytest
University\_Coursework\_OOP\_August\_2025/
├── single\_gui.py # Main entry point (launch from here)
├── view\_tracks\_tab.py # View/Search/Filter tab
├── create\_track\_list\_tab.py # Playlist creation tab
├── update\_tracks\_tab.py # Track management tab
├── track\_library.py # Backend logic & data handling
├── library\_item.py # Track model classes
├── font\_manager.py # Global font settings
├── tracks.csv # Track metadata
├── playlist.csv # Example playlist
├── track\_images/ # Cover images
├── track\_sounds/ # Audio files
├── test\_library\_item.py # Unit tests for model classes
└── requirements.txt # Project dependencies
git clone https://github.com/WillyPhan06/University_Coursework_OOP_August_2025.git
cd University_Coursework_OOP_August_2025
Make sure you have Python 3.12+ installed, then run:
pip install -r requirements.txt
tkinter
comes pre-installed with most Python distributions.
From the project root:
python single_gui.py
-
View Tracks Tab
- Browse the library with images, ratings, and play counts.
- Search or filter to find tracks quickly.
-
Create Playlist Tab
- Add multiple tracks by ID, save/load playlists, and play/pause songs.
-
Update Tracks Tab
- Add new tracks with image/audio, update ratings or metadata, delete tracks by ID.
-
Data Persistence
- All updates are saved to
tracks.csv
, images totrack_images/
, and audio totrack_sounds/
.
- All updates are saved to
Run the included unit tests:
python test_library_item.py
This project was developed for academic purposes as part of my university coursework. You’re welcome to explore, but please do not plagiarize for academic submissions.