package com.coffeeEx;

import java.util.Scanner;
 
public class CoffeeMachine {
 
       public static final int PRICE = 300;
       public static final int CONTENT_COFFEE = 5;
       public static final int CONTENT_MILK = 3;
       public static final int CONTENT_SUGAR = 1;
 
       private int coffee = 10;
       private int milk = 10;
       private int sugar = 10;
       private int amount;
 
       Scanner br;
 
       public CoffeeMachine(){
             br = new Scanner(System.in);
             proccess();
             print();
       }
 
       public void proccess(){
             while(true){
                    System.out.print("동전을 넣으세요(커피값 " + PRICE+"원): ");
                    if(!isSale(br.nextInt())){
                           break;
                    }
             }
       }
 
       public boolean isSale(int coin){
             if (coin < PRICE){
                    System.out.println("동전이 부족합니다.");
                    return false;
             }
             if (coffee < CONTENT_COFFEE){
                    System.out.println("커피가 부족합니다.");
                    return false;
             }
             if (milk < CONTENT_MILK){
                    System.out.println("프림이  부족합니다.");
                    return false;
             }
             if (sugar < CONTENT_SUGAR){
                    System.out.println("설탕이  부족합니다.");
                    return false;
             }
             processCoffee(coin);
             return true;
       }
      
       public void processCoffee(int coin){
             if(coin > PRICE){
                    System.out.println("거스름: "+ (coin -PRICE));
             }
             //커피차감
             setCoffee(getCoffee() - CONTENT_COFFEE);
             //프림차감
             setMilk(getMilk() - CONTENT_MILK);
             //설탕차감
             setSugar(getSugar() - CONTENT_SUGAR);
             setAmount(getAmount() + PRICE);
      
             System.out.println("맛 좋은 커피가 준비되었습니다.");
       }
 
       public void print(){
             System.out.println("======현재 자판기 정보======");
             System.out.println("커피양 : " + getCoffee());
             System.out.println("프림양 : " + getMilk());
             System.out.println("설탕양 : " + getSugar());
             System.out.println("보유금액 : " + getAmount());
       }           
       public static void main(String[] args){
             new CoffeeMachine();
       }
 
       public int getCoffee(){
             return coffee;
       }
       public void setCoffee(int coffee){
             this.coffee = coffee ;
       }
       public int getMilk(){
             return milk;
       }
       public void setMilk(int milk){
             this.milk = milk ;
       }
       public int getSugar(){
             return sugar;
       }
       public void setSugar(int sugar){
             this.sugar = sugar ;
       }
       public int getAmount(){
             return amount;
       }
       public void setAmount(int amount){
             this.amount = amount ;
       }
}


package com.coffee;
import java.util.Scanner;

public class CoffeeMachine {
 
 Scanner scan = new Scanner(System.in);
 protected int coffee = 10;
 protected int milk = 10;
 protected int suger =10;
 protected int amount;//들어오는돈
 protected int change=10000;//거스름돈통
 protected int a;  //스캔용
 
 public void process(){
  while(true){
   System.out.print("1: 커피마시기, 2:관리자, 3: 종료 >>");   
   a= scan.nextInt();
   if (a==1)
    buy();
   else if (a==2)
    manager();
   else if (a==3){
    System.out.println("종료하였습니다.");
    break;}
   else
    System.out.println("잘못입력 하였습니다.");
  }
 }
 public void setCoffee(){
  System.out.print("커피=>");
  coffee += scan.nextInt();
  System.out.print("프림=>");
  milk += scan.nextInt();
  System.out.print("설탕=>");
  suger += scan.nextInt();
  
 }
 public void sales(){
  System.out.print("동전수거금액 >>>>");
  a = scan.nextInt();
  if(amount >= a){
  amount -= a;
  System.out.println("요청한금액을 처리하였습니다.");
  }else{System.out.println("금액이 부족합니다.");}
  
 }
 public void cashier(){
  System.out.print("거스름통 채울 금액 >>>>");
  change += scan.nextInt();;
  System.out.println("요청한금액을 처리하였습니다.");
 }
 public void buy(){
  //동전투입
  System.out.print("동전을 넣으세요 (커피값 300원) : ");
  a= scan.nextInt();
  //판매
  if (coffee >=5  && milk >= 3 &&  suger >= 1 ){
   if (a>=300 && a <= change+300){
   System.out.println("거스름 : " +  (a - 300));
   System.out.println("맛 좋은 커피가 준비되었습니다.");
   //커피한잔 소모 
   coffee -= 5;
   milk -= 3;
   suger -= 1;
   //잔고정리
   change -= a-300;
   amount += a;}
   else if (a < 300){
   System.out.println("금액이 부족합니다. 커피값은 300원 입니다.");}
   else if (a > change+300){
   System.out.println("거스름돈이 부족합니다. #관리자한테 상담하세요 02-xxx-xxxx#.");
   }
  }
  else{System.out.println("커피가 부족합니다. #관리자한테 상담하세요 02-xxx-xxxx#");
  }
 }
 public void print(){
  System.out.println("======현재 자판기 정보======");
  System.out.println("커피양 : " + coffee);
  System.out.println("프림양 : " + milk);
  System.out.println("설탕양 : " + suger);
  System.out.println("커피값통 : " + amount);
  System.out.println("거스름통 : " + change);
 }
 public void manager(){
  System.out.println("관리자모드 입니다.");
  print();
  while(true){
  System.out.print("1: 커피 프림 설탕 채우기, 2: 동전수거, 3:거스름통 채우기, 4: 관리자모종료 >>");
  a = scan.nextInt();
  if (a==1)
    setCoffee();
  else if (a==2)
    sales(); 
  else if (a==3)
     cashier();
  else if (a==4)    
   {System.out.println("관리자모드를 종료하였습니다.");break;}
  else
   System.out.println("잘못입력 하였습니다.");
 }
}

 public static void main(String[] args){
  CoffeeMachine cm = new CoffeeMachine(); 
  cm.process();
 }
}

/*
-----더해볼꺼----

은닉화

set메소드

get메소드

클래스 나누기 - 상속,객체생성
*/


'Java > 연습문제' 카테고리의 다른 글

자판기 만들기 (모범 답안)  (0) 2012.04.14
자판기 만들기 3( 커피값받는통 거스름돈통 분리)  (0) 2012.04.14
자판기 만들기 2  (0) 2012.04.14
자판기 만들기  (0) 2012.04.13
교통정보 만들기 (간단히)  (0) 2012.04.13
package com.coffee;
import java.util.Scanner;

public class CoffeeMachine {
 Scanner scan = new Scanner(System.in);

 protected int coffee = 10;
 protected int milk = 10;
 protected int suger =10;
 protected int amount;//들어오는돈
 protected int change=10000;//거스름돈통
 boolean loop=true;

 public void process(){
  while(loop){
   System.out.print("1: 커피마시기, 2:관리자, 3: 종료 >>");
   switch(scan.nextInt()){
   //커피판매
   case 1 : buy(); break; 

   //관리자모드
   case 2 : manager(); break; 

   //반복종료 
   case 3 : System.out.println("종료하였습니다.");
   loop =false;break;
   //오류
   default : System.out.println("잘못입력 하였습니다.");
   }
  }
 }

 public void buy(){
  //동전투입
  System.out.print("동전을 넣으세요 (커피값 300원) : ");
  int a= scan.nextInt();
  //판매
  if (coffee >=5  && milk >= 3 &&  suger >= 1 ){
   if (a>=300 && a <= change+300){
   System.out.println("거스름 : " +  (a - 300));
   System.out.println("맛 좋은 커피가 준비되었습니다.");
   //커피한잔 소모 
   coffee -= 5;
   milk -= 3;
   suger -= 1;
   //잔고정리
   change -= a-300;
   amount += a;}
   else if (a < 300){
   System.out.println("금액이 부족합니다. 커피값은 300원 입니다.");}
   else if (a > change+300){
   System.out.println("거스름돈이 부족합니다. #관리자한테 상담하세요 02-xxx-xxxx#.");
   }
  }
  else {System.out.println("커피가 부족합니다. #관리자한테 상담하세요 02-xxx-xxxx#");}
 }

 public void print(){
  System.out.println("======현재 자판기 정보======");
  System.out.println("커피양 : " + coffee);
  System.out.println("프림양 : " + milk);
  System.out.println("설탕양 : " + suger);
  System.out.println("커피값통 : " + amount);
  System.out.println("거스름통 : " + change);
  
 }


 public void manager(){
  System.out.println("관리자기능입니다.");
  print();

  System.out.print("1: 커피 프림 설탕 채우기, 2: 동전수거, 3:거스름통 채우기, 4: 전단계, 5: 종료 >>");
  switch(scan.nextInt()){

  //커피 프림 설탕 채우기
  case 1 : 
   System.out.print("커피=>");
   coffee += scan.nextInt();
   System.out.print("프림=>");
   milk += scan.nextInt();
   System.out.print("설탕=>");
   suger += scan.nextInt();
   break ;

   //동전수거
  case 2 : 
   System.out.print("동전수거금액 >>>>");
   int a = scan.nextInt();
   if(amount >= a){
    amount -= a;
    System.out.println("요청한금액을 처리하였습니다.");
   }else{System.out.println("금액이 부족합니다.");}
   break;  
  //거스름통채우기
  case 3 : 
   System.out.print("거스름통 채울 금액 >>>>");
   change += scan.nextInt();;
    System.out.println("요청한금액을 처리하였습니다.");
   break; 
   
  case 4 : break;
  //반복종료
  case 5 : System.out.println("종료하였습니다.");
  loop =false;break;


  //오류 - 구간만 다시 시작하는법?
  default : System.out.println("잘못입력 하였습니다.");
  } 
 }


 public static void main(String[] args){
  CoffeeMachine cm = new CoffeeMachine(); 
  cm.process();
 }
}


관리자에서 오류시에만 관리자메뉴다시나오기?

변수없이 loop돌리기

a랑 change 없이 출력계산하기


coffee의 get,set 메소드

             milk의 get,set 메소드

             sugar의 get,set 메소드

             amount의 get,set 메소드




1차  public void print()




package com.coffee;
import java.util.Scanner;

public class CoffeeMachine {
 Scanner scan = new Scanner(System.in);

 protected int coffee = 10;
 protected int milk = 10;
 protected int suger =10;
 protected int amount;
 protected int change;
 boolean loop=true;

 public void process(){
  while(loop){
   System.out.print("1: 커피마시기, 2:관리자, 3: 종료 >>");
   switch(scan.nextInt()){
   //커피판매
   case 1 : buy(); break; 

   //관리자모드
   case 2 : manager(); break; 

   //반복종료 
   case 3 : System.out.println("종료하였습니다.");
   loop =false;break;
   //오류
   default : System.out.println("잘못입력 하였습니다.");
   }
  }
 }

 public void buy(){
  //동전투입
  System.out.print("동전을 넣으세요 (커피값 300원) : ");

  //거스름돈
  int a= scan.nextInt();
  if (a>=300){
   change = a - 300;
   if (coffee >=5  && milk >= 3 &&  suger >= 1 ){
    System.out.println("거스름 : " +  change);
    System.out.println("맛 좋은 커피가 준비되었습니다.");
    //커피한잔 소모 
    coffee -= 5;
    milk -= 3;
    suger -= 1;
    amount += 300;  
   }
   else System.out.println("커피가 부족합니다.");
  }
  else{System.out.println("금액이 부족합니다.");}
 }

 public void print(){
  System.out.println("======현재 자판기 정보======");
  System.out.println("커피양 : " + coffee);
  System.out.println("프림양 : " + milk);
  System.out.println("설탕양 : " + suger);
  System.out.println("보유금액 : " + amount);
 }
 
 
 public void manager(){
  System.out.println("관리자기능입니다.");
  print();
  System.out.print("1: 커피 프림 설탕 채우기, 2: 동전수거, 3: 종료 >>");
  switch(scan.nextInt()){

  //커피 프림 설탕 채우기
  case 1 : 
   System.out.print("커피=>");
   coffee += scan.nextInt();
   System.out.print("프림=>");
   milk += scan.nextInt();
   System.out.print("설탕=>");
   suger += scan.nextInt();
   break ;

  //동전수거
  case 2 : 
   System.out.print("동전수거금액 >>>>");
   int b=scan.nextInt();
   if(amount >= b){
    amount -= b;
    System.out.println("요청한금액을 처리하였습니다.");
   }else{System.out.println("금액이 부족합니다.");}
   break; 

  //반복종료
  case 3 : System.out.println("종료하였습니다.");
  loop =false;break;


  //오류 - 구간만 다시 시작하는법?
  default : System.out.println("잘못입력 하였습니다.");
  } 
 }


