본문 바로가기

과제를하면서 트러블슈팅

키오스크 만들기 Lv5

반응형
SMALL

네 안녕하세요 오늘은 이제 키오스크 만들기 프로젝트 과제를

마무리 하려합니다

우선 조건이 쉬워서 금방했는데요.

우선 제가 그냥 처음부터 private를 쓰고있더라고요 ㅎㅎ;;

거기다 getter을 쓰고있었으니 그냥 setter만 추가해줫는데 이게 문제가

setter을 쓸만한곳이 없었다는점입니다.

그래서 코드로 만들어놓긴 하엿으나.. 정작쓸곳이없다는건데요

그래도 조건에 있으니 일단 만들어놓긴했습니다.

Kiosk class

package org.example.kiosk;


import java.util.List;
import java.util.Scanner;

public class Kiosk {
    //필드
    private List<Menu> menus;

    //생성자
    public Kiosk(List<Menu> menus) {
        this.menus = menus;
    }

    // Getter 메서드 - 외부에서 menus 값을 조회할 수 있게 제공
    public List<Menu> getMenus() {
        return menus;
    }

    // Setter 메서드 - 외부에서 menus 값을 수정할 수 있게 제공
    public void setMenus(List<Menu> menus) {
        this.menus = menus;
    }

    //start 함수
    public void start() {

        //Scanner 사용
        Scanner sc = new Scanner(System.in);

        //전역변수 choice를 0으로 설정
        int choice = 0;
        while (true) {

            // List와 Menu 클래스 활용하여 상위 카테고리 메뉴 출력
            System.out.println("[ MAIN MENU ]");


            //for문을 이용해 매뉴 출력
            for (int i = 0; i < menus.size(); i++) {
                System.out.println((i + 1) + "." + menus.get(i).getCategoryName());
            }

            System.out.println("0.종료");
            System.out.println("번호를 선택해주세요.");

            //상위 메뉴 선택
            while (true) {
                //숫자입력
                choice = sc.nextInt();
                if (choice == 0) {
                    // 종료 메시지 출력
                    System.out.println("키오스크를 종료합니다.");
                    return; // 첫 번째 루프 종료
                }
                //선택한 카테고리 출력
                if (choice != 0) {
                    if (choice >= 1 && choice <= menus.size()) {
                        Menu selectedMenu = menus.get(choice - 1);
                        selectedMenu.printMenu();

                        System.out.println("번호를 선택해주세요");
                        while (true) {
                            int itemChoice = sc.nextInt();
                            //매뉴 선택 및 출력
                            if (itemChoice > 0 && itemChoice <= selectedMenu.getMenuItems().size()) {
                                MenuItem selectedItem = selectedMenu.getMenuItems().get(itemChoice - 1);//매뉴선택
                                System.out.println("선택한 메뉴: " + selectedItem.getName());
                                System.out.println("가격: " + selectedItem.getPrice());
                                System.out.println("설명: " + selectedItem.getDescription());
                                break;//메뉴 선택 후 나가기
                            } else if (itemChoice == 0) {
                                break;//뒤로가기
                            } else {
                                System.out.println("잘못된 입력입니다. 다시 선택해주세요.");
                                selectedMenu.printMenu(); // 메뉴 재출력
                                System.out.println("번호를 선택해주세요");
                            }
                        }
                        break; //메뉴 카테고리 선택후 종료
                    } else {
                        System.out.println("다시선택해주세요.");
                    }
                }
            }
        }
    }
}

 

Main class

package org.example.kiosk;


import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        //List
        List<MenuItem> burgerItems = new ArrayList<>();
        List<MenuItem> drinkItems = new ArrayList<>();
        // Menu 객체 생성을 통해 이름 설정
        Menu burgerMenu = new Menu("Burgers", burgerItems);
        // Menu 클래스 내 있는 List<MenuItem> 에 MenuItem 객체 생성하면서 삽입
        burgerItems.add(new MenuItem("ShackBurger", 6.9, "토마토, 양상추, 쉑소스가 토핑된 치즈버거"));
        burgerItems.add(new MenuItem("SmokeShack", 8.9, "베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거"));
        burgerItems.add(new MenuItem("Cheeseburger", 6.9, "포테이토 번과 비프패티, 치즈가 토핑된 치즈버거"));
        burgerItems.add(new MenuItem("Hamburger", 5.4, "비프패티를 기반으로 야채가 들어간 기본버거"));
        // 다른 카테고리 메뉴 추가
        Menu drinkMenu = new Menu("Drinks", drinkItems);  // "Drinks"라는 이름의 Menu 객체 생성
        drinkItems.add(new MenuItem("Lemonade", 3.5, "새콤한 레모네이드"));
        drinkItems.add(new MenuItem("Iced Tea", 2.8, "차가운 아이스티"));
        // Kiosk 객체 생성
        List<Menu> menus = new ArrayList<>();
        menus.add(burgerMenu);  // Burger 카테고리 추가
        menus.add(drinkMenu);   // Drink 카테고리 추가
        Kiosk kiosk = new Kiosk(menus);
        // Kiosk 내 시작하는 함수 호출
        kiosk.start();
    }
}

Menu class

package org.example.kiosk;

import java.util.List;

public class Menu {
    private List<MenuItem> menuItems; // 메뉴 항목 리스트
    private String categoryName;  // 카테고리 이름

    // 생성자
    public Menu(String categoryName, List<MenuItem> menuItems) {
        this.categoryName = categoryName;
        this.menuItems = menuItems;
    }

    // Getter 메서드 - 외부에서 categoryName 값을 조회할 수 있게 제공s
    public String getCategoryName() {
        return categoryName;
    }

    // Setter 메서드 - 외부에서 categoryName 값을 수정할 수 있게 제공
    public void setCategoryName(String categoryName) {
        this.categoryName = categoryName;
    }

    // Getter 메서드 - 외부에서 menuItems 값을 조회할 수 있게 제공
    public List<MenuItem> getMenuItems() {
        return menuItems;
    }

    // 메뉴 출력
    public void printMenu() {
        System.out.println("=== " + categoryName + " 메뉴 ===");
        for (int i = 0; i < menuItems.size(); i++) {
            MenuItem item = menuItems.get(i);
            System.out.println((i + 1) + ". " + item.getName() + " | W " + item.getPrice() + " | " + item.getDescription());
        }
        System.out.println("0.뒤로가기"); //뒤로가기 추가
    }
}

MenuItem class

package org.example.kiosk;

public class MenuItem {
    private double price; //가격
    private String description; //설명
    //필드
    private String name; //이름

    //생성자
    public MenuItem(String name, double price, String description) {
        this.name = name;
        this.price = price;
        this.description = description;
    }

    // Getter 메서드: 외부에서 name 값을 조회할 수 있게 제공
    public String getName() {
        return name;
    }

    // Setter 메서드: 외부에서 name 값을 수정할 수 있게 제공
    public void setName(String name) {
        this.name = name;
    }

    // Getter 메서드: 외부에서 price 값을 조회할 수 있게 제공
    public double getPrice() {
        return price;
    }

    // Setter 메서드: 외부에서 price 값을 수정할 수 있게 제공
    public void setPrice(double price) {
        this.price = price;
    }

    // Getter 메서드: 외부에서 description 값을 조회할 수 있게 제공
    public String getDescription() {
        return description;
    }

    // Setter 메서드: 외부에서 description 값을 수정할 수 있게 제공
    public void setDescription(String description) {
        this.description = description;
    }

}

그렇게해서 위와같은 코드가 만들어졋습니다.

setter을 쓰고싶었는데

이게 수정할 만한 부분이 안보이더라고요,,

도전과제를 드가서 장바구니를 만들었으면 쓸수있었을거같은데

시간이 부족했습니다..

감사합니다

반응형
LIST

'과제를하면서 트러블슈팅' 카테고리의 다른 글

일정 관리 앱 만들기 devlop  (0) 2025.02.13
일정 관리 앱 만들기  (0) 2025.02.03
키오스크 만들기 Lv4  (0) 2025.01.17
키오스크 만들기 Lv3  (0) 2025.01.16
키오스크 만들기  (3) 2025.01.15