A JavaFX-based Client-Server Movie Database Management System built for BUET CSE 108 (Object Oriented Programming Lab).
This application allows production companies to manage their movie portfolios through a graphical user interface. It features a multi-threaded server that handles multiple clients simultaneously, with real-time synchronization of movie data.
โโโโโโโโโโโโโโโโโโโโโโโ TCP Socket (Port 8080) โโโโโโโโโโโโโโโโโโโโโโโ
โ JavaFX Client โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโบ โ Server โ
โ (GUI Application) โ DataWrapper โ (Multi-threaded) โ
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โผ โผ
User Interface movies.txt
(FXML + Controllers) (Data Storage)
| Feature | Description |
|---|---|
| ๐ Multi-tenant | Each production company sees only their movies |
| ๐ Real-time Sync | Changes sync between clients via server |
| ๐ฏ Search | Search by name, year, genre, or runtime range |
| ๐ Analytics | Calculate total profit, find best/recent movies |
| โ๏ธ CRUD Operations | Add, delete, transfer movies |
| ๐งต Multi-threaded Server | Handles multiple clients simultaneously |
| ๐พ Persistent Storage | Data saved to movies.txt |
โโโ MovieDatabaseClient/ # JavaFX Client Application
โ โโโ src/main/java/
โ โ โโโ com/example/javatermproject/
โ โ โ โโโ ProjectMain.java # Main application entry
โ โ โ โโโ MainWindow.java # Dashboard controller
โ โ โ โโโ MainFunctions.java # Business logic
โ โ โ โโโ AddMenu.java # Add movie controller
โ โ โ โโโ TransferWindow.java # Transfer movie controller
โ โ โโโ Linker/
โ โ โ โโโ Movie.java # Movie data model
โ โ โ โโโ DataWrapper.java # Network protocol wrapper
โ โ โ โโโ SocketWrapper.java # Socket communication
โ โ โโโ Server/
โ โ โโโ ServerMain.java # Server entry point
โ โ โโโ ReadingFile.java # File input operations
โ โ โโโ WritingFile.java # File output operations
โ โโโ src/main/resources/ # FXML UI files
โ
โโโ MovieDatabaseServer/ # Server Application (standalone)
โ โโโ (Same structure as client)
โ
โโโ movies.txt # Movie database (CSV format)
- Java 21 or higher
- Gradle 8.5 or higher (wrapper included)
-
Clone the repository
git clone https://github.com/mninadmnobo/Movie-DataBase-Management-JavaFX.git cd Movie-DataBase-Management-JavaFX -
Build the project
# Build Server cd MovieDatabaseServer ./gradlew build # Build Client cd ../MovieDatabaseClient ./gradlew build
โ ๏ธ Important: Always start the server before launching any clients!
-
Start the Server
cd MovieDatabaseServer ./gradlew runThe server will start listening on
localhost:8080 -
Start the Client (in a new terminal)
cd MovieDatabaseClient ./gradlew run -
Login with a production company name:
Pixar Animation StudiosWalt Disney PicturesMiramax FilmsParamount Pictures- Or any company from the database
| Button | Function |
|---|---|
| My Movies | View all movies by your production company |
| Recent Movies | Show movies from the most recent year |
| Best Movie | Display highest profit movie |
| Search by Name | Find movies by title |
| Search by Year | Filter movies by release year |
| Search by Genre | Filter by genre (Action, Drama, Comedy, etc.) |
| Search by Runtime | Find movies within a runtime range |
| Add Movie | Add a new movie to your company |
| Delete Movie | Remove a movie from the database |
| Transfer Movie | Transfer a movie to another company |
| Total Profit | Calculate total profit for your company |
| Refresh | Sync data with the server |
- Click Add Movie
- Fill in the movie details:
- Movie Name
- Release Year
- Genres (up to 3)
- Runtime (minutes)
- Budget
- Revenue
- Click Add to save
Movies are stored in movies.txt as CSV:
Name,Year,Genre1,Genre2,Genre3,Runtime,ProductionCompany,Budget,Revenue
Toy Story,1995,Animation,Comedy,Family,81,Pixar Animation Studios,30000000,373554033
- Language: Java 21
- UI Framework: JavaFX 21
- Build Tool: Gradle 8.5
- Architecture: Client-Server with TCP Sockets
- Data Format: CSV for storage, Serialized objects for network
The database includes 101 classic movies such as:
- ๐ฅ Toy Story (1995) - Pixar
- ๐ฅ Pulp Fiction (1994) - Miramax Films
- ๐ฅ The Lion King (1994) - Walt Disney Pictures
- ๐ฅ Star Wars (1977) - Lucasfilm
- ๐ฅ The Godfather (1972) - Paramount Pictures
To change the server port, modify ServerMain.java:
ServerSocket serverSocket = new ServerSocket(8080); // Change 8080 to desired portTo connect to a different server, modify ProjectMain.java:
server = new SocketWrapper("127.0.0.1", 8080); // Change IP and port- Course: CSE 108 - Object Oriented Programming Lab
- Institution: Bangladesh University of Engineering and Technology (BUET)
- Term: Level 1, Term 2
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Moshiur Rahman Minad
- GitHub: @mninadmnobo
Made with โค๏ธ for BUET CSE 108