TIL 2023-10-23 키오스크 개인과제01

장규빈·2023년 10월 23일

TIL

목록 보기
8/59
post-thumbnail

키오스크 만들기

저번주부터 오늘까지 했던 개인 과제를 정리해보려고 한다.

필수 요구사항은 다음과 같다.

Java 클래스 설계 시 필수 요구사항!

  • 메뉴 클래스는 이름, 설명 필드를 가지는 클래스로 만들어주세요.
  • 상품 클래스는 이름, 가격, 설명 필드를 가지는 클래스로 만들어주세요.
  • 상품 클래스의 이름, 설명 필드는 메뉴 클래스를 상속받아 사용하는 구조로 개발해주세요.
  • 주문 클래스도 만들어서 상품 객체를 담을 수 있도록 해주세요.
  1. 메인 메뉴판 화면
    • 메인 메뉴판이 출력되며 메뉴판에는 상품 메뉴가 출력 됩니다.
    • 상품 메뉴는 간단한 설명과 함께 출력 되며 최소 3개 이상 출력 됩니다.
    • 상품 메뉴 아래에는 Order(주문)와 Cancel(주문 취소) 옵션을 출력해줍니다.
  2. 상품 메뉴판 화면
    • 상품 메뉴 선택 시 해당 카테고리의 메뉴판이 출력됩니다.
    • 메뉴판에는 각 메뉴의 이름과 가격과 간단한 설명이 표시됩니다.
  3. 구매 화면
    • 상품 선택 시 해당 상품을 장바구니에 추가할지 확인하는 문구가 출력 됩니다.
    • 1.확인 입력 시 장바구니에 추가되었다는 안내 문구와 함께 메인 메뉴로 다시 출력 됩니다.
  4. 주문 화면
    • 5.Order 입력 시 장바구니 목록을 출력해줍니다.
    • 장바구니에서는 추가된 메뉴들과 총 가격의 합을 출력해줍니다.
    • 1.주문 입력 시 주문완료 화면으로 넘어가고, 2.메뉴판 입력 시 다시 메인 메뉴로 돌아옵니다.
  5. 주문완료 화면
    • 1.주문 입력 시 대기번호를 발급해줍니다.
    • 장바구니는 초기화되고 3초 후에 메인 메뉴판으로 돌아갑니다.
  6. 주문 취소 화면
    • 메뉴판에서 6.Cancel 입력시 주문을 취소할지 확인을 요청하는 문구가 출력 됩니다.
    • 1.확인 을 입력하면 장바구니는 초기화되고 취소 완료 문구와 함께 메뉴판이 출력 됩니다.

먼저 메뉴 클레스를 생성해주었습니다.

package main.java.food;

public class Menu {
    private String name;
    private String explanation;

    public Menu(String name, String explanation) {
        this.name = name;
        this.explanation = explanation;
    }

    public String getExplanation() {
        return explanation;
    }

    public String getName() {
        return name;
    }
}

그리고 매뉴 클래스를 상속받은 상품(음식) 클래스와 음식을 여러개 담을수 있는 타이틀 클래스를 만들어 줍니다.

package main.java.food;

public class Food extends Menu {
    private double price;

    private double largePrice;

    public Food(String name, double price, String explanation) {
        super(name, explanation);
        this.price = price;
        this.largePrice = price + 2000;
    }

    public double getPrice() {
        return price;
    }

    public double getLargePrice() {
        return largePrice;
    }
}
package main.java.food;

import java.util.ArrayList;

public class Title extends Menu {
    public static int numder = 1;
    private int menuNumder = 1;
    private int seq;
    private ArrayList<Food> menus = new ArrayList<>();

    public Title(String name, String explanation) {
        super(name, explanation);
        this.seq = numder++;
    }

    public void setMenus(String name, double price, String explanation) {
        this.menus.add(new Food(name, price, explanation));
        this.menuNumder++;
    }

    public Food getMenus(int numder) {
        return this.menus.get(numder);
    }

    public ArrayList<Food> getMenusList() {
        return this.menus;
    }

    public int getSeq() {
        return seq;
    }

    public int getMenuNumder() {
        return menuNumder;
    }

}

그리고 주문클래스에 들어가는 주문상품클래스와 주문클래스를 만들어줍니다.

package main.java.order;

import main.java.food.Menu;

public class OrderFood extends Menu {
    private String size;
    private int count = 1;
    private double realPrice;

    public OrderFood(String name, double realPrice, String explanation) {
        super(name, explanation);
        this.realPrice = realPrice;
    }

    public String getSize() {
        return size;
    }

    public void setSize(String size) {
        this.size = size;
    }

    public int getCount() {
        return count;
    }

    public void setCount() {
        this.count++;
    }

    public double getRealPrice() {
        return realPrice * count;
    }

}
package main.java.order;

import java.util.ArrayList;

public class Order {
    public ArrayList<OrderFood> OrderList = new ArrayList<>();
    private int seq = 1;
    private int menuCount = 0;
    private int totalCount = 0;
    public ArrayList<OrderFood> OrderListTotal = new ArrayList<>();

    public void setOrderList(OrderFood orderFood, String size) {
        this.OrderList.add(orderFood);
        menuCount++;
        OrderList.get(menuCount - 1).setSize(size);
        this.OrderListTotal.add(orderFood);
        totalCount++;
        OrderListTotal.get(totalCount - 1).setSize(size);
    }

    public double price() {
        double price = 0;
        for (OrderFood f : OrderList) {
            price = price + f.getRealPrice();
        }
        return price;
    }

    public ArrayList<OrderFood> getOrder() {
        return this.OrderList;
    }

    public ArrayList<OrderFood> getOrderTotal() {
        return this.OrderListTotal;
    }

    public void reset() {
        this.OrderList.clear();
        this.seq++;
        this.menuCount = 0;
    }

    public int getSeq() {
        return seq;
    }
}
profile
나다운사람

0개의 댓글