본문 바로가기

Programming language/Java

Java - 실무4 [학점계산기]

public class Main {
    public static void main(String[] args) {
        GradeCalculator gradeCalc = new GradeCalculator("김신의", 4.0, 100);

        gradeCalc.addCourse(new Course("OOP", Course.CREDIT_MAJOR, "A+"));
        gradeCalc.addCourse(new Course("신호와시스템", Course.CREDIT_MAJOR, "A"));
        gradeCalc.addCourse(new Course("해석학", Course.CREDIT_MAJOR, "B+"));
        gradeCalc.addCourse(new Course("확률", Course.CREDIT_MAJOR, "A+"));
        gradeCalc.addCourse(new Course("스포츠댄스", Course.CREDIT_GENERAL, "A"));

        gradeCalc.print();
    }
}

GradeCalculator.java

- 학점 계산 클래스

- 이름, 직전학기 점수평균, 총 이수학점 

- 수강과목들을 ArrayList로 만들어 저장 및 과목 추가

- 이수학점총합 계산 메소드

- 이수과목 평균학점 계산 메소드

 -총 이수과목 평균학점 계산 메소드

import java.util.ArrayList;

public class GradeCalculator {
    private String name;
    private double preSemeterGrade;
    private int creditsTaken;
    // 수강과목 리스트 생성
    ArrayList<Course> courseToBeTaken = new ArrayList<>();
    // 생성자 인수 : 이름, 직전학기 평점, 이수학점
    public GradeCalculator (String name, double preSemeterGrade, int creditsTaken){
        this.name = name;
        this.preSemeterGrade = preSemeterGrade;
        this.creditsTaken = creditsTaken;
    }

    // 수강과목 추가
    public void addCourse (Course course){
        courseToBeTaken.add(course);
    }

    // 이수학점 총합 계산 메소드
    public int getTotalCredit (ArrayList<Course> courses){
        int totalCredit = 0;
        for (Course course: courses) {
            totalCredit += course.getCredit();
        }
        return totalCredit;
    }

    // 이수과목의 평균학점 계산메소드
    public double getAverageGrade (ArrayList<Course> courses){
        double averageGrade = 0;
        for (Course course: courses) {
            averageGrade += course.getCredit() * course.getGradeToNum();
        }
        averageGrade = averageGrade / getTotalCredit(courses);
        return averageGrade;
    }

    // 전체과목의 평균학점 계산 메소드
    public double getTotalAverageGrade (ArrayList<Course> courses){
        double averageGrade = 0;
        for (Course course: courses) {
            averageGrade += course.getCredit() * course.getGradeToNum();
        }
        averageGrade += preSemeterGrade * creditsTaken;
        averageGrade = averageGrade / (getTotalCredit(courses) + creditsTaken);
        return averageGrade;
    }

    // 전체 학점 출력
    public void print(){
        System.out.println("직전 학기 성적: "+this.preSemeterGrade+" (총 "+this.creditsTaken+"학점)");
        System.out.println("이번 학기 성적: "+getAverageGrade(courseToBeTaken)+" (총 "+getTotalCredit(courseToBeTaken)+"학점)");
        System.out.println("전체 예상 학점: "+getTotalAverageGrade(courseToBeTaken)+" (총 "+(getTotalCredit(courseToBeTaken)+creditsTaken)+"학점)");
    }
}

Coures.java

- 과목 클래스

- 과목이름, 학점, 점수

- 점수를 숫자로 바꾸는 메소드

public class Course {
    public static final int CREDIT_MAJOR = 3;
    public static final int CREDIT_GENERAL = 2;

    // 인스턴스 변수
    private String subject;
    private int credit;
    private String grade;

    // 클래스 생성자 : 과목, 학점, 점수
    public Course(String subject, int credit, String grade) {
        this.subject = subject;
        this.credit = credit;
        this.grade = grade;
    }

    // 이수학점 getter
    public int getCredit() {
        return this.credit;
    }

    // 문자점수를 숫자로 바꾸는 메소드
    public double getGradeToNum() {
        double gradeInt = 0;
        if (this.grade.equals("A+")){
            gradeInt = 4.5;
        }else if (this.grade.equals("A")){
            gradeInt = 4.0;
        }
        else if (this.grade.equals("B+")){
            gradeInt = 3.5;
        }
        else if (this.grade.equals("B")){
            gradeInt = 3.0;
        }
        else if (this.grade.equals("C+")){
            gradeInt = 2.5;
        }
        else if (this.grade.equals("C")){
            gradeInt = 2.0;
        }
        else if (this.grade.equals("D+")){
            gradeInt = 1.5;
        }
        else if (this.grade.equals("D")){
            gradeInt = 1.0;
        }
        else if (this.grade.equals("F")){
            gradeInt = 0.0;
        }
        
        return gradeInt;
    }


}

 

'Programming language > Java' 카테고리의 다른 글

Java - 9 [상속, super]  (1) 2020.10.18
Java - 실무5 [MP3플레이어]  (1) 2020.10.18
Java - 실무3 [영화관]  (2) 2020.10.18
Java - 실무2 [포켓몬 도감]  (2) 2020.10.18
Java - 실무1 [은행]  (2) 2020.10.18