Languages/Java

[자바 객체 지향 프로그래밍] 06. 기말고사: 자바 실무 프로젝트

Dev다D 2021. 3. 4. 15:47
반응형

학점 계산기

 

학점 계산 방법

학점 예상에 필요한 자료 이와 같습니다:

  1. 이전 학기까지의 평균 점수 (4.5 만점)

  2. 이전 학기까지의 이수 크레딧 수 (전공 과목(CREDIT_MAJOR)은 3학점, 교양 과목(CREDIT_GENERAL)은 2학점)

  3. 이번 학기 과목별 예상 성적

 

이번 학기 점수 계산 방법

 

이번 학기의 평균 점수는 57.5 / 14의 결과값인 4.1071428571입니다.

 

전체 점수 예상

위의 계산법을 응용합니다. 이전 학기까지의 평균 점수 * 이전 학기까지의 크레딧 수를 하면 이전 학기까지의 총 점수를 구할 수 있겠죠?

 

예를 들어서 이전 학기까지의 평균 점수가 4.0이고 이수 크레딧 수가 100이라고 가정합시다. 그러면 총 점수는 400이죠? 위의 표에 나와있는대로 이번 학기 성적을 받았다면 이제 총 점수(이전 학기까지의 총 점수 + 이번 학기의 총 점수)는 457.5, 총 이수 크레딧 수(이전 학기까지의 크레딧 수 + 이번 학기의 크레딧 수)는 114입니다. 따라서 예상 전체 점수는 457.5 / 114의 결과값인 4.0131578947인 거죠!

 

 


package Ex0603;

public class Course {

    public static final int CREDIT_MAJOR = 3;
    public static final int CREDIT_GENERAL = 2;

    public final String name;
    public final int credit;
    public final String grade;

    public Course(String name, int credit, String grade) {
        this.name = name;
        this.credit = credit;
        this.grade = grade;
    }

    public double getScore() {
        switch (grade) {
            case "A+":
                return 4.5;
            case "A":
                return 4;
            case "B+":
                return 3.5;
            case "B":
                return 3;
            case "C+":
                return 2.5;
            case "C":
                return 2;
            case "D+":
                return 1.5;
            case "D":
                return 1;
            case "F":
                return 0;
        }
        return -1;
    }
}
package Ex0603;

import java.util.ArrayList;

public class GradeCalculator {
    public final String name;
    public final double currentScore;
    public final int currentCredit;

    private final ArrayList<Course> courses = new ArrayList<>();

    public GradeCalculator(String name, double currentScore, int currentCredit) {
        this.name = name;
        this.currentScore = currentScore;
        this.currentCredit = currentCredit;
    }

    public void addCourse(Course course) {
        courses.add(course);
    }

    public void print() {
        System.out.println("직전 학기 성적: " + currentScore + " (총 " + currentCredit + "학점)");

        double scoreSum = 0;
        int creditSum = 0;
        for (Course c : courses) {
            scoreSum += c.getScore() * c.credit;
            creditSum += c.credit;
        }
        System.out.println("이번 학기 성적: " + (scoreSum / creditSum) + " (총 " + creditSum + "학점)");

        double totalScore = currentScore * currentCredit + scoreSum;
        int totalCredit = currentCredit + creditSum;

        System.out.println("전체 예상 학점: " + (totalScore / totalCredit) + " (총 " + totalCredit + "학점)");
    }
}

본 내용은 Codeit의  '자바 기초' 강의를
참고하여 작성한 내용입니다.

 

반응형