Skip to content

Anurag-98/Java_Airtribe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

LearnTrack – Student & Course Management System

LearnTrack is a console-based Java application built to practice Core Java fundamentals including:

  • Object-Oriented Programming (OOP)
  • Inheritance & Polymorphism
  • Encapsulation
  • Collections (ArrayList)
  • Exception Handling
  • Menu-driven console design

The system allows administrators to manage Students, Courses, and Enrollments in memory.


📌 Project Overview

This project was built as part of a Core Java assignment to demonstrate understanding of:

  • Java syntax & compilation
  • Package structure
  • Static vs instance members
  • Custom exceptions
  • Clean separation of concerns (Entity → Service → UI)

All data is stored in-memory using ArrayList.


🚀 Features

👨‍🎓 Student Management

  • Add student
  • View all students
  • Search student by ID
  • Deactivate student (soft delete)

📚 Course Management

  • Add course
  • View all courses
  • Activate / Deactivate course

📝 Enrollment Management

  • Enroll student in course
  • View enrollments of a student
  • Update enrollment status (COMPLETED / CANCELLED)

🏗️ Project Structure

src/ │ ├── entity → Student, Course, Enrollment, Person ├── services → Business logic layer ├── enums → EnrollmentStatus ├── exception → Custom exceptions ├── util → IdGenerator, InputValidator ├── ui → Menu printing └── Main.java → Application entry point

docs/ │ ├── JVM_Basics.md ├── Setup_Instructions.md └── Design_Notes.md


🧠 Class Diagram

    Person (abstract)
         ↑
      Student

StudentService → manages Student CourseService → manages Course EnrollmentService → manages Enrollment

Enrollment

studentId

courseId

enrollmentDate

status


⚙️ Technologies Used

  • Java 17
  • Core Java (OOP, Collections, Exception Handling)

▶️ How to Compile & Run

Compile

From project root:

javac -d out $(find src -name "*.java")

Run

java -cp out Main

Design Highlights

Encapsulation using private fields with getters/setters

Inheritance: Student extends Person

Polymorphism via method overriding (getDisplayName)

Static utility class (IdGenerator) for unique ID generation

Dependency Injection in EnrollmentService

Graceful exception handling in menu loop

Centralized input validation via InputValidator

📄 Documentation

Additional documentation is available inside the docs/ folder:

JVM Basics

Setup Instructions

Design Notes

About

Java Practice

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages