Northeastern University, College of Engineering
This is a Spring Boot application that provides a platform for students and professors to manage course registrations. It facilitates user authentication, course selection, and filtering, and allows for various interactions between students and professors. It demonstrates Object-Oriented Design principles while interacting with a MySQL database using Hibernate.
- Installation
- Usage
- Database Configuration
- Object-Oriented Design
- Notable Design points
- Database Schema
- Authors
Software Installaion Prerequisites:
- Java Development Kit (JDK)
- Spring Tool Suite (STS)
- Build Tool - Maven
Steps to run the project:
-
Clone the repository:
git clone https://github.com/CSYE6200-Object-Oriented-DesignFall2023/final-project-final-group-10.git cd course-registration-portal
-
Import the Project:
- Open STS.
- Go to File > Import....
- Choose Existing Maven Projects
- Navigate to the location where you saved your Spring Boot project and select the project directory.
- Click Finish to import the project.
-
Build the Project:
Once the project is imported, STS will automatically start building it. You can check the progress in the console at the bottom.
-
Configure the Application Properties:
Open the application.properties and configure database connection details.
-
Run the Application:
Right-click on the main class file (CourseRegistrationApplication) in the src/main/java directory. Select Run As > Spring Boot App.
Once the application has started, you can access it by opening a web browser and navigating to http://localhost:8080
Access the application in your web browser: http://localhost:8080 Log in as a student or professor. Explore the available courses, and filter them by ID or name. Professors can add and edit courses. Students can register for courses and view the registered courses. Once the application runs, you can access the API endpoints to interact with the entities.
The application is configured to use MySQL as the database.
Update the application.properties
file with your MySQL database configuration:
src/main/resources/application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/course_registration_db
spring.datasource.username=[Username]
spring.datasource.password=[Password]
spring.jpa.hibernate.ddl-auto=update
This project follows Object-Oriented Design principles and Design Patters. The individual contributions are displayed here.
- Encapsulation - We're creating POJO's [Plain Old Java Objects] -> Nilraj Mayekar
- Interfaces have been used while creating DAO classes for Hibernate -> Nilraj Mayekar
- Inheritance - Student and Teacher are inherited from User -> Rajeev Ramesh
- Polymorphism - we're overriding functions -> Rajeev Ramesh
- Comparators for sorting course details based on name -> Puja Kalivarapu
- Streams to filter and search courses and students -> Puja Kalivarapu
- ENUM's to declare user roles -> Manish Chikkavadaragudi Prasanna Kumar
- Singleton design pattern for creating SessionFactory for Hibernate -> Manish Chikkavadaragudi Prasanna Kumar
- Factory design pattern to create Student and Person accounts -> Srishti C Rai
- Read CSV files to get Student and Person details using Generic class -> Srishti C Rai
- Used various data structures like Arrays, List, Set etc. -> Srishti C Rai
- Lambda expressions for sorting -> Abdul Azeem Syed
- Exception handling is done in multiple places -> Abdul Azeem Syed
Entities are designed to represent real-world objects, and relationships are modelled to reflect the business logic.
- GUI - We have used Thymleaf templates to create interactive pages.
- Database - MySQL has been used to store the data for the application.
- ORM - Hibernate has been used to maintain data persistence.
- Framework - Spring boot has been used to create a stand-alone application.
Create a new schema named course_registration_db in MySql and the tables are created automatically based on the JPA entity definitions.
Author:
- Srishti C Rai (rai.sr@northeastern.edu)
- Manish Chikkavadaragudi Prasanna Kumar (chikkavadaragudipr.m@northeastern.edu)
- Puja Kalivarapu (Kalivarapu.puja@northeastern.edu)
- Abdul Azeem Syed (syed.abdu@northeastern.edu)
- Rajeev Ramesh (ramesh.raj@northeastern.edu)
- Nilraj Mayekar (mayekar.n@northeastern.edu)