A comprehensive, persistent, and multithreaded command-line application designed to manage student records. This project serves as a consolidation of Lab Assignments 1 - 5, demonstrating mastery of Object-Oriented Programming, Java Collections, and File I/O.
- PERSISTENT STORAGE: Automatically saves and loads student records to a local file (
students.txt) so data is never lost. - MULTITHREADING: Features a simulated "Loading..." animation using background threads to mimic real-world data processing delays.
- SMART SORTING: Sorts students by Marks (Descending) using custom
Comparatorlogic. - ROBUST VALIDATION: Prevents duplicate Roll Numbers and validates input (e.g., Marks must be 0-100).
- ERROR HANDLING: Implements custom exceptions (
StudentNotFoundException) for safer execution. - MODULAR ARCHITECTURE: Clean separation of concerns using
model,service, andutilpackages.
The project follows a strict Modular Design pattern as per Lab 2 & 5 guidelines:
StudentManagementSystem/
βββ src/
β βββ main/
β β βββ Main.java <- Entry point (Menu System)
β βββ model/
β β βββ Person.java <- Abstract Base Class
β β βββ Student.java <- Concrete Data Class
β βββ service/
β β βββ RecordActions.java <- Interface for CRUD Operations
β β βββ StudentManager.java <- Business Logic & File I/O
β βββ util/
β βββ Loader.java <- Multithreading Simulation
β βββ StudentNotFoundException.java <- Custom Exception
βββ students.txt <- Data storage file
βββ README.md <- This File
This project successfully integrates the learning outcomes from all 5 Lab Assignments:
| Concept | Implementation Details |
|---|---|
| OOP Principles | Inheritance (Student extends Person), Abstraction, and Polymorphism. |
| Interfaces | RecordActions interface defines the contract for system operations. |
| Collections | ArrayList used for memory management; Iterator used for traversal. |
| File Handling | BufferedReader and BufferedWriter for reading/writing CSV data. |
| Multithreading | Runnable interface implemented in Loader.java. |
| Exception Handling | try-catch blocks and custom throw logic for data integrity. |
- Java Development Kit (JDK) (Version 8 or higher).
- VS Code (with Extension Pack for Java) OR Terminal.
- Open the
StudentManagementSystemfolder in VS Code. - Open
src/main/Main.java. - Click the dropdown on Run or Play button located in the top right.
- Click on Run Java
If you prefer running it manually, follow these exact steps to avoid package errors:
-
Navigate to the source directory:
cd "{yourlocalpath}/StudentManagementSystem/src"
-
Compile the Main class:
javac main/Main.java
-
Run the Application:
java main.Main
Name: Rohan Rathee
University: K.R. Mangalam University
Department: School of Engineering & Technology