U1Samarth Bhatia
All projects

U8 · Oct 2025 · SC2002, NTU

IPMS

Java CLI managing internship placements across three user roles, built on four design patterns.

Tech stack: Java · OOP Design Patterns · Java Serialization · CSV parsing

Three roles, one CLI

A text-based Java application managing internship placements across three distinct user roles — students, company representatives, and career center staff — each with full CRUD operations against data persisted via Java serialization and CSV parsing.

Four patterns, deliberately

Built on a layered boundary/control/entity architecture, with four design patterns applied where the problem actually called for them, not as an exercise:

  • Singleton for the manager classes coordinating shared state
  • Strategy for filtering logic that varies by role and query
  • Composite for combining multiple filters into one
  • Inheritance/Polymorphism for the user hierarchy across the three roles

Access control and business rules

Role-based access control gates what each of the three roles can see and do, backed by a business rules engine enforcing constraints that mirror how a real placement system works — per-student application limits, eligibility by year level, and multi-stage approval workflows between student, company, and career center.