
public class MachineVO {
private String drink_name;
private int drink_price;
private int drink_stock;
public MachineVO() {
this.drink_name = "";
this.drink_price = 0;
this.drink_stock = 0;
}
public MachineVO(String drink_name, int drink_price, int drink_stock) {
this.drink_name = drink_name;
this.drink_price = drink_price;
this.drink_stock = drink_stock;
}
public String getDrink_name() {
return drink_name;
}
public void setDrink_name(String drink_name) {
this.drink_name = drink_name;
}
public int getDrink_price() {
return drink_price;
}
public void setDrink_price(int drink_price) {
this.drink_price = drink_price;
}
public int getDrink_stock() {
return drink_stock;
}
public void setDrink_stock(int drink_stock) {
this.drink_stock = drink_stock;
}
}
● 넘겨줄 인터페이스 생성
public interface MachineAct {
public abstract void insert_Coin();
public abstract void return_Coin();
public abstract void enter_Menu();
public abstract void delete_Menu();
public abstract void update_Menu();
public abstract void enter_Stock();
public abstract void print_Menu();
public abstract void choice_Menu();
}
● 인터페이스를 상속받고 인터페이스 메소드 재정의
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class MachineActlmpl implements MachineAct {
Scanner sc = new Scanner(System.in);
ArrayList<MachineVO> list = new ArrayList<MachineVO>();
private int remain_Money = 0;
@Override
public void insert_Coin() {
int ch;
System.out.println("1. 5000원");
System.out.println("2. 1000원");
System.out.println("3. 500원");
System.out.println("4. 100원");
System.out.print("돈을 넣어주세요 : ");
ch = sc.nextInt();
switch (ch) {
case 1:
remain_Money = remain_Money + 5000;
System.out.println("투입금액 5000원");
break;
case 2:
remain_Money = remain_Money + 1000;
System.out.println("투입금액 1000원");
break;
case 3:
remain_Money = remain_Money + 500;
System.out.println("투입금액 500원");
break;
case 4:
remain_Money = remain_Money + 100;
System.out.println("투입금액 100원");
break;
}
System.out.println("사용 가능 금액 : " + remain_Money);
}
@Override
public void return_Coin() {
if(remain_Money == 0) {
System.out.println("반환할 돈이 없습니다.");
} else {
remain_Money = 0;
System.out.println("반환완료");
System.out.println("사용 가능 금액 : " + remain_Money);
}
}
@Override
public void enter_Menu() {
MachineVO vo = new MachineVO();
System.out.println("== 자판기 메뉴 등록 == ");
System.out.print("메뉴 이름 : ");
vo.setDrink_name(sc.next());
System.out.println("메뉴 가격 (숫자만 입력) : ");
vo.setDrink_price(sc.nextInt());
System.out.println("재고등록(채울 개수) : ");
vo.setDrink_stock(sc.nextInt());
list.add(vo);
System.out.println("등록완료");
}
@Override
public void delete_Menu() {
System.out.println("삭제할 제품명 입력 : ");
String s ="";
MachineVO vo = new MachineVO();
print_Menu();
s = sc.next();
Iterator<MachineVO> it = list.iterator();
while(it.hasNext()) {
vo = it.next();
if(s.equals(vo.getDrink_name())) {
list.remove(vo);
System.out.println("삭제완료");
break;
}
}
}
@Override
public void update_Menu() {
System.out.println("수정 할 제품 명 입력 : ");
String s = "";
MachineVO vo = new MachineVO();
print_Menu();
s = sc.next();
Iterator<MachineVO> it = list.iterator();
while(it.hasNext()) {
vo = it.next();
if(s.equals(vo.getDrink_name())) {
System.out.print("(수정)메뉴 이름 : ");
vo.setDrink_name(sc.next());
System.out.print("(수정)메뉴 가격(숫자만 입력) : ");
vo.setDrink_price(sc.nextInt());
System.out.println("(수정)재고 입력 : ");
vo.setDrink_stock(sc.nextInt());
System.out.println();
System.out.println("수정완료");
break;
}
}
}
@Override
public void enter_Stock() {
System.out.println("=== 재고충전 ===");
System.out.println("충전할 음료명 입력 : ");
String s ="";
s = sc.next();
int stock = 0;
MachineVO vo = new MachineVO();
print_Menu();
System.out.println();
Iterator<MachineVO> it = list.iterator();
while(it.hasNext()) {
vo = it.next();
if(s.equals(vo.getDrink_name())) {
System.out.print("충전할 재고 수량 입력 : ");
stock = sc.nextInt();
vo.setDrink_stock(vo.getDrink_stock() + stock);
System.out.println(vo.getDrink_name() + "충전완료재고 : " + vo.getDrink_stock());
break;
}
}
}
@Override
public void print_Menu() {
System.out.println("==== 메뉴 ====");
MachineVO vo = new MachineVO();
Iterator<MachineVO> it = list.iterator();
while(it.hasNext()) {
vo = it.next();
System.out.println("제품명 : " + vo.getDrink_name());
System.out.println("가격 : " + vo.getDrink_price());
System.out.println("재고 개수 : " + vo.getDrink_stock());
}
}
@Override
public void choice_Menu() {
System.out.println("==== 메뉴 선택 ====");
print_Menu();
System.out.println();
System.out.print("원하는 제품명 입력 : ");
String s = "";
MachineVO vo = new MachineVO();
Iterator<MachineVO> it = list.iterator();
while(it.hasNext()) {
vo= it.next();
if(s.equals(vo.getDrink_stock())) {
if(vo.getDrink_stock() == 0) {
System.out.println("재고가 없습니다.");
break;
}
if(remain_Money - vo.getDrink_price() < 0) {
System.out.println("잔액이 부족합니다.");
break;
}
remain_Money = remain_Money - vo.getDrink_price();
vo.setDrink_stock(vo.getDrink_stock() -1);
System.out.println(vo.getDrink_name() + "출력완료, 남은돈"
+ remain_Money + "재고 : " +vo.getDrink_stock());
}
}
}
}
● 메인
import java.util.Scanner;
public class MachineApp {
public static void main(String[] args) {
MachineActlmpl mc = new MachineActlmpl();
Scanner sc = new Scanner(System.in);
int ch =0;
while(true) {
do {
System.out.println("1. 동전 투입");
System.out.println("2. 잔돈 반환");
System.out.println("3. 메뉴 선택");
System.out.println("4. 관리자 메뉴");
System.out.println("5. 종료 ▶");
System.out.print("번호를 고르세요 : ");
ch = sc.nextInt();
} while(ch < 1 || ch > 5);
if(ch == 5) break;
switch (ch) {
case 1:
mc.insert_Coin();
break;
case 2:
mc.return_Coin();
break;
case 3:
mc.choice_Menu();
break;
case 4:
while(true) {
do {
System.out.println("1. 메뉴 등록");
System.out.println("2. 메뉴 삭제");
System.out.println("3. 메뉴 수정");
System.out.println("4. 재고 등록");
System.out.println("5. 이전 ▶");
System.out.print("번호를 고르세요 : ");
ch = sc.nextInt();
} while(ch <1 || ch >5);
if(ch == 5) break;
switch (ch) {
case 1:
mc.enter_Menu();
break;
case 2:
mc.delete_Menu();
break;
case 3:
mc.update_Menu();
break;
case 4:
mc.enter_Stock();
break;
}
}
break;
}
}
}
}