This project is a music library application built in Java using object-oriented programming principles. It allows users to manage songs, albums, and playlists, with features such as ratings, favorite songs, search, and shuffle functionality.
This project demonstrates object-oriented design, modular architecture, and real-world data management features in a structured Java application.
This repository is included as part of my personal software portfolio.
- Manage songs, albums, and playlists
- Add, remove, and search songs
- Rating system (1–5) for songs
- Automatic identification of favorite songs
- Shuffle functionality for playlists
- File-based album data handling
- Unit testing with JUnit
My individual work on this project included:
- Designing and implementing object-oriented classes such as
Song,Album,Playlist,User, andRating - Building playlist management features including adding, removing, and organizing songs
- Implementing a song rating system and favorite-song logic
- Developing shuffle functionality for playlist playback
- Creating a model-based structure through
LibraryModel.javato manage application logic - Working with file-based album data stored in the
albumsfolder - Writing and maintaining unit tests in
JUnitTest.java
- Java
- Object-Oriented Programming (OOP)
- JUnit
- File I/O
- Open the project in Eclipse or another Java IDE
- Make sure the source files are under
src/proj1 - Compile the Java files
- Run the main application class (e.g.,
View.javaor a designated entry point if available)
Song.java– represents individual songsAlbum.java– represents albums and song collectionsPlaylist.java– manages playlist behaviorRating.java– handles song rating logicUser.java/Users.java– supports user-related dataLibraryModel.java– manages application logic and stateView.java– handles user interactionMusicStore.java– supports music library/store behaviorJUnitTest.java– unit tests for core functionality
This project demonstrates object-oriented design, modular programming, and implementation of user-focused features in a structured Java application.