Skip to content

D3PI-CODE/Student-Central

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎓 Student Central

Java CSV Console

A comprehensive Java-based Student Management System for educational institutions


Efficiently manage student records with powerful filtering, analysis, and data manipulation capabilities

📋 Table of Contents

🌟 Overview

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).

Key Highlights

  • 📊 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

✨ Features

Core Functionality

  • 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

Filtering & Analytics

  • 🎯 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

Data Management

  • 💾 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

🚀 Getting Started

Prerequisites

  • Java Development Kit (JDK) 8 or higher
  • Terminal/Command Prompt access
  • Text editor or IDE (VS Code, IntelliJ IDEA, Eclipse)

Quick Start

  1. Clone the repository

    git clone https://github.com/D3PI-CODE/student-central.git
    cd student-central
  2. Compile the application

    javac -cp src src/*.java -d bin
  3. Run the application

    java -cp bin Main

🛠️ Installation

Manual Setup

  1. Ensure Java is installed

    java -version
    javac -version
  2. Create the data file (if not exists)

    touch Data.csv
    echo "StudentID, FirstName, FamilyName, CourseEnrolled, YearLevel, CWA, Status, CreditsEarned" > Data.csv
  3. Compile all Java files

    javac -cp src src/*.java -d bin
  4. Launch the application

    java -cp bin Main

Development Setup

If using VS Code:

  • Install the Java Extension Pack
  • Open the project folder
  • The application will auto-detect Java files and provide IntelliSense

💻 Usage

Main Menu Navigation

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

=====================================================================================

Adding a New Student

  1. Select option 1
  2. 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

Editing Student Records

  1. Select option 2
  2. Enter the student ID to edit
  3. Choose which field to modify:
    • First Name
    • Family Name
    • Course Enrolled
    • Year Level
    • CWA
    • Status
    • Credits Earned

Filtering Students

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

Academic Analysis

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

📁 Project Structure

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 Overview

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()

📊 Data Format

CSV Structure

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 Descriptions

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

🎯 Examples

Sample Student Records

// 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());

Analysis Results

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 |
-----------------------------------------------------------------------------------------------

🤝 Contributing

We welcome contributions to Student Central! Here's how you can help:

Development Guidelines

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/amazing-feature
  3. Make your changes
  4. Test thoroughly
  5. Commit with clear messages
    git commit -m "Add amazing feature"
  6. Push to your branch
    git push origin feature/amazing-feature
  7. Open a Pull Request

Code Standards

  • Follow Java naming conventions
  • Add comments for complex logic
  • Ensure proper exception handling
  • Test all new features
  • Maintain backward compatibility

Areas for Contribution

  • 🔐 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

📄 License

This project is licensed under the MIT License. See the LICENSE file for details.


Built with ❤️ by Aken Dep

Report Bug · Request Feature · Documentation

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages