Skip to content

The Internship Placement Management System (IPMS) is a comprehensive Java-based CLI application designed to manage internship opportunities, student applications, and placement processes. The system facilitates interactions between three user types: Students, Company Representatives, and Career Center Staff.

Notifications You must be signed in to change notification settings

darthrevan030/TUI-Internship-Placement-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

32 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“‹ IPMS - Internship Placement Management System

SC2002 Object-Oriented Design & Programming Assignment

Project Overview

The Internship Placement Management System (IPMS) is a comprehensive Java-based CLI application designed to manage internship opportunities, student applications, and placement processes. The system facilitates interactions between three user types: Students, Company Representatives, and Career Center Staff.


🎯 Features

For Students:

  • View available internship opportunities based on eligibility
  • Apply for up to 3 internships simultaneously
  • View application status and history
  • Accept placement offers
  • Request withdrawal from applications

For Company Representatives:

  • Register and await approval
  • Create up to 5 internship opportunities
  • View and manage applications
  • Approve/reject student applications
  • Toggle visibility of internship postings

For Career Center Staff:

  • Approve company representative registrations
  • Review and approve internship opportunities
  • Handle withdrawal requests
  • Generate comprehensive reports with filtering options
  • Monitor all system activities

πŸ—οΈ System Architecture

Design Patterns Implemented:

  • Singleton Pattern: Managers (UserManager, InternshipManager, ApplicationManager, AuthenticationManager)
  • Strategy Pattern: Filtering system (StatusFilter, LevelFilter, MajorFilter, etc.)
  • Composite Pattern: Combined filters for complex queries
  • Inheritance & Polymorphism: User hierarchy (Student, CompanyRepresentative, CareerCenterStaff)

Package Structure:

ipms/
β”œβ”€β”€ boundary/          # User Interface Layer
β”‚   β”œβ”€β”€ MainUI.java
β”‚   β”œβ”€β”€ StudentUI.java
β”‚   β”œβ”€β”€ CompanyRepUI.java
β”‚   β”œβ”€β”€ StaffUI.java
β”‚   └── InputValidator.java
β”‚
β”œβ”€β”€ control/           # Business Logic Layer
β”‚   β”œβ”€β”€ AuthenticationManager.java
β”‚   β”œβ”€β”€ UserManager.java
β”‚   β”œβ”€β”€ InternshipManager.java
β”‚   β”œβ”€β”€ ApplicationManager.java
β”‚   β”œβ”€β”€ ReportGenerator.java
β”‚   └── [Filter Classes]
β”‚
└── entity/            # Data Model Layer
    β”œβ”€β”€ User.java (abstract)
    β”œβ”€β”€ Student.java
    β”œβ”€β”€ CompanyRepresentative.java
    β”œβ”€β”€ CareerCenterStaff.java
    β”œβ”€β”€ InternshipOpportunity.java
    β”œβ”€β”€ Application.java
    β”œβ”€β”€ WithdrawalRequest.java
    └── [Enum Classes]

πŸš€ Getting Started

Prerequisites

  • Java Development Kit (JDK) 8 or higher
  • Command-line terminal or Java IDE (IntelliJ IDEA, Eclipse, VS Code)

Installation

  1. Clone or download the project:

    git clone https://github.com/darthrevan030/TUI-Internship-Placement-Management-System
    cd sc2002-ipms
  2. Prepare the data directory:

    mkdir -p data
  3. Add CSV files to the data folder:

    • sample_student_list.csv
    • sample_staff_list.csv
    • sample_company_representative_list.csv (optional)

πŸ”¨ Compilation

Option 1: Using Command Line

# Navigate to src directory
cd src

# Compile all Java files
javac ipms/**/*.java -d ../bin #in bash
javac (Get-ChildItem -Recurse ipms -Filter *.java).FullName -d ../bin # in powershell

# Verify compilation
ls ../bin/ipms

Option 2: Using IDE

IntelliJ IDEA:

  1. Open project folder
  2. Right-click on src β†’ Mark Directory as β†’ Sources Root
  3. Build β†’ Build Project (Ctrl+F9)

Eclipse:

  1. File β†’ Import β†’ Existing Projects into Workspace
  2. Select project folder
  3. Project β†’ Build Automatically (ensure checked)

VS Code:

  1. Open project folder
  2. Install "Extension Pack for Java"
  3. Press F5 to build and run

▢️ Running the Application

From Command Line:

# Run the application
java -cp bin ipms.boundary.MainUI

From IDE:

Run the MainUI.java file directly (Right-click β†’ Run)


πŸ‘₯ Default Login Credentials

Student Accounts:

  • User ID: Any from sample_student_list.csv (e.g., U1234567A)
  • Password: password

Career Center Staff:

  • User ID: Any from sample_staff_list.csv (e.g., STAFF001)
  • Password: password

Company Representatives:

  • Register through the main menu (Option 2)
  • Wait for approval from Career Center Staff
  • Then login with registered email and password

πŸ“Š Sample CSV File Formats

sample_student_list.csv

StudentID,Name,Major,Year,Email
U1234567A,Alice Tan,CSC,3,alice.tan@student.ntu.edu.sg
U2345678B,Bob Lee,EEE,2,bob.lee@student.ntu.edu.sg
U3456789C,Charlie Wong,MAE,4,charlie.wong@student.ntu.edu.sg

sample_staff_list.csv

StaffID,Name,Role,Department,Email
STAFF001,Dr. Sarah Chen,Career Advisor,Career Services,sarah.chen@ntu.edu.sg
STAFF002,Mr. James Lim,Senior Advisor,Career Services,james.lim@ntu.edu.sg

πŸ§ͺ Testing

Test Scenarios

1. Student Application Flow:

1. Login as Student (U1234567A / password)
2. View Internship Opportunities
3. Apply for an internship
4. View My Applications
5. Logout

2. Company Representative Flow:

1. Register as Company Rep
2. Login as Staff (STAFF001 / password)
3. Approve the new Company Rep
4. Logout and login as Company Rep
5. Create Internship Opportunity
6. Logout

3. Staff Approval Flow:

1. Login as Staff (STAFF001 / password)
2. Approve Internship Opportunities
3. Review and approve applications
4. Generate Reports

4. Complete Application Cycle:

1. Company Rep creates internship
2. Staff approves internship
3. Student applies for internship
4. Company Rep approves application
5. Student accepts placement
6. Verify slot count updates

πŸ“– Generating Javadoc

From Command Line:

cd src
javadoc -d ../docs -author -private -noqualifier all -version ipms.entity ipms.control ipms.boundary

View Documentation:

Open docs/index.html in a web browser


πŸ—‚οΈ Data Persistence

The system uses Java serialization for data persistence:

  • users.dat: Stores all user accounts
  • internships.dat: Stores internship opportunities
  • applications.dat: Stores applications and withdrawal requests

Location: data/ directory (created automatically on first run)

⚠️ Note: Delete .dat files to reset the system to initial state (will reload from CSV)


πŸ”‘ Key Business Rules

  1. Students:

    • Maximum 3 concurrent applications
    • Year 1-2: Can only apply for BASIC level internships
    • Year 3-4: Can apply for any level
    • Can only accept 1 placement (withdraws all other applications)
  2. Company Representatives:

    • Maximum 5 internship opportunities
    • Must be approved by staff before login
    • Can only manage their own internships
  3. Internship Opportunities:

    • Maximum 10 slots per internship
    • Visibility can be toggled after approval
    • Status automatically changes to FILLED when all slots are taken
  4. Withdrawals:

    • Require approval from Career Center Staff
    • Releases slot if withdrawal is from accepted placement

πŸ› οΈ Troubleshooting

Problem: "package ipms.entity does not exist"

Solution:

  1. Clean and rebuild your IDE
  2. Verify all files are in correct folders
  3. Try command-line compilation to verify code

Problem: "Cannot find CSV files"

Solution:

  1. Ensure data/ folder exists in project root
  2. Check CSV file names match exactly
  3. Run from correct directory (project root or bin)

Problem: "Login fails with correct credentials"

Solution:

  1. For Company Reps: Ensure account is approved by staff
  2. Check password (default: "password")
  3. Delete data/*.dat files to reset

Problem: "No internships visible to student"

Solution:

  1. Staff must approve internship first
  2. Company Rep must set visibility to ON
  3. Check student's major matches internship's preferred major
  4. Check student's year matches internship level

πŸ“ Project Structure

TUI-Internship-Placement-Management-System/
β”œβ”€β”€ src/
β”‚   └── ipms/
β”‚       β”œβ”€β”€ boundary/         (5 files)
β”‚       β”œβ”€β”€ control/          (10 files)
β”‚       └── entity/           (11 files)
β”œβ”€β”€ bin/                      (compiled .class files)
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ sample_student_list.csv
β”‚   β”œβ”€β”€ sample_staff_list.csv
β”‚   β”œβ”€β”€ users.dat             (generated)
β”‚   β”œβ”€β”€ internships.dat       (generated)
β”‚   └── applications.dat      (generated)
β”œβ”€β”€ docs/                     (Javadoc output)
└── README.md

πŸ‘¨β€πŸ’» Authors

SC2002 Group 1

  • SAMARTH BHATIA
  • MADHAV RAGHU ANANTHARAM
  • LIM MING WEN
  • TAN CHOON YANG
  • TOH JUN MENG

πŸ“š Assignment Requirements

This project fulfills the requirements for:

  • Course: SC2002 Object-Oriented Design & Programming
  • Semester: 2025/2026 Semester 1
  • Institution: Nanyang Technological University (NTU)

πŸ“„ License

This project is for educational purposes as part of the SC2002 course assignment.


Last Updated: October 2025
Version: 1.0


🎯 Quick Start Summary

# 1. Compile
cd src
javac ipms/**/*.java -d ../bin # for bash
javac (Get-ChildItem -Recurse ipms -Filter *.java).FullName -d ../bin # for powershell

# 2. Run
java -cp bin ipms.boundary.MainUI

# 3. Login as Student
# User ID: U1234567A
# Password: password

# 4. Explore the system!

About

The Internship Placement Management System (IPMS) is a comprehensive Java-based CLI application designed to manage internship opportunities, student applications, and placement processes. The system facilitates interactions between three user types: Students, Company Representatives, and Career Center Staff.

Topics

Resources

Stars

Watchers

Forks

Contributors 5

Languages