-
220403_JAVA_문제풀어보기(자판기프로그램1)1. JAVA/1.3 문제 2022. 4. 3. 22:53
자판기 프로그램을 만들어보았다.
클래스는 5개로 만들었다.
1. Buyer : 자판기에서 구매하려는 사람의 클래스이다. Buyer 객체가 새롭게 생성될때마다
보유하고 있는 돈은 만원으로 초기화 시켰다.
package Vendingmachine; import java.util.Scanner; public class Buyer { int money,price; String name; Juice[] juices; Sparkle[] sparkles; Scanner sc; Vending v; public Buyer(String name) { this.name = name; this.money = 10000; System.out.println(name+"님 입장"); v = new Vending(); sc = new Scanner(System.in); buy(sc); } // 음료 구매(스캐너로 값을 입력받음) public void buy(Scanner sc) { while(true) { System.out.printf("********자판기********\n음료의 종류를 선택하세요(1.쥬스, 2.탄산)"); int button = sc.nextInt(); if(button == 1) { v.chooseJuice(); } else if(button == 2){ v.chooseSparkle(); } else { System.out.println("잘못 선택하셨습니다."); } calculate(); if(money<price) { System.out.println("잔돈부족으로 구매불가 \n프로그램 종료"); break; } } } public void calculate() { price = v.price; if(money<price) { return; } else { money-= v.price; System.out.println(name+"님의 잔액은 [ "+money+" ] 입니다."); } } }
2. Vending : 자판기에 음료 셋팅시켜주는 클래스.
Buyer가 구매하게 되면 구입 금액을 더해 수익이 발생시키게 하였다.
package Vendingmachine; import java.util.Scanner; // 자판기에 음료(쥬스, 탄산음료)를 셋팅해주는 클래스 // 물건을 구매할떄마다 자판기 수익은 + public class Vending { int money,price,income; String name; Juice[] juices; Sparkle[] sparkles; Scanner sc; Buyer b; Vending(){ sc = new Scanner(System.in); } public void chooseJuice() { System.out.printf("\t[쥬스]를 선택하셨습니다..\n해당 품목중 선택 (1.오렌지쥬스 , 2. 포도쥬스)"); juices = new Juice[]{new OrangeJuice(), new GrapeJuice()}; int num = sc.nextInt(); num = num-1; if(juices[num] instanceof OrangeJuice) { OrangeJuice orange = (OrangeJuice)juices[num]; } else if(juices[num] instanceof GrapeJuice){ GrapeJuice grape = (GrapeJuice)juices[num]; } name = juices[num].toString(); price = juices[num].price; bought(); setIncome(); } public void chooseSparkle() { System.out.printf("\t[탄산음료] 를 선택하셨습니다.\n해당 품목중 선택( 1.코카콜라 , 2. 펩시콜라, 3. 웰치스)"); sparkles = new Sparkle[]{new Cocacola(),new Pepsicola(),new Welches()}; int num = sc.nextInt(); num = num-1; if(sparkles[num] instanceof Cocacola) { Cocacola coca = (Cocacola)sparkles[num];} else if(sparkles[num] instanceof Pepsicola) { Pepsicola pepsi = (Pepsicola)sparkles[num]; } else if(sparkles[num] instanceof Welches) { Welches welches = (Welches)sparkles[num]; } name = sparkles[num].toString(); price = sparkles[num].price; bought(); setIncome(); } public void bought() { System.out.println("["+name+" : "+price+"] 원 구매"); } public void setIncome() { income += price; System.out.println("자판기 수익 : "+income); System.out.println("============================="); } }
3. Sparkle, Juice : 음료를 파는 자판기로 설정하여서 자판기 안에 있는 음료 종류를 클래스로 작성하였다.
3.1. Sparkle : 탄산음료
package Vendingmachine; //자판기 음료 중 탄산음료(코카콜라,펩시,웰치스)의 가격과 이름 출력 public class Sparkle { String name; int price; Sparkle(int price){ this.price = price; } public String toString() { return "탄산"; } } class Cocacola extends Sparkle{ Cocacola(){ super(1500); } public String toString() { name = "코카콜라"; return name; } } class Pepsicola extends Sparkle{ Pepsicola(){ super(1450); } public String toString() { name = "펩시콜라"; return name; } } class Welches extends Sparkle{ Welches(){ super(1380); } public String toString() { name = "웰치스"; return name; } }
3.2. Juice : 쥬스
package Vendingmachine; //자판기 음료 중 쥬스음료(포도,오렌지쥬스)의 가격과 이름 출력 public class Juice{ String name; int price; Juice(int price){ this.price = price; } public String toString(){ return "쥬스"; } } class OrangeJuice extends Juice{ OrangeJuice(){ super(1400); } @Override public String toString() { name = "오렌지쥬스"; return name; } } class GrapeJuice extends Juice{ GrapeJuice(){ super(1230); } @Override public String toString() { name = "포도쥬스"; return name; } }
4. Test : 출력해주는 클래스
package Vendingmachine; //출력하는 클래스 public class Test { public static void main(String[] args) { Buyer b1 = new Buyer("손님1"); } }
일단 얼렁뚱땅 만들었는데....
조금 더 보완해서 재고까지 나타내도록 업그레이드 시키려고 한다. 따흑..ㅠ어렵다....
'1. JAVA > 1.3 문제' 카테고리의 다른 글
220419_JAVA_문제풀어보기(정보 입력프로그램) (0) 2022.04.19 220418_JAVA_문제풀어보기 (0) 2022.04.18 22041_JAVA_문제풀어보기(자판기프로그램2) (0) 2022.04.10 220314_JAVA_문제 풀어보기 (0) 2022.03.14 220305_JAVA_문제 풀어보기 (0) 2022.03.05