https://succulent-preface-302.notion.site/10533fdf7f66495fa361f4a182951e07
개인과제 정리
- 과제가 어려웠던 분들을 위해 최소한의 개념만 사용했습니다.
- 주말동안 아래 부분을 복습하시면 다음 과제인 메모장은 쉽게 작성하실 수 있을 것이라 생각됩니다.
- 자바의 정석 페이지
- 객체 p160~168
- 생성자 : p195 ~ 199
- 배열
- 배열 : p 169
- ArrayList : p. 395
- 추가 : add
- 배열의 크기 : size
- 배열 삭제 : clear
- for : 배열 출력 p. 110
- if : 조건식 p. 98~105
- 객체 p160~168
- 주의 사항
- 아래 과정을 차근차근히 꼭 여러번 반복 해보시고,
- 그 후에 다양한 기능이나, 기술을 추가해보시기를 권장 드립니다.
- 메서드를 이용한 리팩토링, 제네릭, 향상된 for, asList, 등
<aside> 💡 필수 요구사항
</aside>
- 메인 메뉴판 작성 & 상품 메뉴판 작성(간단 설명을 위해 상속은 사용하지 않음)
- 이름
- 설명
- 가격
"SHAKESHACK BURGER 에 오신걸 환영합니다."
아래 메뉴판을 보시고 메뉴를 골라 입력해주세요.
[ SHAKESHACK MENU ]
1. Burgers | 앵거스 비프 통살을 다져만든 버거
2. Forzen Custard | 매장에서 신선하게 만드는 아이스크림
3. Drinks | 매장에서 직접 만드는 음료
4. Beer | 뉴욕 브루클린 브루어리에서 양조한 맥주
[ ORDER MENU ]
5. Order | 장바구니를 확인 후 주문합니다.
6. Cancel | 진행중인 주문을 취소합니다.
- 상품 메뉴판 화면
"SHAKESHACK BURGER 에 오신걸 환영합니다."
아래 메뉴판을 보시고 메뉴를 골라 입력해주세요.
[ SHAKESHACK MENU ]
1. Burgers | 앵거스 비프 통살을 다져만든 버거
2. Forzen Custard | 매장에서 신선하게 만드는 아이스크림
3. Drinks | 매장에서 직접 만드는 음료
4. Beer | 뉴욕 브루클린 브루어리에서 양조한 맥주
[ ORDER MENU ]
5. Order | 장바구니를 확인 후 주문합니다.
6. Cancel | 진행중인 주문을 취소합니다.
"Hamburger | W 5.4 | 비프패티를 기반으로 야채가 들어간 기본버거"
위 메뉴를 장바구니에 추가하시겠습니까?
1. 확인 2. 취소
- 구매 화면
"Hamburger | W 5.4 | 비프패티를 기반으로 야채가 들어간 기본버거"
위 메뉴를 장바구니에 추가하시겠습니까?
1. 확인 2. 취소
- 주문 화면
아래와 같이 주문 하시겠습니까?
[ Orders ]
ShackBurger | W 6.9 | 토마토, 양상추, 쉑소스가 토핑된 치즈버거
SmokeShack | W 8.9 | 베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거
[ Total ]
W 15.8
1. 주문 2. 메뉴판
- 주문 완료 화면
주문이 완료되었습니다!
대기번호는 [ 1 ] 번 입니다.
(3초후 메뉴판으로 돌아갑니다.)
- 주문 취소 화면
진행하던 주문을 취소하시겠습니까?
1. 확인 2. 취소
<aside> 💡 자바의 정석 정리
</aside>
1. 메인 메뉴판
- 객체
- 이름, 설명, 가격을 갖는 클래스를 생성합니다.
- p160 ~ 168
- 매개변수가 있는 생성자를 설정합니다.
- p195 ~ 199
- 이름, 설명, 가격을 갖는 클래스를 생성합니다.
- 객체 배열 생성 : p 169
- 배열에 객체를 입력하면서, 생성자를 통해 초기값을 넣어줍니다.
- 생성한 객체 배열 출력해서 확인합니다.
- for : p. 110
2. 상품메뉴판
- 위 과정을 반복해서 상품 메뉴판도 만들어줍니다.
- 각각의 상품 메뉴로 들어가기 위해
- scanner p.61
- if : p. 98~105
- 숫자를 누르면 해당 메뉴가 출력되는 형식 입니다.
3. 구매 화면 (위와 반복)
- 화면으로부터 입력받기 : p61
- 숫자 입력시 특정한 메뉴만 출력니다.
장바구니 추가하기
- 확인 입력시
- 위에 출력된 배열을 다른 배열로 옮겨서 저장합니다.
- 알고리즘에서 배운 ArrayList를 사용합니다. p395
- orderList 생성
- orderList에 배열 저장하기
- 취소 입력시
- 저장되지 않습니다.
4. 주문 화면
- for를 이용해서, orderList를 출력해봅니다.
- 연산자를 이용해서 총합 total을 구현합니다.
- 총합 total은 while 밖에서 정의합니다.
- if를 이용해서
- 주문
- orderList.clear();
- 메뉴판
- 주문
5. 주문 완료 화면
- 4번에서 계속 이어집니다.
- 주문 선택시 clear를 이용해 orderList를 초기화 합니다.
- 대기번호는 count를 사용
- int count는 while문 밖에서 정의하기
6. 주문 취소 화면
- if
- orderList.clear(); orderList 초기화
위 두개를 사용해서 간단히 만듭니다.
<aside> 💡 실제 코드
</aside>
public class Menu {
String name;
String desc;
int price;
}
public Menu(String name, String desc) {
this.name = name;
this.desc = desc;
}
Menu[] menuList = new Menu[5];
menuList[0] = new Menu("hamburger", "good1");
menuList[1] = new Menu("side", "good1");
menuList[2] = new Menu("beverage", "good1");
menuList[3] = new Menu("확인", "장바구니를 확인 후 주문합니다.");
menuList[4] = new Menu("취소", "진행중인 주문을 취소합니다.");
for (int i = 0; i < menuList.length; i++) {
System.out.println(i+1 + "." + menuList[i].name + " | " + menuList[i].desc);
}
// 가격도 받기 위해 생성자를 추가
public Menu(String name, String desc, int price) {
this.name = name;
this.desc = desc;
this.price = price;
}
// 출력 확인
Menu[] hamburgerList = new Menu[3];
hamburgerList[0] = new Menu("hamburger1", "delicious1");
hamburgerList[1] = new Menu("hamburger2", "delicious1");
hamburgerList[2] = new Menu("hamburger3", "delicious1");
for (int i = 0; i < hamburgerList.length; i++) {
System.out.println(hamburgerList[i].name + " | " + hamburgerList[i].price +" | "+ hamburgerList[i].desc);
}
Scanner sc = new Scanner(System.in);
while (true) {
int choice = sc.nextInt();
if (choice == 1) {
// 햄버거
System.out.println("햄버거");
for (int i = 0; i < hamburgerList.length; i++) {
System.out.println(i + 1 + "." + hamburgerList[i].name + " | " + hamburgerList[i].price + " | " + hamburgerList[i].desc);
}
} else if (choice == 2) {
// 사이드
} else if (choice == 3) {
// 음료
} else if (choice == 4) {
// 주문
} else if (choice == 5) {
// 취소
}
}
System.out.println("아래 메뉴를 장바구니에 추가하시겠습니까?");
Scanner sc2 = new Scanner(System.in);
int choice2 = sc2.nextInt() - 1;
System.out.println(hamburgerList[choice2].name + " | " + hamburgerList[choice2].price + " | " + hamburgerList[choice2].desc);
// ArrayList를 생성하는 위치는 while 문 밖에
ArrayList orderList = new ArrayList();
System.out.println("1.확인 2.취소");
Scanner sc3 = new Scanner(System.in);
int choice3 = sc3.nextInt();
if (choice3 == 1) {
orderList.add(hamburgerList[choice2]);
} else {
}
// 주문
// ArrayList(orderList)는 아래와 같이 사용합니다.
System.out.println("주문");
System.out.println("아래와 같이 주문 하시겠습니까?");
for (int i = 0; i < orderList.size(); i++) {
Menu orderOne = (Menu) orderList.get(i);
System.out.println(orderOne.name + " | " + orderOne.price + " | " + orderOne.desc);
total += orderOne.price;
}
System.out.println("[ Total ]\\n" + "W" + total);
System.out.println("1. 주문 2. 메뉴판");
Scanner sc2 = new Scanner(System.in);
int choice2 = sc2.nextInt();
if (choice2 == 1) {
orderList.clear();
count += 1;
System.out.println("주문이 완료되었습니다!\\n" +
"대기번호는 [" + count + "] 번 입니다.\\n" +
"(3초후 메뉴판으로 돌아갑니다.)");
} else {
}
System.out.println("진행하던 주문을 취소하시겠습니까?");
System.out.println("1. 확인 2. 취소");
System.out.println();
Scanner sc2 = new Scanner(System.in);
int choice2 = sc2.nextInt();
if (choice2 == 1) {
orderList.clear();
System.out.println("주문이 취소되었습니다!");
} else {
System.out.println("메인으로 돌아갑니다. ");
}
// 깃허브 사용이 아직 어려운 신 분을 위해서 전체코드를 아래에 게시 합니다.
// Main.java 클래스
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Menu[] menuList = new Menu[5];
menuList[0] = new Menu("hamburger", "good1");
menuList[1] = new Menu("side", "good1");
menuList[2] = new Menu("beverage", "good1");
menuList[3] = new Menu("확인", "장바구니를 확인 후 주문합니다.");
menuList[4] = new Menu("취소", "진행중인 주문을 취소합니다.");
Menu[] hamburgerList = new Menu[3];
hamburgerList[0] = new Menu("hamburger1", "delicious1",1000);
hamburgerList[1] = new Menu("hamburger2", "delicious1", 2000);
hamburgerList[2] = new Menu("hamburger3", "delicious1", 3000);
ArrayList orderList = new ArrayList();
Scanner sc = new Scanner(System.in);
int count = 0;
int total = 0;
while (true) {
for (int i = 0; i < menuList.length; i++) {
System.out.println(i+1 + "." + menuList[i].name + " | " + menuList[i].desc);
}
int choice1 = sc.nextInt();
if (choice1 == 1) {
// 햄버거
System.out.println("햄버거");
for (int i = 0; i < hamburgerList.length; i++) {
System.out.println(i + 1 + "." + hamburgerList[i].name + " | " + hamburgerList[i].price + " | " + hamburgerList[i].desc);
}
System.out.println("아래 메뉴를 장바구니에 추가하시겠습니까?");
Scanner sc2 = new Scanner(System.in);
int choice2 = sc2.nextInt() - 1;
System.out.println(hamburgerList[choice2].name + " | " + hamburgerList[choice2].price + " | " + hamburgerList[choice2].desc);
System.out.println("1.확인 2.취소");
Scanner sc3 = new Scanner(System.in);
int choice3 = sc3.nextInt();
if (choice3 == 1) {
orderList.add(hamburgerList[choice2]);
} else {
}
} else if (choice1 == 2) {
// 사이드
} else if (choice1 == 3) {
// 음료
} else if (choice1 == 4) {
// 주문
System.out.println("주문");
System.out.println("아래와 같이 주문 하시겠습니까?");
for (int i = 0; i < orderList.size(); i++) {
Menu orderOne = (Menu) orderList.get(i);
System.out.println(orderOne.name + " | " + orderOne.price + " | " + orderOne.desc);
total += orderOne.price;
}
System.out.println("[ Total ]\\n" + "W" + total);
System.out.println("1. 주문 2. 메뉴판");
Scanner sc2 = new Scanner(System.in);
int choice2 = sc2.nextInt();
if (choice2 == 1) {
orderList.clear();
count += 1;
System.out.println("주문이 완료되었습니다!\\n" +
"대기번호는 [" + count + "] 번 입니다.\\n" +
"(3초후 메뉴판으로 돌아갑니다.)");
} else {
}
} else if (choice1 == 5) {
System.out.println("진행하던 주문을 취소하시겠습니까?");
System.out.println("1. 확인 2. 취소");
System.out.println();
Scanner sc2 = new Scanner(System.in);
int choice2 = sc2.nextInt();
if (choice2 == 1) {
orderList.clear();
System.out.println("주문이 취소되었습니다!");
} else {
System.out.println("메인으로 돌아갑니다. ");
}
}
}
}
}