JX405기_비트/Java

Day02-2 사원관리 프로그램 작성하기 ScannerUtil사용

_하루살이_ 2023. 1. 12. 19:27

사원 관리 프로그램을 작성하시오.
단, 사원 정보(사원 번호, 이름, 직급, 소속 부서, 연봉)은 하나의 구조체로 통제하고
사원 정보입력, 출력은 별개의 메소드를 통하여 관리합니다.

 

ScannerUtil

Scanner 클래스를 통해 입력을 받을 시에 도움이 될만한 static 메소드를 모아둔 클래스

package util;

import java.util.Scanner;

//Scanner 클래스를 통해 입력을 받을 시에 도움이 될만한 static 메소드를 모아둔 클래스
public class ScannerUtil {
    // 1. 입력시 사용자에게 보여줄 메세지 출력을 담당할 메소드
    public  static void printMessage(String message){
        System.out.println(message);
        System.out.println("> ");
    }

    // 2. 스캐너 버그를 미리 방지하는 nexLine()
    public static String nextLine(Scanner scanner, String message){
        printMessage(message);
        String temp = scanner.nextLine();
        if(temp.isEmpty()){
            temp = scanner.nextLine();
        }

        return temp;
    }

    // 3. 사용자로부터 정수 입력을 담당하는 nexInt()
    public static int nextInt(Scanner scanner, String message){
        printMessage(message);

        int temp = scanner.nextInt();
        return temp;
    }

    //파라미터의 순서가 중요 파라미터의 순서가 다른 경우 같은 함수이름을 사용할수 있음

    // 4. 사용자로부터 특정 범위의 정수 입력을 담당하는 nextInt()
    public static int nextInt(Scanner scanner, String message, int min, int max){
        int temp = nextInt(scanner, message);

        while (temp < min || temp > max) {
             System.out.println("잘못 입력하셨습니다.");
             temp = nextInt(scanner, message);
        }

        return temp;
    }
}

 

Employee 클래스 작성

package day0110;

public class Employee {
    public int id;
    public String name;
    public String rank;
    public String dept;
    public int salary;
}

 

ScannerUtil 클래스를 활용해서 사원관리프로그램 작성하기

Ex03Emp 

package day0110;

import util.ScannerUtil;

import java.util.Scanner;

public class Ex03Emp {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        Employee employee = new Employee();

        insertInfo(scanner, employee);

        printInfo(employee); // call by reference 참조에 의한 호출

        scanner.close();
    }
    public static void insertInfo(Scanner scanner, Employee employee){
        // 각종 출력예시 사용할 메세지를 저장할 String 변수 message
        String message;

        // 사원 번호 입력
        message = "사원의 번호를 입력하시오.";
        employee.id = ScannerUtil.nextInt(scanner, message);

        // 사원 이름 입력
        message = "사원의 이름을 입력하시오.";
        employee.name = ScannerUtil.nextLine(scanner, message);

        // 사원 직급 입력
        message = "사원의 직급을 입력하시오.";
        employee.rank = ScannerUtil.nextLine(scanner, message);

        // 사원 부서 입력
        message = "사원의 부서를 입력하시오.";
        employee.dept = ScannerUtil.nextLine(scanner, message);

        // 사원 연봉 입력
        message = "사원의 연봉을 입력하시오.";
        employee.salary = ScannerUtil.nextInt(scanner, message);


    }

    public static void printInfo(Employee employee){
        System.out.println("-------------------------------------- ");
        System.out.println("사원 번호 : " + employee.id);
        System.out.println("사원 이름 : " + employee.name);
        System.out.println("사원 직급 : " + employee.rank);
        System.out.println("사원 부서 : " + employee.dept);
        System.out.println("사원 연봉 : " + employee.salary);
        System.out.println("-------------------------------------- ");

    }

}