Skip to content

Nazmul1005/Academia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ“ Academia - Learning Management System

A comprehensive web-based Learning Management System (LMS) built with Java, JSP, and MySQL. Academia provides a complete platform for managing courses, users, and enrollment with role-based dashboards for administrators, teachers, and students.

Java MySQL Bootstrap JSP


πŸ“‹ Table of Contents


πŸ“ Project Structure

Academia/
β”œβ”€β”€ .classpath
β”œβ”€β”€ .project
β”œβ”€β”€ .settings/
β”œβ”€β”€ build/                          # Compiled classes
β”œβ”€β”€ src/
β”‚   └── main/
β”‚       β”œβ”€β”€ java/
β”‚       β”‚   └── nazmul/
β”‚       β”‚       β”œβ”€β”€ AddCourseServlet.java        # Admin creates courses
β”‚       β”‚       β”œβ”€β”€ AuthFilter.java              # Authentication filter
β”‚       β”‚       β”œβ”€β”€ Course.java                  # Course model
β”‚       β”‚       β”œβ”€β”€ CourseDAO.java               # Course database operations
β”‚       β”‚       β”œβ”€β”€ DatabaseUtil.java            # Database connection utility
β”‚       β”‚       β”œβ”€β”€ DeleteCourseServlet1.java    # Admin deletes courses
β”‚       β”‚       β”œβ”€β”€ EditCouraseServlet1.java     # Admin edits courses
β”‚       β”‚       β”œβ”€β”€ EnrollCourseServlet.java     # Student enrolls in courses
β”‚       β”‚       β”œβ”€β”€ HomeServlet.java             # Landing page servlet
β”‚       β”‚       β”œβ”€β”€ LoginServlet.java            # User authentication
β”‚       β”‚       β”œβ”€β”€ RegistrationServlet.java     # User registration
β”‚       β”‚       β”œβ”€β”€ RoleFilter.java              # Role-based access control
β”‚       β”‚       β”œβ”€β”€ UpdateProfileServlet.java    # Profile updates
β”‚       β”‚       β”œβ”€β”€ User.java                    # User model
β”‚       β”‚       β”œβ”€β”€ UserDAO.java                 # User database operations
β”‚       β”‚       └── ViewCourseStudentsServlet.java # Teacher views students
β”‚       └── webapp/
β”‚           β”œβ”€β”€ WEB-INF/
β”‚           β”‚   └── web.xml                      # Web application config
β”‚           β”œβ”€β”€ adminDashboard.jsp               # Admin interface
β”‚           β”œβ”€β”€ home.jsp                         # Landing page
β”‚           β”œβ”€β”€ login.jsp                        # Login page
β”‚           β”œβ”€β”€ logout.jsp                       # Logout handler
β”‚           β”œβ”€β”€ register.jsp                     # Registration page
β”‚           β”œβ”€β”€ studentDashboard.jsp             # Student interface
β”‚           β”œβ”€β”€ teacherDashboard.jsp             # Teacher interface
β”‚           └── viewStudents.jsp                 # View enrolled students
└── README.md

✨ Features

πŸ” Authentication & Authorization

Feature Description
πŸ‘€ User Registration Create accounts with role selection (Admin/Teacher/Student)
πŸ”‘ Secure Login Session-based authentication with role verification
πŸ›‘οΈ Access Control Role-based filters ensure users only access authorized pages
πŸ‘¨β€πŸ’Ό Profile Management Update personal information, email, and credentials

πŸ‘¨β€πŸ’Ό Admin Dashboard

πŸ“Š System Overview

  • View total courses count
  • Track number of teachers
  • Monitor total students
  • Real-time statistics display

πŸ‘₯ User Management

  • View all registered users
  • Filter by role (Admin/Teacher/Student)
  • Access user details
  • Manage user accounts

πŸ“š Course Management

  • βž• Create new courses
  • ✏️ Edit course details
  • πŸ—‘οΈ Delete courses
  • πŸ‘¨β€πŸ« Assign teachers to courses

πŸ‘¨β€πŸ« Teacher Dashboard

πŸ“– My Courses

  • View all assigned courses
  • See course details (code & name)
  • Track student enrollment count
  • Beautiful course card displays

πŸ‘¨β€πŸŽ“ Student Management

  • View enrolled students per course
  • Access student contact information
  • See student email addresses
  • Monitor class rosters

πŸ‘€ Profile Management

  • Update personal information
  • Change contact details
  • Modify credentials
  • Edit profile settings

πŸ‘¨β€πŸŽ“ Student Dashboard

πŸͺ Course Marketplace

  • Browse all available courses
  • View course details
  • See assigned teachers
  • βž• One-click enrollment

πŸ“š My Learning Journey

  • View all enrolled courses
  • Track course progress
  • Visual progress indicators
  • Quick course access

πŸ“Š Statistics & Overview

  • Count of enrolled courses
  • Available courses to join
  • Learning progress tracking
  • Achievement indicators

🎨 Modern UI/UX Features

Category Features
πŸ“± Responsive Design Works seamlessly on desktop, tablet, and mobile devices
✨ Glassmorphism Modern frosted glass effect cards with backdrop filters
🎬 Smooth Animations Fade-in effects, hover transitions, micro-interactions
🌈 Dynamic Backgrounds Animated gradient backgrounds unique to each role
🎨 Color-Coded Roles Admin (Purple), Teacher (Blue), Student (Blue-Purple)
πŸ”€ Modern Typography Clean fonts with proper hierarchy and spacing
πŸ–ΌοΈ Icon Library Font Awesome 6 icons throughout the interface

πŸ›  Technology Stack

Backend

  • Java Servlets: Server-side logic and routing
  • JSP (JavaServer Pages): Dynamic page rendering
  • JDBC: Database connectivity
  • MySQL: Relational database management

Frontend

  • HTML5: Semantic markup
  • CSS3: Modern styling with custom properties and animations
  • Bootstrap 5.3: Responsive grid system and components
  • Font Awesome 6: Icon library
  • JavaScript: Client-side interactivity

Server

  • Apache Tomcat: Servlet container (recommended version 9.x or 10.x)
  • Java EE: Web application framework

Development Tools

  • Eclipse IDE: Primary development environment
  • Maven (optional): Dependency management
  • MySQL Workbench: Database administration

πŸ“¦ Prerequisites

Before running this project, ensure you have the following installed:

  • Java Development Kit (JDK): Version 8 or higher

  • Apache Tomcat: Version 9.x or 10.x

  • MySQL Server: Version 5.7 or higher

  • IDE: Eclipse IDE for Java EE Developers (recommended)

  • MySQL Connector/J: JDBC Driver for MySQL

    • Should be placed in WEB-INF/lib or added to project classpath

πŸš€ Installation

1. Clone the Repository

git clone https://github.com/Nazmul1005/Academia.git
cd Academia

2. Configure Database Connection

Update the database credentials in src/main/java/nazmul/DatabaseUtil.java:

private static final String URL = "jdbc:mysql://localhost:3306/Academia";
private static final String USER = "your_mysql_username";
private static final String PASSWORD = "your_mysql_password";

3. Add MySQL Connector

Download MySQL Connector/J and add it to:

  • src/main/webapp/WEB-INF/lib/ directory
  • Or add it to your project's build path in Eclipse

4. Import Project into Eclipse

  1. Open Eclipse IDE
  2. Go to File β†’ Import β†’ Existing Projects into Workspace
  3. Select the cloned Academia directory
  4. Click Finish

πŸ—„ Database Setup

1. Create Database

Open MySQL Workbench or MySQL command line and run:

CREATE DATABASE Academia;
USE Academia;

2. Create Tables

Users Table

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL,
    role ENUM('admin', 'teacher', 'student') NOT NULL,
    full_name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Courses Table

CREATE TABLE courses (
    id INT AUTO_INCREMENT PRIMARY KEY,
    course_code VARCHAR(20) UNIQUE NOT NULL,
    course_name VARCHAR(100) NOT NULL,
    teacher_id INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (teacher_id) REFERENCES users(id) ON DELETE SET NULL
);

Enrollments Table

CREATE TABLE enrollments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    student_id INT NOT NULL,
    course_id INT NOT NULL,
    enrolled_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (student_id) REFERENCES users(id) ON DELETE CASCADE,
    FOREIGN KEY (course_id) REFERENCES courses(id) ON DELETE CASCADE,
    UNIQUE KEY unique_enrollment (student_id, course_id)
);

