본문 바로가기
자바과정/Java

Java 실습(ArrayList & HashMap) - 10일차

by Parkej 2021. 2. 18.

공통된 클래스

- People

 

package data;

public class People {
	private String name;
	private int kor;
	private int eng;
	private int math;
	private int total;
	private double avg;
	
	public People() {
		name = null;
		kor = 0;
		eng = 0;
		math = 0;
		total = 0;
		avg = 0f;
	}

	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 getMath() {
		return math;
	}

	public void setMath(int math) {
		this.math = math;
	}
	
	public int getTotal() {
		return total = kor+eng+math;
	}
	
	public double getAvg() {
		return avg = (total/3);
	}
}

 

- 인터페이스 

 

package main;

public interface SubMa {
	public void pCreate(); // 입력
	public void pPrint(); // 전체출력
	public void pSelect(); // 개인출력
	public void pDelete(); // 삭제
	public void pUpdate(); // 수정
	public int selectMenu(); // 메뉴선택
	public void menuPrint(); // 초기화면 출력
	
}

 

- 메인(뷰)

 

package main;

public class SubMain {
	public static void main(String[] args) {
		SubManage sm = new SubManage();
		int ck = 1;
		while (ck == 1) {
			sm.menuPrint();
			ck = sm.selectMenu();
		}
	}
}

 

// ArrayList

 

package main;
import java.util.*;
import data.People;

public class SubManage implements SubMa {
	People st;
	ArrayList<People> p;

	public SubManage() {
		p = new ArrayList<>();
	}

	@Override
	public void menuPrint() {
		System.out.println("-------------------------------------");
		System.out.println("1.입력\t2.출력\t3.검색\t4.삭제\t5.수정\t6.종료");
		System.out.println("-------------------------------------");
	}

	@Override
	public int selectMenu() {
		// 수정추가해보기
		Scanner sc = new Scanner(System.in);
		System.out.print("원하는 메뉴의 번호를 입력하세요 : ");
		int sw = sc.nextInt();
		System.out.println();
		switch (sw) {
		case 1: // 입력
			pCreate();
			break;
		case 2: // 출력
			pPrint();
			break;
		case 3: // 검색
			pSelect();
			break;
		case 4: // 삭제
			pDelete();
			break;
		case 5: // 수정
			pUpdate();
			break;
		case 6: // 종료
			System.out.println("종료되었습니다.");
			return 0;
		default: // 그 외의 값
			System.out.println("올바른 번호를 입력하세요");
		}
		return 1;
	}

	@Override
	public void pCreate() {
		Scanner sc = new Scanner(System.in);
		System.out.println("정보 입력을 할 학생 수를 정하세요 : ");
		int n = sc.nextInt();
		for (int i = 0; i < n; i++) {
			st = new People();

			System.out.print("이름 입력 : ");
			st.setName(sc.next());

			System.out.print("국어점수 입력 : ");
			st.setKor(sc.nextInt());

			System.out.print("영어점수 입력 : ");
			st.setEng(sc.nextInt());

			System.out.print("수학점수 입력 : ");
			st.setMath(sc.nextInt());
			System.out.println();

			p.add(st);
		}
	}

	@Override
	public void pPrint() {
		System.out.println("*************************************");
		System.out.println("Name"+'\t'+"Kor"+'\t'+"Eng"+'\t'+"Math"+'\t'+"Total"+'\t'+"Avg");
		for (People i : p) {
			System.out.println(i.getName() + '\t' + i.getKor() + '\t' + i.getEng() + '\t' + i.getMath() + '\t'
					+ i.getTotal() + '\t' + i.getAvg());
		}
		System.out.println("*************************************");
	}

	@Override
	public void pSelect() {
		Scanner sc = new Scanner(System.in);
		String name;
		System.out.print("찾을 학생의 이름을 입력하세요 : ");
		name = sc.next();
		boolean ft = false;
		System.out.println("*************************************");
		for (int i = 0; i < p.size(); i++) {
			if (p.get(i).getName().equals(name)) {
				System.out.println("Name"+'\t'+"Kor"+'\t'+"Eng"+'\t'+"Math"+'\t'+"Total"+'\t'+"Avg");
				System.out.println(p.get(i).getName() + '\t' + p.get(i).getKor() + '\t' + p.get(i).getEng() + '\t'
						+ p.get(i).getMath() + '\t' + p.get(i).getTotal() + '\t' + p.get(i).getAvg());
				ft = true;
				break;
			}
		}
		if (ft == false) {
			System.out.println("해당 학생의 정보가 없습니다.");
		}
		System.out.println("*************************************");
	}

	@Override
	public void pDelete() {
		Scanner sc = new Scanner(System.in);
		System.out.print("삭제할 학생의 이름을 입력하세요 : ");
		String name = sc.next();
		boolean ft = false;
		for (int i = 0; i < p.size(); i++) {
			if (p.get(i).getName().equals(name)) {
				p.remove(i); // 삭제 함수
				ft = true;
				break;
			}
		}
		if(ft==false) {
			System.out.println("해당 학생의 정보가 없습니다.");
		}
	}
	public void pUpdate() {
		Scanner sc = new Scanner(System.in);
		String name;
		boolean tf = false;
		while (true) {
			System.out.print("수정할 학생의 이름을 입력하세요 (종료n) : ");
			name = sc.next();
			if(name.equals("n") || name.equals("N")) {
				break;
			}
			
			for(int i=0;i<p.size();i++) {
				if(p.get(i).getName().equals(name)) {
					System.out.println("수정할 항목 선택");
					System.out.print("1.kor 2.eng 3.math : ");
					int a = sc.nextInt();
					if (a == 1) {
						System.out.print("국어 점수 입력 : ");
						p.get(i).setKor(sc.nextInt());
					} else if (a == 2) {
						System.out.print("영어 점수 입력 : ");
						p.get(i).setEng(sc.nextInt());
					} else if (a == 3) {
						System.out.print("수학 점수 입력 : ");
						p.get(i).setMath(sc.nextInt());
					} else {
						System.out.println("다시 입력하세요.");
					}
					tf = true;
					break;
				}
			}
			if(tf == false) {
					System.out.println("해당 학생의 정보가 없습니다.");
			}
		}
	}
}

 

// HashMap

 

package main;

import java.util.Scanner;
import data.People1;
import java.util.*;

public class SubManage1 implements SubMa1 {
	HashMap<String, People1> stM;
	People1 st;

	public SubManage1() {
		stM = new HashMap<>();
	}

	@Override
	public void menuPrint() {
		System.out.println("-------------------------------------");
		System.out.println("1.입력\t2.출력\t3.검색\t4.삭제\t5.수정\t6.종료");
		System.out.println("-------------------------------------");
	}

	@Override
	public int selectMenu() {
		// 수정추가해보기
		Scanner sc = new Scanner(System.in);
		System.out.print("원하는 메뉴의 번호를 입력하세요 : ");
		int sw = sc.nextInt();
		System.out.println();
		switch (sw) {
		case 1: // 입력
			pCreate();
			break;
		case 2: // 출력
			pPrint();
			break;
		case 3: // 검색
			pSelect();
			break;
		case 4: // 삭제
			pDelete();
			break;
		case 5: // 수정
			pUpdate();
			break;
		case 6: // 종료
			System.out.println("종료되었습니다.");
			return 0;
		default: // 그 외의 값
			System.out.println("올바른 번호를 입력하세요");
		}
		return 1;
	}

	@Override
	public void pCreate() {
		Scanner sc = new Scanner(System.in);

		System.out.println("정보 입력을 할 학생 수를 정하세요 : ");
		int n = sc.nextInt();
		for (int i = 0; i < n; i++) {
			st = new People1();
			System.out.print("이름 입력 : ");
			st.setName(sc.next());

			System.out.print("국어점수 입력 : ");
			st.setKor(sc.nextInt());

			System.out.print("영어점수 입력 : ");
			st.setEng(sc.nextInt());

			System.out.print("수학점수 입력 : ");
			st.setMath(sc.nextInt());
			System.out.println();

			stM.put(st.getName(), st);
		}

	}

	@Override
	public void pPrint() {
		// KeySet은 저장된 Key값을 확인하는 것.
		System.out.println("*************************************");
		System.out.println("Name"+'\t'+"Kor"+'\t'+"Eng"+'\t'+"Math"+'\t'+"Total"+'\t'+"Avg");
		for (String n : stM.keySet()) { // 해시맵의 키셋을 활용
			System.out.println(stM.get(n).getName() + '\t' + stM.get(n).getKor() + '\t' + stM.get(n).getEng() + '\t'
					+ stM.get(n).getMath() + '\t' + stM.get(n).getTotal() + '\t' + stM.get(n).getAvg() + '\t');
		}
		System.out.println("*************************************");
	}

	@Override
	public void pSelect() {
		Scanner sc = new Scanner(System.in);
		String name;
		System.out.print("찾을 학생의 이름을 입력하세요 : ");
		name = sc.next();
		st = stM.get(name);
		System.out.println("*************************************");
		System.out.println("Name"+'\t'+"Kor"+'\t'+"Eng"+'\t'+"Math"+'\t'+"Total"+'\t'+"Avg");
		if (st == null) {
			System.out.println("해당 학생의 정보가 없습니다.");
		} else {
			System.out.println(st.getName() + '\t' + st.getKor() + '\t' + st.getEng() + '\t' + st.getMath() + '\t'
					+ st.getTotal() + '\t' + st.getAvg());
		}
		System.out.println("*************************************");
	}

	@Override
	public void pDelete() {
		Scanner sc = new Scanner(System.in);
		System.out.print("삭제할 학생의 이름을 입력하세요 : ");
		String name = sc.next();
		st = stM.get(name);
		if(st == null) {
			System.out.println("해당 학생의 정보가 없습니다.");
		}
		else {
			stM.remove(name);
		}
			
	}

	public void pUpdate() {
		Scanner sc = new Scanner(System.in);
		String name;
		while (true) {
			System.out.print("수정할 학생의 이름을 입력하세요 (종료n) : ");
			name = sc.next();
			if(name.equals("n") || name.equals("N")) {
				break;
			}
			if (stM.keySet().contains(name)) {
				System.out.println("수정할 항목 선택");
				System.out.print("1.kor 2.eng 3.math : ");
				int a = sc.nextInt();
				if (a == 1) {
					System.out.print("국어 점수 입력 : ");
					stM.get(name).setKor(sc.nextInt());
				} else if (a == 2) {
					System.out.print("영어 점수 입력 : ");
					stM.get(name).setEng(sc.nextInt());
				} else if (a == 3) {
					System.out.print("수학 점수 입력 : ");
					stM.get(name).setMath(sc.nextInt());
				} else {
					System.out.println("다시 입력하세요.");
				}
			} 
			else {
				System.out.println("해당 학생의 정보가 없습니다.");
			}
			
		}
	}

}
반응형

댓글