A desktop application written in Java using Swing that helps a university manage courses, class sections, enrollments, and grades.
- 🙋♂️ 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.
- JDK 21 or newer (because some files are compiled with JDK 21)
- Clone the repository:
git clone https://github.com/0xChaitanya/University-ERP.git
cd University ERP
- Configure database:
- This project utilises an embedded database called H2, eliminating the need for manual configuration.
- 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/tmpThis will open the login window
- Student: Username: c@iiitd.ac.in, Password: student
- Instructor: s@iiitd.ac.in, Password: faculty
- Admin: a@iiitd.ac.in, Password: admin
- Dashboard
- View Grades
- View Course Catalog
- Register for a course
- View/Update Grades
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.
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




