Computer Science 523
Advanced Programming
Summer 2014, The College of Saint Rose
GradingBreakdownBetter BlueJ Project
Click here to download a BlueJ project for GradingBreakdownBetter.
GradingBreakdownBetter Source Code
The Java source code for GradingBreakdownBetter is below. Click on a file name to download it.
/*
* Example GradingBreakdown -- compute averages based on a grading breakdown,
* prompt for actual grade values for each category, then
* compute and report a final average
*
* This version uses a method to read and error check keyboard inputs
*
* Jim Teresco, The College of Saint Rose, CSC 202, Fall 2012
*
* $Id: GradingBreakdownBetter.java 2001 2012-11-29 15:57:51Z terescoj $
*/
import java.util.Scanner;
public class GradingBreakdownBetter {
// method to perform a more general error checked input
// this will repeatedly prompt for and read in values
// until one in the proper range is encountered, at which
// point it will return that value.
// we need the Scanner, since the main method creates our keyboard Scanner
// and it will be needed in this method, so it becomes a parameter
// we send a String called "gradeCategory" that we will use as part of the
// prompt we issue so the person knows which category to use
// and we send the max value of the input for error checking
// once a valid answer is read it, it is returned, so our method returns
// a double value
public static double readValidInput(Scanner s, String gradeCategory, double maxVal) {
// we will call our result the more generic "answer" since we don't know
// which category we are reading
double answer = 0.0;
do {
System.out.print("How many " + gradeCategory + " points did you earn (total available: " +
maxVal + ")? ");
answer = s.nextDouble();
if ((answer < 0.0) || (answer > maxVal)) {
System.out.println("Response must be in the range 0.0 to " + maxVal + "!");
}
} while ((answer < 0.0) || (answer > maxVal));
return answer;
}
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 = readValidInput(keyboard, "lecture assignment", 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 = readValidInput(keyboard, "lab", 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 = readValidInput(keyboard, "project", PROJECT_POINTS);
// compute contribution to total grade for project assignments
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 = readValidInput(keyboard, "exam 1", 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 = readValidInput(keyboard, "exam 2", 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 = readValidInput(keyboard, "final", FINAL_POINTS);
// compute contribution to total grade for final exam
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 + ".");
}
}