A comprehensive Java-based Student Management System for educational institutions
Efficiently manage student records with powerful filtering, analysis, and data manipulation capabilities
- Overview
- Features
- Getting Started
- Installation
- Usage
- Project Structure
- Data Format
- Examples
- Contributing
- License
Student Central is a robust, console-based student management system built in Java. It provides educational institutions with a simple yet powerful tool to manage student records, perform academic analytics, and maintain comprehensive student databases through an intuitive command-line interface.
The system uses a modular class design with separate student and detail classes for better data organization - student identity information (ID, names) is kept separate from academic details (course, grades, credits).
- π Data-Driven: CSV-based storage for easy data import/export
- π Advanced Filtering: Filter students by course, year level, or enrollment status
- π Academic Analytics: Graduation eligibility analysis and CWA tracking
- βοΈ Real-time Editing: Live student record modifications
- π Quick Search: Instant student lookup by ID with case-insensitive matching
- πΎ Persistent Storage: Automatic data persistence across sessions
- π¨ Professional Tables: Beautifully formatted console output with aligned columns
- β Add New Students - Register new students with complete academic profiles
- βοΈ Edit Student Records - Modify any student information field
- π₯ View All Students - Display comprehensive student listings in formatted tables
- π Advanced Search - Find students by ID with detailed information and case-insensitive matching
- π Student Analytics - Academic performance and graduation analysis
- π― Course-based Filtering - View students by specific courses in formatted tables
- π Year Level Filtering - Group students by academic year with clean output
- π Status Filtering - Separate full-time (FT) and part-time (PT) students
- π Graduation Analysis - Identify students eligible for graduation (400+ credits) in tabular format
- π Performance Tracking - Find students with highest CWA (Cumulative Weighted Average) with professional display
- πΎ CSV Integration - Seamless CSV file operations
- π Real-time Updates - Immediate data persistence
- π Data Validation - Input validation and error handling
- π‘οΈ Error Recovery - Robust exception handling
- π¨ Formatted Output - Professional table formatting with aligned columns and dividers
- Java Development Kit (JDK) 8 or higher
- Terminal/Command Prompt access
- Text editor or IDE (VS Code, IntelliJ IDEA, Eclipse)
-
Clone the repository
git clone https://github.com/D3PI-CODE/student-central.git cd student-central -
Compile the application
javac -cp src src/*.java -d bin -
Run the application
java -cp bin Main
-
Ensure Java is installed
java -version javac -version
-
Create the data file (if not exists)
touch Data.csv echo "StudentID, FirstName, FamilyName, CourseEnrolled, YearLevel, CWA, Status, CreditsEarned" > Data.csv
-
Compile all Java files
javac -cp src src/*.java -d bin -
Launch the application
java -cp bin Main
If using VS Code:
- Install the Java Extension Pack
- Open the project folder
- The application will auto-detect Java files and provide IntelliSense
When you start Student Central, you'll see the main menu:
/////////////////////////////////////////////////////////////////////////////////////
// //
// ββββββββββββββββββββ ββββββββββ ββββββββββββ ββββββββββββ //
// ββββββββββββββββββββ ββββββββββββββββββββββββ ββββββββββββ //
// ββββββββ βββ βββ ββββββ βββββββββ ββββββ βββ βββ //
// ββββββββ βββ βββ ββββββ βββββββββ ββββββββββ βββ //
// ββββββββ βββ ββββββββββββββββββββββββββββ ββββββ βββ //
// ββββββββ βββ βββββββ βββββββ βββββββββββ βββββ βββ //
// //
// βββββββ ββββββββββββ βββββββββββββββββββ βββββββββββ //
// ββββββββ βββββββββββββ βββββββββββββββββββββββββββββββ //
// βββ ββββββ ββββββ βββ βββ βββββββββββββββββββ //
// βββ ββββββ ββββββββββ βββ βββββββββββββββββββ //
// ββββββββ βββββββββββ ββββββ βββ βββ ββββββ βββββββββββ //
// βββββββ βββββββββββ βββββ βββ βββ ββββββ βββββββββββ //
// //
/////////////////////////////////////////////////////////////////////////////////////
Welcome to the Student Management System!
=====================================================================================
[ 1 ] Add new student
[ 2 ] Edit student
[ 3 ] View all students
[ 4 ] Filter students
[ 5 ] Analysis
[ 6 ] Search student by ID
[ 0 ] Exit
=====================================================================================
- Select option
1 - Enter student details:
- Student ID (must start with 'S')
- First Name
- Family Name
- Course Enrolled
- Year Level (1-4)
- CWA (0.0-100.0)
- Status (FT/PT)
- Credits Earned
- Select option
2 - Enter the student ID to edit
- Choose which field to modify:
- First Name
- Family Name
- Course Enrolled
- Year Level
- CWA
- Status
- Credits Earned
Select option 4 and choose from:
- By Course: View students in specific programs with formatted table output
- By Year Level: Group students by academic year in clean tabular format
- By Status: Filter by enrollment type (FT/PT) with professional display
Select option 5 for:
- Credit Analysis: Find students eligible for graduation (400+ credits) displayed in formatted tables
- CWA Analysis: Identify top-performing students with professional table output
student-central/
βββ src/
β βββ Main.java # Application entry point
β βββ Menu.java # User interface and menu handling
β βββ student.java # Student identity (ID, names)
β βββ detail.java # Academic details (course, year, CWA, status, credits)
β βββ handler.java # File I/O operations
βββ bin/ # Compiled Java classes (auto-generated)
βββ Data.csv # Student data storage
βββ .gitignore # Git ignore rules
βββ .vscode/ # VS Code configuration
β βββ settings.json
βββ README.md # Project documentation
| Class | Purpose | Key Methods |
|---|---|---|
Main |
Application entry point | main() |
Menu |
User interface management with formatted output | displayMenu(), getUserChoice(), selection() |
student |
Student identity (ID, names) | Getters, setters, constructor |
detail |
Academic details (course, year, CWA, etc.) | Getters, setters, constructor |
handler |
File operations | read(), append(), edit() |
The Data.csv file follows this format:
StudentID, FirstName, FamilyName, CourseEnrolled, YearLevel, CWA, Status, CreditsEarned
S001,John,Doe,Computer Science,3,85.5,FT,300
S002,Jane,Smith,Mathematics,2,92.0,FT,200
S003,Bob,Johnson,Engineering,4,78.3,PT,450| Field | Type | Description | Validation |
|---|---|---|---|
| StudentID | String | Unique identifier | Must start with 'S' |
| FirstName | String | Student's first name | Required |
| FamilyName | String | Student's last name | Required |
| CourseEnrolled | String | Academic program | Required |
| YearLevel | Integer | Academic year (1-4) | 1-4 range |
| CWA | Double | Cumulative Weighted Average | 0.0-100.0 |
| Status | String | Enrollment status | FT or PT |
| CreditsEarned | Integer | Total credits completed | Non-negative |
// Creating students with separated classes
// Student identity and academic details are now separate
// Example 1: Computer Science student
detail aliceDetails = new detail("Computer Science", 3, 88.5, "FT", 280);
student alice = new student("S001", "Alice", "Johnson",
aliceDetails.getCourseEnrolled(),
aliceDetails.getYearLevel(),
aliceDetails.getCwa(),
aliceDetails.getStatus(),
aliceDetails.getCreditsEarned());
// Example 2: Part-time Engineering student
detail bobDetails = new detail("Engineering", 4, 91.2, "PT", 420);
student bob = new student("S002", "Bob", "Smith",
bobDetails.getCourseEnrolled(),
bobDetails.getYearLevel(),
bobDetails.getCwa(),
bobDetails.getStatus(),
bobDetails.getCreditsEarned());
// Accessing student information
System.out.println("ID: " + alice.getStudentID());
System.out.println("Name: " + alice.getFirstName() + " " + alice.getFamilyName());
System.out.println("Course: " + alice.getDetail().getCourseEnrolled());
System.out.println("CWA: " + alice.getDetail().getCwa());View All Students (with professionally formatted table):
===============================================================================================
| ID | Name | Credits | CWA | Status | Course | Year |
===============================================================================================
| S1234567 | Alice Brown | 72 | 78.53 | FT | Computer Science | 3 |
-----------------------------------------------------------------------------------------------
| S1345690 | David McMeekin | 300 | 99.12 | FT | Software Engineering | 4 |
-----------------------------------------------------------------------------------------------
| S2468013 | Emma Davis | 420 | 95.80 | PT | Data Science | 4 |
-----------------------------------------------------------------------------------------------
Filter by Course (formatted table output):
Students enrolled in Computer Science:
===================================================================
| ID | Name | Course | Year |
===================================================================
| S1234567 | Alice Brown | Computer Science | 3 |
-------------------------------------------------------------------
| S3456789 | John Smith | Computer Science | 2 |
-------------------------------------------------------------------
Graduation Eligibility Analysis (400+ credits):
Students eligible for graduation:
=============================================
| ID | Name | Credits |
=============================================
| S1345690 | David McMeekin | 420 |
---------------------------------------------
| S2468013 | Emma Davis | 450 |
---------------------------------------------
Highest CWA Analysis (formatted display):
The highest CWA is: 99.12
Students with the highest CWA:
============================================
| ID | Name | CWA |
============================================
| S1345690 | David McMeekin | 99.12 |
--------------------------------------------
Student Search by ID (comprehensive table view):
===============================================================================================
| ID | Name | Credits | CWA | Status | Course | Year |
===============================================================================================
| S1234567 | Alice Brown | 72 | 78.53 | FT | Computer Science | 3 |
-----------------------------------------------------------------------------------------------
We welcome contributions to Student Central! Here's how you can help:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Test thoroughly
- Commit with clear messages
git commit -m "Add amazing feature" - Push to your branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow Java naming conventions
- Add comments for complex logic
- Ensure proper exception handling
- Test all new features
- Maintain backward compatibility
- π Authentication System - User login and permissions
- π Web Interface - GUI version of the application
- π Advanced Analytics - More statistical features
- π€ Data Export - Additional export formats
- π Database Integration - MySQL/PostgreSQL support
- π± Mobile Compatibility - Android/iOS versions
This project is licensed under the MIT License. See the LICENSE file for details.
Built with β€οΈ by Aken Dep