인터페이스와 상속을 사용한 상품출력와 개인정보 출력 프로그램
조건
[문제] 주어진 클래스와 인터페이스를 정의한 다음 성적을 입력받아 처리한 다음 학번에 exit 를 입력 받으면 입력을 끝낸다.
그리고 개인정보를 입력받는다.
개인 정보 중 hakbun에 exit 를 입력받으면 입력을 끝낸다.
입력이 끝나면 성적을 먼저 출력하고 개인정보를 출력한다.
처리 조건
성적 클래스는 이전에 작성했던 코드를 바탕으로 한다.
학점 출력기(성적표) - 클래스와 메인 메소드 배열 (4)
- 성적과 개인정보는 최대 입력 가능한 데이터는 100개로 한다.
- 성적과 대인정보는 출력할 때
다형성
을 이용하도록 코드를 작성한다.
구성도
입력 형식
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
###성적 입력 ###
학번 입력 ⇒
이름 입력 ⇒
국어 입력 ⇒
영어 입력 ⇒
수학 입력 ⇒
학번입력 ⇒ exit
###개인정보 입력 ###
학변 입력 ⇒
이름 입력 ⇒
전화번호 입력 ⇒
학번 입력 ⇒ exit
출력 형식
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
### 성적 입력 ###
학번 입력 =>
a00
이름 입력 =>
첫번째
국어 입력 =>
80
영어 입력 =>
90
수학 입력 =>
89
학번 입력 =>
a01
이름 입력 =>
두번째
국어 입력 =>
90
영어 입력 =>
80
수학 입력 =>
90
학번 입력 =>
a02
이름 입력 =>
세번째
국어 입력 =>
70
영어 입력 =>
77
수학 입력 =>
90
학번 입력 =>
exit
### 개인정보 입력 ###
학번 입력 =>
a00
이름 입력 =>
첫번째
전화번호 입력 =>
010-1234-5678
주소 입력 =>
서울
학번 입력 =>
a01
이름 입력 =>
두번째
전화번호 입력 =>
111-2222-3333
주소 입력 =>
경기
학번 입력 =>
a02
이름 입력 =>
세번째
전화번호 입력 =>
777-7777-7777
주소 입력 =>
인천
학번 입력 =>
exit
=======================================================
학번 이름 국어 영어 수학 총점 평균 등급
=======================================================
a00 첫번째 80 90 89 259 86.00 우
a01 두번째 90 80 90 260 86.00 우
a02 세번째 70 77 90 237 79.00 미
=======================================================
*** 개인정보 ***
======================================
학번 이름 전화번호 주소
======================================
a00 첫번째 010-1234-5678 서울
a01 두번째 111-2222-3333 경기
a02 세번째 777-7777-7777 인천
======================================
코드
Person.java
1 2 3 4 5 6 7
public class Person { String hakbun; String irum; Person() { } }
Personable.java
1 2 3 4
public interface Personable { boolean input(); void output(); }
Sungjuk.java
input(), output() 은 상속 방아야 하기 때문에 반드시 public 여야 한다.
동일한 패키지 내에서만 하는 process() 는 default이다.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
import java.util.Scanner; public class Sungjuk extends Person implements Personable { int kor; int eng; int math; int tot = 0; double avg = 0; String grade; Sungjuk() { //super(); } @Override public boolean input(){ //앞에 public abstruct 반드시 붙음 Scanner scan = new Scanner(System.in); System.out.println("학번 입력 => "); this.hakbun = scan.next(); if(hakbun.toLowerCase().equals("exit")) //toLowerCase() : 소문자로 변환 return true; System.out.println("이름 입력 => "); this.irum = scan.next(); System.out.println("국어 입력 => "); this.kor = scan.nextInt(); System.out.println("영어 입력 => "); this.eng = scan.nextInt(); System.out.println("수학 입력 => "); this.math = scan.nextInt(); return false; } @Override public void output() { System.out.printf("%4s %3s %3d %3d %3d %3d %5.2f %2s\n", hakbun, irum, kor, eng, math, tot, avg, grade); } void process() { tot += kor + eng + math; avg = tot / 3; switch ((int)avg / 10) { case 10: case 9: grade = "수"; break; case 8: grade = "우"; break; case 7: grade = "미"; break; case 6: grade = "양"; break; default: grade = "가"; break; } } }
PersonInfo.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
import java.util.Scanner; public class PersonInfo extends Person implements Personable{ String phone; String addr; PersonInfo() { //super(); } @Override public boolean input(){ Scanner scan = new Scanner(System.in); System.out.println("학번 입력 => "); this.hakbun = scan.next(); if(hakbun.toLowerCase().equals("exit")) return true; System.out.println("이름 입력 => "); this.irum = scan.next(); System.out.println("전화번호 입력 => "); this.phone = scan.next(); System.out.println("주소 입력 => "); this.addr = scan.next(); return false; } @Override public void output() { System.out.printf("%4s %3s %13s %3s \n", hakbun, irum, phone, addr); } }
- 실행 클래스
ExampleSungjuk.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
public class ExampleSungjuk { final static int MAX = 100; public static void main(String[] args) { Sungjuk obj1[] = new Sungjuk[MAX]; PersonInfo obj2[] = new PersonInfo[MAX]; int i, obj1_cnt=0, obj2_cnt=0; System.out.println("### 성적 입력 ###"); for (i=0; i<MAX; i++) { obj1[i] = new Sungjuk(); if (obj1[i].input()) break; obj1[i].process(); obj1_cnt++; System.out.println(); } System.out.println("\n### 개인정보 입력 ###"); for (i=0; i<MAX; i++) { obj2[i] = new PersonInfo(); if (obj2[i].input()) break; obj2_cnt++; System.out.println(); } System.out.println(); System.out.println("=========================================="); System.out.println("학번 이름 국어 영어 수학 총점 평균 등급"); System.out.println("=========================================="); printData(obj1, obj1_cnt); System.out.println("=========================================="); System.out.println("\n *** 개인정보 ***"); System.out.println("===================================="); System.out.println("학번 이름 전화번호 주소"); System.out.println("===================================="); printData(obj2, obj2_cnt); System.out.println("===================================="); } static void printData(Personable obj[], int cnt) { for (int i=0; i<cnt; i++) { obj[i].output(); // output()메서드에 대한 다형성 구현 } } }
🌞 정보 : 공부 기록용 블로그입니다. 오타나 내용 오류가 있을 경우 알려주시면 감사하겠습니다.
댓글남기기