Skip to content

miggule2/Kiosk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

37 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ν‚€μ˜€μŠ€ν¬ λ―Έλ‹ˆ ν”„λ‘œμ νŠΈ

λͺ©μ 

  • μžλ°” κ°•μ˜μ—μ„œ 배운 λ‚΄μš©(클래슀, 상속, λ‹€ν˜•μ„±, OCP원칙 λ“±)κ³Ό 같은 λ‚΄μš©μ„ 직접 ν™œμš©ν•΄λ³΄κΈ° μœ„ν•¨.

클래슀

Menu

  • Dessert와 Coffee 메뉴 클래슀λ₯Ό ν•œ λ²ˆμ— λ§Œλ“€κΈ° μœ„ν•œ λΆ€λͺ¨ 좔상 클래슀
  • λ‹€λ₯Έ ν΄λž˜μŠ€μ—μ„œ 메뉴λ₯Ό ν•œ λ²ˆμ— μ²˜λ¦¬ν•˜κΈ° 쉽도둝 λ‹€ν˜•μ„±μ„ ν™œμš©ν•  수 있게 함.
  • ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ ν•„μˆ˜μ μœΌλ‘œ λ§Œλ“€μ–΄μ•Όν•˜λŠ” λ©”μ„œλ“œλ₯Ό μœ„ν•΄ 좔상 λ©”μ„œλ“œ 생성(getPrice, getCategoryName)
  package menu;
  
  public abstract class Menu {
      private final String name;
      private final String description;
  
      public Menu(String categoryName){
          if(categoryName.equals("coffee")) {
              this.name = categoryName;
              this.description = "ν˜„λŒ€μΈμ˜ 3λŒ€ μ˜μ–‘μ†Œ μΉ΄νŽ˜μΈμ„ μ±™κΈ°μ„Έμš”!";
          }
          else if(categoryName.equals("dessert")){
              this.name = categoryName;
              this.description = "λ‹¬λ‹€κ΅¬λ¦¬ν•œ λ””μ €νŠΈλ‘œ μ—¬λŸ¬λΆ„λ“€μ˜ λ°°λ•Œμ§€λ₯Ό μ±„μš°μ„Έμš”";
          }
          else{
              this.name = categoryName;
              this.description = "";
          }
      }
  
      public String getName() {
          return name;
      }
  
      public String getDescription() {
          return description;
      }
  
      public abstract int getPrice();
      public abstract String getCategoryName();
      public void show(){
          System.out.println(name + " | " + description);
      }
  
      public static boolean isValidCategory(String categoryName){
          return categoryName.equals("coffee") || categoryName.equals("dessert");
      }
  
      public static boolean isItCoffee(String categoryName){
          return categoryName.equals("coffee");
      }
  
      public static boolean isItDessert(String categoryName){
          return categoryName.equals("dessert");
      }
  }

Coffee, Dessert 클래슀

  • Menuλ₯Ό μƒμ†λ°›λŠ” μ„ΈλΆ€ 메뉴 ν΄λž˜μŠ€λ“€
package menu;

public class Coffee extends Menu {
    private final String name;
    private final String description;
    private final int price;
    private int shot = 2;

