//● 실습문제
//성적 처리 프로그램을 구현한다,
//단, 인터페이스를 활용할 수 있도록 한다,
//실행 예)
//인원 수 입력(1~10) :2
// 1번째 학생의 학번 이름 입력(공백 구분) : 20152345 박민지
// 국어 영어 수학 점수 입력 (공백 구분) : 90 100 85
// 2번째 학생의 학번 이름 입력(공백 구분) : 20152344 김서현
// 국어 영어 수학 점수 입력 (공백 구분) : 85 70 65
// 20152345 박민지 90 100 85 275 91
// 수 수 우
// 20152344 김서현 85 70 65 220 73
// 우 미 양
// 계속하려면 아무 키나...
// 90 ~ 100 : 수
// 80 ~ 89 : 우
// 70 ~ 79 : 미
// 60 ~ 69 : 양
// 나머지 : 가
// 속성만 존재하는 클래스 → 자료형 활용
class Record
{
String hak, name; //학번, 이름
int kor, eng, mat; // 국어 영어 수학 점수
int tot, avg; // 총점, 평균(편의 상 정수 처리)
}
//인터페이스
interface Sungjuk
{
public void set();
public void input();
public void print();
}
// 문제 해결 과정에서 설계해야 할 클래스
class SungjukImpl implemets Sungjuk
{
}
public class Test116
{
public static void main(String[] args)
{
//check!
//Sungjuk 은 인터페이스
Sungjuk ob;
// 문제 해결 과정에서 작성해야 할 ob 구성
ob.set();
ob.input();
ob.print();
}
}
class Record
{
String hak, name; //-- 학번, 이름
int kor, eng, mat; //-- 국어, 영어, 수학 점수
int tot, avg; //-- 총점, 평균(편의상 정수 처리)
}
interface Sungjuk
{
public void set();
public void input();
public void print();
}
class SungjukImpl implements Sungjuk
{
int num, i, j;
int[][] temp;
char[][] rank;
Record[] rc;
@Override
public void set()
{
Scanner sc = new Scanner(System.in);
do
{
System.out.print("인원 수 입력(1~10) : ");
num = sc.nextInt();
}
while (num<1 || num>10);
rc = new Record[num];
temp = new int[num][3];
rank = new char[num][3];
}
@Override
public void input()
{
Scanner sc = new Scanner(System.in);
for (i=0; i<num; i++)
{
rc[i] = new Record();
System.out.printf("%d번째 학생의 학번 이름 입력(공백 구분) : ",(i+1));
rc[i].hak = sc.next();
rc[i].name = sc.next();
System.out.printf("국어 영어 수학 점수 입력 (공백 구분) : ");
temp[i][0] = rc[i].kor = sc.nextInt();
temp[i][1] = rc[i].eng = sc.nextInt();
temp[i][2] = rc[i].mat = sc.nextInt();
rc[i].tot = rc[i].kor + rc[i].eng + rc[i].mat;
rc[i].avg = rc[i].tot/3;
}
System.out.println();
for (i=0; i<num; i++)
{
for(j=0; j<3; j++)
{
switch (temp[i][j] - temp[i][j]%10)
{
case 100: case 90: rank[i][j]='수'; break;
case 80: rank[i][j]='우'; break;
case 70: rank[i][j]='미'; break;
case 60: rank[i][j]='양'; break;
default: rank[i][j]='가'; break;
}
}
}
}
// Sungjuk 인터페이스의 모든 메소드를 Override하지 않으면 SungjukImpl 클래스가 추상클래스가 되기때문에 Override해줘야 한다.
//-- Sungjuk 인터페이스의 print() 메소드를 Override한 SungjukImpl 클래스의 print() 메소드
@Override
public void print()
{
System.out.println();
//-- 입력된 질문들과 분리시키기 위해 개행을 해준다.
for (i=0; i<num; i++) //-- 단일포문은 입력된 인원수(num)만큼 반복하며 첫번째 학생(re[0], rank[0])부터 시작된다.
{
System.out.printf("%s %s %3d %3d %3d\t%3d %3d\n", rc[i].hak, rc[i].name, rc[i].kor, rc[i].eng, rc[i].mat, rc[i].tot, rc[i].avg);
//-- 학번, 이름, 국어점수, 영어점수, 수학점수, 총합, 평균을 출력한다.
System.out.printf("\t\t%3c%3c%3c\n", rank[i][0], rank[i][1], rank[i][2]);
//-- rank[][] 배열은 해당 학생의 국어등급(rank[i][0]), 영어등급(rank[i][1]), 수학등급(rank[i][2])를 담고 있다.
// 따라서 해당 rc[i] 학생의 등급이 출력된다.
}
}//end print()
}
public class Test116
{
public static void main(String[] args) throws IOException
{
Sungjuk ob;
// 문제 해결 과정에서 작성해야 할 ob 구성
ob = new SungjukImpl();
ob.set();
ob.input();
ob.print();
}
}
'📚Study Note > JAVA' 카테고리의 다른 글
[ JAVA ] 클래스 고급 - 중첩 클래스 ② (0) | 2021.03.29 |
---|---|
[ JAVA ] 클래스 고급 - 중첩 클래스 (0) | 2021.03.29 |
[ JAVA ] 클래스 고급 - 인터페이스(Interface) ④ (0) | 2021.03.29 |
[ JAVA ] 클래스 고급 - 인터페이스(Interface) ③ (0) | 2021.03.29 |
[ JAVA ] 클래스 고급 - 인터페이스(Interface) ② (0) | 2021.03.29 |