본문 바로가기
Java

[TIL] 231023 Java Kiosk 프로젝트 제출

by studymode 2023. 10. 23.

 

Menu Class

  • 이름, 설명 필드를 가지는 클래스
package Practic;

//메뉴 클래스는 이름, 설명 필드를 가지는 클래스로 만들어주세요.
public class Menu {

    //속성
    private String name;
    private String description;

    //함수 (생성자)
    public Menu(String name, String description) {
        this.name = name;
        this.description = description;
    }

    //메서드
    public String getName() {
        return name;
    }
    public String getDescription() {
        return description;
    }


}

 

 

Product Class

  • 이름, 가격, 설명 필드를 가지는 클래스
  • 메뉴 클래스를 상속는 구조로 개발
package Practic;

public class Product extends Menu{

    public String category;
    private int price;

    public Product(String category, String name, String description, int price) {
        super(name, description);
        this.price = price;
        this.category = category;
    }

    public String getCategory() {
        return category;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public int getPrice() {
        return price;
    }
}

 

 

Cart Class

  • 선택한 상품 객체를 담고, 총 결제금액을 계산하는 클래스
package Practic;


import Practic.Product;

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

public class Cart {
    ArrayList<Product> cartItem = new ArrayList<>();

    public void addCart (Product product){
        cartItem.add(product);
    }

    public void clearCart(){
        cartItem.clear();
    }

    public ArrayList<Product> getCartItem() {
        return cartItem;
    }

    public int totalCartPrice(){
        int sum =0;
        for (int a=0; a<cartItem.size(); a++){
            sum += cartItem.get(a).getPrice();
        }return sum;
    }

  //  String addedNamePrice;
    StringBuilder addedNamePrice = new StringBuilder();
    public String showCart(){
        for (int a=0; a<cartItem.size();a++){
            addedNamePrice.append(cartItem.get(a).getName()).append(" | ").append(cartItem.get(a).getPrice()).append("원\n");

        }return addedNamePrice.toString();
    }

}

 

 

Main

package Practic;

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

public class Main {
    public static void main(String[] args) {

        //메뉴
        Menu coffee = new Menu("커피", "커피 샷이 들어간 음료");
        Menu softdrink = new Menu("탄산음료", "탄산이 들어간 음료");
        ArrayList<Menu> menuList = new ArrayList<>();
        menuList.add(coffee);
        menuList.add(softdrink);


        Menu order = new Menu("주문하기", "장바구니를 확인 후 주문합니다.");
        Menu cancel = new Menu("취소하기", "진행중인 주문을 취소합니다.");

        //커피
        Product americano = new Product("커피", "아메리카노", "커피 음료", 3800);
        Product cafelatte = new Product("커피", "카페라떼", "우유에 샷이 들어간 커피 음료", 4500);
        Product cafemocha = new Product("커피", "카페모카", "초코맛이 나는 커피 음료", 4000);

        //탄산음료
        Product kola = new Product("탄산음료", "콜라", "검정색 탄산음료", 2000);
        Product sprite = new Product("탄산음료", "사이다", "무색 탄산음료", 2000);
        Product lemonade = new Product("탄산음료", "레몬에이드", "레몬맛 탄산음료", 4000);

        //커피 이름 카테고리에 담기
        ArrayList<Product> products = new ArrayList<>();
        products.add(americano);
        products.add(cafelatte);
        products.add(cafemocha);
        products.add(kola);
        products.add(sprite);
        products.add(lemonade);

        //ArrayList<Product> cart = new ArrayList<>();
        Cart cart = new Cart();


        //메뉴 선택, 세부메뉴 출력
        Scanner sc = new Scanner(System.in);


        while (true) {  //취소시 메인 화면으로 돌아오도록
            //메뉴 선택하기
            System.out.println("[메뉴를 선택 해 주세요.]");
            for (int i = 0; i < menuList.size(); i++) {
                int index = i + 1;
                System.out.println(index + "." + menuList.get(i).getName() + " | " + menuList.get(i).getDescription());
            }

            // 주문하기/취소하기
            System.out.println("\t");
            System.out.println("[주문 / 취소]");
            System.out.println("3." + order.getName() + " | " + order.getDescription());
            System.out.println("4." + cancel.getName() + " | " + cancel.getDescription());

            int choice = sc.nextInt();

            List<Product> selectedList = new ArrayList<>();

            if (choice <= 2) {
                String category = menuList.get(choice - 1).getName(); //커피 or 탄산 출력
                for (int i = 0; i < products.size(); i++) {
                    Product targetProduct = products.get(i);  //커피와 탄산음료 전체를 출력
                    String targetCategory = targetProduct.getCategory();
                    if (category.equals(targetCategory)) {
                        selectedList.add(targetProduct);
                    }
                }
                System.out.println("[" + category + "]");
                for (int i = 0; i < selectedList.size(); i++) {
                    int index = i + 1;
                    System.out.println(index + "." + selectedList.get(i).getName() + " | " +
                            selectedList.get(i).getPrice() + "원  | " +
                            selectedList.get(i).getDescription());

                }

            } else if (choice == 3) {
                //장바구니 출력
                List<Product> cartItem = cart.getCartItem();
                System.out.println("주문 메뉴:");
                System.out.println(cart.showCart());

                System.out.println("");
                int totalPrice = cart.totalCartPrice();
                System.out.println("총 결제금액:" + totalPrice + "원");

            } else if (choice == 4) {
                cart.clearCart();
                System.out.println("주문이 취소되었습니다.\n");
                continue;
            }

            //음료명 입력
            int choice2 = sc.nextInt();
            int c2 = choice2 - 1;

            String choice2name = selectedList.get(c2).getName();//세부 음료 이름 출력

            for (int i = 0; i < selectedList.size(); i++) {
                //선택헌 음료 출력
                if (choice2name.equals(selectedList.get(i).getName())) {
                    System.out.println(selectedList.get(i).getName() + " | " +
                            selectedList.get(i).getPrice() + "원" + " | " +
                            selectedList.get(i).getDescription() + "\n");

                    //메뉴 선택/취소
                    System.out.println("위 메뉴를 장바구니에 추가하시겠습니까?");
                    System.out.println("1. 확인");
                    System.out.println("2. 취소");

                    int select = sc.nextInt();
                    if (select == 1) {
                        // 장바구니 담기
                        cart.addCart(selectedList.get(c2));
                        System.out.println(selectedList.get(c2).getName() + "가 장바구니에 추가되었습니다.\n");


                    } else if (select == 2) {
                        System.out.println("주문이 취소되었습니다.");
                        break;
                    }
                }
            }

        }
    }
}



 

 


 

 

나의 첫 자바 프로젝트를 제출했다 ㅠㅠㅠㅠ후엥

튜터님과 팀원들이 정말 많이 도와주셨다....

 

일주일동안 급하게 강의들으면서 다양한 메소드, 개념, 정의를

머리에 쑤셔넣는 느낌이라

머리속에서 다 뒤섞이고 난리도 아니었지만

프로젝트를 하면서 조금씩 다시 이해하고 쓸 수 있게 된 느낌이다

 

특히 ArrayList를 쓸 줄 알게 되었고,

클래스를 어떻게 나눠야하는지 조금씩 감이 잡혔다.

너무 천천히 늘고 있는 것 같지만

어쨋든 먼가는 배우고 있다는거에 만족하기로 했다..ㅎㅎ

 

담 프로젝트도 화 이 팅....