상세 컨텐츠

본문 제목

교과목 성적처리 프로그램(java)

프로그래밍/JAVA

by RosetteNebula 2021. 1. 15. 22:44

본문

 

- 인터페이스, 추상메소드를 활용한 실습 -

 

Student - 학생 정보 클래스(이름, 점수, 학점)

Grading - 학점계산 인터페이스(추상 메소드)

Undergraduate - 학부생 학점계산 클래스(Grading의 추상 메소드 구현)

Graduate - 대학원생 학점계산 클래스(Grading의 추상 메소드 구현)

StudentDriver - 메뉴 및 입출력 클래스

StudentDriverExample - 메인 클래스


20명이 제한되어 있어서 ArrayList가 아닌 Student 클래스 배열로 만들었습니다

이름, 점수 입력, 출력은 차이가 없어서 굳이 인터페이스를 이용 안 해도 될 것 같아서 직접 대입을 했습니다

출력 부분에 점수 출력은 필요 없을 것 같아서 이름과 학점 출력만 했습니다

 

 

class Student - 학생 데이터

public class Student {
	String name;
	int score;
	String credit;
	
	public Student() {
	}
}

 

Interface Grading - 학점계산 인터페이스(추상 메소드)

public interface Grading {
	public String setCredit(int score);
}

 

class Graduate - 대학원생 학점계산(80점 이상 통과)

//대학원생
public class Graduate extends Student implements Grading{
	String credit;
	
	@Override
	public String setCredit(int score) {
		if(score >= 80) {
			credit = "통과";
		}
		else {
			credit = "낙제";
		}
		return credit;
	}
}

 

class Undergraduate - 학부생 학점계산(70점 이상 통과)

//학부생
public class Undergraduate extends Student implements Grading{
	String credit;
	
	@Override
	public String setCredit(int score) {
		if(score >= 70){
			credit = "통과";
		}
		else {
			credit = "낙제";
		}
		return credit;
	}
}

 

class StudentDriver - 실제 구동 클래스

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);
			}
		}
	}
}

 

class StudentDriverExample - 메인 클래스

public class StudentDriverExample {

	public static void main(String[] args) {
		new StudentDriver().run();
	}
}

'프로그래밍 > JAVA' 카테고리의 다른 글

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

관련글 더보기