Skip to content

GradeForge is a Python CLI app for managing student records, calculating grades and GPA, and generating reports—built with OOP, supports both high school and college grading systems.

Notifications You must be signed in to change notification settings

ghostburns/GradeForge

Repository files navigation

GradeForge - Student Grade Management System

GradeForge is a Python CLI-based application for managing student grades. It uses Object-Oriented Programming principles to model students, subjects, and grades, supporting different logic for High School and College students.

Features

  • Student Management:
    • Add new students (Generic, High School, or College types).
    • Student class stores name, ID.
    • HighSchoolStudent and CollegeStudent inherit from Student with specific grading logic.
      • CollegeStudent includes a major attribute.
  • Subject Management:
    • Define subjects with a name, code, and credit hours.
    • Assign subjects to students. Each student enrollment gets a distinct instance of the subject.
    • Subject class stores name, code, credit hours, and a list of grades.
  • Grade Management:
    • Input grades for each subject per student.
    • Grade class stores description (e.g., "Midterm"), a numeric score/point, and an optional letter grade.
    • High School Students:
      • Numeric marks (0-100).
      • Pass/fail based on a 50% overall average.
    • College Students:
      • Letter grades (A+, A, A-, ..., F).
      • Grade points assigned to letter grades (e.g., A/A+ = 4.0, F = 0.0).
      • GPA calculation based on grade points and subject credit hours.
      • Failing a course is indicated by an 'F' grade. Academic status considers GPA and F grades.
  • Reporting:
    • Calculate and display subject-wise performance.
    • Calculate overall average (for High School) or GPA (for College).
    • Determine pass/fail status or academic standing.
    • Generate detailed individual student reports.
  • Data Persistence:
    • Save current session data (students, subjects, grades) to a JSON file (gradeforge_data.json).
    • Load data from the JSON file upon application startup.
  • Data Export:
    • Export all student data to a CSV file.
  • CLI Interface:
    • Interactive menu-driven command-line interface.

Project Structure

The project is organized into the following Python files:

  • gradeforge.py: Main application file containing the CLI logic, data management (GradeForge class), and interactions between different components.
  • student.py: Defines the base Student class and derived classes HighSchoolStudent and CollegeStudent. Includes logic for grade calculations specific to student types (overall average, GPA, pass/fail status).
  • subject.py: Defines the Subject class, which stores subject details (name, code, credit hours) and a list of associated Grade objects. It can calculate the average score/point for the subject.
  • grade.py: Defines the Grade class, representing an individual grade entry with a description, score (numeric mark or grade point), and an optional letter grade.
  • README.md: This file, providing an overview of the project.
  • gradeforge_data.json: (Generated at runtime) Stores the application data.
  • *.csv: (Generated by export feature) CSV exports of grade data.

Object-Oriented Design

  • Grade: Represents a single assessment outcome.
  • Subject: Represents a course, containing multiple Grade objects and credit hour information.
  • Student: Base class for students. Manages a collection of Subject objects they are enrolled in.
    • HighSchoolStudent (inherits Student): Implements grading logic based on numeric marks and a simple average.
    • CollegeStudent (inherits Student): Implements grading logic based on letter grades, grade points, credit hours, and GPA.
  • GradeForge: Orchestrator class that manages collections of Student and template Subject objects, handles user interaction via the CLI, and manages data persistence and export.

Polymorphism is utilized, for example, in generate_report() and get_overall_average() methods, where the behavior adapts based on whether the object is a HighSchoolStudent or CollegeStudent.

How to Run

  1. Ensure you have Python 3 installed.
  2. Save all the Python files (gradeforge.py, student.py, subject.py, grade.py) in the same directory.
  3. Open a terminal or command prompt in that directory.
  4. Run the application using the command:
    python gradeforge.py
  5. Follow the on-screen menu options to interact with the system.

No external libraries are required beyond standard Python libraries (json, csv, os).

About

GradeForge is a Python CLI app for managing student records, calculating grades and GPA, and generating reports—built with OOP, supports both high school and college grading systems.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages