harishv7
6/10/2015 - 3:41 PM

NUS CAP Calculator

NUS CAP Calculator

import java.util.*;
import java.lang.*;
import java.text.DecimalFormat;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        DecimalFormat df = new DecimalFormat("#.00");
        System.out.print("Please enter your name: ");
        String name = sc.nextLine();

        Student student = new Student(name);

        //System.out.println("Thank you" + "Your name is "+ name);

        System.out.print("Please enter the number of modules you want to calculate CAP for: ");
        int numMods = sc.nextInt();

        for(int i=0;i<numMods;i++) {
            System.out.print("Enter Module Code and MCs: ");
            String moduleCode = sc.next();
            int credits = sc.nextInt();
            System.out.print("Please enter grade obtained for " + moduleCode + ": ");
            sc.nextLine();
            String gradeObtained = sc.nextLine();

            Result newResult = new Result(moduleCode,gradeObtained,credits);
            student.addResult(newResult);
        }

        System.out.println("Thank you for the input.\n");
        System.out.println(student.printResult());
        System.out.println("Your final CAP is " + df.format(student.getCAP()));

        }

    }

/**
 * Created by HarishV on 8/6/15.
 */
public class Result {
    private String modCode, grade;
    private int credits;
    public Result(String modCode, String grade,int credits){
        this.modCode = modCode;
        this.grade = grade;
        this.credits = credits;
    }

    public int getCredits() {
        return this.credits;
    }
    public String getGrade() {
        return grade;
    }
    public String getModCode() {
        return modCode;
    }
}
import java.util.ArrayList;

/**
 * Created by HarishV on 8/6/15.
 */

public class Student {
    private String name;
    private ArrayList<Result> resultArr;

    public Student(String name){
        this.name = name;
        resultArr = new ArrayList<Result>();
    }

    public void addResult(Result newResult){
        resultArr.add(newResult);
    }

    public double getCAP() {
        int totalCredits = this.sumCredits();
        //System.out.println("Total Credits: " + totalCredits);
        double numer = this.getNumer();
        //System.out.println("Numer: "+ numer);
        return numer / (double) totalCredits;
    }

    private int sumCredits(){
        int totalMCs = 0;
        for(int i=0;i<resultArr.size();i++) {
            totalMCs += resultArr.get(i).getCredits();
        }
        return totalMCs;
    }

    private double getNumer(){
        double totalSum = 0.0;
        for(int i=0;i<resultArr.size();i++) {
            int credits = resultArr.get(i).getCredits();
            String grade = resultArr.get(i).getGrade();
            double gradePts = this.getGradePoints(grade);
            totalSum += gradePts * credits;
        }
        return totalSum;
    }

    public String printResult(){
        String output = "====================================\nSummary of " + name + "'s results:\n====================================\n";
        for(int i=0;i<resultArr.size();i++) {
            String modCode = resultArr.get(i).getModCode();
            int credits = resultArr.get(i).getCredits();
            String grade = resultArr.get(i).getGrade();

            output += "Module Code: " + modCode + " MCs: " + credits + " Grade: " + grade + "\n";
            output += "====================================\n";

        }
        return output;
    }

    private double getGradePoints(String grade){
        switch(grade){
            case "A+":
            case "A":
                return 5.0;
            case "A-":
                return 4.5;
            case "B+":
                return 4.0;
            case "B":
                return 3.5;
            case "B-":
                return 3.0;
            case "C+":
                return 2.5;
            case "C":
                return 2.0;
            case "D+":
                return 1.5;
            case "D":
                return 1.0;
            case "F":
                return 0.0;
            default:
                return 0.0;
        }
    }
}