Skip to content

EduMatrix is an university management system that transforms academic operations through innovative digital solutions.

Notifications You must be signed in to change notification settings

Abdelrhmansersawy/EduMatrix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 

Repository files navigation

EduMatrix™

Version Java Java fx MySQL

Image

EduMatrix is an enterprise-grade university management system that transforms academic operations through innovative digital solutions. Our comprehensive platform streamlines administrative workflows, enhances academic oversight, and elevates institutional efficiency.


Table of Contents

Core Capabilities

  • Seamless Integration: Unified platform for all administrative and academic processes
  • Intelligent Automation: Smart workflows that reduce manual intervention
  • Real-time Analytics: Data-driven insights for informed decision-making
  • Scalable Architecture: Built to grow with your institution
  • Secure Infrastructure: Enterprise-level security protocols

Key Features

🎓 Academic Management

  • Comprehensive course administration
  • Dynamic curriculum planning
  • Automated enrollment processing

👥 User Management

  • Role-based access control
  • Integrated faculty administration
  • Student lifecycle management

📊 Department Operations

  • Resource allocation optimization
  • Performance analytics
  • Departmental collaboration tools

🔄 Process Automation

  • Streamlined workflows
  • Automated reporting
  • Intelligent scheduling

Database Design

Entity-Relationship Flowchart

graph TD
    %% Entities
    User[USER]:::entity
    Teacher[TEACHER]:::entity
    Student[STUDENT]:::entity
    Admin[ADMIN]:::entity
    Course[COURSE]:::entity
    Department[DEPARTMENT]:::entity

    %% Relationships
    IsTeacherRel{is a}:::relationship
    IsStudentRel{is a}:::relationship
    IsAdminRel{is a}:::relationship
    EnrollsRel{ENROLLS}:::relationship
    EmplTeachRel{EMPLOYS}:::relationship
    ContainsRel{CONTAINS}:::relationship
    OffersRel{OFFERS}:::relationship
    TeachesRel{TEACHES}:::relationship

    %% Entity-Relationship Connections
    User --"1"--- IsTeacherRel
    IsTeacherRel --"N"--- Teacher
    User --"1"--- IsStudentRel
    IsStudentRel --"N"--- Student
    User --"1"--- IsAdminRel
    IsAdminRel --"1"--- Admin

    Department --"1"--- EmplTeachRel
    EmplTeachRel --"M"--- Teacher
    Department --"1"--- ContainsRel
    ContainsRel --"M"--- Student
    Department --"1"--- OffersRel
    OffersRel --"M"--- Course

    Teacher --"1"--- TeachesRel
    TeachesRel --"M"--- Course

    Student --"M"--- EnrollsRel
    EnrollsRel --"N"--- Course

    %% User Attributes
    User --- U_USN[["userSerialNumber"]]:::primaryKey
    User --- U_Name{{"name"}}:::composite
    U_Name --- U_FName((firstName)):::attribute
    U_Name --- U_LName((lastName)):::attribute
    User --- U_Phone((phoneNumber)):::attribute
    User --- U_Gmail((gmail)):::attribute
    User --- U_Pass((password)):::attribute
    User --- U_Birth((birthOfDate)):::attribute
    User --- U_Role((role)):::attribute
    User --- U_Created((createdAt)):::attribute

    %% Department Attributes
    Department --- D_Num[["departmentNumber"]]:::primaryKey
    Department --- D_Name((name)):::attribute
    Department --- D_Desc((description)):::attribute
    Department --- D_Loc((location)):::attribute

    %% Teacher Additional Attributes
    Teacher --- T_Dept((departmentNumber)):::attribute

    %% Student Additional Attributes
    Student --- S_Dept((departmentNumber)):::attribute
    Student --- S_Year((schoolYear)):::attribute
    Student --- S_GPA((GPA)):::attribute
    Student --- S_Status((academicStatus)):::attribute
    Student --- S_Scholar((isScholarship)):::attribute

    %% Course Attributes
    Course --- C_Code[["courseCode"]]:::primaryKey
    Course --- C_Name((name)):::attribute
    Course --- C_Desc((description)):::attribute
    Course --- C_Dept((departmentNumber)):::attribute
    Course --- C_Teacher((teacherSerialNumber)):::attribute
    Course --- C_Active((isActive)):::attribute
    Course --- C_Cap((maxCapacity)):::attribute
    Course --- C_Sem((semester)):::attribute
    Course --- C_Year((academicYear)):::attribute
    Course --- C_Type((courseType)):::attribute

    %% Style Classes
    classDef entity fill:#f9f,stroke:#333,stroke-width:4px,rx:0;
    classDef relationship fill:#ccf,stroke:#333,stroke-width:2px;
    classDef attribute fill:#fff,stroke:#333,stroke-width:1px;
    classDef primaryKey fill:#fdd,stroke:#333,stroke-width:2px;
    classDef composite fill:#efe,stroke:#333,stroke-width:2px;
