Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
구현할 기능
Application.java - 메인함수, 입출력 기능,
문자열로 과목과 학점을 받고 쉼표로 각각 분리, 다시 -로 과목과 학점, 평점 분리해서 Major, GeneralEducation 클래스 리스트로 담기,
Student 클래스에서 취득학점, 평점평균, 전공 평점평균 가져와서 출력하기
Major.java, GeneralEducation.java - 각각 과목, 학점, 평점 필드를 가지고 있는 클래스
Student.java - 한 학생의 취득학점, 평점평균, 전공 평점평균 필드를 가지고 있는 클래스, Major, GeneralEducation 클래스 리스트에서 과목, 학점, 평점을 가져와 계산하기
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
org.gradle.jvmargs=-Dfile.encoding=UTF-8
76 changes: 76 additions & 0 deletions src/main/java/gpacalc/Application.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,83 @@
package gpacalc;

import static camp.nextstep.edu.missionutils.Console.readLine;

import camp.nextstep.edu.missionutils.Console;
import java.util.ArrayList;


public class Application {
public static void main(String[] args) {
//TODO: 구현

Student student = new Student();
ArrayList<Major> majors = new ArrayList<Major>();
ArrayList<GeneralEducation> generals = new ArrayList<GeneralEducation>();
System.out.println("전공 과목명과 이수학점, 평점을 입력해주세요(예시: 프로그래밍언어론-3-A+,소프트웨어공학-3-B+):");
String input = Console.readLine();
if (input.trim().equals("")) {
throw new IllegalArgumentException("공백으로만 구성됨");
}
String[] subject = input.split(",");
for (int i = 0; i < subject.length; i++) {
String[] token = subject[i].split("-");
if (token.length != 3) {
throw new IllegalArgumentException("입력 형식 오류");
}
String subjectName = token[0];
String subjectCredit = token[1];
String subjectGrade = token[2];
Major major = new Major(subjectName, subjectCredit, subjectGrade);
if(major.getSubjectCredit()<1 || major.getSubjectCredit()>4){
throw new IllegalArgumentException("잘못된 학점");
}
student.setCreditSum(major.getSubjectCredit(), major.getSubjectGrade());
student.setGradeSum(major.getSubjectGrade(), major.getSubjectCredit());
student.setMajorCredit(major.getSubjectCredit());
student.setMajorSum(major.getSubjectGrade(), major.getSubjectCredit());
student.setMajorAvg(student.getMajorSum(), student.getMajorCredit());
student.setGradeAvg(student.getGradeSum());
majors.add(major);
}
System.out.println("교양 과목명과 이수학점, 평점을 입력해주세요(예시: 선형대수학-3-C0,인간관계와자기성장-3-P):");
String input2 = Console.readLine();
if (input2.trim().equals("")) {
throw new IllegalArgumentException("공백으로만 구성됨");
}
String[] subject2 = input2.split(",");
for (int i = 0; i < subject2.length; i++) {
String[] token2 = subject2[i].split("-");
if (token2.length != 3) {
throw new IllegalArgumentException("입력 형식 오류");
}
String subjectName = token2[0];
String subjectCredit = token2[1];
String subjectGrade = token2[2];
GeneralEducation general = new GeneralEducation(subjectName, subjectCredit, subjectGrade);
if(general.getSubjectCredit()<1 || general.getSubjectCredit()>4){
throw new IllegalArgumentException("잘못된 학점");
}
student.setCreditSum(general.getSubjectCredit(), general.getSubjectGrade());
student.setGradeSum(general.getSubjectGrade(), general.getSubjectCredit());
student.setGradeAvg(student.getGradeSum());
generals.add(general);
}
System.out.println("\n<과목 목록>");;
for (int i = 0; i < majors.size(); i++) {
System.out.println("[전공] " + majors.get(i).getSubjectName() + "," + majors.get(i).getSubjectCredit() + "," + majors.get(i).getSubjectGrade());
}
for (int i = 0; i < generals.size(); i++) {
System.out.println("[교양] " + generals.get(i).getSubjectName() + "," + generals.get(i).getSubjectCredit() + "," + generals.get(i).getSubjectGrade());
}

System.out.println("\n<취득학점>");
System.out.println(student.getCreditSum() + "학점");
System.out.println("\n<평점평균>");
String str = String.format("%.2f", student.getGradeAvg());
System.out.println(str + " / 4.5");

System.out.println("\n<전공 평점평균>");
str = String.format("%.2f", student.getMajorAvg());
System.out.println(str + " / 4.5");
}
}
32 changes: 32 additions & 0 deletions src/main/java/gpacalc/GeneralEducation.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package gpacalc;

