Skip to content

balsohn/Kiosk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

26 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ” ์‰์ดํฌ์‰‘ ํ‚ค์˜ค์Šคํฌ ํ”„๋กœ์ ํŠธ

๐Ÿ“‹ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

์ž๋ฐ”๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‰์ดํฌ์‰‘ ํ–„๋ฒ„๊ฑฐ ํ‚ค์˜ค์Šคํฌ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ๋ฉ”๋‰ด ์„ ํƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™์„ ์ ์šฉํ•˜๊ณ , ์บก์Аํ™”, ํด๋ž˜์Šค ๊ฐ„ ํ˜‘๋ ฅ ๋“ฑ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ ๊ฐœ๋…์„ ์ ์šฉํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹จ๊ณ„์ ์œผ๋กœ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๋ฉฐ ์ž๋ฐ”์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™์„ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ ๊ฐœ๋ฐœ ๊ณผ์ • ๋ฐ ๊ณ ๋ฏผ

์ฒซ ์‹œ์ž‘: ๊ธฐ๋ณธ ํ‚ค์˜ค์Šคํฌ ๊ตฌํ˜„

์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํžˆ ๋ฉ”๋‰ด๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ํ‚ค์˜ค์Šคํฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค ํŒŒ์ผ์— ์žˆ์—ˆ๊ณ , ๊ตฌ์กฐํ™”๋˜์ง€ ์•Š์•˜์ง€๋งŒ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์€ ๋™์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

// ์ฒ˜์Œ ๊ตฌํ˜„ํ–ˆ๋˜ ๋‹จ์ˆœํ•œ ๋ฐฉ์‹
Scanner scanner = new Scanner(System.in);
System.out.println("[ SHAKESHACK MENU ]");
System.out.println("1. ShackBurger | W 6.9 | ํ† ๋งˆํ† , ์–‘์ƒ์ถ”, ์‰‘์†Œ์Šค๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ");
// ... ๋ฉ”๋‰ด ์ถœ๋ ฅ ์ฝ”๋“œ

๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์ ์šฉ

์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง€๊ณ  ๋ณต์žกํ•ด์ง€๋ฉด์„œ ์œ ์ง€๋ณด์ˆ˜์˜ ์–ด๋ ค์›€์„ ๋А๊ผˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด MenuItem ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋ฉ”๋‰ด ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

// MenuItem ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ๋ฉ”๋‰ด ์ •๋ณด ์บก์Аํ™”
public class MenuItem {
    private String name;
    private double price;
    private String description;
    
    // ์ƒ์„ฑ์ž, getter, setter ๋“ฑ
}

๊ตฌ์กฐ ๊ฐœ์„ ๊ณผ ์ฑ…์ž„ ๋ถ„๋ฆฌ

๋ฉ”๋‰ด ํ‘œ์‹œ์™€ ์ž…๋ ฅ ์ฒ˜๋ฆฌ ๋“ฑ ๋ชจ๋“  ๋กœ์ง์ด Main ํด๋ž˜์Šค์— ์žˆ๋Š” ๊ฒƒ์ด ๋น„ํšจ์œจ์ ์ด๋ผ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‚ค์˜ค์Šคํฌ ๋™์ž‘์„ ๋‹ด๋‹นํ•˜๋Š” Kiosk ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

// Kiosk ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ํ‚ค์˜ค์Šคํฌ ๋™์ž‘ ๋กœ์ง ๋ถ„๋ฆฌ
public class Kiosk {
    private List<MenuItem> menuItems;
    
    public void start() {
        // ํ‚ค์˜ค์Šคํฌ ์‹คํ–‰ ๋กœ์ง
    }
    
    // ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋“ค...
}

๊ณ„์ธต์  ๋ฉ”๋‰ด ๊ตฌ์กฐ ๋„์ž…

์‹ค์ œ ํ‚ค์˜ค์Šคํฌ์ฒ˜๋Ÿผ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋ฉ”๋‰ด ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. Menu ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด '๋ฒ„๊ฑฐ', '์Œ๋ฃŒ', '๋””์ €ํŠธ' ๋“ฑ์˜ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ , ๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ ์•ˆ์— ๋ฉ”๋‰ด ํ•ญ๋ชฉ์„ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

// Menu ํด๋ž˜์Šค๋ฅผ ํ†ตํ•œ ์นดํ…Œ๊ณ ๋ฆฌ ๊ตฌํ˜„
public class Menu {
    private String name;  // ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฆ„ (์˜ˆ: "Burgers")
    private List<MenuItem> menuItems;
    
    // ๋ฉ”์„œ๋“œ๋“ค...
}

์บก์Аํ™” ์›์น™ ์ ์šฉ

ํ”„๋กœ๊ทธ๋žจ์ด ์ปค์ง€๋ฉด์„œ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ์™€ ์ผ๊ด€์„ฑ ์œ ์ง€๊ฐ€ ์ค‘์š”ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํด๋ž˜์Šค์˜ ํ•„๋“œ๋ฅผ private์œผ๋กœ ์„ ์–ธํ•˜๊ณ , getter/setter ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผํ•˜๋„๋ก ์บก์Аํ™” ์›์น™์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”๋‰ด ์ด๋ฆ„์„ ์ผ์ •ํ•œ ๊ธธ์ด๋กœ ๋งž์ถ”๊ธฐ ์œ„ํ•œ formatName ๋ฉ”์„œ๋“œ๋„ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ์ด๋Š” ์ถœ๋ ฅ์„ ๊น”๋”ํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

private String formatName(String name) {
    int length = 16;
    if (name.length() >= length) {
        return name;
    }

    for (int i = name.length(); i < length; i++) {
        name += " ";
    }
    return name;
}

์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์‹ค์ œ ํ‚ค์˜ค์Šคํฌ์ฒ˜๋Ÿผ ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜๊ณ  ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๋Š” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. Cart ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ๋ฉ”๋‰ด ํ•ญ๋ชฉ์„ ๊ด€๋ฆฌํ•˜๊ณ , ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ์™€ ์ทจ์†Œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

// Cart ํด๋ž˜์Šค๋ฅผ ํ†ตํ•œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ด€๋ฆฌ
public class Cart {
    private List<CartItem> items;

    public void addItem(MenuItem menuItem) {
        // ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์•„์ดํ…œ ์ถ”๊ฐ€ ๋กœ์ง
    }

    public double calculateTotal() {
        // ์ด์•ก ๊ณ„์‚ฐ ๋กœ์ง
    }

    public void clearCart() {
        // ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋น„์šฐ๊ธฐ
    }
}

Enum์„ ํ™œ์šฉํ•œ ์‚ฌ์šฉ์ž ์œ ํ˜•๋ณ„ ํ• ์ธ์œจ ๊ด€๋ฆฌ

์‚ฌ์šฉ์ž ์œ ํ˜•(๊ตญ๊ฐ€์œ ๊ณต์ž, ๊ตฐ์ธ, ํ•™์ƒ, ์ผ๋ฐ˜์ธ)์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ• ์ธ์œจ์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด Enum์„ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€์ ์ธ ์‚ฌ์šฉ์ž ์œ ํ˜•์ด ์ƒ๊ฒจ๋„ ์‰ฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

// UserType Enum์„ ํ†ตํ•œ ํ• ์ธ์œจ ๊ด€๋ฆฌ
public enum UserType {
    VETERAN("๊ตญ๊ฐ€์œ ๊ณต์ž", 0.1),    // ๊ตญ๊ฐ€์œ ๊ณต์ž 10% ํ• ์ธ
    SOLDIER("๊ตฐ์ธ", 0.05),         // ๊ตฐ์ธ 5% ํ• ์ธ
    STUDENT("ํ•™์ƒ", 0.03),         // ํ•™์ƒ 3% ํ• ์ธ
    GENERAL("์ผ๋ฐ˜์ธ", 0.0);        // ์ผ๋ฐ˜์ธ 0% ํ• ์ธ

    private String description;
    private double discountRate;

    UserType(String description, double discountRate) {
        this.description = description;
        this.discountRate = discountRate;
    }

