-
문제 1 - Chap13 / kr.co.ezenac.review02개발자 수업/Java 2021. 10. 26. 09:59
package kr.co.ezenac.review02; import java.io.IOException; /* * 고객센터에 전화 상담을 하는 일반인들이 있습니다. * 일단 고객에게서 전화가 오면 대기열에 저장되고 각 상담원에게 배분이 됩니다. * 배분이 되는 정책은 크게 3가지가 있습니다. * 1. 모든 상담원이 동일한 상담 건수를 처리하도록 상담원 순서대로 배분합니다. * 2. 쉬고 있거나 상담원에게 할당된 통화 수가 가장 적은 상담원에게 배분합니다. * 3. 고객 등급에 따라 등급이 높은 고객은 업무능력이 우수한 상담원에게 배분합니다. * * <출력예시> * 전화 상담원 할당 방식을 선택하세요. * R : 한 명씩 차례대로 * L : 대기가 적은 상담원 우선 * P : 우선순위가 높은 고객 우선 숙련도 높은 상담원 * * r * 상담 전화를 순서대로 대기열에서 가져옵니다. * 다음 순서의 상담원에게 배분합니다. * * l * 상담 전화를 순서대로 대기열에서 가져옵니다. * 현재 상담 업무가 없거나 상담 대기가 가장 적은 상담원에게 할당합니다. * * p * 고객 등급이 높은 고객의 Call을 먼저 가져옵니다. * 업무 숙련도가 높은 상담원에게 먼저 배분합니다. * * u * 지원되지 않는 기능입니다. */ public class SchedulerTest { public static void main(String[] args) throws IOException { System.out.println("전화 상담원 할당 방식을 선택하세요."); System.out.println("R : 한 명씩 차례대로"); System.out.println("L : 대기가 적은 상담원 우선"); System.out.println("P : 우선순위가 높은 고객 우선 숙련도 높은 상담원"); System.out.print("선택 > "); int channel = System.in.read(); Schduler schduler = null; if(channel == 'R' || channel == 'r') { schduler = new RoundRobin(); } else if(channel == 'L' || channel == 'l') { schduler = new LeastJob(); } else if(channel == 'P' || channel == 'p') { schduler = new PriorityAllocation(); } else { System.out.println("지원되지 않는 기능입니다."); return; } schduler.getNextCall(); schduler.sendCallToAgent(); } }
public class LeastJob implements Schduler { @Override public void getNextCall() { System.out.println("상담 전화를 순서대로 대기열에서 가져옵니다."); } @Override public void sendCallToAgent() { System.out.println("현재 상담 업무가 없거나 상담 대기가 가장 적은 상담원에게 할당합니다."); } }
public class RoundRobin implements Schduler { @Override public void getNextCall() { System.out.println("상담 전화를 순서대로 대기열에서 가져옵니다."); } @Override public void sendCallToAgent() { System.out.println("다음 순서의 상담원에게 배분합니다."); } }
public class PriorityAllocation implements Schduler { @Override public void getNextCall() { System.out.println("고객 등급이 높은 고객의 Call을 먼저 가져옵니다."); } @Override public void sendCallToAgent() { System.out.println("업무 숙련도가 높은 상담원에게 먼저 배분합니다."); } }
public interface Schduler { public void getNextCall(); public void sendCallToAgent(); }
'개발자 수업 > Java' 카테고리의 다른 글
Java MiniProject (0) 2021.10.26 문제 2 - Chap09 / kr.co.ezenac.assignment (0) 2021.10.26 31. 멀티스레드2 (0) 2021.10.25 30. Review (0) 2021.10.25 29. 멀티스레드 (0) 2021.10.22