public class GeneralEducation {
private String subjectName;
private int subjectCredit;
private String subjectGrade;

GeneralEducation(String subjectName, String subjectCredit, String subjectGrade) {
setSubjectName(subjectName);
setSubjectCredit(subjectCredit);
setSubjectGrade(subjectGrade);
}

public String getSubjectName() {
return subjectName;
}
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
public int getSubjectCredit() {
return subjectCredit;
}
public void setSubjectCredit(String subjectCredit) {
this.subjectCredit = Integer.parseInt(subjectCredit);
}
public String getSubjectGrade() {
return subjectGrade;
}
public void setSubjectGrade(String subjectGrade) {
this.subjectGrade = subjectGrade;
}
}
34 changes: 34 additions & 0 deletions src/main/java/gpacalc/Major.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package gpacalc;

import javax.security.auth.Subject;

public class Major {
private String subjectName;
private int subjectCredit;
private String subjectGrade;

Major(String subjectName, String subjectCredit, String subjectGrade) {
setSubjectName(subjectName);
setSubjectCredit(subjectCredit);
setSubjectGrade(subjectGrade);
}

public String getSubjectName() {
return subjectName;
}
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
public int getSubjectCredit() {
return subjectCredit;
}
public void setSubjectCredit(String subjectCredit) {
this.subjectCredit = Integer.parseInt(subjectCredit);
}
public String getSubjectGrade() {
return subjectGrade;
}
public void setSubjectGrade(String subjectGrade) {
this.subjectGrade = subjectGrade;
}
}
154 changes: 154 additions & 0 deletions src/main/java/gpacalc/Student.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
package gpacalc;

public class Student {
private int creditSum;
private float gradeSum;
private float majorSum;
private float gradeAvg;
private float majorAvg;
private int majorCredit;
private int countWithoutPF;

Student() {
this.creditSum = 0;
this.gradeSum = 0;
this.majorSum = 0;
this.gradeAvg = 0.0f;
this.majorAvg = 0.0f;
this.majorCredit = 0;
this.countWithoutPF = 0;
}

public void setMajorCredit(int majorCount) {
this.majorCredit += majorCount;
}

public int getMajorCredit() {
return majorCredit;
}

public int getCountWithoutPF() {
return countWithoutPF;
}

public void setGradeSum(String grade, int credit) {
float grade1 = 0.0f;
if (grade.equals("P")||grade.equals("NP")) {
grade1 += 0.0;
this.countWithoutPF += 0;
}
else {
if (grade.equals("A+")) {
grade1 += 4.5;
}
else if (grade.equals("A0")) {
grade1 += 4.0;
}
else if (grade.equals("B+")) {
grade1 += 3.5;
}
else if (grade.equals("B0")) {
grade1 += 3.0;
}
else if (grade.equals("C+")) {
grade1 += 2.5;
}
else if (grade.equals("C0")) {
grade1 += 2.0;
}
else if (grade.equals("D+")) {
grade1 += 1.5;
}
else if (grade.equals("D0")) {
grade1 += 1.0;
}
else if (grade.equals("F")) {
grade1 += 0.0;
}
else {
throw new IllegalArgumentException("잘못된 평점값");
}
this.countWithoutPF += credit;
}

gradeSum += grade1 * credit;
}

public float getGradeSum() {
return gradeSum;
}

public void setMajorSum(String grade, int credit) {
float grade1 = 0.0f;
if (grade.equals("P")||grade.equals("NP")) {
grade1 += 0.0;
}
else if (grade.equals("A+")) {
grade1 += 4.5;
}
else if (grade.equals("A0")) {
grade1 += 4.0;
}
else if (grade.equals("B+")) {
grade1 += 3.5;
}
else if (grade.equals("B0")) {
grade1 += 3.0;
}
else if (grade.equals("C+")) {
grade1 += 2.5;
}
else if (grade.equals("C0")) {
grade1 += 2.0;
}
else if (grade.equals("D+")) {
grade1 += 1.5;
}
else if (grade.equals("D0")) {
grade1 += 1.0;
}
else if (grade.equals("F")) {
grade1 += 0.0;
}
else {
throw new IllegalArgumentException("잘못된 평점값");
}
majorSum += grade1 * credit;
}
public float getMajorSum() {
return majorSum;
}

public int getCreditSum() {
return creditSum;
}

public void setCreditSum(int creditSum, String grade) {
if (grade.equals("F")||grade.equals("NP")) {
this.creditSum += 0;
}
else if (grade.equals("A+")||grade.equals("A0")||grade.equals("B+")||grade.equals("B0")||grade.equals("C+")||grade.equals("C0")||grade.equals("D+")||grade.equals("D0")||grade.equals("P")) {
this.creditSum += creditSum;
}
else {
throw new IllegalArgumentException("잘못된 평점값");
}
}

public float getGradeAvg() {
return gradeAvg;
}

public void setGradeAvg(float gradeSum) {
this.gradeAvg = gradeSum / getCountWithoutPF();
}

public float getMajorAvg() {

return majorAvg;
}

public void setMajorAvg(float majorAvg, int majorCount) {
this.majorAvg = majorSum / majorCount;
}
}