HashMap을 이용한 메뉴, 가격 수정 문제


1) 메뉴 리스트 클래스

package st02;

import java.util.*;

public class MenuList {  // 메뉴 리스트 클래스


HashMap<String, Integer> menuInfo = new HashMap<String, Integer>();


public MenuList() { // 클래스 내에서 hashmap 사용시 생성자 처리

menuInfo.put("짜장면", 3000);

menuInfo.put("짬뽕", 4000);

menuInfo.put("볶음밥", 5000);

menuInfo.put("갈비탕", 5000);

menuInfo.put("설렁탕", 5000);

menuInfo.put("비빔냉면", 3000);

menuInfo.put("물냉면", 3000);

menuInfo.put("김밥", 1500);

menuInfo.put("삼겹살", 10000);

menuInfo.put("갈비살", 15000);

menuInfo.put("차돌박이", 15000);

menuInfo.put("항정살", 12000);

menuInfo.put("갈매기살", 12000);

menuInfo.put("돈까스", 5000);

menuInfo.put("치즈돈까스", 6000);

menuInfo.put("카레돈까스", 6000);

menuInfo.put("생선까스", 5000);

menuInfo.put("등심까스", 8000);

menuInfo.put("돌솥비빔밥", 6000);

menuInfo.put("전주비빔밥", 8000);

menuInfo.put("육회비빔밥", 10000);

menuInfo.put("야채비빔밥", 5000);

menuInfo.put("양푼비빔밥", 5000);

}

}

-----------------------------------------------------------------------------
2) 메뉴 실행 클래스
package st02;
import java.util.HashMap;
import java.util.Scanner;

public class MenuEdit {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);

MenuEditMethod menuInfo = new MenuEditMethod(); // 메뉴 편집 메소드 사용

String storename; // 매장 이름
int cmdNo1 = 0; // 선택메뉴 넘버
int cmdNo2 = 0; // 선택메뉴 넘버
String menuName; // 푸드메뉴명
int menuPrice; // 푸드메뉴가격

System.out.print(" 1. 매장 선택 2. 뒤로");
cmdNo1 = scan.nextInt();
if (cmdNo1 == 1) {
System.out.print(" 매장 이름을 입력하시오.");

while (true) {
System.out.print(" 1. 메뉴추가 2. 메뉴삭제 3. 메뉴목록 4. 메뉴변경 5. 뒤로");
cmdNo2 = scan.nextInt();
if (cmdNo2 == 1) { // 1. 메뉴추가
System.out.print(" 추가할 메뉴명 입력");
menuName = scan.next();
System.out.print(" 메뉴 가격 입력");
menuPrice = scan.nextInt();
menuInfo.menuAdd(menuName, menuPrice);
} else if (cmdNo2 == 2) { // 2. 메뉴삭제
System.out.print(" 삭제할 메뉴명 입력");
menuName = scan.next();
menuInfo.menuRemove(menuName);
} else if (cmdNo2 == 3) { // 3. 메뉴목록 출력
menuInfo.menuListPrint();
} else if (cmdNo2 == 4) { // 4. 메뉴 정보 수정
System.out.print(" 수정할 메뉴명 입력");
menuName = scan.next();
menuInfo.menuCorrect(menuName);
} else {
return;
}
}
} else
return;
}
}

-----------------------------------------------------------------------------
3) 메뉴 메소드 클래스

package st02;

import java.util.*;

public class MenuEditMethod extends MenuList { // 메뉴 리스트를 상속
Scanner scan = new Scanner(System.in);

public void menuAdd(String menu, int price) { // 메뉴 추가 메소드
menuInfo.put(menu, price);
}

public void menuRemove(String menu) { // 메뉴 삭제 메소드
menuInfo.remove(menu);
}

public void menuListPrint() { // 메뉴 목록 출력 메소드
Set keys = menuInfo.keySet(); // HashMap에서 리스트 가져오는 방법
Iterator itKeys = keys.iterator();
while (itKeys.hasNext()) {
String key = (String) itKeys.next();
Integer value = menuInfo.get(key); // key값에 해당하는 value값
System.out.println(key + ":" + value);
}
}

public void menuCorrect(String menu) { // 메뉴 변경 메소드
System.out.print("1. 이름 변경 2. 가격 변경 3. 취소");
int cmdNo3 = scan.nextInt();
Integer oldPrice = menuInfo.get(menu); // 입력받은 메뉴의 value값 담기
if (cmdNo3 == 1) {
System.out.print("변경할 메뉴의 이름을 입력하시오.");
String newmenu = scan.next();
menuInfo.remove(menu);
menuInfo.put(newmenu, oldPrice);
} else if (cmdNo3 == 2) {
System.out.print("변경할 가격을 입력하시오.");
int newPrice = scan.nextInt();
menuInfo.put(menu, newPrice);
} else //상위 메뉴(MenuEdit 클래스)로 이동??? 어떻게 하는지 모름.
{
}
}
}


Posted by netyhobby
,