    // ํ• ์ธ ์ •๋ณด ์ถœ๋ ฅ ๋ฐ ์‚ฌ์šฉ์ž ์œ ํ˜• ์„ ํƒ ๋ฉ”์„œ๋“œ
    public static void discountInfo() {
        System.out.println("ํ• ์ธ ์ •๋ณด๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”.");
        int index = 1;
        for (UserType type : values()) {
            System.out.printf("%d. %s : %.0f%%\n", index++, type.description, type.discountRate * 100);
        }
    }
}

๋žŒ๋‹ค์™€ ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•œ ์ฝ”๋“œ ๊ฐœ์„ 

์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ด€๋ฆฌ, ๋ฉ”๋‰ด ์ถœ๋ ฅ, ๊ฐ€๊ฒฉ ๊ณ„์‚ฐ ๋“ฑ์˜ ๊ธฐ๋Šฅ์— ๋žŒ๋‹ค์™€ ์ŠคํŠธ๋ฆผ์„ ์ ์šฉํ•˜์—ฌ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ํšจ์œจ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.

// ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ฐ€๊ฒฉ ๊ณ„์‚ฐ
public double calculateTotal() {
    return cartItems.stream()
            .mapToDouble(item -> item.getMenuItem().getPrice() * item.getQuantity())
            .sum();
}

// ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•œ ํŠน์ • ๋ฉ”๋‰ด ์ œ๊ฑฐ
public void removeItem(String menuName) {
    cartItems = cartItems.stream()
            .filter(item -> !item.getMenuItem().getName().equals(menuName))
            .collect(Collectors.toList());
}

// ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•œ ๋ฉ”๋‰ด ์ถœ๋ ฅ
IntStream.range(0, menuItems.size())
    .forEach(i -> {
        MenuItem item = menuItems.get(i);
        String formatName = formatName(item.getName());
        System.out.println((i + 1) + ". " + formatName + " | W " + item.getPrice() + " | " + item.getDescription());
    });

๐Ÿ’ก ์ฃผ์š” ๊ธฐ๋Šฅ

๋ฉ”๋‰ด ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

  • ๋ฒ„๊ฑฐ, ์Œ๋ฃŒ, ๋””์ €ํŠธ ๋“ฑ ๋‹ค์–‘ํ•œ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋ฉ”๋‰ด ๊ด€๋ฆฌ
  • ๊ฐ ๋ฉ”๋‰ด ํ•ญ๋ชฉ์˜ ์ด๋ฆ„, ๊ฐ€๊ฒฉ, ์„ค๋ช… ์ •๋ณด ์ €์žฅ ๋ฐ ์ถœ๋ ฅ
  • ๊ณ„์ธต์  ๋ฉ”๋‰ด ๊ตฌ์กฐ๋ฅผ ํ†ตํ•œ ์ง๊ด€์ ์ธ ํƒ์ƒ‰

์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค

  • ๋ฉ”์ธ ๋ฉ”๋‰ด์™€ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํ•˜์œ„ ๋ฉ”๋‰ด ์ œ๊ณต
  • ๋ฉ”๋‰ด ์„ ํƒ ๋ฐ ๋’ค๋กœ๊ฐ€๊ธฐ ๊ธฐ๋Šฅ
  • ์ถœ๋ ฅ ํฌ๋งทํŒ…์„ ํ†ตํ•œ ์ •๋ˆ๋œ UI

๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„

  • ํด๋ž˜์Šค ๊ฐ„ ์ฑ…์ž„ ๋ถ„๋ฆฌ๋กœ ์ฝ”๋“œ ๊ด€๋ฆฌ ์šฉ์ด
  • ์บก์Аํ™”๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ
  • ํ™•์žฅ์„ฑ์„ ๊ณ ๋ คํ•œ ๊ตฌ์กฐ ์„ค๊ณ„

์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฐ ์ฃผ๋ฌธ ์‹œ์Šคํ…œ

  • ์„ ํƒํ•œ ๋ฉ”๋‰ด๋ฅผ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ
  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‚ด์—ญ ํ™•์ธ ๋ฐ ๊ด€๋ฆฌ
  • ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ๋ฐ ๊ฒฐ์ œ ๊ธฐ๋Šฅ
  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋น„์šฐ๊ธฐ ๋ฐ ์ฃผ๋ฌธ ์ทจ์†Œ ๊ธฐ๋Šฅ

์‚ฌ์šฉ์ž ์œ ํ˜•๋ณ„ ํ• ์ธ ์‹œ์Šคํ…œ

  • Enum์„ ํ™œ์šฉํ•œ ์‚ฌ์šฉ์ž ์œ ํ˜• ๊ด€๋ฆฌ(๊ตญ๊ฐ€์œ ๊ณต์ž, ๊ตฐ์ธ, ํ•™์ƒ, ์ผ๋ฐ˜์ธ)
  • ๊ฐ ์‚ฌ์šฉ์ž ์œ ํ˜•๋ณ„ ๋‹ค๋ฅธ ํ• ์ธ์œจ ์ ์šฉ
  • ์ฃผ๋ฌธ ์‹œ ์‚ฌ์šฉ์ž ์œ ํ˜• ์„ ํƒ ๋ฐ ํ• ์ธ๋œ ๊ฐ€๊ฒฉ ๊ณ„์‚ฐ

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ ์šฉ

  • ๋žŒ๋‹ค์™€ ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•œ ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ ์ž‘์„ฑ
  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ ํ•ญ๋ชฉ ํ•„ํ„ฐ๋ง ๋ฐ ๊ฐ€๊ฒฉ ๊ณ„์‚ฐ์— ์ŠคํŠธ๋ฆผ API ํ™œ์šฉ
  • ๋ฉ”๋‰ด ์ถœ๋ ฅ ๋ฐ ํฌ๋งทํŒ…์— ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ ์šฉ

๐Ÿš€ ์‹œ์—ฐ ์˜ˆ์‹œ

๊ธฐ๋ณธ ๋ฉ”๋‰ด ํƒ์ƒ‰

[ MAIN MENU ]
1. Burgers
2. Drinks
3. Desserts
0. ์ข…๋ฃŒ | ์ข…๋ฃŒ
๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜์„ธ์š”: 1

[ BURGERS MENU ]
1. ShackBurger    | W 6.9 | ํ† ๋งˆํ† , ์–‘์ƒ์ถ”, ์‰‘์†Œ์Šค๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ
2. SmokeShack     | W 8.9 | ๋ฒ ์ด์ปจ, ์ฒด๋ฆฌ ํŽ˜ํผ์— ์‰‘์†Œ์Šค๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ
3. Cheeseburger   | W 6.9 | ํฌํ…Œ์ดํ†  ๋ฒˆ๊ณผ ๋น„ํ”„ํŒจํ‹ฐ, ์น˜์ฆˆ๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ
4. Hamburger      | W 5.4 | ๋น„ํ”„ํŒจํ‹ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•ผ์ฑ„๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ธฐ๋ณธ๋ฒ„๊ฑฐ
0. ๋’ค๋กœ๊ฐ€๊ธฐ
๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜์„ธ์š”: 2

์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ถ”๊ฐ€ ๋ฐ ์ฃผ๋ฌธ

์„ ํƒํ•œ ๋ฉ”๋‰ด: SmokeShack | W 8.9 | ๋ฒ ์ด์ปจ, ์ฒด๋ฆฌ ํŽ˜ํผ์— ์‰‘์†Œ์Šค๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ

"SmokeShack | W 8.9 | ๋ฒ ์ด์ปจ, ์ฒด๋ฆฌ ํŽ˜ํผ์— ์‰‘์†Œ์Šค๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ"
์œ„ ๋ฉ”๋‰ด๋ฅผ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ถ”๊ฐ€ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
1. ํ™•์ธ        2. ์ทจ์†Œ
1

SmokeShack ์ด ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ๋ฉ”๋‰ดํŒ์„ ๋ณด์‹œ๊ณ  ๋ฉ”๋‰ด๋ฅผ ๊ณจ๋ผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.

[ MAIN MENU ]
1. Burgers
2. Drinks
3. Desserts
0. ์ข…๋ฃŒ      | ์ข…๋ฃŒ

[ ORDER MENU ]
4. Orders       | ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ํ™•์ธ ํ›„ ์ฃผ๋ฌธํ•ฉ๋‹ˆ๋‹ค.
5. Cancel       | ์ง„ํ–‰์ค‘์ธ ์ฃผ๋ฌธ์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.
4

์•„๋ž˜์™€ ๊ฐ™์ด ์ฃผ๋ฌธ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

[ Orders ]
SmokeShack | W 8.9 | ๋ฒ ์ด์ปจ, ์ฒด๋ฆฌ ํŽ˜ํผ์— ์‰‘์†Œ์Šค๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ

[ Total ]
W 8.9

1. ์ฃผ๋ฌธ      2. ๋ฉ”๋‰ดํŒ
1

ํ• ์ธ ์ •๋ณด๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”.
1. ๊ตญ๊ฐ€์œ ๊ณต์ž : 10%
2. ๊ตฐ์ธ     :  5%
3. ํ•™์ƒ     :  3%
4. ์ผ๋ฐ˜     :  0%
3

์ฃผ๋ฌธ์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธˆ์•ก์€ W 8.633 ์ž…๋‹ˆ๋‹ค.

๐Ÿ”ง ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •

๋ฉ”๋‰ด ์ถœ๋ ฅ ์ •๋ ฌ ๋ฌธ์ œ

๋ฉ”๋‰ด ํ•ญ๋ชฉ์˜ ์ด๋ฆ„ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅผ ๊ฒฝ์šฐ ์ถœ๋ ฅ์ด ์ž˜ ์ •๋ ฌ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด formatName ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ์ด๋ฆ„์ด ์ง€์ •๋œ ๊ธธ์ด๋ณด๋‹ค ์งง์œผ๋ฉด ๊ณต๋ฐฑ์„ ์ถ”๊ฐ€ํ•ด ์ผ์ •ํ•œ ๊ธธ์ด๊ฐ€ ๋˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ž…๋ ฅ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

์ฒ˜์Œ์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ”๋‰ด ๋ฒˆํ˜ธ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์ž…๋ ฅ์„ ํ–ˆ์„ ๋•Œ ํ”„๋กœ๊ทธ๋žจ์ด ์ถฉ๋Œํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ ๋กœ์ง์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

if (choice >= 1 && choice <= menus.size()) {
    // ์„ ํƒ๋œ ๋ฉ”๋‰ด ์ฒ˜๋ฆฌ
} else {
    System.out.println("๋ฉ”๋‰ด์˜ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.");
}

์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฌธ์ œ

์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ƒํ’ˆ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ฃผ๋ฌธ ๋ฉ”๋‰ด๋ฅผ ํ‘œ์‹œํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์žฅ๋ฐ”๊ตฌ๋‹ˆ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ–ˆ๊ณ , ์žฅ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ๋น„์–ด์žˆ์„ ๋•Œ ์ฃผ๋ฌธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค ํ•˜๋ฉด ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

if (cart.isEmpty() && (choice == 4 || choice == 5)) {
    System.out.println("์žฅ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”๋‰ด๋ฅผ ๋จผ์ € ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.");
    continue;
}

๋˜ํ•œ ์ฃผ๋ฌธ ์™„๋ฃŒ ํ›„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ๋น„์šฐ๋Š” ๊ธฐ๋Šฅ๋„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ• ์ธ์œจ ์ ์šฉ ๊ด€๋ฆฌ ๋ฌธ์ œ

์ฒ˜์Œ์—๋Š” ํ• ์ธ์œจ์„ ํ•˜๋“œ์ฝ”๋”ฉํ–ˆ์œผ๋‚˜, ํ™•์žฅ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๊ณ ๋ คํ•˜์—ฌ Enum์œผ๋กœ ๋ฆฌํŒฉํ† ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์œ ํ˜•์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ• ์ธ์œจ์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์ฝ”๋“œ ์ „์ฒด๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋„ Enum๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋˜๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”์„œ๋“œ ์ฒด์ด๋‹๊ณผ ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•œ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ๊ฐœ์„ 

์žฅ๋ฐ”๊ตฌ๋‹ˆ ํ•ญ๋ชฉ ๊ณ„์‚ฐ์ด๋‚˜ ํ•„ํ„ฐ๋ง ๋กœ์ง์ด ๋ณต์žกํ•ด์ง€๋ฉด์„œ for ๋ฃจํ”„์™€ if ๋ฌธ์ด ์ค‘์ฒฉ๋˜์–ด ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ŠคํŠธ๋ฆผ๊ณผ ๋žŒ๋‹ค ํ‘œํ˜„์‹์„ ํ™œ์šฉํ•˜์—ฌ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋กœ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“‚ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

ํ”„๋กœ์ ํŠธ๋Š” ๊ธฐ๋Šฅ๋ณ„๋กœ ํŒจํ‚ค์ง€๋ฅผ ๋‚˜๋ˆ„์–ด ๋‹จ๊ณ„๋ณ„๋กœ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค:

src/com/example/kiosk/
โ”œโ”€โ”€ level1/ - ๊ธฐ๋ณธ ์ฝ˜์†” ๋ฉ”๋‰ด ๊ตฌํ˜„
โ”œโ”€โ”€ level2/ - MenuItem ํด๋ž˜์Šค ๋„์ž…
โ”œโ”€โ”€ level3/ - Kiosk ํด๋ž˜์Šค๋กœ ์ฑ…์ž„ ๋ถ„๋ฆฌ
โ”œโ”€โ”€ level4/ - ๊ณ„์ธต์  ๋ฉ”๋‰ด ๊ตฌ์กฐ ์ถ”๊ฐ€
โ”œโ”€โ”€ level5/ - ์บก์Аํ™” ๊ฐ•ํ™” ๋ฐ ์ฝ”๋“œ ๊ตฌ์กฐ ๊ฐœ์„ 
โ”œโ”€โ”€ level6/ - ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฐ ์ฃผ๋ฌธ ์‹œ์Šคํ…œ ๊ตฌํ˜„
โ””โ”€โ”€ level7/ - Enum, ๋žŒ๋‹ค & ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•œ ์ฃผ๋ฌธ ๋ฐ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ด€๋ฆฌ

๐Ÿ”„ ๊ฐœ๋ฐœ ๋ ˆ๋ฒจ ๋ณ€ํ™”

  • Level 1: ๋‹จ์ˆœ ์ฝ˜์†” ์ถœ๋ ฅ๊ณผ ์‚ฌ์šฉ์ž ์ž…๋ ฅ๋งŒ ์ฒ˜๋ฆฌ
  • Level 2: MenuItem ํด๋ž˜์Šค๋กœ ๋ฉ”๋‰ด ์ •๋ณด ์บก์Аํ™”
  • Level 3: Kiosk ํด๋ž˜์Šค๋กœ ํ‚ค์˜ค์Šคํฌ ๊ด€๋ จ ๋กœ์ง ๋ถ„๋ฆฌ
  • Level 4: ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ ๋ฉ”๋‰ด ๊ตฌ์กฐ ๊ตฌํ˜„
  • Level 5: ์ ‘๊ทผ ์ œ์–ด์ž์™€ getter/setter ์ ์šฉํ•ด ์บก์Аํ™” ๊ฐ•ํ™”
  • Level 6: ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ์ฃผ๋ฌธ ํ”„๋กœ์„ธ์Šค ๊ตฌํ˜„
  • Level 7: Enum์„ ํ™œ์šฉํ•œ ์‚ฌ์šฉ์ž ์œ ํ˜•๋ณ„ ํ• ์ธ์œจ ๊ด€๋ฆฌ, ๋žŒ๋‹ค์™€ ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•œ ์ฝ”๋“œ ๊ฐœ์„ 

๐Ÿ’ป ์‹คํ–‰ ๋ฐฉ๋ฒ•

  1. ํ”„๋กœ์ ํŠธ๋ฅผ ํด๋ก ํ•ฉ๋‹ˆ๋‹ค.
  2. IDE์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  3. src/com/example/kiosk/level7/Main.java ํŒŒ์ผ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  4. ์ฝ˜์†” ์ฐฝ์—์„œ ํ‚ค์˜ค์Šคํฌ๋ฅผ ์กฐ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages