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