Computer Science 523
Advanced Programming

Summer 2014, The College of Saint Rose

GradingBreakdown BlueJ Project

Click here to download a BlueJ project for GradingBreakdown.


GradingBreakdown Source Code

The Java source code for GradingBreakdown is below. Click on a file name to download it.


GradingBreakdown.java

/*
 * Example GradingBreakdown -- compute averages based on a grading breakdown,
 * prompt for actual grade values for each category, then
 * compute and report a final average
 *
 * Jim Teresco, The College of Saint Rose, CSC 202, Fall 2012
 *
 * $Id: GradingBreakdown.java 2001 2012-11-29 15:57:51Z terescoj $
 */

import java.util.Scanner;

public class GradingBreakdown {

    public static void main(String[] args) {

        // constants for the points and percentages for each grade component
        final double LA_POINTS = 150;
        final double LA_PERCENTAGE = 5;

        final double LAB_POINTS = 305;
        final double LAB_PERCENTAGE = 10;

        final double PROJECT_POINTS = 200;
        final double PROJECT_PERCENTAGE = 15;

        final double EXAM1_POINTS = 75;
        final double EXAM1_PERCENTAGE = 20;

        final double EXAM2_POINTS = 75;
        final double EXAM2_PERCENTAGE = 25;

        final double FINAL_POINTS = 100;
        final double FINAL_PERCENTAGE = 25;

        System.out.println("This program will help you determine your course average.");
        System.out.println("Please enter your raw scores for each grading category when prompted.");

        // create a keyboard Scanner
        Scanner keyboard = new Scanner(System.in);

        // accumulate total grade here
        double overallGradeEarned = 0.0;

        // lecture assignments:
        // read in and error check number of LA points
        double laPointsEarned = 0.0;
        do {
            System.out.print("How many lecture assignment points did you earn (total available: " +
                LA_POINTS + ")? ");
            laPointsEarned = keyboard.nextDouble();
            if ((laPointsEarned < 0.0) || (laPointsEarned > LA_POINTS)) {
                System.out.println("Response must be in the range 0.0 to " + LA_POINTS + "!");
            }
        } while ((laPointsEarned < 0.0) || (laPointsEarned > LA_POINTS));

        // compute contribution to total grade for lecture assignments
        double laGradeEarned = laPointsEarned / LA_POINTS * LA_PERCENTAGE;
        overallGradeEarned += laGradeEarned;

        System.out.println("Earned " + laGradeEarned + " grade points out of " + LA_PERCENTAGE + " possible.");

        // lab assignments:
        // read in and error check number of lab points
        double labPointsEarned = 0.0;
        do {
            System.out.print("How many lab points did you earn (total available: " +
                LAB_POINTS + ")? ");
            labPointsEarned = keyboard.nextDouble();
            if ((labPointsEarned < 0.0) || (labPointsEarned > LAB_POINTS)) {
                System.out.println("Response must be in the range 0.0 to " + LAB_POINTS + "!");
            }
        } while ((labPointsEarned < 0.0) || (labPointsEarned > LAB_POINTS));

        // compute contribution to total grade for lab assignments
        double labGradeEarned = labPointsEarned / LAB_POINTS * LAB_PERCENTAGE;
        overallGradeEarned += labGradeEarned;

        System.out.println("Earned " + labGradeEarned + " grade points out of " + LAB_PERCENTAGE + " possible.");
    
        // project assignments:
        // read in and error check number of project points
        double projectPointsEarned = 0.0;
        do {
            System.out.print("How many project points did you earn (total available: " +
                PROJECT_POINTS + ")? ");
            projectPointsEarned = keyboard.nextDouble();
            if ((projectPointsEarned < 0.0) || (projectPointsEarned > PROJECT_POINTS)) {
                System.out.println("Response must be in the range 0.0 to " + PROJECT_POINTS + "!");
            }
        } while ((projectPointsEarned < 0.0) || (projectPointsEarned > PROJECT_POINTS));

        // compute contribution to total grade for projects
        double projectGradeEarned = projectPointsEarned / PROJECT_POINTS * PROJECT_PERCENTAGE;
        overallGradeEarned += projectGradeEarned;

        System.out.println("Earned " + projectGradeEarned + " grade points out of " + PROJECT_PERCENTAGE + " possible.");


        // exam 1:
        // read in and error check number of exam1 points
        double exam1PointsEarned = 0.0;
        do {
            System.out.print("How many exam1 points did you earn (total available: " +
                EXAM1_POINTS + ")? ");
            exam1PointsEarned = keyboard.nextDouble();
            if ((exam1PointsEarned < 0.0) || (exam1PointsEarned > EXAM1_POINTS)) {
                System.out.println("Response must be in the range 0.0 to " + EXAM1_POINTS + "!");
            }
        } while ((exam1PointsEarned < 0.0) || (exam1PointsEarned > EXAM1_POINTS));

        // compute contribution to total grade for exam 1
        double exam1GradeEarned = exam1PointsEarned / EXAM1_POINTS * EXAM1_PERCENTAGE;
        overallGradeEarned += exam1GradeEarned;

        System.out.println("Earned " + exam1GradeEarned + " grade points out of " + EXAM1_PERCENTAGE + " possible.");

         // exam 2:
        // read in and error check number of exam2 points
        double exam2PointsEarned = 0.0;
        do {
            System.out.print("How many exam2 points did you earn (total available: " +
                EXAM2_POINTS + ")? ");
            exam2PointsEarned = keyboard.nextDouble();
            if ((exam2PointsEarned < 0.0) || (exam2PointsEarned > EXAM2_POINTS)) {
                System.out.println("Response must be in the range 0.0 to " + EXAM2_POINTS + "!");
            }
        } while ((exam2PointsEarned < 0.0) || (exam2PointsEarned > EXAM2_POINTS));

        // compute contribution to total grade for exam 2
        double exam2GradeEarned = exam2PointsEarned / EXAM2_POINTS * EXAM2_PERCENTAGE;
        overallGradeEarned += exam2GradeEarned;

        System.out.println("Earned " + exam2GradeEarned + " grade points out of " + EXAM2_PERCENTAGE + " possible.");
   
        // final exam:
        // read in and error check number of final points
        double finalPointsEarned = 0.0;
        do {
            System.out.print("How many final points did you earn (total available: " +
                FINAL_POINTS + ")? ");
            finalPointsEarned = keyboard.nextDouble();
            if ((finalPointsEarned < 0.0) || (finalPointsEarned > FINAL_POINTS)) {
                System.out.println("Response must be in the range 0.0 to " + FINAL_POINTS + "!");
            }
        } while ((finalPointsEarned < 0.0) || (finalPointsEarned > FINAL_POINTS));

        // compute contribution to total grade for final
        double finalGradeEarned = finalPointsEarned / FINAL_POINTS * FINAL_PERCENTAGE;
        overallGradeEarned += finalGradeEarned;

        System.out.println("Earned " + finalGradeEarned + " grade points out of " + FINAL_PERCENTAGE + " possible.");
    
        // now, we are ready to report an overall average
        System.out.println("Your overall course average is " + overallGradeEarned + ".");
    }

}