본문 바로가기
JAVA/예제

[JAVA] HashMap를 활용한 학생관리

by JJH0100 2022. 10. 27.
728x90
반응형

2022.10.27 - [JAVA/예제] - [JAVA] HashMap를 활용한 학생관리

 

[JAVA] HashMap를 활용한 학생관리

Student.class package Ex02; public class Student { private String name; private String department; private String id; private double avg; public Student() { // TODO Auto-generated constructor stub }..

jjh93.com

 

이 예제를 HashMap을 이용해 바꾸어 본 것이다.

 

 

Student.class

package Ex02;

public class Student {
	private String name;
	private String department;
	private String id;
	private double avg;

	public Student() {
		// TODO Auto-generated constructor stub
	}
	public Student(String name, String department, String id, double avg) {
		this.name = name;
		this.department = department;
		this.id = id;
		this.avg = avg;
	}	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getDepartment() {
		return department;
	}
	public void setDepartment(String department) {
		this.department = department;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public double getAvg() {
		return avg;
	}
	public void setAvg(double avg) {
		this.avg = avg;
	}
}

 

 

StudentManager.class

package Ex02;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.StringTokenizer;

public class StudentManager {
	private Scanner sc = new Scanner(System.in);
	private HashMap<String, Student> dept = new HashMap<>();
	
	public void read() {
		System.out.println("학생 이름, 학과, 학번, 학점평균 입력하세요.");
		for(int i=0; i<4; i++) {
			System.out.print(">>");
			String text = sc.nextLine(); //한줄 단위로 입력
			StringTokenizer st = new StringTokenizer(text, ",");
			String name = st.nextToken().trim(); //공백제거된 이름
			String department = st.nextToken().trim(); 
			String id = st.nextToken().trim(); 
			double avg = Double.parseDouble(st.nextToken().trim()); //double로 형변환
			
			Student student = new Student(name, department, id, avg);
			dept.put(name, student);
		}
	}
	private void printAll() {
		Set<String> key = dept.keySet(); //키 값을 가져온는 메소드
		Iterator<String> it = key.iterator();
		System.out.println("-------------------");
		while(it.hasNext()) {
			String name = it.next();
			Student student = dept.get(name);
			System.out.println("이름 : " + student.getName());
			System.out.println("학과 : " + student.getDepartment());
			System.out.println("학번 : " + student.getId());
			System.out.println("학점평균 : " + student.getAvg());
			System.out.println("-------------------");
		}
	}
	public void processQuery() {
		while(true) {
			System.out.println("학생 이름 >> ");
			String name = sc.nextLine();
			if(name.equals("그만")) {
				return;
			}
			Student student = dept.get(name);
			if(student == null)
				System.out.println(name + "학생은 존재하지 않습니다.");
			else {
				System.out.print(student.getName() + ", ");
				System.out.print(student.getDepartment() + ", ");
				System.out.print(student.getId() + ", ");
				System.out.print(student.getAvg());	
			}
		}
	}
	public void run() {
		read();
		printAll();
		processQuery();
	}
	public static void main(String[] args) {		
		StudentManager man = new StudentManager();
		man.run();
	}
}

728x90
반응형

댓글