Skip to content

0xChaitanya/University-ERP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

209 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📈 Project Overview

A desktop application written in Java using Swing that helps a university manage courses, class sections, enrollments, and grades.

🔧 Features

  • 🙋‍♂️ Student: Browse course catalogue, Register for a section, Drop a section, View timetable, See grades and Download transcript(PDF).
  • 🧑‍🏫 Instructor: See My Sections and Enter scores for assessments.
  • 👩‍🏫 Admin: Add users(students or instructors), create courses and sections, assign an instructor to a section, and Toggle Maintenance Mode.

⛏️ Installation

Prerequisites

  • JDK 21 or newer (because some files are compiled with JDK 21)

Steps

  1. Clone the repository:
git clone https://github.com/0xChaitanya/University-ERP.git
cd University ERP
  1. Configure database:
  • This project utilises an embedded database called H2, eliminating the need for manual configuration.
  1. Run the Application
  • Windows : Double-click on the RunWindows.bat file

  • Mac/Linux :

    chmod +x RunMac.sh
    Double-click on the RunMac.sh file.
    
  • If you want to manually compile and run :

    javac -cp "lib/*;src;db;." -d bin src/edu/univ/erp/ui/login/tmp.java
    java -cp "lib/*;lib/assets;bin;db;." edu/univ/erp/ui/login/tmp
    

    This will open the login window

🔐 Login Credentials

💻 UI

Login Screen

image

Student

  1. Dashboard
image

  1. View Grades
image

  1. View Course Catalog
image

  1. Register for a course
image

Faculty

  1. Create Assessment image


  1. View/Update Grades
image

Admin

  1. Add Students image


  1. Add Faculty image


  1. Create Section image


  1. Toggle Maintenace Mode image

Tech Stack

Language

  • JDK 21

UI (Swing ecosystem)

  • Swing (JDK built-in) — core UI components (javax.swing.*).
  • FlatLaf (com.formdev:flatlaf) — modern Look & Feel for a cleaner desktop appearance.
  • JFreeChart (org.jfree:jfreechart) — basic charts for class averages or score distributions

Database connectivity & pooling

  • JDBC (JDK built-in) — standard database API (java.sql).
  • HikariCP (com.zaxxer:HikariCP) — lightweight connection pool.

Password hashing (Auth DB, “shadow” style)

  • jBCrypt (org.mindrot:jbcrypt) — straightforward bcrypt hashing and verification.

PDF exports

  • OpenPDF(com.github.librepdf:openpdf)or Apache PDFBox(org.apache.pdfbox:pdfbox) for simple PDF exports.

🗂 Code Struture

