반응형
SMALL
네 안녕하세요 오늘은 이제 키오스크 만들기 프로젝트 과제를
마무리 하려합니다
우선 조건이 쉬워서 금방했는데요.
우선 제가 그냥 처음부터 private를 쓰고있더라고요 ㅎㅎ;;
거기다 getter을 쓰고있었으니 그냥 setter만 추가해줫는데 이게 문제가
setter을 쓸만한곳이 없었다는점입니다.
그래서 코드로 만들어놓긴 하엿으나.. 정작쓸곳이없다는건데요
그래도 조건에 있으니 일단 만들어놓긴했습니다.
Kiosk class
package org.example.kiosk;
import java.util.List;
import java.util.Scanner;
public class Kiosk {
//필드
private List<Menu> menus;
//생성자
public Kiosk(List<Menu> menus) {
this.menus = menus;
}
// Getter 메서드 - 외부에서 menus 값을 조회할 수 있게 제공
public List<Menu> getMenus() {
return menus;
}
// Setter 메서드 - 외부에서 menus 값을 수정할 수 있게 제공
public void setMenus(List<Menu> menus) {
this.menus = menus;
}
//start 함수
public void start() {
//Scanner 사용
Scanner sc = new Scanner(System.in);
//전역변수 choice를 0으로 설정
int choice = 0;
while (true) {
// List와 Menu 클래스 활용하여 상위 카테고리 메뉴 출력
System.out.println("[ MAIN MENU ]");
//for문을 이용해 매뉴 출력
for (int i = 0; i < menus.size(); i++) {
System.out.println((i + 1) + "." + menus.get(i).getCategoryName());
}
System.out.println("0.종료");
System.out.println("번호를 선택해주세요.");
//상위 메뉴 선택
while (true) {
//숫자입력
choice = sc.nextInt();
if (choice == 0) {
// 종료 메시지 출력
System.out.println("키오스크를 종료합니다.");
return; // 첫 번째 루프 종료
}
//선택한 카테고리 출력
if (choice != 0) {
if (choice >= 1 && choice <= menus.size()) {
Menu selectedMenu = menus.get(choice - 1);
selectedMenu.printMenu();
System.out.println("번호를 선택해주세요");
while (true) {
int itemChoice = sc.nextInt();
//매뉴 선택 및 출력
if (itemChoice > 0 && itemChoice <= selectedMenu.getMenuItems().size()) {
MenuItem selectedItem = selectedMenu.getMenuItems().get(itemChoice - 1);//매뉴선택
System.out.println("선택한 메뉴: " + selectedItem.getName());
System.out.println("가격: " + selectedItem.getPrice());
System.out.println("설명: " + selectedItem.getDescription());
break;//메뉴 선택 후 나가기
} else if (itemChoice == 0) {
break;//뒤로가기
} else {
System.out.println("잘못된 입력입니다. 다시 선택해주세요.");
selectedMenu.printMenu(); // 메뉴 재출력
System.out.println("번호를 선택해주세요");
}
}
break; //메뉴 카테고리 선택후 종료
} else {
System.out.println("다시선택해주세요.");
}
}
}
}
}
}
Main class
package org.example.kiosk;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
//List
List<MenuItem> burgerItems = new ArrayList<>();
List<MenuItem> drinkItems = new ArrayList<>();
// Menu 객체 생성을 통해 이름 설정
Menu burgerMenu = new Menu("Burgers", burgerItems);
// Menu 클래스 내 있는 List<MenuItem> 에 MenuItem 객체 생성하면서 삽입
burgerItems.add(new MenuItem("ShackBurger", 6.9, "토마토, 양상추, 쉑소스가 토핑된 치즈버거"));
burgerItems.add(new MenuItem("SmokeShack", 8.9, "베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거"));
burgerItems.add(new MenuItem("Cheeseburger", 6.9, "포테이토 번과 비프패티, 치즈가 토핑된 치즈버거"));
burgerItems.add(new MenuItem("Hamburger", 5.4, "비프패티를 기반으로 야채가 들어간 기본버거"));
// 다른 카테고리 메뉴 추가
Menu drinkMenu = new Menu("Drinks", drinkItems); // "Drinks"라는 이름의 Menu 객체 생성
drinkItems.add(new MenuItem("Lemonade", 3.5, "새콤한 레모네이드"));
drinkItems.add(new MenuItem("Iced Tea", 2.8, "차가운 아이스티"));
// Kiosk 객체 생성
List<Menu> menus = new ArrayList<>();
menus.add(burgerMenu); // Burger 카테고리 추가
menus.add(drinkMenu); // Drink 카테고리 추가
Kiosk kiosk = new Kiosk(menus);
// Kiosk 내 시작하는 함수 호출
kiosk.start();
}
}
Menu class
package org.example.kiosk;
import java.util.List;
public class Menu {
private List<MenuItem> menuItems; // 메뉴 항목 리스트
private String categoryName; // 카테고리 이름
// 생성자
public Menu(String categoryName, List<MenuItem> menuItems) {
this.categoryName = categoryName;
this.menuItems = menuItems;
}
// Getter 메서드 - 외부에서 categoryName 값을 조회할 수 있게 제공s
public String getCategoryName() {
return categoryName;
}
// Setter 메서드 - 외부에서 categoryName 값을 수정할 수 있게 제공
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
// Getter 메서드 - 외부에서 menuItems 값을 조회할 수 있게 제공
public List<MenuItem> getMenuItems() {
return menuItems;
}
// 메뉴 출력
public void printMenu() {
System.out.println("=== " + categoryName + " 메뉴 ===");
for (int i = 0; i < menuItems.size(); i++) {
MenuItem item = menuItems.get(i);
System.out.println((i + 1) + ". " + item.getName() + " | W " + item.getPrice() + " | " + item.getDescription());
}
System.out.println("0.뒤로가기"); //뒤로가기 추가
}
}
MenuItem class
package org.example.kiosk;
public class MenuItem {
private double price; //가격
private String description; //설명
//필드
private String name; //이름
//생성자
public MenuItem(String name, double price, String description) {
this.name = name;
this.price = price;
this.description = description;
}
// Getter 메서드: 외부에서 name 값을 조회할 수 있게 제공
public String getName() {
return name;
}
// Setter 메서드: 외부에서 name 값을 수정할 수 있게 제공
public void setName(String name) {
this.name = name;
}
// Getter 메서드: 외부에서 price 값을 조회할 수 있게 제공
public double getPrice() {
return price;
}
// Setter 메서드: 외부에서 price 값을 수정할 수 있게 제공
public void setPrice(double price) {
this.price = price;
}
// Getter 메서드: 외부에서 description 값을 조회할 수 있게 제공
public String getDescription() {
return description;
}
// Setter 메서드: 외부에서 description 값을 수정할 수 있게 제공
public void setDescription(String description) {
this.description = description;
}
}
그렇게해서 위와같은 코드가 만들어졋습니다.
setter을 쓰고싶었는데
이게 수정할 만한 부분이 안보이더라고요,,
도전과제를 드가서 장바구니를 만들었으면 쓸수있었을거같은데
시간이 부족했습니다..
감사합니다
반응형
LIST
'과제를하면서 트러블슈팅' 카테고리의 다른 글
일정 관리 앱 만들기 devlop (0) | 2025.02.13 |
---|---|
일정 관리 앱 만들기 (0) | 2025.02.03 |
키오스크 만들기 Lv4 (0) | 2025.01.17 |
키오스크 만들기 Lv3 (0) | 2025.01.16 |
키오스크 만들기 (3) | 2025.01.15 |