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