Student - 학생 정보 클래스(이름, 점수, 학점)
Grading - 학점계산 인터페이스(추상 메소드)
Undergraduate - 학부생 학점계산 클래스(Grading의 추상 메소드 구현)
Graduate - 대학원생 학점계산 클래스(Grading의 추상 메소드 구현)
StudentDriver - 메뉴 및 입출력 클래스
StudentDriverExample - 메인 클래스
20명이 제한되어 있어서 ArrayList가 아닌 Student 클래스 배열로 만들었습니다
이름, 점수 입력, 출력은 차이가 없어서 굳이 인터페이스를 이용 안 해도 될 것 같아서 직접 대입을 했습니다
출력 부분에 점수 출력은 필요 없을 것 같아서 이름과 학점 출력만 했습니다
public class Student {
String name;
int score;
String credit;
public Student() {
}
}
public interface Grading {
public String setCredit(int score);
}
//대학원생
public class Graduate extends Student implements Grading{
String credit;
@Override
public String setCredit(int score) {
if(score >= 80) {
credit = "통과";
}
else {
credit = "낙제";
}
return credit;
}
}
//학부생
public class Undergraduate extends Student implements Grading{
String credit;
@Override
public String setCredit(int score) {
if(score >= 70){
credit = "통과";
}
else {
credit = "낙제";
}
return credit;
}
}
import java.util.*;
public class StudentDriver {
Scanner scan = new Scanner(System.in);
int menu;
int count = 0;
Student[] student = new Student[20];
Graduate graduate = new Graduate(); //대학원생
Undergraduate undergraduate = new Undergraduate(); //학부생
void run() {
for(;;) {
student();
//학부생
if(menu == 1) {
input(undergraduate);
}
//대학원생
else if(menu == 2) {
input(graduate);
}
else if(menu == 3) {
output();
}
else if(menu == 4) {
break;
}
}
}
//메뉴
void student() {
System.out.println();
System.out.println("1. 학부생");
System.out.println("2. 대학원생");
System.out.println("3. 출력");
System.out.println("3. 종료");
menu = scan.nextInt();
}
//입력
void input(Grading grading) {
if(count >= 20) {
System.out.println("20명 모두 입력하였습니다.");
}
else if(count < 20) {
student[count] = new Student();
System.out.print("이름 : ");
String name = scan.next();
student[count].name = name;
System.out.print("점수 : ");
int score = scan.nextInt();
student[count].score = score;
//Grading의 추상 메소드를 이용한 학점계산
student[count].credit = grading.setCredit(score);
count++;
}
}
void output() {
if(count == 0) {
System.out.println("입력된 정보가 없습니다.");
}
else if(count > 0) {
for(int i=0; i<count; i++) {
System.out.println("이름 : " + student[i].name + ", 학점 : " + student[i].credit);
}
}
}
}
public class StudentDriverExample {
public static void main(String[] args) {
new StudentDriver().run();
}
}
Thread 클래스의 주요 메서드 (0) | 2021.01.26 |
---|---|
JAVA swing TextArea 사이즈 조절 (0) | 2021.01.25 |
인터페이스2(java) (0) | 2021.01.15 |
인터페이스(java) (0) | 2021.01.15 |
도서관리 프로그램(java) (0) | 2021.01.14 |