JAVA :: Test121_인터페이스(성적 처리 프로그램 구현)

2023. 9. 15. 23:58· 📚 Study/Java

○ 실습

인터페이스를 활용하여 성적 처리 프로그램을 구현한다.

 

실행 예)

인원 수 입력(1~10) : 11

인원 수 입력(1~10) : 0

인원 수 입력(1~10) : 2

 

1번째 학생의 학번 이름 입력(공백 구분) : 2309123 홍길동

국어 영어 수학 점수 입력      (공백 구분) : 90 100 85

2번째 학생의 학번 이름 입력(공백 구분) : 2309125 김철수

국어 영어 수학 점수 입력      (공백 구분) : 85 70 60

 

2309123 홍길동 90 100 85    (총점)    (평균)

                           수   수  우

2309125 김철수 85  70 60    (총점)    (평균)

                           수  수  우

계속하려면 아무 키나 누르세요...

 

// 속성만 존재하는 클래스 → 자료형 활용
import java.util.Scanner;
class Record
{
String hak, name; //-- 학번, 이름
int kor, eng, mat; //-- 국어, 영어, 수학 점수
int tot; //-- 총점
double avg; //-- 평균
}
// 인터페이스
interface Sungjuck
{
public void set(); //-- 인원 세팅
public void input(); //-- 데이터 입력
public void print(); //-- 결과 출력
}
// 문제 해결 과정에서 설계해야 할 클래스 → Sungjuck 인터페이스를구현하는 클래스
class SungjukImpl implements Sungjuck
{
public int inwon;
private Record[] rec;
// set() 인원 세팅 메소드 오버라이딩
@Override
public void set()
{
Scanner sc = new Scanner(System.in);
do
{
System.out.print("인원 수 입력(1~10) : ");
inwon = sc.nextInt();
}
while (inwon<1 || inwon>10);
}
// input() 데이터 입력 메소드 오버라이딩
@Override
public void input()
{
rec = new Record[inwon];
Scanner sc = new Scanner(System.in);
for (int i=0 ;i<inwon ;i++ )
{
rec[i] = new Record();
System.out.printf("%d번째 학생의 학번 이름 입력(공백 구분) : ", i+1);
rec[i].hak = sc.next();
rec[i].name = sc.next();
System.out.print("국어 영어 수학 점수 입력(공백 구분) : ");
rec[i].kor = sc.nextInt();
rec[i].eng = sc.nextInt();
rec[i].mat = sc.nextInt();
rec[i].tot = rec[i].kor + rec[i].eng + rec[i].mat;
rec[i].avg = rec[i].tot / 3.0;
}
}
// 내부적으로 등급에 대한 판정을 수행할 메소드
private String panjung(int score)
{
String result;
switch (score/10)
{
case 10: result = "수"; break;
case 9 : result = "수"; break;
case 8 : result = "우"; break;
case 7 : result = "미"; break;
case 6 : result = "양"; break;
default : result = "가";
}
return result;
}
// print() 메소드 결과출력 오버라이딩
@Override
public void print()
{
for (int i=0; i<rec.length ;i++ )
{
System.out.printf("%s %s %d %d %d %d %.2f\n", rec[i].hak, rec[i].name, rec[i].kor, rec[i].eng, rec[i].mat, rec[i].tot, rec[i].avg);
System.out.printf("%10s %s %s\n", panjung(rec[i].kor), panjung(rec[i].eng), panjung(rec[i].mat));
}
}
}
// main() 메소드를 포함하는 외부의 다른 클래스
public class Test121
{
public static void main(String[] args)
{
Sungjuck ob = new SungjukImpl();
// 문제 해결 과정에서 작성해야 할 ob 구성 및 객체 생성
ob.set();
ob.input();
ob.print();
}
}
저작자표시 (새창열림)
'📚 Study/Java' 카테고리의 다른 글
  • JAVA :: Test125_중첩 클래스(Annoymous 클래스)
  • JAVA :: Test122~124_중첩 클래스
  • JAVA :: Test117~Test120_인터페이스(Interface)
  • JAVA :: Test116_상속 관계에 있는 클래스들 간의 캐스팅(업 캐스팅, 다운 캐스팅)
bono-hye
bono-hye
bono-hye
공부를 합시다👩🏻‍💻
bono-hye
전체
오늘
어제
  • 분류 전체보기 (506)
    • 📚 Study (225)
      • Java (148)
      • Oracle (28)
      • JDBC (4)
      • Javascript (9)
      • JSP & Servlet (19)
      • JQuery (6)
      • Spring (9)
      • Springboot (0)
      • 개인 공부 (2)
    • ✏️ 문제풀이 (280)
      • 백준 (181)
      • 프로그래머스 (99)

블로그 메뉴

  • 홈
  • 글쓰기
  • 관리
hELLO · Designed By 정상우.v4.2.1
bono-hye
JAVA :: Test121_인터페이스(성적 처리 프로그램 구현)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.