-
22041_JAVA_문제풀어보기(자판기프로그램2)1. JAVA/1.3 문제 2022. 4. 10. 19:16
기존에 했던 것에서 재고를 추가해서 다시 코드를 짜보았는데..
원하는 대로는 나오긴 했는데...코드가 좀 미흡한거같다.. 다시 더 짜봐야겠다..
일단 패키지는 이렇게 구성해보았고, 겉에서는 보이지 않는 BACK, 자판기의 종류(음료수자판기), FRONT 패키지에는 자판기 겉모습과 소비자 클래스를 넣어주었다.
package drinkvend.back; import java.util.Scanner; import drinkvend.drink.Cola; import drinkvend.drink.Drink; import drinkvend.drink.GreenTea; import drinkvend.drink.Juice; import drinkvend.front.Drinkvending; //자판기 내부 재고 관리하는 프로그램.. 소비자가 구매하면 1개씩 차감 . public class Stock { private int qty,price,num; Drink[] d = new Drink[] {new Cola(),new GreenTea(),new Juice()}; VendingSystem v1; Scanner sc = new Scanner(System.in); private String name; public Stock(){ } public Stock(Drinkvending v1) { } public void setNum(int num) { this.num = num; } public void setStock(VendingSystem v1) { v1= new VendingSystem(); System.out.println("재고관리 프로그램"); drinkPrint(); if(d[num].getQty()<=0) { System.out.println("재고를 보충하시겠습니까? 1번 : Y , 2번 : N"); int no = sc.nextInt(); if(no==1) { insertStock(num); } else { System.out.println("빠른 시일내로 재고를 보충해주세요"); return; } } } public String setName(int num) { name = d[num].getName(); return name; } public int setQty(int num) { qty = d[num].getQty(); return qty; } public int setPrice(int num) { price = d[num].getPrice(); return price; } public int minusQty(int num) { qty -=1; d[num].setQty(qty); qty = d[num].getQty(); return qty; } public void insertStock(int num) { drinkPrint(); System.out.println(d[num].getName()+"에 보충하고 싶은 수량을 입력하세요"); int num2 = sc.nextInt(); int qty = d[num].getQty()+num2; d[num].setQty(qty); System.out.println("****** 결과 ******"); drinkPrint(); } public void drinkPrint() { for(int i = 0; i<d.length;i++) { System.out.println((i+1)+"번 : "+d[i]); } } }
package drinkvend.back; import java.util.Scanner; import drinkvend.front.Buyer; import drinkvend.front.Drinkvending; //자판기 내부 프로그램 (수입, 재고관리). public class VendingSystem { int price, qty, money; static int income; Stock s = new Stock(); Scanner sc = new Scanner(System.in); public VendingSystem(){ } public VendingSystem(Drinkvending v1){ } //구매(소비자를 매개변수로 받음) public void buy(Buyer b) { while(true) { System.out.println("아래 품목 중에 원하는 것을 선택해주세요"); s.drinkPrint(); System.out.print("입력 : "); int num =sc.nextInt(); System.out.println(); num = num-1; choose(b,num); if(money<0||qty<0) { if(qty<0) { System.out.println("재고부족으로 구매 불가."); } if(money<0) { System.out.println("금액 부족으로 구매불가."); } break; } System.out.println("\t "+s.setName(num)+"를 받아가세요"); setIncome(num); System.out.println("추가구매를 원하십니까? 1번 : 예 , 2번 :아니오"); int choice = sc.nextInt(); if(choice==2) { System.out.println("\t["+money+"원] 을 받아가세요"); break; } } sc.close(); System.out.println("총 수입 : "+income); System.out.println("\t프로그램을 종료합니다."); } //물건 중에서 고르는 메소드 public void choose(Buyer b,int num) { System.out.println("\t#### ["+s.setName(num)+"] 선택! ####"); calmoney(b,num); qty = s.setQty(num); qty = s.minusQty(num); } public int calmoney(Buyer b,int num) { b.setMoney(b.getMoney()-s.setPrice(num)); money = b.getMoney(); if(money<0) { System.out.println("돈이 부족합니다. 돈을 추가하시겠습니까?\n 1번: Y 2번: N"); int no = sc.nextInt(); if(no==1) { System.out.println("보충할 돈을 넣어주세요"); money+=sc.nextInt(); System.out.println("총액 : "+money); } } System.out.println("\t 잔액 : "+money); return money; } public int setIncome(int num) { income+=s.setPrice(num); return income; } }
package drinkvend.drink; public class Drink{ private int qty, price; private String name; // Drink(String name, int price, int qty){ this.name = name; this.price = price; this.qty = qty; } public int getQty() { return qty; } public void setQty(int qty) { this.qty = qty; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return name+", 가격 : "+price+"원 (재고 : "+qty+"개)"; } }
package drinkvend.drink; public class Cola extends Drink{ public Cola(){// super("콜라",1000,5); } }
package drinkvend.drink; public class GreenTea extends Drink { public GreenTea(){ super("녹차",800,3); }// }
package drinkvend.drink; public class Juice extends Drink { public Juice(){ super("쥬스",1400,4); } // }
package drinkvend.front; import java.util.Scanner; //소비자 클래스 . 가지고 있는 돈을 입력 후 진행.. public class Buyer { Scanner sc = new Scanner(System.in); private int money; public Buyer() { System.out.print("가지고 있는 돈 입력 : "); this.money= sc.nextInt(); System.out.print("["+money+"원]"); System.out.println(); setMoney(money); } public int getMoney() { return money; } public void setMoney() { this.money = money; } public void setMoney(int money) { this.money = money; } }
package drinkvend.front; import drinkvend.back.VendingSystem; public class Drinkvending { VendingSystem system = new VendingSystem(); //외부 보여지는 자판기 프로그램.... public Drinkvending(Buyer b) { } public void buyDrink(Buyer b) { system.buy(b); } public static void main(String[] args) { Buyer b1 = new Buyer(); Drinkvending v1 =new Drinkvending(b1); v1.buyDrink(b1); } }
각 객체와의 협력하도록 코드를 짜는것이 너무 어려웠다..ㅠ 다시한번 부족함을 느끼고 또 짜보아야겠다.
'1. JAVA > 1.3 문제' 카테고리의 다른 글
220419_JAVA_문제풀어보기(정보 입력프로그램) (0) 2022.04.19 220418_JAVA_문제풀어보기 (0) 2022.04.18 220403_JAVA_문제풀어보기(자판기프로그램1) (0) 2022.04.03 220314_JAVA_문제 풀어보기 (0) 2022.03.14 220305_JAVA_문제 풀어보기 (0) 2022.03.05