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.
- 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
- Register and await approval
- Create up to 5 internship opportunities
- View and manage applications
- Approve/reject student applications
- Toggle visibility of internship postings
- Approve company representative registrations
- Review and approve internship opportunities
- Handle withdrawal requests
- Generate comprehensive reports with filtering options
- Monitor all system activities
- 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)
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]
- Java Development Kit (JDK) 8 or higher
- Command-line terminal or Java IDE (IntelliJ IDEA, Eclipse, VS Code)
-
Clone or download the project:
git clone https://github.com/darthrevan030/TUI-Internship-Placement-Management-System cd sc2002-ipms -
Prepare the data directory:
mkdir -p data
-
Add CSV files to the data folder:
sample_student_list.csvsample_staff_list.csvsample_company_representative_list.csv(optional)
# 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/ipmsIntelliJ IDEA:
- Open project folder
- Right-click on
srcβ Mark Directory as β Sources Root - Build β Build Project (Ctrl+F9)
Eclipse:
- File β Import β Existing Projects into Workspace
- Select project folder
- Project β Build Automatically (ensure checked)
VS Code:
- Open project folder
- Install "Extension Pack for Java"
- Press F5 to build and run
# Run the application
java -cp bin ipms.boundary.MainUIRun the MainUI.java file directly (Right-click β Run)
- User ID: Any from
sample_student_list.csv(e.g.,U1234567A) - Password:
password
- User ID: Any from
sample_staff_list.csv(e.g.,STAFF001) - Password:
password
- Register through the main menu (Option 2)
- Wait for approval from Career Center Staff
- Then login with registered email and password
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.sgStaffID,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.sg1. 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
cd src
javadoc -d ../docs -author -private -noqualifier all -version ipms.entity ipms.control ipms.boundaryOpen docs/index.html in a web browser
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)
.dat files to reset the system to initial state (will reload from CSV)
-
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)
-
Company Representatives:
- Maximum 5 internship opportunities
- Must be approved by staff before login
- Can only manage their own internships
-
Internship Opportunities:
- Maximum 10 slots per internship
- Visibility can be toggled after approval
- Status automatically changes to FILLED when all slots are taken
-
Withdrawals:
- Require approval from Career Center Staff
- Releases slot if withdrawal is from accepted placement
Solution:
- Clean and rebuild your IDE
- Verify all files are in correct folders
- Try command-line compilation to verify code
Solution:
- Ensure
data/folder exists in project root - Check CSV file names match exactly
- Run from correct directory (project root or bin)
Solution:
- For Company Reps: Ensure account is approved by staff
- Check password (default: "password")
- Delete
data/*.datfiles to reset
Solution:
- Staff must approve internship first
- Company Rep must set visibility to ON
- Check student's major matches internship's preferred major
- Check student's year matches internship level
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
SC2002 Group 1
- SAMARTH BHATIA
- MADHAV RAGHU ANANTHARAM
- LIM MING WEN
- TAN CHOON YANG
- TOH JUN MENG
This project fulfills the requirements for:
- Course: SC2002 Object-Oriented Design & Programming
- Semester: 2025/2026 Semester 1
- Institution: Nanyang Technological University (NTU)
This project is for educational purposes as part of the SC2002 course assignment.
Last Updated: October 2025
Version: 1.0
# 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!