University-ERP/
├── .gitignore
├── Readme
├── RunMac.sh
├── RunWindows.bat
├── db/
│   ├── Auth_DB.mv.db
│   ├── Auth_DB.trace.db
│   ├── ERP_DB.mv.db
│   └── ERP_DB.trace.db
├── lib/
│   ├── README.md
│   ├── assets/
│   │   ├── Roboto-Light.ttf
│   │   ├── bullets.svg
│   │   ├── checkbox-ticked.svg
│   │   ├── checkbox-unticked.svg
│   │   ├── clip.svg
│   │   ├── clipLight.svg
│   │   ├── cross.svg
│   │   ├── dashboard.svg
│   │   ├── down-arrow.svg
│   │   ├── edit.svg
│   │   ├── editLight.svg
│   │   ├── eye.svg
│   │   ├── eye_light.svg
│   │   ├── iiitd_logo.svg
│   │   ├── iiitd_logo_login.svg
│   │   ├── iiitdrndblock.jpeg
│   │   ├── info.svg
│   │   ├── location.svg
│   │   ├── mail.svg
│   │   ├── pdf-document.svg
│   │   ├── plus.svg
│   │   ├── power.svg
│   │   ├── profile.svg
│   │   ├── right-arrow.svg
│   │   ├── tickedLight.svg
│   │   ├── untickedLight.svg
│   │   └── web.svg
│   ├── HikariCP-7.0.2.jar
│   ├── commons-logging-1.3.4.jar
│   ├── erp.uuid.jar
│   ├── flatlaf-3.6.2.jar
│   ├── flatlaf-extras-3.6.2.jar
│   ├── fontbox-3.0.6.jar
│   ├── h2-2.4.240.jar
│   ├── jcommon-1.0.16.jar
│   ├── jdatepicker-1.3.4.jar
│   ├── jsvg-2.0.0.jar
│   ├── metrics-healthchecks-3.0.2.jar
│   ├── pdf.singleCourse.jar
│   ├── pdfbox-3.0.6.jar
│   ├── pdfbox-io-3.0.6.jar
│   ├── randomIDGenerator.jar
│   ├── slf4j-api-2.0.9.jar
│   ├── slf4j-jdk14-2.0.9.jar
│   ├── swingx-1.6.1.jar
│   ├── timetable.jar
│   └── xchart-3.8.8.jar
└── src/edu/univ/erp/
    ├── access/
    │   └── isMaintenance.java
    ├── api/
    │   ├── admin/
    │   │   ├── AllCourseData.java
    │   │   ├── AllFacultyData.java
    │   │   ├── AllSectionDetails.java
    │   │   ├── AllStudentsDetails.java
    │   │   ├── NewSection.java
    │   │   ├── SectionDate.java
    │   │   └── totalStudentsInSection.java
    │   ├── auth/
    │   │   ├── GetUserID.java
    │   │   ├── IsPasswordValid.java
    │   │   ├── IsUsernamePresent.java
    │   │   ├── NewAccount.java
    │   │   ├── Role.java
    │   │   └── SetUserID.java
    │   ├── catalog/
    │   │   ├── allCourseDetails.java
    │   │   ├── courseComponents.java
    │   │   ├── courseName.java
    │   │   └── totalSemesters.java
    │   ├── enrollment/
    │   │   └── thisEnrollment.java
    │   ├── instructor/
    │   │   ├── AvgPerSection.java
    │   │   ├── NewAssessments.java
    │   │   ├── NewFaculty.java
    │   │   ├── RemoveAssessment.java
    │   │   ├── SectionDetails.java
    │   │   ├── StudentsEnrolled.java
    │   │   └── getComponents.java
    │   └── student/
    │       ├── AvailableCourses.java
    │       ├── ComponentWiseScores.java
    │       ├── CourseCapacity.java
    │       ├── MyCGPA.java
    │       ├── NewStudent.java
    │       ├── RegisterTheCourse.java
    │       ├── RollNo.java
    │       ├── Semesters.java
    │       ├── StudentContact.java
    │       ├── StudentEmail.java
    │       ├── StudentName.java
    │       ├── StudentProgram.java
    │       ├── StudentRollNo.java
    │       ├── UpdatedGrades.java
    │       ├── componentWiseGrades.java
    │       └── registeredCourses.java
    ├── auth/
    │   ├── hash/
    │   │   └── BCrypt.java
    │   ├── HikariConnectionPool.java
    │   ├── Login.java
    │   └── Session.java
    ├── data/
    │   ├── .gitignore
    │   ├── AdminData.java
    │   ├── Auth.java
    │   ├── Course.java
    │   ├── Enrollment.java
    │   ├── Grades.java
    │   ├── HikariConnectionPool.java
    │   ├── InstructorData.java
    │   ├── Section.java
    │   ├── Settings.java
    │   └── StudentData.java
    ├── domain/
    │   ├── Admin.java
    │   ├── Course.java
    │   ├── Enrollment.java
    │   ├── Grade.java
    │   ├── Instructor.java
    │   ├── Pair.java
    │   ├── Section.java
    │   ├── SemesterGrades.java
    │   ├── Setting.java
    │   └── Student.java
    ├── events/
    │   ├── ListenOnSave.java
    │   └── RefreshScreen.java
    ├── exceptions/
    │   ├── InvalidEmailException.java
    │   ├── InvalidLoginException.java
    │   └── UserAccountNotFoundException.java
    ├── service/
    │   └── deleteit.java
    ├── ui/
    │   ├── admin/
    │   │   ├── CourseListPanel.java
    │   │   ├── CoursesPanel.java
    │   │   ├── Dashboard.java
    │   │   ├── FacultyListPanel.java
    │   │   ├── FacultyPanel.java
    │   │   ├── SectionsListPanel.java
    │   │   ├── SectionsPanel.java
    │   │   ├── StudentsListPanel.java
    │   │   ├── StudentsPanel.java
    │   │   ├── popup/
    │   │   │   ├── AddFaculty.java
    │   │   │   ├── AddSection.java
    │   │   │   ├── AddStudents.java
    │   │   │   ├── SectionIdGenerator.java
    │   │   │   ├── SetDeadline.java
    │   │   │   └── StudentIdGenerator.java
    │   │   └── tmp.java
    │   ├── common/
    │   │   ├── CenterChangerPanel.java
    │   │   ├── CoursePalette.java
    │   │   ├── DetailCard.java
    │   │   ├── Header.java
    │   │   ├── LeftNavPanel.java
    │   │   ├── NameCard.java
    │   │   ├── events/
    │   │   │   ├── ButtonHover.java
    │   │   │   ├── HoverEffect.java
    │   │   │   ├── SetForeground.java
    │   │   │   ├── changeForeground.java
    │   │   │   └── changeForegroundCourse.java
    │   │   └── popup/
    │   │       └── Alert.java
    │   ├── faculty/
    │   │   ├── .gitignore
    │   │   ├── Assessments.java
    │   │   ├── AssessmentsListPanel.java
    │   │   ├── BarGraph.java
    │   │   ├── CoursesPanel.java
    │   │   ├── Dashboard.java
    │   │   ├── SectionPanel.java
    │   │   ├── Sections.java
    │   │   ├── StudentsListPanel.java
    │   │   ├── StudentsPanel.java
    │   │   ├── popup/
    │   │   │   ├── CreateAssessment.java
    │   │   │   ├── EditGrades.java
    │   │   │   ├── RemoveAssessmentDialog.java
    │   │   │   └── ViewGrades.java
    │   │   └── tmp.java
    │   ├── login/
    │   │   ├── Login_page2.java
    │   │   └── tmp.java
    │   └── student/
    │       ├── .gitignore
    │       ├── ComponentGradeCard.java
    │       ├── CourseGradePanel.java
    │       ├── Dashboard.java
    │       ├── GradePanel.java
    │       ├── ManageCoursesPanel.java
    │       ├── RegisterCoursePanel.java
    │       ├── popup/
    │       │   └── RegisterableCourseInfo.java
    │       └── tmp.java
    └── util/
        ├── DayTime.java
        ├── Email.java
        ├── Role.java
        └── Status.java

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages