Student Information System (SIS) with JDBC
A full-featured console-based Student Information System built with Java and MySQL using JDBC.
Java & OOP Concepts Demonstrated
Concept
Where Used
Encapsulation
All Model classes (Student, Grade, Course, etc.)
Inheritance
Custom Exceptions extend Exception
Polymorphism
Service layer method overloading
Abstraction
DAO pattern separates implementation
Custom Exceptions
StudentNotFoundException, ValidationException
try-catch-finally
All DAO and Service methods
Collections (ArrayList, List)
getAllStudents(), searchStudents()
JDBC
All DAO classes
PreparedStatement
Prevents SQL Injection
Singleton Pattern
DatabaseConnection
DAO Pattern
StudentDAO, GradeDAO, CourseDAO, UserDAO
Service Layer
StudentService, GradeService, AuthService
Lambda Expressions
forEach printing
Scanner
User input in ConsoleUI
Switch Expression
Menu navigation
Static Methods
InputValidator utility methods
StudentInfoSystem/
├── database/
│ └── schema.sql ← Run this first in MySQL
├── src/
│ └── com/sis/
│ ├── Main.java ← Entry Point
│ ├── model/ ← Entity Classes (Encapsulation)
│ │ ├── Student.java
│ │ ├── Grade.java
│ │ ├── Course.java
│ │ ├── Department.java
│ │ └── User.java
│ ├── dao/ ← Database Operations (JDBC)
│ │ ├── StudentDAO.java
│ │ ├── GradeDAO.java
│ │ ├── CourseDAO.java
│ │ ├── DepartmentDAO.java
│ │ └── UserDAO.java
│ ├── service/ ← Business Logic Layer
│ │ ├── StudentService.java
│ │ ├── GradeService.java
│ │ └── AuthService.java
│ ├── exception/ ← Custom Exceptions
│ │ ├── StudentNotFoundException.java
│ │ └── ValidationException.java
│ └── util/ ← Utility Classes
│ ├── DatabaseConnection.java ← Singleton
│ └── InputValidator.java
└── README.md
Java JDK 17+
MySQL 8.0+
MySQL Connector/J JAR (mysql-connector-java-8.x.jar)
-- Open MySQL and run:
source database/ schema .sql
Edit src/com/sis/util/DatabaseConnection.java:
private static final String URL = "jdbc:mysql://localhost:3306/student_info_system" ;
private static final String USERNAME = "root" ;
private static final String PASSWORD = "your_mysql_password" ;
# Compile (adjust path to mysql connector jar)
javac -cp . ; mysql-connector-j-8.x.jar -d out -sourcepath src src/com/sis/Main.java
# Run
java -cp out; mysql-connector-j-8.x.jar com.sis.Main
Default Login Credentials
Username
Password
Role
admin
admin123
ADMIN
student1
pass123
STUDENT
Add / View / Search / Update / Delete students
Add and view grades
View dashboard summary (total students, departments, courses)
Filter students by department
Add new courses
View their own profile
View their own grades and CGPA
View available courses
Marks (%)
Grade
90 - 100
A+
80 - 89
A
70 - 79
B+
60 - 69
B
50 - 59
C
40 - 49
D
Below 40
F