Web Developer/JAVA II

2. Constructor (클래스설계) 연습문제 - OMR 카드

sayitditto 2023. 1. 11. 21:58

II. 연습문제

4. OMR

1. OmrCard 클래스
*문제는 객관식으로 문제 개수는 총 5개이다.(답은 1~5중에 하나만 선택 가능)
*학번과 이름을 입력 받는다.
*순서대로 학생의 답 5개를 입력받는 메소드를 만든다.

2. OmrCardReader 클래스
*객체 생성 시 문제의 정답 5개를 입력받아 정답 배열에 저장해둔다.
*OmrCard 하나를 입력받아서 이름, 학번, 점수(100점 만점)를 출력한다.

3. OmrCardTest 클래스
- OMR 카드와 카드 리더기 객체를 만드는 클래스
- OmrCard 객체에는 정답을 입력한다.
- OmrCardReader 객체에는 위에서 만든 OmrCard를 넣어 결과를 받는다.

 

1) OmrCard

public class OmrCard { // 작성 당하고 끝나는 거

// 필드: 이름, 학번, 문제 마킹 
	private String name;
	private int studentId;
	private int [] answer = new int [5]; // 학생이 입력한 정답 
		
// 메소드
// 생성자는 만들지 않음
// setter 
	public void setName(String name) {
		this.name = name;
	}
	public void setStudentId (int studentId) {
		this.studentId = studentId;
	}	
	public void setAnswer(int a1, int a2, int a3, int a4, int a5) {
		this.answer[0] = a1;
		this.answer[1] = a2;
		this.answer[2] = a3;
		this.answer[3] = a4;
		this.answer[4] = a5;
	}
	
// getters (내가 꺼내서 주는거임)
	public String getName() {
		return name;
	}
	public int getStudentId() {
		return studentId;
	}
	public int[] getAnswer() {
		return answer;
	}
}

2) OmrCardReader

public class OmrCardReader {
// 필드
	private int[] correctAnswer = new int[5]; // 답안지
	
// 메소드 	
// 생성자 :객체가 만들어진다 = 답을 채운다 -> 다른 과목 채점을 위해 (확장성/ 재활용성을 위해) 
    public OmrCardReader(int ca1, int ca2, int ca3, int ca4, int ca5) {
		this.correctAnswer[0] = ca1;
		this.correctAnswer[1] = ca2;
		this.correctAnswer[2] = ca3;
		this.correctAnswer[3] = ca4;
		this.correctAnswer[4] = ca5;
	}
	
//채점하는 메소드
	public void printScore(OmrCard card) {
// 이름, 학번, 문제 답
		System.out.println(card.getName());
		System.out.println(card.getStudentId());
		
		int score = 0;
		for (int i = 0; i < this.correctAnswer.length; i++) {
			if (this.correctAnswer[i] == card.getAnswer()[i]) {
				score += 100 / this.correctAnswer.length;
			}
		}
		System.out.println("점수 : " + score);
	}
}

3) OmrCardTest

public class OmrCardTest {
	public static void main(String[] args) {
// 나의 의식 (test - main)
	
// 1. 비어있는 omr 카드 종이를 받는다.
	OmrCard omrCard = new OmrCard();
	
// 2. 카드에 이름, 학번, 문제 마킹을 한다.
	omrCard.setName("sayitditto");
	omrCard.setStudentId(29326352);
	omrCard.setAnswer(3, 4, 2, 1, 3);
		
// 3. Reader 리더기를 가져와 정답을 확인한다.
	OmrCardReader reader = new OmrCardReader(1, 2, 3, 1, 3); // 정답이 들어가있음 
	reader.printScore(omrCard);
	}
}