Loading

ER Diagram

erDiagram
    USER {
        string userSerialNumber PK
        string firstName
        string lastName
        string phoneNumber
        string gmail
        string password
        date birthOfDate
        string role FK
        datetime createdAt
    }

    DEPARTMENT {
        string departmentNumber PK
        string name
        string description
        string location
    }

    TEACHER {
        string userSerialNumber PK, FK
        string departmentNumber FK
    }

    STUDENT {
        string userSerialNumber PK, FK
        string departmentNumber FK
        int schoolYear
        float GPA
        string academicStatus
        boolean isScholarship
    }

    ADMIN {
        string userSerialNumber PK, FK
    }

    COURSE {
        string courseCode PK
        string name
        string description
        string departmentNumber FK
        string teacherSerialNumber FK
        boolean isActive
        int maxCapacity
        string semester
        int academicYear
        string courseType
    }

    STUDENT_COURSE {
        string userSerialNumber PK, FK
        string courseCode PK, FK
        float grade
        date enrollmentYear
        float attendanceRate
        string semester
        int academicYear
        date withdrawalDate
    }

    USER ||--o| TEACHER : "is a"
    USER ||--o| STUDENT : "is a"
    USER ||--o| ADMIN : "is a"

    DEPARTMENT ||--|{ TEACHER : "employs"
    DEPARTMENT ||--|{ STUDENT : "contains"
    DEPARTMENT ||--|{ COURSE : "offers"

    TEACHER ||--|{ COURSE : "teaches"
    
    STUDENT ||--|{ STUDENT_COURSE : "enrolls"
    COURSE ||--|{ STUDENT_COURSE : "enrolled by"
Loading

Database Schema

  1. USER Table
CREATE TABLE USER (
    userSerialNumber VARCHAR(50) PRIMARY KEY,
    firstName VARCHAR(50) NOT NULL,
    lastName VARCHAR(50) NOT NULL,
    phoneNumber VARCHAR(20),
    gmail VARCHAR(100) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL,
    birthOfDate DATE,
    role ENUM('ADMIN', 'TEACHER', 'STUDENT') NOT NULL,
    createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  1. DEPARTMENT Table
CREATE TABLE DEPARTMENT (
    departmentNumber VARCHAR(20) PRIMARY KEY,
    name VARCHAR(100) NOT NULL UNIQUE,
    description TEXT,
    location VARCHAR(100) NOT NULL
);
  1. TEACHER Table
CREATE TABLE TEACHER (
    userSerialNumber VARCHAR(50) PRIMARY KEY,
    departmentNumber VARCHAR(20) NOT NULL,
    FOREIGN KEY (userSerialNumber) REFERENCES USER(userSerialNumber),
    FOREIGN KEY (departmentNumber) REFERENCES DEPARTMENT(departmentNumber)
);
  1. STUDENT Table
CREATE TABLE STUDENT (
    userSerialNumber VARCHAR(50) PRIMARY KEY,
    departmentNumber VARCHAR(20) NOT NULL,
    schoolYear INT NOT NULL CHECK (schoolYear BETWEEN 0 AND 4),
    GPA DECIMAL(3,2) CHECK (GPA >= 0.00 AND GPA <= 4.00),
    academicStatus ENUM('ACTIVE', 'PROBATION', 'SUSPENDED', 'GRADUATED') DEFAULT 'ACTIVE',
    isScholarship BOOLEAN DEFAULT FALSE,
    FOREIGN KEY (userSerialNumber) REFERENCES USER(userSerialNumber),
    FOREIGN KEY (departmentNumber) REFERENCES DEPARTMENT(departmentNumber)
);
  1. ADMIN Table
CREATE TABLE ADMIN (
    userSerialNumber VARCHAR(50) PRIMARY KEY,
    FOREIGN KEY (userSerialNumber) REFERENCES USER(userSerialNumber)
);
  1. COURSE Table
CREATE TABLE COURSE (
    courseCode VARCHAR(20) PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    description TEXT,
    departmentNumber VARCHAR(20) NOT NULL,
    teacherSerialNumber VARCHAR(50) NOT NULL,
    isActive BOOLEAN DEFAULT TRUE,
    maxCapacity INT NOT NULL CHECK (maxCapacity > 0),
    semester ENUM('FALL', 'SPRING', 'SUMMER') NOT NULL,
    academicYear INT NOT NULL CHECK (academicYear >= 2000),
    courseType ENUM('MANDATORY', 'ELECTIVE', 'GENERAL') NOT NULL,
    FOREIGN KEY (departmentNumber) REFERENCES DEPARTMENT(departmentNumber),
    FOREIGN KEY (teacherSerialNumber) REFERENCES TEACHER(userSerialNumber)
);
  1. STUDENT_COURSE Table
CREATE TABLE STUDENT_COURSE (
    userSerialNumber VARCHAR(50),
    courseCode VARCHAR(20),
    grade DECIMAL(4,2) CHECK (grade >= 0.00 AND grade <= 100.00),
    enrollmentYear DATE NOT NULL,
    attendanceRate DECIMAL(5,2) DEFAULT 0.00 CHECK (attendanceRate >= 0.00 AND attendanceRate <= 100.00),
    semester ENUM('FALL', 'SPRING', 'SUMMER') NOT NULL,
    academicYear INT NOT NULL CHECK (academicYear >= 2000),
    withdrawalDate DATE CHECK (withdrawalDate >= enrollmentYear),
    PRIMARY KEY (userSerialNumber, courseCode, semester, academicYear),
    FOREIGN KEY (userSerialNumber) REFERENCES STUDENT(userSerialNumber),
    FOREIGN KEY (courseCode) REFERENCES COURSE(courseCode)
);

Constraints:

  • School Year: 0-4
  • GPA: 0.00-4.00
  • Grade: 0.00-100.00
  • Attendance Rate: 0.00%-100.00%
  • Academic Year: ≥ 2000
  • Maximum Capacity: > 0

ENUMs:

User Role:

  • ADMIN
  • TEACHER
  • STUDENT

Academic Status:

  • ACTIVE
  • PROBATION
  • SUSPENDED
  • GRADUATED

Semester:

  • FALL
  • SPRING
  • SUMMER

Course Type:

  • MANDATORY
  • ELECTIVE
  • GENERAL

UML Class Diagram

User Management Diagram

classDiagram
    %% User Management Diagram
    User <|-- Teacher : extends
    User <|-- Student : extends
    User <|-- Admin : extends

    class User {
        <<abstract>>
        -String userSerialNumber
        -String firstName
        -String lastName
        -String phoneNumber
        -String gmail
        -String password
        -LocalDate birthOfDate
        -String role
        -DateTime createdAt
        +String getUserSerialNumber()
        +String getRole()
        +String getFirstName()
        +void setFirstName(String)
        +String getLastName()
        +void setLastName(String)
        +String getPhoneNumber()
        +void setPhoneNumber(String)
        +String getGmail()
        +void setGmail(String)
        +String getPassword()
        +void setPassword(String)
        +LocalDate getBirthOfDate()
        +void setBirthOfDate(LocalDate)
        +DateTime getCreatedAt()
    }

    class Teacher {
        -String departmentNumber
        -List~Course~ taughtCourses
        +String getDepartmentNumber()
        +void setDepartmentNumber(String)
        +List~Course~ getTaughtCourses()
        +void addCourse(Course)
        +void removeCourse(Course)
    }

    class Student {
        -String departmentNumber
        -int schoolYear
        -float GPA
        -String academicStatus
        -boolean isScholarship
        -List~StudentCourse~ enrolledCourses
        +String getDepartmentNumber()
        +void setDepartmentNumber(String)
        +int getSchoolYear()
        +void setSchoolYear(int)
        +float getGPA()
        +void setGPA(float)
        +String getAcademicStatus()
        +void setAcademicStatus(String)
        +boolean getIsScholarship()
        +void setIsScholarship(boolean)
        +List~StudentCourse~ getEnrolledCourses()
        +void addEnrolledCourse(StudentCourse)
        +void removeEnrolledCourse(StudentCourse)
    }

    class Admin {
        +String getRole()
    }
Loading

Academic Structure Diagram

classDiagram
    %% Academic Structure Diagram
    Department "1" --> "*" Teacher : employs
    Department "1" --> "*" Student : contains
    Department "1" --> "*" Course : offers
    Teacher "1" --> "*" Course : teaches

    class Department {
        -String departmentNumber
        -String name
        -String description
        -String location
        +String getDepartmentNumber()
        +String getName()
        +void setName(String)
        +String getDescription()
        +void setDescription(String)
        +String getLocation()
        +void setLocation(String)
    }

    class Course {
        -String courseCode
        -String name
        -String description
        -String departmentNumber
        -String teacherSerialNumber
        -boolean isActive
        -int maxCapacity
        -String semester
        -int academicYear
        -String courseType
        +String getCourseCode()
        +String getName()
        +void setName(String)
        +String getDescription()
        +void setDescription(String)
        +String getDepartmentNumber()
        +void setDepartmentNumber(String)
        +String getTeacherSerialNumber()
        +void setTeacherSerialNumber(String)
        +boolean getIsActive()
        +void setIsActive(boolean)
        +int getMaxCapacity()
        +void setMaxCapacity(int)
        +String getSemester()
        +void setSemester(String)
        +int getAcademicYear()
        +void setAcademicYear(int)
        +String getCourseType()
        +void setCourseType(String)
    }

    class Teacher {
        -String userSerialNumber
        -String departmentNumber
        -List~Course~ courses
        +String getUserSerialNumber()
        +String getDepartmentNumber()
        +void setDepartmentNumber(String)
        +List~Course~ getCourses()
        +void addCourse(Course)
        +void removeCourse(Course)
    }

    class Student {
        -String userSerialNumber
        -String departmentNumber
        -int schoolYear
        -float GPA
        -String academicStatus
        -boolean isScholarship
        +String getUserSerialNumber()
        +String getDepartmentNumber()
        +void setDepartmentNumber(String)
        +int getSchoolYear()
        +void setSchoolYear(int)
        +float getGPA()
        +void setGPA(float)
        +String getAcademicStatus()
        +void setAcademicStatus(String)
        +boolean getIsScholarship()
        +void setIsScholarship(boolean)
    }
Loading

Course Relationships Diagram

classDiagram
    %% Base Classes
    class User {
        -String userSerialNumber
        -String firstName
        -String lastName
        -String phoneNumber
        -String gmail
        -String password
        -LocalDate birthOfDate
        -String role
        -DateTime createdAt
    }

    class Department {
        -String departmentNumber
        -String name
        -String description
        -String location
    }

    class Course {
        -String courseCode
        -String name
        -String description
        -String departmentNumber
        -String teacherSerialNumber
        -boolean isActive
        -int maxCapacity
        -String semester
        -int academicYear
        -String courseType
    }

    %% Inheritance and Relationships
    User <|-- Teacher : is a
    User <|-- Student : is a
    User <|-- Admin : is a

    Department "1" --> "*" Teacher : employs
    Department "1" --> "*" Student : contains
    Department "1" --> "*" Course : offers
    Teacher "1" --> "*" Course : teaches

    class StudentCourse {
        -Student student
        -Course course
        -float grade
        -Date enrollmentYear
        -float attendanceRate
        -String semester
        -int academicYear
        -Date withdrawalDate
    }

    Student "1" -- "*" StudentCourse : has
    Course "1" -- "*" StudentCourse : has

    class Teacher {
        -String departmentNumber
    }

    class Student {
        -String departmentNumber
        -int schoolYear
        -float GPA
        -String academicStatus
        -boolean isScholarship
    }

    class Admin {
    }
Loading

About

EduMatrix is an university management system that transforms academic operations through innovative digital solutions.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages