본문 바로가기

Java/java 기초

학생 성적 관리 프로그램 MVC 패턴으로 나누기

DTO (모델) 선언

toString 및 기본 생성자, getter setter, toString이 포함되어 있다.

package dto;

public class GradeDto {
	int number;
	String name;
	int age;
	int kor;
	int eng;
	int math;

	public GradeDto() {

	}

	public GradeDto(int number, int age, String name, int kor, int eng, int math) {
		this.number = number;
		this.name = name;
		this.age = age;
		this.kor = kor;
		this.eng = eng;
		this.math = math;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getNumber() {
		return number;
	}

	public void setNumber(int number) {
		this.number = number;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getMath() {
		return math;
	}

	public void setMath(int math) {
		this.math = math;
	}

	public int getKor() {
		return kor;
	}

	public void setKor(int kor) {
		this.kor = kor;
	}

	public int getEng() {
		return eng;
	}

	public void setEng(int eng) {
		this.eng = eng;
	}

	@Override
	public String toString() {
		return "GradeDto [number=" + number + ", name=" + name + ", age=" + age + ", kor=" + kor + ", math=" + math
				+ ", eng=" + eng + "]";
	}

}

Controller(DAO)

 

DTO의 속성들을 조절하는 메소드가 포함되어있다.

package dao;

import java.util.ArrayList;
import java.util.Scanner;

import dto.GradeDto;

public class GradeDao {
	ArrayList<GradeDto> list = new ArrayList<GradeDto>();
	Scanner scanner = new Scanner(System.in);

	public GradeDao() {
		GradeDto gradeDto1 = new GradeDto(0, 24, "온유", 80, 70, 60);
		GradeDto gradeDto2 = new GradeDto(1, 26, "진형", 90, 50, 60);
		GradeDto gradeDto3 = new GradeDto(2, 27, "규성", 80, 80, 60);
		list.add(gradeDto1);
		list.add(gradeDto2);
		list.add(gradeDto3);
	}

	public void insert() {
//		System.out.println("번호");
		int number = list.get(list.size() - 1).getNumber() + 1;

		System.out.println("나이");
		int age = scanner.nextInt();

		System.out.println("이름");
		String name = scanner.next();

		System.out.println("국어");
		int kor = scanner.nextInt();

		System.out.println("영어");
		int eng = scanner.nextInt();

		System.out.println("수학");
		int math = scanner.nextInt();

		GradeDto dto = new GradeDto(number, age, name, kor, eng, math);
		list.add(dto);
	}

	public int findIndex(String name) {
		int findIndex = -1;
		for (int i = 0; i < list.size(); i++) {
			if (name.equals(list.get(i).getName())) {
				findIndex = i;
				break;
			}
		}
		return findIndex;
	}

	public void delete() {
		System.out.println("삭제할 대상의 이름을 입력해주세요");
		String name = scanner.next();
		int findIndex = findIndex(name);
		if (findIndex == -1) {
			System.out.println("삭제할 대상을 찾을 수 없습니다.");
		} else {
			list.remove(findIndex);
			System.out.println("삭제가 완료 되었습니다.");
		}
	}

	public void select() {
		System.out.println("검색할 대상의 이름을 입력해주세요");
		String name = scanner.next();
		int findIndex = findIndex(name);
		if (findIndex == -1) {
			System.out.println("검색할 대상을 찾을 수 없습니다.");
		} else {
			System.out.println("대상의 정보 = " + list.get(findIndex).toString());
		}
	}

	public void update() {
		System.out.println("업데이트할 대상의 이름을 입력해주세요");
		String name = scanner.next();
		int findIndex = findIndex(name);
		if (findIndex == -1) {
			System.out.println("업데이트 할 대상을 찾을 수 없습니다.");
		} else {
			System.out.print("변경할 국어 점수: ");
			list.get(findIndex).setKor(scanner.nextInt());
			System.out.print("변경할 영어 점수: ");
			list.get(findIndex).setEng(scanner.nextInt());
			System.out.print("변경할 수학 점수: ");
			list.get(findIndex).setMath(scanner.nextInt());
		}
	}

	public void selectOneScore() {
		System.out.println("학생의 총점및 평균 조회하기");
		String name = scanner.next();
		int findIndex = findIndex(name);
		if (findIndex == -1) {
			System.out.println("조회할 대상을 찾을 수 없습니다.");
		} else {
			int korScore = list.get(findIndex).getKor();
			int engScore = list.get(findIndex).getEng();
			int mathScore = list.get(findIndex).getMath();
			int sub = korScore + engScore + mathScore;
			double average = (double) sub / 3;

			System.out.println(list.get(findIndex).getName() + " 님의 총점 : " + sub);
			System.out.println(list.get(findIndex).getName() + " 님의 평균 : " + average);
		}
	}

	public int allScore() {
		int sub = 0;
		for (int i = 0; i < list.size(); i++) {
			int korScore = list.get(i).getKor();
			int engScore = list.get(i).getEng();
			int mathScore = list.get(i).getMath();
			sub = sub + korScore + engScore + mathScore;
		}

		return sub;
	}

	public void allAverage() {
		double average = (double) (allScore() / (3 * list.size()));
		System.out.println("학생 총점의 평균은 " + average + " 입니다.");
	}
	
	public void sort() {
		int sub[] = new int[list.size()];
		GradeDto temp;
		for (int i = 0; i < list.size(); i++) {
			int korScore = list.get(i).getKor();
			int engScore = list.get(i).getEng();
			int mathScore = list.get(i).getMath();
			sub[i] = korScore + engScore + mathScore;
		}
		for (int i = 0; i < sub.length - 1; i++) {
			for (int j = i + 1; j < sub.length; j++) {
				if(sub[i] < sub[j]) {
					temp = list.get(i);
					list.set(i, list.get(j));
					list.set(j, temp);
				}
			}
		}
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i).toString());
		}
	}

}

 

View (mainClass)

콘솔상태에서 화면에 나타내주는 역활

package main;

import java.util.Scanner;

import dao.GradeDao;

public class mainClass {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		GradeDao gradeDao = new GradeDao();
		while (true) {
			System.out.println("1. 학생 정보 추가");
			System.out.println("2. 학생 정보 삭제");
			System.out.println("3. 학생정보 검색");
			System.out.println("4. 학생정보 수정");
			System.out.println("5. 학생의 총점및 평균 조회 (1명)");
			System.out.println("6. 학생성적 총점");
			System.out.println("7. 학생성적 평균");
			System.out.println("8. 학생성적순 출력 (총점에 대한)");
			int choice = scanner.nextInt();
			if (choice == 1) {
				gradeDao.insert();
			} else if (choice == 2) {
				gradeDao.delete();
			} else if (choice == 3) {
				gradeDao.select();
			} else if (choice == 4) {
				gradeDao.update();
			} else if (choice == 5) {
				gradeDao.selectOneScore();
			} else if (choice == 6) {
				System.out.println("학생의 총점은 " + gradeDao.allScore() + " 입니다");
			} else if (choice == 7) {
				gradeDao.allAverage();
			} else if (choice == 8) {
				gradeDao.sort();
			}
		}
	}
}

'Java > java 기초' 카테고리의 다른 글

ArrayList  (0) 2019.11.29
Generic(제네릭)  (0) 2019.11.29
학생관리 프로그램 MVC 패턴으로 나누기  (0) 2019.11.28
final  (0) 2019.11.28
객체 오버라이딩 및 상속을 통한 구현  (0) 2019.11.28