    public Coffee(String categoryName,String name, String description, int price) {
        super(categoryName);
        this.name = name;
        this.description = description;
        this.price = price;
  슀
```JAVA
import java.util.Scanner;
import menu.*;
import menustore.*;
import shoppingcart.*;

public class Kiosk {
    private final Scanner sc = new Scanner(System.in);
    private final MenuStore menuStore = new MenuStore();
    private final ShoppingCart shoppingCart = new ShoppingCart(menuStore);

    //
    public void addMenu(){
        String categoryName = userCategoryInput();
        String menuName = userMenuNameInput("μΆ”κ°€");
        String menuDescription = userDescriptionInput();
        int price = userPriceInput();
        int sugarRate = -1;
        if(Menu.isItDessert(categoryName)){
            sugarRate = userSugarRateInput();
        }

        menuStore.addMenu(categoryName,menuName,menuDescription,price,sugarRate);
    }

    public void removeMenu(){
        String menuName = userMenuNameInput("μ‚­μ œ");
        menuStore.removeMenu(menuName);
    }

    public void printMenuStore(){
        menuStore.printMenu();
    }

    public void addShoppingCartMenu(){
        printMenuStore();
        String menuName = userMenuNameInput("μΆ”κ°€");
        int num = userMenuNumInput("μˆ˜λŸ‰");
        shoppingCart.add(menuName,num);
    }

    public void removeShoppingCartMenu(){
        String menuName = userMenuNameInput("μ‚­μ œ");
        shoppingCart.removeItem(menuName);
    }

    public void printShoppingCart(){
        shoppingCart.show();
    }

    public void modifyQuantityShoppingCartMenu(){
        String menuName = userMenuNameInput("μˆ˜μ •");
        int quantity = userMenuNumInput("μˆ˜λŸ‰λ³€κ²½");
        shoppingCart.modifyQuantity(menuName,quantity);
    }

    public void modifyShotShoppingCartMenu(String menuName){
        int shot = userMenuNumInput("μƒ·");
        shoppingCart.modifyShot(menuName,shot);
    }

    public void modifySugarRateShoppingCartMenu(String menuName){
        int sugarRate = userMenuNumInput("당도");
        shoppingCart.modifySugarRate(menuName,sugarRate);
    }

    public void userInterface(){
        String input;
        boolean flag = false;

        while(true) {
            System.out.println("μ›ν•˜μ‹œλŠ” κΈ°λŠ₯을 μ„ νƒν•˜μ„Έμš”");
            System.out.println("1. μž₯λ°”κ΅¬λ‹ˆμ— 메뉴 μΆ”κ°€");
            System.out.println("2. μž₯λ°”κ΅¬λ‹ˆμ—μ„œ 메뉴 μ‚­μ œ");
            System.out.println("3. μž₯λ°”κ΅¬λ‹ˆ μˆ˜λŸ‰ λ³€κ²½");
            System.out.println("4. 메뉴 세뢀사항 μˆ˜μ •");
            System.out.println("5. μž₯λ°”κ΅¬λ‹ˆ 보기");
            System.out.print("λ‹Ήμ‹ μ˜ 선택은?(μ£Όμ–΄μ§„ 메뉴 쀑 숫자둜 μž…λ ₯ν•˜μ„Έμš”, μ’…λ£Œμ‹œ exitμž…λ ₯)");
            input = sc.nextLine();

            switch(input){
                case "1" : addShoppingCartMenu(); break;
                case "2" : removeShoppingCartMenu(); break;
                case "3" : modifyQuantityShoppingCartMenu(); break;
                case "4" : {
                    String modifyMenuName = userMenuNameInput("μˆ˜μ •");
                    Menu menu = menuStore.findMenu(modifyMenuName);
                    if(menu == null) {
                        System.out.println("μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 메뉴");
                        break;
                    }
                    if(Menu.isItCoffee(menu.getCategoryName())){
                        modifyShotShoppingCartMenu(modifyMenuName);
                    } else {
                        modifySugarRateShoppingCartMenu(modifyMenuName);
                    }
                } break;
                case "5" : printShoppingCart();break;

                case "987654321" : {
                    String onerInput;
                    while(true) {
                        boolean onerFlag = false;
                        System.out.println("메뉴 κ΄€λ ¨ κΈ°λŠ₯ 선택(μ’…λ£Œν•˜λ €λ©΄ exitλ₯Ό μž…λ ₯ν•˜μ„Έμš”");
                        System.out.println("1. 메뉴 μΆ”κ°€");
                        System.out.println("2. 메뉴 μ‚­μ œ");
                        System.out.println("3. 전메뉴 좜λ ₯");
                        System.out.print("선택:");
                        onerInput = sc.nextLine();

                        switch(onerInput){
                            case "1" : addMenu(); break;
                            case "2" : removeMenu(); break;
                            case "3" : printMenuStore(); break;
                            case "exit" : onerFlag = true; break;
                            default :
                                System.out.println("λ‹€μ‹œ μž…λ ₯해라"); break;
                        }
                        if(onerFlag) break;
                    }
                } break;

                case "exit": flag = true; break;

                default :
                    System.out.println("잘λͺ»λœ μž…λ ₯"); break;
            }
            if(flag) break;
        }
    }

    private String userCategoryInput(){
        String categoryName;
        while(true){
            System.out.print("μΆ”κ°€ν•˜κ³  싢은 λ©”λ‰΄μ˜ μΉ΄ν…Œκ³ λ¦¬λ₯Ό μ •ν•΄μ£Όμ„Έμš”(coffee ν˜Ήμ€ dessert): ");
            categoryName = sc.nextLine();

            if(Menu.isValidCategory(categoryName)) break;
            System.out.println("λ‹€μ‹œ λ˜‘λ°”λ‘œ 생각해봐라");
            System.out.println();
        }
        return categoryName;
    }

    private String userMenuNameInput(String option){
        String menuName = null;
        while(true){
            switch(option){
                case("μΆ”κ°€") :
                    System.out.print("μΆ”κ°€ν•˜κ³ μž ν•˜λŠ” 메뉴λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”: ");
                    break;
                case("μ‚­μ œ") :
                    System.out.print("μ‚­μ œν•˜κ³ μž ν•˜λŠ” 메뉴을 μž…λ ₯ν•΄μ£Όμ„Έμ˜€: ");
                    break;
                case("μˆ˜μ •") :
                    System.out.print("μˆ˜μ •ν•˜κ³ μž ν•˜λŠ” 메뉴을 μž…λ ₯ν•΄μ£Όμ„Έμš”: ");
                    break;
                default:
                    break;
            }
            menuName = sc.nextLine();

            if(!(menuName == null)) break;
            userInputError();
            System.out.println();
        }
        return menuName;
    }

    private String userDescriptionInput(){
        System.out.print("λ©”λ‰΄μ˜ μ„€λͺ…을 μ μ–΄μ£Όμ„Έμš”: ");
        return sc.nextLine();
    }

    private int userPriceInput(){
        String stringPrice = null;
        int price = 0;
        while(true){
            System.out.print("λ©”λ‰΄μ˜ 가격을 μ •ν•΄μ£Όμ„Έμš”: ");
            stringPrice = sc.nextLine();
            if(isItNum(stringPrice)){
                price = Integer.parseInt(stringPrice);
                if(!isItNaturalNumber(price)){
                    System.out.println("μ–‘μˆ˜λ‘œ λ‹€μ‹œ μž…λ ₯해라;;");
                }
                else break;
            } else{
                System.out.println("숫자둜 λ‹€μ‹œ μž…λ ₯해라");
            }
        }
        return price;
    }

    private int userSugarRateInput(){
        System.out.print("당도λ₯Ό κ²°μ •ν•˜μ„Έμš”: ");
        int sugarRate = sc.nextInt(); sc.nextLine();
        return sugarRate;
    }

    private void userInputError(){
        System.out.println("λ‹€μ‹œ μž…λ ₯ν•΄μ£Όμ„Έμš”");
    }

    private int userMenuNumInput(String option){
        switch(option){
            case("μˆ˜λŸ‰") :
                System.out.print("μΆ”κ°€ν•˜κ³  싢은 μˆ˜λŸ‰μ„ μž…λ ₯ν•˜μ„Έμš”");
                break;
            case("μˆ˜λŸ‰λ³€κ²½") :
                System.out.print("μΆ”κ°€ν•˜κ±°λ‚˜ λœμ–΄λ‚΄κ³  싢은 μˆ˜λŸ‰μ„ μž…λ ₯ν•˜μ„Έμš”: ");
                break;
            case("μƒ·") :
                System.out.print("μˆ˜μ •ν•  μƒ· 수λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”: "); break;
            case("당도") :
                System.out.print("μˆ˜μ •ν•  당도λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”: "); break;
            default : break;
        }
        return Integer.parseInt(sc.nextLine());
    }

    private boolean isItNum(String num){
        return num.matches("[+-]?\\d*(\\.\\d+)?");
    }

    private boolean isItNaturalNumber(int num){
        return (num > 0);
    }

}

λŠλ‚€μ 

  • 였λ₯˜μ²˜λ¦¬(숫자만 μž…λ ₯λ°›κΈ°,

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors