ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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");
    	}
    	
    }

     

    일단 얼렁뚱땅 만들었는데....

     

    조금 더 보완해서 재고까지 나타내도록 업그레이드 시키려고 한다. 따흑..ㅠ어렵다....

Designed by Tistory.