 public static void main(String[] args){
  CoffeeMachine cm = new CoffeeMachine(); 
  cm.process();
 }
}


자판기 만들기


패키지명 : com.coffee

-------------------------------------

클래스명 : CoffeMachine

-------------------------------------

멤버변수 : coffee(커피) = 10;

           milk(프림) = 10;

           sugar(설탕) = 10;

           amount(동전이 누적될 변수);

--------------------------------------

멤버메소드 : coffee의 get,set 메소드

             milk의 get,set 메소드

             sugar의 get,set 메소드

             amount의 get,set 메소드

             

             process() 

              1. 동전입력

              3. 동전 누적

              4. 커피, 프림, 설탕량 차감

                 (5)   (3)    (1)

              5. 거스름돈 처리

        

             print()

               커피 : 현재량 

               프림 : 현재량

               설탕 : 현재량

               동전 : 현재량


            커피를 마실 때 마다 커피,프림,설탕량이

            차감 되기 때문에 0가 되면 판매 중지 



package com.coffee;
import java.util.Scanner;

public class CoffeeMachine {
 Scanner scan = new Scanner(System.in);

 protected int coffee = 10;
 protected int milk = 10;
 protected int suger =10;
 protected int amount;
 protected int change;
 boolean loop=true;

 public void process(){
  while(loop){
   System.out.print("1: 커피마시기, 2:관리자, 3: 종료 >>");
   switch(scan.nextInt()){
   //커피판매
   case 1 : buy(); break; 

   //관리자모드
   case 2 : manager(); break; 

   //반복종료 
   case 3 : System.out.println("종료하였습니다.");
   loop =false;break;
   //오류
   default : System.out.println("잘못입력 하였습니다.");
   }
  }
 }


 public void buy(){
  //동전투입
  System.out.print("동전을 넣으세요 (커피값 300원) : ");

  //거스름돈
  int a= scan.nextInt();
  if (a>=300){
   change = a - 300;
   if (coffee >=5  && milk >= 3 &&  suger >= 1 ){
    System.out.println("거스름 : " +  change);
    System.out.println("맛 좋은 커피가 준비되었습니다.");
    //커피한잔 소모 
    coffee -= 5;
    milk -= 3;
    suger -= 1;
    amount += 300;  
   }
   else System.out.println("커피가 부족합니다.");
  }
  else{System.out.println("금액이 부족합니다.");}
 }


 public void manager(){
  System.out.println("관리자기능입니다.");
  System.out.println("======현재 자판기 정보======");
  System.out.println("커피양 : " + coffee);
  System.out.println("프림양 : " + milk);
  System.out.println("설탕양 : " + suger);
  System.out.println("보유금액 : " + amount);
  System.out.print("1: 커피 프림 설탕 채우기, 2: 동전수거, 3: 종료 >>");
  switch(scan.nextInt()){

  //커피 프림 설탕 채우기
  case 1 : 
   System.out.print("커피=>");
   coffee += scan.nextInt();
   System.out.print("프림=>");
   milk += scan.nextInt();
   System.out.print("설탕=>");
   suger += scan.nextInt();
   break ;

   //동전수거
  case 2 : 
   System.out.print("동전수거금액 >>>>");
   int b=scan.nextInt();
   if(amount >= b){
    amount -= b;
    System.out.println("요청한금액을 처리하였습니다.");
   }else{System.out.println("금액이 부족합니다.");}
   break; 

   //반복종료
  case 3 : System.out.println("종료하였습니다.");
  loop =false;break;


  //오류 - 구간만 다시 시작하는법?
  default : System.out.println("잘못입력 하였습니다.");
  } 
 }


 public static void main(String[] args){
  CoffeeMachine cm = new CoffeeMachine(); 
  cm.process();
 }
}


package com.trans;


public class Transport {
	
	protected String name;
	protected int speed;
	protected int energy;
	//protected boolean swim;
	
	public String getName(){
		return name;
	}
	public int getSpeed(){
		return speed;
	}
	public int getEnergy(){
		return energy;
	}
	public void consumGas(){
		energy -= 10;
	}
}




package com.trans;

public class TransportMain {
	public static void main(String[] args){
		Ship s = new Ship("배",25,50,true);
		s.consumGas();
		Air a = new Air("비행기",50,100,true);
		a.consumGas();
		System.out.println("==================================");
		System.out.println("이름\t속도\t연료\t비고");
		System.out.println("==================================");

		System.out.print(s.getName()+"\t");
		System.out.print(s.getSpeed()+"\t");
		System.out.print(s.getEnergy()+"\t");
		System.out.print((s.getSwim()?"항해" : "정박")+"\n");
		
		
		System.out.print(a.getName()+"\t");
		System.out.print(a.getSpeed()+"\t");
		System.out.print(a.getEnergy()+"\t");
		System.out.print((a.getFly()?"비행" : "착륙")+"\n");
		
		
		
	}

}




package com.trans;

class Ship extends Transport{
	private boolean swim=true;
	public void consumGas(){//메소드 오버라이딩으로 재정의
		energy -= 25;
	}
	public Ship(String name,int speed,int energy,boolean swim){
		this.name=name;
		this.speed=speed;
		this.energy=energy;
			
	}
	public boolean getSwim(){
		return swim;
	}
}




package com.trans;

class Air extends Transport{
	public void consumGas(){
		energy -= 50;
	}
	private boolean fly=true;
	public Air(String name,int speed,int energy, boolean fly){
		this.name=name;
		this.speed=speed;
		this.energy=energy;
	}
	public boolean getFly(){
		return fly;
	}
}


package com.exam;
public class Score {

	private int korean;
	private int english;
	private int math;

	public void setKorean(int korean){
		this.korean = korean;
	}
	public void setEnglish(int english){
		this.english = english;
	}
	public void setMath(int math){
		this.math = math;
	}
	public int getKorean(){
		return korean;
	}
	public int getEnglish(){
		return english;
	}
	public int getMath(){
		return math;
	}
	//총점
	public int makeSum(){
		return korean+english+math;
	}
	//평균
	public double makeAvg(){
		return makeSum()/3.0;
	}
	//학점 등급 ABCDF -2번째 요구사항
	public String makeGrade(){
		String grade;
		switch((int)makeAvg()/10){
		case 10:
		case 9: grade="A"; break;
		case 8: grade="B"; break;
		case 7: grade="C"; break;
		case 6: grade="D"; break;
		default : grade="F";
		}
		return grade;

	}
}




package com.exam;
import java.util.Scanner;

public class ScoreMain {
	public static void main(String[] args){
		//Scanner sc = new Scanner(System.in);
		Score sc = new Score();
		input(sc);
		outPut(sc);
		
	}
	public static void input(Score sc){
		Scanner sca = new Scanner(System.in);
		
		System.out.println("====성적 입력=====");
		System.out.print("국어 : ");
		sc.setKorean(sca.nextInt());
		System.out.print("영어 : ");
		sc.setEnglish(sca.nextInt());
		System.out.print("수학 : ");
		sc.setMath(sca.nextInt());
	}
	//출력을 위한 메소드
	//메소드명 : outPut -1 요구사항
	public static void outPut(Score sc){//Score sc를 안쓰면 호출불가
		//sc 는 지역변수 이기에
		System.out.println("=====성적 출력======");
		System.out.println("국어 : " + sc.getKorean());
		System.out.println("영어 : " + sc.getEnglish());
		System.out.println("수학 : " + sc.getMath());
		System.out.println("총점 : " + sc.makeSum());
		System.out.printf("평균 : %.2f\n",sc.makeAvg());
		System.out.println("학점 : " + sc.makeGrade());

}
}


+ Recent posts