DEVELOPER NOMAD

[자바 자판기 프로그램] 만들기 자판기 메뉴 생성 ,수정,삭제 가능. 본문

JAVA(자바)/JAVA(자바) 프로젝트

[자바 자판기 프로그램] 만들기 자판기 메뉴 생성 ,수정,삭제 가능.

DEVELOPER NOMAD 2019. 1. 9. 16:19

소스파일 필요하시면 댓글달아주세요~!


자바 자판기 프로그램입니다. VO class 를 따로 만들어 사용하였습니다.


먼저 자판기의 VO 클래스입니다.



public class MachineVO {

private String drink_name;

private int drink_price;

private int 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;

}


}


이어서 자판기 메소드 구현을위한 인터페이스 부분입니다.


package vendingmachine;

public interface MachineAct {


public void insert_Coin(); // 동전 투입

public void return_Coin(); // 잔돈 반환 
public void enter_Menu(); //메뉴 등록
public void delete_Menu(); //메뉴 삭제 
public void update_Menu(); //메뉴 수정
public void enter_Stock(); //재고 등록
public void print_Menu(); //메뉴 보기
public void choice_Menu(); //메뉴 선택

}

인터페이스 구현부분 입니다.


import java.util.ArrayList;

import java.util.Iterator;

import java.util.Scanner;


public class MachineActImpl implements MachineAct {


Scanner sc = new Scanner(System.in);


ArrayList<MachineVO> list = new ArrayList<>();


private int remain_money = 0;


@Override

public void insert_Coin() {

// TODO Auto-generated method stub

int ch;


System.out.println("돈을 넣어주세요.");

System.out.println("1 : 5000원 , 2: 1000원, 3: 500원, 4:100원  ");


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() {

// TODO Auto-generated method stub

if(remain_money ==0 ) {

System.out.println("반환 할 돈이 없습니다.");

}

else {

remain_money = 0;

System.out.println("반환 완료");

System.out.println("사용 가능 금액:" + remain_money);

}

}


@Override

public void enter_Menu() {

// TODO Auto-generated method stub

MachineVO vo = new MachineVO();


System.out.println("자판기 메뉴 등록  ");


System.out.println("메뉴 이름 ? ");


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 print_Menu() {

// TODO Auto-generated method stub

System.out.println("메뉴");


MachineVO vo = new MachineVO();

Iterator<MachineVO> it = list.iterator();


while (it.hasNext()) {


vo = it.next();


System.out.print("제품명 :" + vo.getDrink_name() + " ");

System.out.print("가격 :" + vo.getDrink_price() + " ");

System.out.print("재고 개수:" + vo.getDrink_stock() + " ");

System.out.println();


}

}


@Override

public void choice_Menu() {

// TODO Auto-generated method stub

System.out.println("메뉴 선택");


print_Menu();

System.out.println();

String s;

MachineVO vo = new MachineVO();

Iterator<MachineVO> it = list.iterator();


System.out.println("원하는 제품명 입력");


s = sc.next();


while (it.hasNext()) {


vo = it.next();


if (s.equals(vo.getDrink_name())) {

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());


}


}

}


@Override

public void enter_Stock() {

// TODO Auto-generated method stub

System.out.println("재고 충전");


String s;

int stock;

MachineVO vo = new MachineVO();

print_Menu();

System.out.println();

System.out.println("충전할 음료 명 입력");


s = sc.next();


Iterator<MachineVO> it = list.iterator();


System.out.println("충전할 재고 수량 입력");


stock = sc.nextInt();


while (it.hasNext()) {


vo = it.next();


if (s.equals(vo.getDrink_name())) {


vo.setDrink_stock(vo.getDrink_stock() + stock);

System.out.println(vo.getDrink_name() + " 충전완료 재고 : " + vo.getDrink_stock());


break;

}


}


}


@Override

public void delete_Menu() {

// TODO Auto-generated method stub

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() {

// TODO Auto-generated method stub

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.println("(수정) 메뉴 이름 ? ");


vo.setDrink_name(sc.next());


System.out.println("(수정) 메뉴 가격 ? (숫자만 입력)");


vo.setDrink_price(sc.nextInt());


System.out.println("(수정) 재고 입력 ");


vo.setDrink_stock(sc.nextInt());


System.out.println("수정 완료.");

break;

}


}


}


}


마지막으로 main 메소드 부분 클래스 입니다.


package vendingmachine;


import java.util.Scanner;


public class MachineApp {


public static void main(String[] args) {

// TODO Auto-generated method stub


MachineActImpl mc = new MachineActImpl();


Scanner sc = new Scanner(System.in);


int ch;


while (true) {


do {

System.out.print("1.동전 투입 2.잔돈 반환 3.메뉴 선택  4.관리자 메뉴 5.종료=> ");

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.print("1.메뉴 등록 2.메뉴 삭제 3.메뉴 수정  4.재고 등록  5.이전=> ");

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;

}


}


}

}




Comments