AR삽질러

Java - Collection Framework(List성적관리프로그램) 본문

JAVA

Java - Collection Framework(List성적관리프로그램)

아랑팡팡 2023. 4. 13. 11:55
728x90

성적관리프로그램

1.입력  2.출력 3.수정 4.삭제 5.종료
1번 입력시 이름과 국어점수 영점수를 입력받아 저장한다.
2번 출력시 입력된 모든 학생의 성적합계와 등수를 알려준다.

3번 수정시 이름을 입력받아 해당하는 학생의 수학,영어점수를 수정한다.
4번 삭제시 이름을 입력받아 해당하는 학생이 있으면 삭제한다.
5번 종료시 프로그램을 종료시킨다.

 

SungJuk

package grade;

public class SungJuk {
	private String name;
	private int kor;
	private int eng;
	private int tot;
	private int rank;
	
	public SungJuk(String name, int kor, int eng) {
		this.name = name;
		this.kor = kor;
		this.eng = eng;
		tot = kor + eng;
		rank = 1;
	}

	public String getName() {
		return name;
	}

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

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

	public int getTot() {
		return tot;
	}

	public void setTot(int tot) {
		this.tot = tot;
	}

	public void clearRank() {
		rank = 1;
	}
	
	public void plusRank() {
		rank++;
	}
	
	public void disp() {
		System.out.println(name + "학생의 촘점은 : " + tot + "점이고 순위는  " + rank + "등 입니다.");
	}
	
	
}

- name : 학생이름저장 문자열변수, kor : 국어점수 저장 정수변수

- eng : 영어점수저장 정수변수, tot : 국어 영어 점수를 저장 정수변수, rank : 학생의 순위를 저장 정수변수

생성자 : SungJuk(String name, int kor, int eng)는 매개변수로 name, kor, eng를 받아 객체를 생성하고 -> tot 국어,영어성적을 합산한 값을 초기화, rank는 1

 

- clearRank() Method : 순위를 초기화, plusRank() Method : 순위를 1증가시키는 메서드- disp() Method : 학생의 이름, 총점, 순위를 출력하는 메서드

 

SungJukMain

package grade;

import java.util.Scanner;

public class SungJukMain {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		SungJukPro pro = new SungJukProImpl();
		
		while(true) {
			System.out.print("1.입력 | 2.출력 | 3.수정 | 4.삭제 | 5.종료 : ");
			int select = scan.nextInt();
			switch (select) {
			case 1:
				pro.input();
				break;
			case 2:
				pro.view();
				break;
			case 3:
				pro.edit();
				break;
			case 4:
				pro.delete();
				break;
			case 5:
				pro.exit();
				break;
			default:
				System.out.println("잘못입력하셨습니다.");
			}
		}
	}
}

 

SungJukPro

package grade;

public interface SungJukPro {
	public void input();
	public void view();
	public void edit();
	public void delete();
	public void exit();
}

- 학생의 성적정보 : 입력, 출력, 수정, 삭제, 종료 기능 Interface

 

SungJukProImpl

package grade;

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

public class SungJukProImpl implements SungJukPro{

	private List<SungJuk> list;
	private Scanner scan;
	
	public SungJukProImpl() {
		list = new ArrayList<>();
		scan = new Scanner(System.in);
	}
	
	@Override
	public void input() {
		System.out.print("학생이름을 입력해주세요 : ");
		String name = scan.next();
		System.out.print("국어점수 입력 : ");
		int kor = scan.nextInt();
		System.out.print("영어점수 입력 : ");
		int eng = scan.nextInt();
		
		SungJuk sungjuk = new SungJuk(name, kor, eng);
		list.add(sungjuk);
	}

	protected void rank() {
		for(SungJuk i : list) {
			i.clearRank();
			for(SungJuk j : list) {
				if(i.getTot() < j.getTot()) {
					i.plusRank();
				}
			}
		}
	}
	
	@Override
	public void view() {
		rank();
		for(SungJuk sj : list) {
			sj.disp();
		}
	}

	@Override
	public void edit() {
	    System.out.print("수정할 학생임을 입력해 주세요 : ");
	    String name = scan.next();
	    SungJuk sj = getSungJuk(name);
	    if(sj == null) {
	        System.out.println("해당 학생은 존재하지 않습니다!");
	    } else {
	        System.out.println("입력하신 " + name + "학생의 정보를 수학성적 : " + sj.getKor() + "을 수정해주세요 : ");
	        sj.setKor(scan.nextInt());
	        System.out.println("입력하신 " + name + "학생의 정보를 영어성적 : " + sj.getEng() + "을 수정해주세요 : ");
	        sj.setEng(scan.nextInt());
	        sj.setTot(sj.getKor() + sj.getEng()); // tot 값 업데이트
	    }
	}
	protected SungJuk getSungJuk(String name) {
		for(SungJuk sj : list) {
			if (sj.getName().equals(name)) {
				return sj;
			}
		}
		return null;
	}
	
	@Override
	public void delete() {
		System.out.print("삭제할 학생의 이름을 입력해주세요 : ");
		String name = scan.next();
		SungJuk sj = getSungJuk(name);
		if(sj == null) {
			System.out.println("입력하신 " + sj + "는 저희 학생이 아닙니다.");
		}else {
			list.remove(sj);
			System.out.println(name + "을 삭제합니다.");
		}
	}

	@Override
	public void exit() {
		System.out.println("성적관리 프로그램을 종료합니다.");
		System.exit(0);
	}

}

 

 

 

728x90
반응형
LIST