-초등학생 성적관리 : 과목명, 점수(원점수), 시험(중간, 기말, 수행평가)
-중학생 성적관리 : 과목명, 점수(원점수), 담당교사, 시험(중간, 기말, 수행평가, 출석점수, 봉사점수)
-고등학생 성적관리 : 과목명, 점수(원점수, 표준편차), 담당교사, 시험(중간, 기말, 수행평가, 출석점수, 봉사점수)
출력모습
부모클래스
: 과목명, 원점수, 중간, 기말, 수행평가
: 입력받기 - 추상메소드
: 출력 - 추상메소드 (각각 출력하는 모양이 다르니)
: 점수 계산 - 추상메소드
자식클래스
1) 초등 클래스
2) 중학 클래스
: 담당교사, 출석점수, 봉사점수
3) 고등 클래스
: 표준편차점수, 담당교사
-필드값 선언
-오버라이딩해 사용할 추상 메소드 작성
public abstract class Score {
// 필드
String subjectName; // 과목명
int wonJumsu; // 원점수
int midJumsu; // 중간고사 점수
int finalJumsu; // 기말고사 점수
int performJum; // 기말고사 점수
// 메소드
// 입력받는 메소드(내용없이 추상으로 작성 후 오버라이딩 사용)
abstract void inputMethod();
// 출력처리하는 메소드(내용없이 추상으로 작성 후 오버라이딩 사용)
abstract void outputMethod();
// 점수 계산하는 추상 메소드
abstract int scoreCal();
}
import java.util.Scanner;
public class Elementary extends Score{
Scanner sc = new Scanner(System.in);
@Override
void inputMethod() {
System.out.println("----------------------------");
System.out.println("\t 초등학교 학생 성적입니다 ");
System.out.println("----------------------------");
System.out.println("과목명 ");
System.out.print(">>");
subjectName = sc.next();
System.out.println("시험 중간고사 점수");
System.out.print(">>");
midJumsu = sc.nextInt();
System.out.println("시험 기말고사 점수");
System.out.print(">>");
finalJumsu = sc.nextInt();
System.out.println("수행평가 점수");
System.out.print(">>");
performJum = sc.nextInt();
}
@Override
void outputMethod() {
System.out.println("----------------------------");
System.out.println("\t 초등학교 학생 처리 결과입니다 ");
System.out.println("----------------------------");
System.out.println("과목명 : " + subjectName);
System.out.println("시험점수 : 중간고사-" + midJumsu + " 기말고사-" + finalJumsu + " 수행평가-" + performJum);
System.out.println("총 점수 : " + scoreCal());
}
@Override
int scoreCal() {
int hap = midJumsu + finalJumsu + performJum;
return hap;
}
}
import java.util.Scanner;
public class Middle extends Score{
String teacher; // 담당 교사
int attendance; // 출석점수
int volunteer; // 봉사점수
Scanner sc = new Scanner(System.in);
@Override
void inputMethod() {
System.out.println("----------------------------");
System.out.println("\t 중학교 학생 성적입니다 ");
System.out.println("----------------------------");
System.out.println("과목명");
System.out.print(">>");
subjectName = sc.next();
System.out.println("담당교사");
System.out.print(">>");
teacher = sc.next();
System.out.println("시험 중간고사 점수");
System.out.print(">>");
midJumsu = sc.nextInt();
System.out.println("시험 기말고사 점수");
System.out.print(">>");
finalJumsu = sc.nextInt();
System.out.println("수행평가 점수");
System.out.print(">>");
performJum = sc.nextInt();
System.out.println("출석 점수");
System.out.print(">>");
attendance = sc.nextInt();
System.out.println("봉사 점수");
System.out.print(">>");
volunteer = sc.nextInt();
}
@Override
void outputMethod() {
System.out.println("----------------------------");
System.out.println("\t 중학교 학생 성적처리 결과입니다 ");
System.out.println("----------------------------");
System.out.println("과목명 : " + subjectName);
System.out.println("담당교사 : " + teacher);
System.out.println("시험점수 : 중간-" + midJumsu + " 기말-"+finalJumsu
+ " 수행-" + performJum + " 출셕-"+attendance + " 봉사-" + volunteer);
System.out.println("총 점수 : " + scoreCal());
}
@Override
int scoreCal() {
int hap = midJumsu + finalJumsu + performJum + attendance + volunteer;
return hap;
}
}
import java.util.Scanner;
public class High extends Middle {
double standardDeviation; // 표준편차 점수
Scanner sc = new Scanner(System.in);
@Override
void inputMethod() {
System.out.println("----------------------------");
System.out.println("\t 고등 학생 성적입니다 ");
System.out.println("----------------------------");
System.out.println("과목명");
System.out.print(">>");
subjectName = sc.next();
System.out.println("담당교사");
System.out.print(">>");
teacher = sc.next();
System.out.println("시험 중간고사 점수");
System.out.print(">>");
midJumsu = sc.nextInt();
System.out.println("시험 기말고사 점수");
System.out.print(">>");
finalJumsu = sc.nextInt();
System.out.println("수행평가 점수");
System.out.print(">>");
performJum = sc.nextInt();
System.out.println("출석 점수");
System.out.print(">>");
attendance = sc.nextInt();
System.out.println("봉사 점수");
System.out.print(">>");
volunteer = sc.nextInt();
}
@Override
void outputMethod() {
System.out.println("----------------------------");
System.out.println("\t 고등학생 성적처리 결과입니다 ");
System.out.println("----------------------------");
System.out.println("과목명 : " + subjectName);
System.out.println("담당교사 : " + teacher);
System.out.println("시험점수 : 중간-" + midJumsu + " 기말-" + finalJumsu + " 수행-" + performJum + " 출셕-" + attendance
+ " 봉사-" + volunteer);
System.out.println("점수 : " + scoreCal());
System.out.println("표준편차 : " + std());
}
@Override
int scoreCal() {
int hap = midJumsu + finalJumsu + performJum + attendance + volunteer;
return hap;
}
// 표준편차 구하기
double std() {
// 평균
double avg = scoreCal() / 5.0;
// 제곱 구하기
// : Math.pow(값, 제곱)
double dis = Math.pow((volunteer - avg), 2);
double dis1 = Math.pow((midJumsu - avg), 2);
double dis2 = Math.pow((finalJumsu - avg), 2);
double dis3 = Math.pow((performJum - avg), 2);
double dis4 = Math.pow((attendance - avg), 2);
// 분산구하기
double var = (dis + dis1 + dis2 + dis3 + dis4) / 5;
// 표준편차 구하기
standardDeviation = Math.sqrt(var);
return standardDeviation;
}
}
public class Main {
public static void main(String[] args) {
// 초등학교 성적 입력
Elementary ele = new Elementary(); // 초등 클래스 객체생성
Score score = ele; // 다형성
score.inputMethod();
// 중학교 성적 입력
Middle mi = new Middle();
score = mi;
score.inputMethod();
// 고등학교 성적 입력
High high = new High();
score = high;
score.inputMethod();
// 출력
ele.outputMethod();
mi.outputMethod();
high.outputMethod();
}
}