Java 17 JavaFX 17 Jackson JUnit 5 Maven License: MIT
The Superstore Management System is an Object-Oriented Programming (OOP) course project that implements an intelligent, multi-tier management system for a superstore chain. The application demonstrates modular Java design, a JavaFX client UI, client/server socket networking, role-based access control (RBAC), inventory calculations (EOQ & ROP), and JSON persistence.
The objective is to provide a robust, concurrent, and scalable solution for managing inventory across multiple warehouse locations and retail store outlets.
- Automated Reorder Point (ROP): Calculates reorder triggers based on daily usage, lead time, and safety stock.
- Economic Order Quantity (EOQ): Determines optimal order quantities to minimize ordering and carrying costs.
- Inventory Tracking: Real-time quantity adjustments and item categorization.
Supports 6 distinct user roles with specific system privileges:
- Super User: Manages warehouses, stores, and links store-warehouse mappings.
- Warehouse Administrator: Manages warehouse categories/items and processes store orders.
- Store Administrator: Places stock requests to warehouses and manages store inventory.
- Warehouse Keeper: Handles inventory inwards/outwards within assigned warehouses.
- Store Keeper: Manages store inventory inwards/outwards.
- End User: Guest access to search, browse, and view store catalog items.
- Client/Server Architecture: Concurrent multi-client TCP socket connection handling.
- JSON Data Persistence: Serialization via Jackson with full
java.time.LocalDateTimesupport.
Design artifacts and specification documents are available in the assets/ directory:
- 📋 Project Requirement Document:
objective.pdf - 📐 System UML Class Diagram (PDF):
UMLdiagram.pdf - 🖼️ System UML Diagram (PNG Image):
UMLdiagram.png
- Singleton Pattern: Used in
FileManagerto ensure thread-safe single instance database management. - Model-View-Controller (MVC): Separation of JavaFX FXML view layout, controller logic, and model data structures.
- Polymorphism & Inheritance: Abstract
Usersuperclass extended by specialized role classes (SuperUser,WarehouseAdmin,StoreAdmin,Keeper,EndUser). - DTO Pattern:
RequestandResponseobjects for standardized client-server socket communications.
- Language: Java 17
- UI Framework: JavaFX 17 (Controls & FXML)
- JSON Processing: Jackson Databind & Jackson JSR310 (
datatype-jsr310) - Testing Framework: JUnit 5, Mockito
- Build Tool: Apache Maven
.
├── assets/ # Project objectives PDF and UML diagrams
│ ├── objective.pdf
│ ├── UMLdiagram.pdf
│ └── UMLdiagram.png
├── src/
│ ├── main/
│ │ ├── java/com/superstore/
│ │ │ ├── client/ # JavaFX UI, controllers, and scene management
│ │ │ ├── model/ # Domain models (Item, Store, User, Order, etc.)
│ │ │ ├── network/ # Request and Response network DTOs
│ │ │ └── server/ # Multi-threaded TCP server and FileManager
│ │ └── resources/ # JavaFX FXML layouts and stylesheets
│ └── test/ # JUnit 5 automated test suites
├── credentials.txt # Pre-configured test user credentials
├── database.json # Main database JSON storage
├── error_log.txt # Application error log file
├── pom.xml # Maven build configuration
└── README.md # Repository documentation
- Java 17 JDK (Ensure
JAVA_HOMEis set) - Apache Maven
mvn clean packagemvn exec:java "-Dexec.mainClass=com.superstore.server.Server"mvn javafx:run| Name | Enrollment No. | GitHub Profile |
|---|---|---|
| Arkodyuti Bhattacharyya | SAU/CS/BTECH(CSE)/2024/17 |
@Ark0B |
| Tarun Das | SAU/CS/DMTECH(CSE)/2024/32 |
@TheCodeCipher |
| Mukund Prasad | SAU/CS/DMTECH(CSE)/2024/13 |
@MukundXplore |
This project was completed as part of the Object-Oriented Programming (OOP) course requirements:
- Course Title: Object-Oriented Programming (OOP)
- Semester: Monsoon Semester
- Department: Department of Computer Science & Engineering
- Faculty: Faculty of Engineering & Technology
- Institution: South Asian University (SAU), New Delhi
- Dr. Shachi Sharma | LinkedIn Profile | Department of Computer Science & Engineering, South Asian University (SAU)
This project demonstrates how object-oriented design patterns, concurrent networking, and modern JavaFX UI can be combined to build an end-to-end enterprise inventory management solution.