3. Insert Sample Data (Optional)

Create Admin User

INSERT INTO users (username, password, role, full_name, email) 
VALUES ('admin', 'admin123', 'admin', 'System Administrator', 'admin@academia.edu');

Create Sample Teachers

INSERT INTO users (username, password, role, full_name, email) 
VALUES 
('teacher1', 'pass123', 'teacher', 'Dr. John Smith', 'john.smith@academia.edu'),
('teacher2', 'pass123', 'teacher', 'Dr. Sarah Johnson', 'sarah.johnson@academia.edu');

Create Sample Students

INSERT INTO users (username, password, role, full_name, email) 
VALUES 
('student1', 'pass123', 'student', 'Alice Brown', 'alice.brown@student.academia.edu'),
('student2', 'pass123', 'student', 'Bob Wilson', 'bob.wilson@student.academia.edu');

Create Sample Courses

INSERT INTO courses (course_code, course_name, teacher_id) 
VALUES 
('CSE101', 'Introduction to Computer Science', 2),
('CSE201', 'Data Structures and Algorithms', 2),
('MATH101', 'Calculus I', 3);

▢️ Running the Application

Using Eclipse

  1. Configure Tomcat Server in Eclipse:

    • Go to Window β†’ Preferences β†’ Server β†’ Runtime Environments
    • Click Add, select Apache Tomcat v9.0 (or your version)
    • Browse to your Tomcat installation directory
    • Click Finish
  2. Add Project to Server:

    • Right-click on the project β†’ Run As β†’ Run on Server
    • Select your configured Tomcat server
    • Click Finish
  3. Access the Application:

    • Open your browser and navigate to: http://localhost:8080/Academia_nazmul/
    • Or: http://localhost:8080/Academia_nazmul/home

Using Command Line

  1. Build the WAR file:

    # If using Maven
    mvn clean package
    
    # Manual build
    # Copy all files to Tomcat's webapps directory
  2. Deploy to Tomcat:

    cp Academia.war $TOMCAT_HOME/webapps/
  3. Start Tomcat:

    cd $TOMCAT_HOME/bin
    ./catalina.sh run    # Linux/Mac
    catalina.bat run     # Windows

πŸ‘₯ User Roles & Functionality

πŸ”΄ Admin

Access Level: Full system control

Capabilities:

  • Create, edit, and delete courses
  • Assign teachers to courses
  • View all users (admins, teachers, students)
  • System-wide statistics and overview
  • Manage course catalog

Dashboard Features:

  • Total courses, teachers, and students count
  • Course management table with actions
  • User directory with role filters
  • Quick actions for common tasks

πŸ”΅ Teacher

Access Level: Course and student management

Capabilities:

  • View assigned courses
  • See enrolled students in each course
  • Access student contact information
  • Update personal profile
  • Monitor course enrollment

Dashboard Features:

  • "My Courses" section with course cards
  • Student list for each course
  • Course statistics (student count)
  • Profile management

🟒 Student

Access Level: Course enrollment and learning

Capabilities:

  • Browse available courses (marketplace)
  • Enroll in courses with one click
  • View enrolled courses (learning journey)
  • Track course progress
  • Update personal profile

Dashboard Features:

  • Course marketplace with available courses
  • Enrolled courses with progress indicators
  • Quick enrollment actions
  • Statistics on enrolled and available courses

πŸ“Š Database Schema

erDiagram
    users ||--o{ courses : "teaches"
    users ||--o{ enrollments : "enrolls"
    courses ||--o{ enrollments : "has"
    
    users {
        int id PK
        varchar username UK
        varchar password
        enum role
        varchar full_name
        varchar email UK
        timestamp created_at
    }
    
    courses {
        int id PK
        varchar course_code UK
        varchar course_name
        int teacher_id FK
        timestamp created_at
    }
    
    enrollments {
        int id PK
        int student_id FK
        int course_id FK
        timestamp enrolled_at
    }
Loading

About

A comprehensive web-based Learning Management System (LMS) built with Java, JSP, and MySQL.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages