키오스크 (팀프로젝트) v1 회의 및 시작 : "어떻게, 어디에, 어떤 형식으로?", add 및 delete 메서드

김재현·2023년 10월 26일
0

TIL

목록 보기
16/88
post-thumbnail

팀 노션: 링크
개선사항 소통: 링크

메뉴, 주문, 주문 완료, 주문 취소, 관리자메뉴로 구성된 키오스크 프로그램 입니다.

  • 화면은 System.out.println() 메소드를 사용해서 심플하게 출력합니다.
  • 메뉴 클래스와 주문 클래스를 사용하여 Java 의 핵심 기능인 상속을 최대한 사용하였습니다.

(상세 기능 및 설계는 GitHub 참고 바랍니다.)

팀회의 결과, 새로운 프로젝트를 만들어내는 것은 시기상조라는 의견이 모였다.
따라서 개인프로젝트에서 미흡했던 키오스크를 팀프로젝트로 진행하기로 결정했다.


구현 과정

상품을 어떻게, 어디에, 어떤 형식으로?

그런데 막상 들어가보니 이게 프로젝트 전반에 걸쳐 모두 이해한 뒤, 사용법까지 머리속에 설계가 되어있어야 하는 작업이었다. 정말 머리 터질 것 같았지만...

Map<String, Items> 를 이용하여 각 상품에 대한 ID값을 추가했고,
Map<String, String> 을 사용하여 카테고리의 ID값을 만들었다.

금방 끝냈어야(내 작업이 끝나야 다른 작업들이 시작 될 수 있음) 하는 작업이 저녁이 될 때 즘에서야 끝이 났고, 다른 분들이 그 코드를 받아서 작업해나갔다.

시간이 오래 걸렸지만 Map은 물론이고 List도 덩달아 사용방법이 익숙해졌다.

Main class

public class Main {

    //전역변수로 사용하기 위해 menuAndID, catecoryID를 위로 뺐습니다.
    public static Map<String, Items> menuAndID = new LinkedHashMap<>();
    public static Map<String, String> categoryID = new LinkedHashMap<>();

    public static void main(String[] args) {
        Page page = new Page();
        page.initPage();
    }
}

Page class

    public void initPage() {
        menuAndID = new LinkedHashMap<>();
        categoryID = new LinkedHashMap<>();
        orderList = new ArrayList<>();
        menu = new ArrayList<>();

        menu.add(String.format("%-15s","Burgers"+"     |    앵거스 비프 통살을 다져만든 버거"));
        menu.add(String.format("%-15s","Forzen Custard"+"     |    매장에서 신선하게 만드는 아이스크림"));
        menu.add(String.format("%-15s","Drinks"+"     |    매장에서 직접 만드는 음료"));

        menuAndID.put("burger_1", new Items("ShackBurger", "토마토, 양상추, 쉑소스가 토핑된 치즈버거!!!", 6900));
        menuAndID.put("burger_2", new Items("SmokeShack", "애플 우드 칩으로 훈연한 베이컨, 매콤한 체리 페퍼에 쉐소스가 토핑된 치즈 버거", 8900));
        menuAndID.put("burger_3", new Items("ShroomBurger", "몬스터 치즈와 체다 치즈로 속을 채우고 바삭하게 뒤겨낸 포토벨로 버섯 패티에 양상추, 토마토, 쇅소스를 올린 베지테리안 버거", 9400));
        menuAndID.put("burger_4", new Items("Shack Stack", "슈룸 버거와 쉑버거의 맛을 한번에 즐길 수 있는 메뉴", 12400));

						...


        categoryID.put("burger_1", "1");
        categoryID.put("burger_2", "1");
        categoryID.put("burger_3", "1");
        categoryID.put("burger_4", "1");
        
						...

        mainPageMethod(menuAndID,categoryID, orderList,menu);
    }

상품 add 및 delete 메서드 추가

처음에 add, delete 등 모두 염두에 두고 설계를 했기 때문에 어려운점은 없었다.

Page class

    public void addMenuCheck(String category, String name, String description, int price, String id) {

        System.out.println("이 내용으로 추가 하시겠습니까?");
        System.out.println("카테고리: " + category + ", 이름: " + name + ", 설명: " + description + ", 가격: " + price + ", ID: " + id + "\n");
        System.out.println("1. 추가  2. 다시입력  3. 취소");

        Scanner scanner = new Scanner(System.in);
        String yesOrNo = scanner.nextLine();
        if (yesOrNo.equals("1")) {
            menuAndID.put(id, new Items(name, description, price));
            categoryID.put(id, category);
            System.out.println("메뉴가 추가되었습니다.\n");
            mainPageMethod(menuAndID,categoryID, orderList,menu);
        } else if (yesOrNo.equals("2")) {
            addMenu();
        } else if (yesOrNo.equals("3")) {
            System.out.println("취소 되었습니다.");
            mainPageMethod(menuAndID,categoryID, orderList,menu);
        } else {
            System.out.println("다시 입력하세요.");
            addMenuCheck(category,name,description,price,id);
        }
    }

	public void delMenu() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("메뉴 삭제 페이지");
        System.out.println("삭제 할 음식의 ID를 입력하세요.\n");

        for (Map.Entry<String, Items> entry : menuAndID.entrySet()) {
            System.out.println(entry.getValue().name + " | ID:" + entry.getKey());
        }

        String inputID = scanner.nextLine();
        delMenuCheck(inputID);
    }
    
    public void delMenuCheck(String id) {

        for(Map.Entry<String, Items> entry : menuAndID.entrySet()) {
            if (entry.getKey().equals(id)) {
                System.out.println("정말 삭제 하시겠습니까?");
                System.out.println("1. 삭제  2. 취소");

                Scanner scanner = new Scanner(System.in);
                String yesOrNo = scanner.nextLine();
                if (yesOrNo.equals("1")) {
                    menuAndID.remove(id);
                    categoryID.remove(id);
                    System.out.println("메뉴가 삭제되었습니다\n");
                    //while (menuAndID.values().remove(null));
                    //while (categoryID.values().remove(null));
                    mainPageMethod(menuAndID,categoryID, orderList,menu);
                    mainPageMethod(menuAndID,categoryID, orderList);
                } else if (yesOrNo.equals("2")) {
                    System.out.println("취소되었습니다.\n");
                    mainPageMethod(menuAndID,categoryID, orderList,menu);
                    mainPageMethod(menuAndID,categoryID, orderList);
                } else {
                    System.out.println("다시 입력하세요.");
                    delMenuCheck(id);
                }
            }
        }

        System.out.println("ID가 일치하지 않습니다.\n");
        delMenu();
    }

대체적으로 다들 어려움 없이 쭉쭉 진행되고 있다.
아마 내일이면 거의 마무리가 되지 않을까 싶다.

정말 아무것도 모르겠다 싶었는데 언제 내가 이렇게 성장했나 싶기도 하다 ㅎㅎ
교만인가..? 이러다 갑자기 또 벽느낄 때가 오겠지 ㅋㅋㅋ

아무튼 하루하루 최선을 다하고 있다.


관련 포스팅

Previouse Post

Following Post

profile
I live in Seoul, Korea, Handsome

0개의 댓글