MenuItem 클래스 생성하기 : 햄버거 메뉴를 관리이름, 가격, 설명 필드 생성MenuItem 객체 생성을 통해 이름, 가격, 설명을 세팅List를 선언하여 여러 MenuItem을 추가menuItems를 탐색하면서 하나씩 접근Kiosk 클래스 : 키오스크 프로그램의 메뉴를 관리하고 사용자 입력을 처리start 함수를 만들어 입력과 반복문 로직을 관리Menu 클래스 : MenuItem 클래스를 관리List<MenuItem>는 Menu 클래스가 관리하도록 변경카테고리 이름 필드 생성 장바구니 생성 및 관리 기능
☑ 사용자가 선택한 메뉴를 장바구니에 추가할 수 있는 기능을 제공
장바구니는 메뉴명, 수량, 가격 정보를 저장, 항목을 동적으로 추가 및 조회 가능
☑ 사용자가 잘못된 선택을 했을 경우 예외를 처리합니다(예: 유효하지 않은 메뉴 번호 입력)
Kiosk.java
System.out.println("선택한 메뉴 : " + subCategory.get(choiceMenu - 1).toString());
System.out.println("위 메뉴를 장바구니에 추가하시겠습니까?");
System.out.println("1. 확인 2. 취소");
int orderYn = Integer.parseInt(scanner.nextLine());
if(orderYn == 1) {
order.addOrderList(subCategory.get(choiceMenu - 1));
}
Order.java
// 서브 메뉴 정보 리스트 저장
public void addOrderList(MenuItem subMenu){
menuItemList.add(subMenu);
printMenuName();
}
// 가장 최근 장바구니에 저장된 메뉴 명 출력
public void printMenuName(){
System.out.println(menuItemList.get(menuItemList.size()-1).getName() + "이 장바구니에 추가되었습니다.");
}
장바구니 출력 및 금액 계산
장바구니 담기 기능
☑ 메뉴를 클릭하면 장바구니에 추가할 지 물어보고, 입력값에 따라 “추가”, “취소” 처리합
☑ 장바구니에 담은 목록을 출력
☑ 주문 기능
☑ 장바구니에 담긴 모든 항목을 출력
☑ 합산하여 총 금액을 계산하고, “주문하기”를 누르면 장바구니를 초기화
Kiosk.java
// 장바구니 값이 존재할 경우 : 확인, 취소까지 +2, 존재x : mainCategory의 크기값 체크
int index = (order.getOrderList().isEmpty()) ?
mainCategory.size()-1 :mainCategory.size()+2;
if(!order.getOrderList().isEmpty()){
System.out.println("[ ORDER MENU ]");
System.out.println(index-1 + ". Orders | 장바구니를 확인 후 주문합니다.");
System.out.println(index + ". Cancel | 장바구니 주문을 취소합니다.");
}
// 숫자 입력 받기
int choiceCategory = Integer.parseInt(scanner.nextLine());
// 장바구니 확인 하기
if(index-1 == choiceCategory && !order.getOrderList().isEmpty()){
System.out.println("아래와 같이 주문하시겠습니까?");
order.printOrderList();
System.out.println("[ Total ]");
double sumPrice = order.totalOrderPrice();
System.out.println("W " + sumPrice);
System.out.println("1. 주문 2. 메뉴판");
int choiceOrder = Integer.parseInt(scanner.nextLine());
if(choiceOrder == 1){
System.out.println("주문이 완료되었습니다. 금액은 W " +sumPrice + " 입니다.");
break;
}
continue;
}
Order.java
// 장바구니 확인하기
public void printOrderList(){
getOrderList().stream()
.forEach(order -> System.out.println(order.toString()));
}
// 주문 총액 체크
public Double totalOrderPrice(){
return getOrderList().stream()
.mapToDouble(order->
Double.parseDouble(order
.getPrice()
.replaceAll("[^\\d.]", "")))
.sum();
}
Enum을 활용한 사용자 유형별 할인율 관리
추가할 부분
1. order에 수량을 추가할 수 있도록 수정 필요
2. 할인 기능 추가
3 exception 처리
4. 코드 정리
5. 주석 정리