Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

42 changes: 42 additions & 0 deletions src/main/java/org/cafe/Kiosk.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package org.cafe;

public class Kiosk {
public static void main(String[] args) {
KioskSystem kioskSystem = new KioskSystem();
Order order = new Order();
kioskSystem.start();

while (kioskSystem.isActive()) {
kioskSystem.introduceFunction();
int number = kioskSystem.askNumber();
if (User.orders.size() == 5) {
if (number == 1) {
System.out.println("추가 주문이 불가능합니다. 결제해주세요!");
continue;
}
}

switch (number) {
case 1 -> {
kioskSystem.introduceMenu();
order.order();
if (User.orders.size() == 5) {
System.out.println("추가 주문이 불가능합니다.");
}
}
case 2 -> {
order.cancel();
}
case 3 -> {
order.pay();
}
case 4 -> {
order.close();
}
default -> {
order.faultNumber();
}
}
}
}
}
52 changes: 52 additions & 0 deletions src/main/java/org/cafe/KioskSystem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package org.cafe;

import java.util.Scanner;

public class KioskSystem {
private boolean isActive;

public KioskSystem() {
isActive = false;
}

public boolean isActive() {
return isActive;
}

public void start() {
System.out.println("주문을 시작합니다");
isActive = true;
}

public void end() {
System.out.println("주문을 끝냅니다");
isActive = false;
}

public void introduceFunction() {
System.out.println("☆★☆★ Talking CafeManager ☆★☆★");
System.out.println("1. 주문하기");
System.out.println("2. 취소하기");
System.out.println("3. 결제하기");
System.out.println("4. 끝내기");
System.out.print("몇 번을 선택하시겠습니까? ");
}

public void introduceMenu() {
System.out.println("1. 아메리카노\t3800원");
System.out.println("2. 에스프레소\t2400원");
System.out.println("3. 카페라떼\t4200원");
System.out.println("4. 밀크티\t5100원");
System.out.print("몇 번을 선택하시겠습니까? ");
}

public void faultValue() {
System.out.println("번호를 잘못 입력하셨습니다!");
}

public int askNumber() {
Scanner sc = new Scanner(System.in);
int value = sc.nextInt();
return value;
}
}
105 changes: 105 additions & 0 deletions src/main/java/org/cafe/Order.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package org.cafe;

import java.util.Iterator;
import java.util.Scanner;

public class Order implements OrderSystem {
String name;
int price;
int count = 0;
User user = User.getUser();
KioskSystem kioskSystem = new KioskSystem();

@Override
public void order() {
int number = kioskSystem.askNumber();
switch (number) {
case 1 -> {
name = "아메리카노";
price = 3800;
}
case 2 -> {
name = "에스프레소";
price = 2400;
}
case 3 -> {
name = "카페라떼";
price = 4200;
}
case 4 -> {
name = "밀크티";
price = 5100;
}
default -> {
kioskSystem.faultValue();
count--;
}

}
count++;
User.orders.add(count - 1, name);
System.out.println("현재 주문량: " + count);
user.total += price;
}

@Override
public void cancel() {
Iterator<String> iterator = User.orders.iterator();
while(iterator.hasNext()) {
String str = iterator.next();
System.out.println((User.orders.indexOf(str)+1) + ". " + str);
}
System.out.println("삭제할 메뉴번호를 적어주세요.");
int number;
do {
number = kioskSystem.askNumber();
if (number > User.orders.size()) {
System.out.println("삭제할 번호를 다시 입력하세요");
}
} while (number > User.orders.size());
//넘버, 빠지는 글자와 일치하는거 빼고, 가격도 뺀다.
String remove = User.orders.remove(number -1);
switch (remove) {
case "아메리카노" -> {
user.total -= 3800;
}
case "에스프레소" -> {
user.total -= 2400;
}
case "카페라떼" -> {
user.total -= 4200;
}
case "밀크티" -> {
user.total -= 5100;
}
}
count--;
System.out.println("현재 메뉴");
System.out.println(User.orders);
}

@Override
public void pay() {
Scanner scanner = new Scanner(System.in);
System.out.println(user.total + "원");
System.out.println("지불할 금액을 입력하세요.");
int paid = scanner.nextInt();
if (paid < user.total) {
System.out.println("금액이 부족합니다");
pay();
} else {
System.out.println("잔돈: " + (paid - user.total) + "원");
}
user.total = 0;
User.orders.clear();
}

public void close() {
kioskSystem.end();
System.exit(0);
}

public void faultNumber() {
System.out.println("잘못된 번호 입력입니다.");
}
}
10 changes: 10 additions & 0 deletions src/main/java/org/cafe/OrderSystem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.cafe;

public interface OrderSystem {
void order();

void cancel();

void pay();

}
24 changes: 24 additions & 0 deletions src/main/java/org/cafe/User.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.cafe;

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

public class User {
int total = 0;


private static User user = new User();

private User() {
}

public static User getUser() {
return user;
}


static List<String> orders = new ArrayList<>();



}