Java Topics
HubJava Collections FrameworkCollections Practice ProgramsComparable vs ComparatorGenericsIteratorArrayListLinkedListStackVectorHashMapHashtableLinkedHashMapTreeMapArrayDequeDeque Double-Ended QueuePriorityQueueHashSetLinkedHashSetTreeSetAdapter PatternBuilder PatternFactory PatternMVC PatternObserver PatternSingleton PatternDynamic ProgrammingGraphHashingHeapLinked List DSAQueue DSARecursionSearching AlgorithmsSorting AlgorithmsStack DSATime ComplexityTreesException Handling Best PracticesCustom ExceptionException Hierarchyfinally BlockException Handlingthrow aur throwstry-catchBuffered StreamsByte StreamsCharacter StreamsDeserializationFile ClassJava NIO New I/OSerializationArrays in JavaArray OperationsArray Practice ProgramsArray Interview QuestionsJagged ArrayMulti-Dimensional ArraysOne Dimensional Arraybreak aur continuedo-while Loopfor Loopif-else StatementsNested Loopsswitch-case Statementwhile LoopJava Compilation ProcessJava ki FeaturesPehla Java ProgramHistory of JavaJava EditionsJava Program StructureJDK, JRE aur JVMJava Kya Hai?Immutable StringsString Class in JavaString Interview QuestionsString MethodsString Practice ProgramsStringBufferStringBuilderComments in JavaData Types in JavaIdentifiers in JavaInput & Output in JavaJava KeywordsOperators in JavaType Casting in JavaVariables in JavaJava Coding Interview QuestionsCollections Interview QuestionsCore Java Interview QuestionsJDBC Interview QuestionsMultithreading Interview QuestionsOOPs Interview QuestionsSpring Framework Interview QuestionsJava 8 Date/Time APIDefault aur Static Methods in InterfaceFunctional InterfaceLambda ExpressionMethod ReferenceOptional ClassStream APIBatch ProcessingCallableStatementJDBC ArchitectureJDBC — Java Database ConnectivityJDBC Practice ProjectsMySQL ConnectionPreparedStatementResultSetStatement InterfaceTransaction ManagementCreating ThreadsDaemon ThreadExecutor FrameworkInter-Thread CommunicationMultithreading Practice ProgramsRunnable InterfaceSynchronizationThread ClassMultithreading IntroductionThread Life CycleThread PriorityJava Cheat SheetImportant Formulas & Key ConceptsImportant Java ProgramsJava Quick RevisionAbstract ClassAbstractionAnonymous ClassClass and ObjectConstructorEncapsulationInheritanceInner ClassInterfaceMethod OverloadingMethod OverridingObject ClassObject CloningObject-Oriented Programming OOPPolymorphismstatic Keywordsuper Keywordthis KeywordWrapper ClassesArray Practice ProgramsBasic Java Practice ProgramsCollection Practice ProgramsJDBC Practice ProgramsMultithreading Practice ProgramsOOPs Practice ProgramsPlacement Coding QuestionsString Practice ProgramsBanking SystemChat ApplicationE-Commerce Backend — Spring Boot REST APIEmployee Management SystemLibrary Management SystemSpring Boot Fullstack ProjectStudent Management SystemCookies in ServletExpression Language ELGenericServletHttpServletJavaServer Pages JSPJSP TagsMVC ArchitectureHttpServletRequest & HttpServletResponseServlet IntroductionServlet Life CycleSession TrackingDependency InjectionSpring BeansSpring CoreSpring FrameworkAPI GatewaySpring Cloud Config ServerDocker DeploymentEureka Server — Service DiscoverySpring Boot CRUD ApplicationException Handling in Spring BootJWT AuthenticationREST API in Spring BootSpring SecuritySpring BootSpring Data JPAValidation in Spring Boot
Student Management System
Last Updated : 26 May, 2026
title: Student Management System
Projects87 words9 headingsExamples included
title: Student Management System description: Console-based Student Management System using Java aur JDBC
Java aur JDBC se banaya hua console-based student management system.
Features
- Student add karna
- Sabhi students dekhna
- Student search karna (ID ya naam se)
- Student update karna
- Student delete karna
- Marks ke hisaab se sort karna
- Grade calculate karna
Technology Stack
- Java SE 17+
- JDBC
- MySQL Database
- Scanner (Console Input)
Database Setup
sql exampleWoHoTech
CREATE DATABASE student_mgmt;
USE student_mgmt;
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
age INT,
email VARCHAR(100) UNIQUE,
marks DOUBLE,
grade CHAR(2),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);Project Structure
student-management-system/
├── src/
│ ├── model/
│ │ └── Student.java
│ ├── dao/
│ │ ├── StudentDAO.java
│ │ └── StudentDAOImpl.java
│ ├── service/
│ │ └── StudentService.java
│ ├── util/
│ │ └── DBConnection.java
│ └── main/
│ └── Main.java
└── README.mdx
Model — Student.java
java exampleWoHoTech
package model;
public class Student {
private int id;
private String name;
private int age;
private String email;
private double marks;
private String grade;
public Student() {}
public Student(String name, int age, String email, double marks) {
this.name = name;
this.age = age;
this.email = email;
this.marks = marks;
this.grade = calculateGrade(marks);
}
private String calculateGrade(double marks) {
if (marks >= 90) return "A+";
if (marks >= 80) return "A";
if (marks >= 70) return "B";
if (marks >= 60) return "C";
if (marks >= 50) return "D";
return "F";
}
// Getters and Setters
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public double getMarks() { return marks; }
public void setMarks(double marks) {
this.marks = marks;
this.grade = calculateGrade(marks);
}
public String getGrade() { return grade; }
@Override
public String toString() {
return String.format("%-5d %-20s %-5d %-30s %-8.2f %-5s",
id, name, age, email, marks, grade);
}
}DBConnection.java
java exampleWoHoTech
package util;
import java.sql.*;
public class DBConnection {
private static final String URL = "jdbc:mysql://localhost:3306/student_mgmt";
private static final String USER = "root";
private static final String PASS = "password";
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASS);
}
}StudentDAO Interface
java exampleWoHoTech
package dao;
import model.Student;
import java.util.List;
import java.util.Optional;
public interface StudentDAO {
int insert(Student student) throws Exception;
List<Student> findAll() throws Exception;
Optional<Student> findById(int id) throws Exception;
List<Student> findByName(String name) throws Exception;
int update(Student student) throws Exception;
int delete(int id) throws Exception;
List<Student> findTopStudents(int limit) throws Exception;
}StudentDAOImpl.java
java exampleWoHoTech
package dao;
import model.Student;
import util.DBConnection;
import java.sql.*;
import java.util.*;
public class StudentDAOImpl implements StudentDAO {
@Override
public int insert(Student s) throws Exception {
String sql = "INSERT INTO students (name, age, email, marks, grade) VALUES (?,?,?,?,?)";
try (Connection c = DBConnection.getConnection();
PreparedStatement ps = c.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
ps.setString(1, s.getName());
ps.setInt(2, s.getAge());
ps.setString(3, s.getEmail());
ps.setDouble(4, s.getMarks());
ps.setString(5, s.getGrade());
ps.executeUpdate();
ResultSet keys = ps.getGeneratedKeys();
return keys.next() ? keys.getInt(1) : -1;
}
}
@Override
public List<Student> findAll() throws Exception {
List<Student> list = new ArrayList<>();
String sql = "SELECT * FROM students ORDER BY marks DESC";
try (Connection c = DBConnection.getConnection();
Statement stmt = c.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) list.add(mapRow(rs));
}
return list;
}
@Override
public Optional<Student> findById(int id) throws Exception {
String sql = "SELECT * FROM students WHERE id = ?";
try (Connection c = DBConnection.getConnection();
PreparedStatement ps = c.prepareStatement(sql)) {
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
return rs.next() ? Optional.of(mapRow(rs)) : Optional.empty();
}
}
@Override
public List<Student> findByName(String name) throws Exception {
List<Student> list = new ArrayList<>();
String sql = "SELECT * FROM students WHERE name LIKE ?";
try (Connection c = DBConnection.getConnection();
PreparedStatement ps = c.prepareStatement(sql)) {
ps.setString(1, "%" + name + "%");
ResultSet rs = ps.executeQuery();
while (rs.next()) list.add(mapRow(rs));
}
return list;
}
@Override
public int update(Student s) throws Exception {
String sql = "UPDATE students SET name=?, age=?, email=?, marks=?, grade=? WHERE id=?";
try (Connection c = DBConnection.getConnection();
PreparedStatement ps = c.prepareStatement(sql)) {
ps.setString(1, s.getName());
ps.setInt(2, s.getAge());
ps.setString(3, s.getEmail());
ps.setDouble(4, s.getMarks());
ps.setString(5, s.getGrade());
ps.setInt(6, s.getId());
return ps.executeUpdate();
}
}
@Override
public int delete(int id) throws Exception {
String sql = "DELETE FROM students WHERE id = ?";
try (Connection c = DBConnection.getConnection();
PreparedStatement ps = c.prepareStatement(sql)) {
ps.setInt(1, id);
return ps.executeUpdate();
}
}
@Override
public List<Student> findTopStudents(int limit) throws Exception {
List<Student> list = new ArrayList<>();
String sql = "SELECT * FROM students ORDER BY marks DESC LIMIT ?";
try (Connection c = DBConnection.getConnection();
PreparedStatement ps = c.prepareStatement(sql)) {
ps.setInt(1, limit);
ResultSet rs = ps.executeQuery();
while (rs.next()) list.add(mapRow(rs));
}
return list;
}
private Student mapRow(ResultSet rs) throws SQLException {
Student s = new Student();
s.setId(rs.getInt("id"));
s.setName(rs.getString("name"));
s.setAge(rs.getInt("age"));
s.setEmail(rs.getString("email"));
s.setMarks(rs.getDouble("marks"));
return s;
}
}Main.java — Console Menu
package main;
import dao.*;
import model.Student;
import java.util.*;
public class Main {
static StudentDAO dao = new StudentDAOImpl();
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("=== Student Management System ===");
while (true) {
System.out.println("\n1. Add Student");
System.out.println("2. View All Students");
System.out.println("3. Search by ID");
System.out.println("4. Search by Name");
System.out.println("5. Update Student");
System.out.println("6. Delete Student");
System.out.println("7. Top 5 Students");
System.out.println("0. Exit");
System.out.print("Choice: ");
int choice = sc.nextInt(); sc.nextLine();
switch (choice) {
case 1 -> addStudent();
case 2 -> viewAll();
case 3 -> searchById();
case 4 -> searchByName();
case 5 -> updateStudent();
case 6 -> deleteStudent();
case 7 -> topStudents();
case 0 -> { System.out.println("Goodbye!"); return; }
default -> System.out.println("Invalid choice!");
}
}
}
static void addStudent() {
try {
System.out.print("Name: "); String name = sc.nextLine();
System.out.print("Age: "); int age = sc.nextInt();
sc.nextLine();
System.out.print("Email: "); String email = sc.nextLine();
System.out.print("Marks: "); double marks = sc.nextDouble();
Student s = new Student(name, age, email, marks);
int id = dao.insert(s);
System.out.println("Student added with ID: " + id);
} catch (Exception e) { System.out.println("Error: " + e.getMessage()); }
}
static void viewAll() {
try {
List<Student> list = dao.findAll();
if (list.isEmpty()) { System.out.println("No students found"); return; }
System.out.printf("%-5s %-20s %-5s %-30s %-8s %-5s%n","ID","Name","Age","Email","Marks","Grade");
System.out.println("-".repeat(75));
list.forEach(System.out::println);
} catch (Exception e) { System.out.println("Error: " + e.getMessage()); }
}
static void searchById() {
try {
System.out.print("Student ID: ");
int id = sc.nextInt();
dao.findById(id).ifPresentOrElse(
System.out::println,
() -> System.out.println("Student not found")
);
} catch (Exception e) { System.out.println("Error: " + e.getMessage()); }
}
static void searchByName() {
try {
System.out.print("Name: "); String name = sc.nextLine();
dao.findByName(name).forEach(System.out::println);
} catch (Exception e) { System.out.println("Error: " + e.getMessage()); }
}
static void updateStudent() {
try {
System.out.print("Student ID to update: "); int id = sc.nextInt(); sc.nextLine();
Optional<Student> opt = dao.findById(id);
if (opt.isEmpty()) { System.out.println("Not found"); return; }
Student s = opt.get();
System.out.print("New name (" + s.getName() + "): "); String name = sc.nextLine();
System.out.print("New marks (" + s.getMarks() + "): "); double marks = sc.nextDouble();
if (!name.isEmpty()) s.setName(name);
s.setMarks(marks);
dao.update(s);
System.out.println("Updated successfully!");
} catch (Exception e) { System.out.println("Error: " + e.getMessage()); }
}
static void deleteStudent() {
try {
System.out.print("Student ID to delete: "); int id = sc.nextInt();
System.out.println(dao.delete(id) > 0 ? "Deleted!" : "Not found");
} catch (Exception e) { System.out.println("Error: " + e.getMessage()); }
}
static void topStudents() {
try {
dao.findTopStudents(5).forEach(System.out::println);
} catch (Exception e) { System.out.println("Error: " + e.getMessage()); }
}
}
Exam Focus
Revise definitions, diagrams, examples, and short-answer points for Student Management System.
Interview Use
Prepare one clear explanation, one practical example, and one common mistake for this Java topic.
Search Terms
java, java programming, core java, java master course, java notes, master, course, projects
Related Java Topics
Continue learning this concept
ProjectsEmployee Management Systemtitle: Employee Management SystemProjectsLibrary Management Systemtitle: Library Management SystemProjectsBanking Systemtitle: Banking SystemProjectsChat Applicationtitle: Chat ApplicationProjectsE-Commerce Backend — Spring Boot REST APItitle: E-Commerce BackendProjectsSpring Boot Fullstack Projecttitle: Spring Boot Fullstack Project