Week - 10 - Assignment
Week - 10 - Assignment
**Problem Statement:
Build an Online Course Enrollment System** where:
Students can:
o View available courses
o Enroll in courses
o View their enrolled courses
Admin can:
o Add/update/delete courses
o View all enrolled students per course
Tech Stack
Backend: Spring Boot
Database: MySQL
ORM: Spring Data JPA
View: Thymeleaf
Source code :
// model/Student.java
package model;
import jakarta.persistence.*;
import java.util.List;
@Entity
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ManyToMany(mappedBy = "students")
// model/Course.java
package model;
import jakarta.persistence.*;
import java.util.List;
@Entity
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ManyToMany
@JoinTable(
name = "enrollment",
// repository/CourseRepository.java
package repository;
import model.Course;
import org.springframework.data.jpa.repository.JpaRepository;
// repository/StudentRepository.java
package repository;
import model.Student;
import org.springframework.data.jpa.repository.JpaRepository;
// service/CourseService.java
package service;
import model.Course;
import repository.CourseRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@Autowired
return courseRepository.findAll();
return courseRepository.findById(id).orElse(null);
return courseRepository.save(course);
courseRepository.deleteById(id);
// service/StudentService.java
package service;
import model.Course;
import model.Student;
import repository.StudentRepository;
import repository.CourseRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@Autowired
@Autowired
return studentRepository.save(student);
student.getCourses().add(course);
studentRepository.save(student);
}
// controller/CourseController.java
package controller;
import model.Course;
import service.CourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/courses")
@Autowired
model.addAttribute("courses", courseService.getAllCourses());
return "course_list";
@GetMapping("/admin")
model.addAttribute("courses", courseService.getAllCourses());
return "admin_dashboard";
@PostMapping("/admin/save")
courseService.saveCourse(course);
return "redirect:/courses/admin";
@GetMapping("/admin/delete/{id}")
courseService.deleteCourse(id);
return "redirect:/courses/admin";
}
// controller/StudentController.java
package controller;
import model.Student;
import service.StudentService;
import service.CourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/students")
@Autowired
@Autowired
@GetMapping("/enroll")
model.addAttribute("courses", courseService.getAllCourses());
return "enroll_form";
}
@PostMapping("/enroll")
studentService.enrollInCourse(studentId, courseId);
@GetMapping("/enrolled")
model.addAttribute("courses", studentService.getEnrolledCourses(studentId));
return "enrolled_courses";