[Java] ArrayList를 활용해 사원 입력/조회 메뉴 만들기

yeju·2023년 5월 8일

연습

목록 보기
2/7
  1. 메인에서 실행할 메뉴 3개 만들고, 입력받아서 해당 메뉴를 실행하기
    ( 0 : 종료 / 1 : 사원 입력 / 2 : 사원 조회 )
package chapter11;

import java.util.Scanner;

public class ch11_03 {
	// ArrayList를 활용해 사원 입력, 조회 메뉴 만들기
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int choice = 0;
		
		while(true) {
			System.out.println("0:종료 / 1:사원 입력 / 2:사원 조회");
			choice = sc.nextInt();
			
			if(choice == 1) {
				System.out.println("사원 입력 실행");
			} else if(choice == 2) {
				System.out.println("사원 조회 실행");
			} else if(choice == 0) {
				System.out.println("종료");
				break;
			} else {
				System.out.println("잘못 입력했습니다.");
				continue;
			}
		}

	}
}
  1. 사원 정보 저장을 위한 Person 클래스 작성
  • 이름, 나이, 연봉 데이터를 선언하고 getter/setter 작성

사원 입력을 위한 Input 클래스 작성

  • input_person() 메서드 작성
  • 이 메서드 안에서 Person 인스턴스를 생성하고 ArrayList에 추가
package chapter11;

public class Person_ch11 {
	
	private String name;
	private int age;
	private int pay;
	
	// 외부에서 접근 불가능한 private 변수이므로 getter, setter 메서드 작성
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getPay() {
		return pay;
	}
	public void setPay(int pay) {
		this.pay = pay;
	}

}
package chapter11;
import java.util.Scanner;
import java.util.ArrayList;
public class Input_ch11 {
	
	// 미리 생성하고 계속 하나만 사용할 것이기 때문에 static 처리	
	private static ArrayList<Person_ch11> arr = new ArrayList<Person_ch11>();
	// Person 타입의 객체를 저장할 ArrayList arr 생성
	
	// arr는 직접 수정 불가능하게 외부로부터 보호해야 할 ArrayList이므로 싱글턴 패턴 적용
	static ArrayList<Person_ch11> get_arr() {
		return arr;
	}
	// arr을 다른 클래스(Printer)에서 사용할 때는 get_arr() 메서드를 호출해야 함
    
    static Scanner sc = new Scanner(System.in);
	static Scanner ss = new Scanner(System.in);
	// 내용을 입력받기 위해 scanner 객체 2개 생성
	
	public static void input_person() {
		
		Person_ch11 ps = new Person_ch11();
		
        // 정보를 입력받아 person 인스턴스 생성
        
		System.out.println("이름을 입력하세요.");
		String name = ss.nextLine();
		ps.setName(name);
		
		System.out.println("나이를 입력하세요.");
		int age = sc.nextInt();
		ps.setAge(age);
		
		System.out.println("연봉을 입력하세요.");
		int pay = sc.nextInt();
		ps.setPay(pay);
		
		arr.add(ps);
        // 생성한 ps를 ArrayList arr에 추가
	}
	
}
  1. 사원 조회를 위한 Printer 클래스 작성
  • printer_person() 메서드 작성
  • 이 메서드 안에서 ArrayList를 가져와 정보를 출력함
package chapter11;
import java.util.ArrayList;
public class Printer_ch11 {
	
	// 미리 생성하고 계속 하나만 사용할 것이기 때문에 static 처리
	static void printer_person() {
		ArrayList<Person_ch11> arr_pt = Input_ch11.get_arr();
		// get_arr() 메서드로 Input에서 만들어진 ArrayList 객체 가져오기
		
		for(int i=0; i<arr_pt.size(); i++) {
			// arr_pt의 길이 (size())만큼 반복
			// Person 클래스의 getter 메서드를 사용하기 위해 Person 타입으로 돌려줘야 함
			
			Person_ch11 ps = arr_pt.get(i);
			// List이름.get(i) : 리스트에서 인덱스 i에 있는 요소 반환
			
			System.out.println("------");
			System.out.println("이름: "+ps.getName());
			System.out.println("나이: "+ps.getAge());
			System.out.println("연봉: "+ps.getPay());
			// Person의 getter 메서드 호출해 정보 출력
		}
	}
	
}
  1. 메인 클래스에 호출할 메서드 input_person(), printer_person() 작성
package chapter11;

import java.util.Scanner;

public class ch11_03_02 {
	// ArrayList를 활용해 사원 입력, 조회 메뉴 만들기
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int choice = 0;
		
		while(true) {
			System.out.println("0:종료 / 1:사원 입력 / 2:사원 조회");
			choice = sc.nextInt();
			
			if(choice == 1) {
				Input_ch11.input_person();
			} else if(choice == 2) {
				Printer_ch11.printer_person();
			} else if(choice == 0) {
				System.out.println("종료");
				break;
			} else {
				System.out.println("잘못 입력했습니다.");
				continue;
			}
		}
        
	}
}

💻 실행 결과

profile
🌱

0개의 댓글