KPT

Kiosk KPT (by j.w)

Albosa2lol 2023. 6. 4. 14:06

https://succulent-preface-302.notion.site/10533fdf7f66495fa361f4a182951e07

 

개인과제 정리

과제가 어려웠던 분들을 위해 최소한의 개념만 사용했습니다.

succulent-preface-302.notion.site

 

개인과제 정리

  1. 과제가 어려웠던 분들을 위해 최소한의 개념만 사용했습니다.
  2. 주말동안 아래 부분을 복습하시면 다음 과제인 메모장은 쉽게 작성하실 수 있을 것이라 생각됩니다.
  3. 자바의 정석 페이지
    1. 객체 p160~168
      1. 생성자 : p195 ~ 199
    2. 배열
      1. 배열 : p 169
      2. ArrayList : p. 395
        1. 추가 : add
        2. 배열의 크기 : size
        3. 배열 삭제 : clear
    3. for : 배열 출력 p. 110
    4. if : 조건식 p. 98~105
  4. 주의 사항
    1. 아래 과정을 차근차근히 꼭 여러번 반복 해보시고,
    2. 그 후에 다양한 기능이나, 기술을 추가해보시기를 권장 드립니다.
    3. 메서드를 이용한 리팩토링, 제네릭, 향상된 for, asList, 등

<aside> 💡 필수 요구사항

</aside>

  1. 메인 메뉴판 작성 & 상품 메뉴판 작성(간단 설명을 위해 상속은 사용하지 않음)
    1. 이름
    2. 설명
    3. 가격
"SHAKESHACK BURGER 에 오신걸 환영합니다."
아래 메뉴판을 보시고 메뉴를 골라 입력해주세요.

[ SHAKESHACK MENU ]
1. Burgers         | 앵거스 비프 통살을 다져만든 버거
2. Forzen Custard  | 매장에서 신선하게 만드는 아이스크림
3. Drinks          | 매장에서 직접 만드는 음료
4. Beer            | 뉴욕 브루클린 브루어리에서 양조한 맥주

[ ORDER MENU ]
5. Order       | 장바구니를 확인 후 주문합니다.
6. Cancel      | 진행중인 주문을 취소합니다.

  1. 상품 메뉴판 화면
"SHAKESHACK BURGER 에 오신걸 환영합니다."
아래 메뉴판을 보시고 메뉴를 골라 입력해주세요.

[ SHAKESHACK MENU ]
1. Burgers         | 앵거스 비프 통살을 다져만든 버거
2. Forzen Custard  | 매장에서 신선하게 만드는 아이스크림
3. Drinks          | 매장에서 직접 만드는 음료
4. Beer            | 뉴욕 브루클린 브루어리에서 양조한 맥주

[ ORDER MENU ]
5. Order       | 장바구니를 확인 후 주문합니다.
6. Cancel      | 진행중인 주문을 취소합니다.

"Hamburger     | W 5.4 | 비프패티를 기반으로 야채가 들어간 기본버거"
위 메뉴를 장바구니에 추가하시겠습니까?
1. 확인        2. 취소

  1. 구매 화면
"Hamburger     | W 5.4 | 비프패티를 기반으로 야채가 들어간 기본버거"
위 메뉴를 장바구니에 추가하시겠습니까?
1. 확인        2. 취소

  1. 주문 화면
아래와 같이 주문 하시겠습니까?

[ Orders ]
ShackBurger   | W 6.9 | 토마토, 양상추, 쉑소스가 토핑된 치즈버거
SmokeShack    | W 8.9 | 베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거

[ Total ]
W 15.8

1. 주문      2. 메뉴판
  1. 주문 완료 화면
주문이 완료되었습니다!

대기번호는 [ 1 ] 번 입니다.
(3초후 메뉴판으로 돌아갑니다.)

  1. 주문 취소 화면
진행하던 주문을 취소하시겠습니까?
1. 확인        2. 취소

<aside> 💡 자바의 정석 정리

</aside>

1. 메인 메뉴판

  1. 객체
    1. 이름, 설명, 가격을 갖는 클래스를 생성합니다.
      1. p160 ~ 168
    2. 매개변수가 있는 생성자를 설정합니다.
      1. p195 ~ 199
  2. 객체 배열 생성 : p 169
    1. 배열에 객체를 입력하면서, 생성자를 통해 초기값을 넣어줍니다.
    2. 생성한 객체 배열 출력해서 확인합니다.
      1. for : p. 110

2. 상품메뉴판

  1. 위 과정을 반복해서 상품 메뉴판도 만들어줍니다.

  1. 각각의 상품 메뉴로 들어가기 위해
  2. scanner p.61
  3. if : p. 98~105
  4. 숫자를 누르면 해당 메뉴가 출력되는 형식 입니다.

3. 구매 화면 (위와 반복)

  1. 화면으로부터 입력받기 : p61
  2. 숫자 입력시 특정한 메뉴만 출력니다.

장바구니 추가하기

  1. 확인 입력시
  2. 위에 출력된 배열을 다른 배열로 옮겨서 저장합니다.
    1. 알고리즘에서 배운 ArrayList를 사용합니다. p395
    2. orderList 생성
    3. orderList에 배열 저장하기
  3. 취소 입력시
    1. 저장되지 않습니다.

4. 주문 화면

  1. for를 이용해서, orderList를 출력해봅니다.
  2. 연산자를 이용해서 총합 total을 구현합니다.
    1. 총합 total은 while 밖에서 정의합니다.
  3. if를 이용해서
    1. 주문
      1. orderList.clear();
    2. 메뉴판

5. 주문 완료 화면

  1. 4번에서 계속 이어집니다.
  2. 주문 선택시 clear를 이용해 orderList를 초기화 합니다.
  3. 대기번호는 count를 사용
    1. int count는 while문 밖에서 정의하기

6. 주문 취소 화면

  1. if
  2. orderList.clear(); orderList 초기화

위 두개를 사용해서 간단히 만듭니다.

<aside> 💡 실제 코드

</aside>

public class Menu {
    String name;
    String desc;
    int price; 
}

public Menu(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
Menu[] menuList = new Menu[5];
        menuList[0] = new Menu("hamburger", "good1");
        menuList[1] = new Menu("side", "good1");
        menuList[2] = new Menu("beverage", "good1");
				menuList[3] = new Menu("확인", "장바구니를 확인 후 주문합니다.");
        menuList[4] = new Menu("취소", "진행중인 주문을 취소합니다.");

for (int i = 0; i < menuList.length; i++) {
                System.out.println(i+1 + "." + menuList[i].name + " | " + menuList[i].desc);
            }

// 가격도 받기 위해 생성자를 추가
public Menu(String name, String desc, int price) {
        this.name = name;
        this.desc = desc;
        this.price = price;
    }
// 출력 확인
Menu[] hamburgerList = new Menu[3];
        hamburgerList[0] = new Menu("hamburger1", "delicious1");
        hamburgerList[1] = new Menu("hamburger2", "delicious1");
        hamburgerList[2] = new Menu("hamburger3", "delicious1");

        for (int i = 0; i < hamburgerList.length; i++) {
            System.out.println(hamburgerList[i].name + " | " + hamburgerList[i].price +" | "+ hamburgerList[i].desc);
        }

Scanner sc = new Scanner(System.in);
        while (true) {
            int choice = sc.nextInt();
            if (choice == 1) {
                // 햄버거
                System.out.println("햄버거");
                for (int i = 0; i < hamburgerList.length; i++) {
                    System.out.println(i + 1 + "." + hamburgerList[i].name + " | " + hamburgerList[i].price + " | " + hamburgerList[i].desc);
                }
            } else if (choice == 2) {
                // 사이드
            } else if (choice == 3) {
                // 음료
            } else if (choice == 4) {
                // 주문
            } else if (choice == 5) {
                // 취소
            }
        }
System.out.println("아래 메뉴를 장바구니에 추가하시겠습니까?");
                Scanner sc2 = new Scanner(System.in);
                int choice2 = sc2.nextInt() - 1;
                System.out.println(hamburgerList[choice2].name + " | " + hamburgerList[choice2].price + " | " + hamburgerList[choice2].desc);
// ArrayList를 생성하는 위치는 while 문 밖에 
 ArrayList orderList = new ArrayList();

System.out.println("1.확인  2.취소");
                Scanner sc3 = new Scanner(System.in);
                int choice3 = sc3.nextInt();
                if (choice3 == 1) {

                    orderList.add(hamburgerList[choice2]);
                } else {

                }

// 주문
// ArrayList(orderList)는 아래와 같이 사용합니다. 
                System.out.println("주문");
                System.out.println("아래와 같이 주문 하시겠습니까?");
                for (int i = 0; i < orderList.size(); i++) {
                    Menu orderOne = (Menu) orderList.get(i);
                    System.out.println(orderOne.name + " | " + orderOne.price + " | " + orderOne.desc);
                    total += orderOne.price;
                }
                System.out.println("[ Total ]\\n" + "W" + total);

                System.out.println("1. 주문      2. 메뉴판");
                Scanner sc2 = new Scanner(System.in);
                int choice2 = sc2.nextInt();
                if (choice2 == 1) {
                    orderList.clear();
                    count += 1;
                    System.out.println("주문이 완료되었습니다!\\n" +
                            "대기번호는 [" + count + "] 번 입니다.\\n" +
                            "(3초후 메뉴판으로 돌아갑니다.)");
                } else {

                }

System.out.println("진행하던 주문을 취소하시겠습니까?");
                System.out.println("1. 확인        2. 취소");
                System.out.println();
                Scanner sc2 = new Scanner(System.in);
                int choice2 = sc2.nextInt();

                if (choice2 == 1) {
                    orderList.clear();
                    System.out.println("주문이 취소되었습니다!");

                } else {
                    System.out.println("메인으로 돌아갑니다. ");
                }
// 깃허브 사용이 아직 어려운 신 분을 위해서 전체코드를 아래에 게시 합니다. 
// Main.java 클래스

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Menu[] menuList = new Menu[5];
        menuList[0] = new Menu("hamburger", "good1");
        menuList[1] = new Menu("side", "good1");
        menuList[2] = new Menu("beverage", "good1");
        menuList[3] = new Menu("확인", "장바구니를 확인 후 주문합니다.");
        menuList[4] = new Menu("취소", "진행중인 주문을 취소합니다.");

        Menu[] hamburgerList = new Menu[3];
        hamburgerList[0] = new Menu("hamburger1", "delicious1",1000);
        hamburgerList[1] = new Menu("hamburger2", "delicious1", 2000);
        hamburgerList[2] = new Menu("hamburger3", "delicious1", 3000);

        ArrayList orderList = new ArrayList();
        Scanner sc = new Scanner(System.in);
        int count = 0;
        int total = 0;
        while (true) {
            for (int i = 0; i < menuList.length; i++) {
                System.out.println(i+1 + "." + menuList[i].name + " | " + menuList[i].desc);
            }
            int choice1 = sc.nextInt();
            if (choice1 == 1) {
                // 햄버거
                System.out.println("햄버거");
                for (int i = 0; i < hamburgerList.length; i++) {
                    System.out.println(i + 1 + "." + hamburgerList[i].name + " | " + hamburgerList[i].price + " | " + hamburgerList[i].desc);
                }

                System.out.println("아래 메뉴를 장바구니에 추가하시겠습니까?");
                Scanner sc2 = new Scanner(System.in);
                int choice2 = sc2.nextInt() - 1;
                System.out.println(hamburgerList[choice2].name + " | " + hamburgerList[choice2].price + " | " + hamburgerList[choice2].desc);

                System.out.println("1.확인  2.취소");
                Scanner sc3 = new Scanner(System.in);
                int choice3 = sc3.nextInt();
                if (choice3 == 1) {

                    orderList.add(hamburgerList[choice2]);
                } else {

                }

            } else if (choice1 == 2) {
                // 사이드
            } else if (choice1 == 3) {
                // 음료
            } else if (choice1 == 4) {
                // 주문
                System.out.println("주문");
                System.out.println("아래와 같이 주문 하시겠습니까?");
                for (int i = 0; i < orderList.size(); i++) {
                    Menu orderOne = (Menu) orderList.get(i);
                    System.out.println(orderOne.name + " | " + orderOne.price + " | " + orderOne.desc);
                    total += orderOne.price;
                }
                System.out.println("[ Total ]\\n" + "W" + total);

                System.out.println("1. 주문      2. 메뉴판");
                Scanner sc2 = new Scanner(System.in);
                int choice2 = sc2.nextInt();
                if (choice2 == 1) {
                    orderList.clear();
                    count += 1;
                    System.out.println("주문이 완료되었습니다!\\n" +
                            "대기번호는 [" + count + "] 번 입니다.\\n" +
                            "(3초후 메뉴판으로 돌아갑니다.)");
                } else {

                }
            } else if (choice1 == 5) {
                System.out.println("진행하던 주문을 취소하시겠습니까?");
                System.out.println("1. 확인        2. 취소");
                System.out.println();
                Scanner sc2 = new Scanner(System.in);
                int choice2 = sc2.nextInt();

                if (choice2 == 1) {
                    orderList.clear();
                    System.out.println("주문이 취소되었습니다!");

                } else {
                    System.out.println("메인으로 돌아갑니다. ");
                }
            }

        }
    }
}

'KPT' 카테고리의 다른 글

항해99 코딩클럽 코테 스터디 2기 회고  (0) 2024.07.02
스프링잭팟 KPT  (0) 2023.08.17
오팀장 KPT  (0) 2023.07.25
789 KPT  (1) 2023.07.13
E1I4 KPT  (1) 2023.05.19