1. 程式人生 > >自動售貨機(java版)

自動售貨機(java版)

//SaleMachine.java

package tu;

public class SaleMachine {
  private int countofBeer,countofJuice,countofCola,countofFivecent,countofOnedollar;
  private String s6 = "Draw Back Money";
  private String result;
  private String Drinks[] = {"Beer","Juice","Cola","Two Beer","Two Juice","Beer and Juice"};
  private String Money[] = {"5C","1D"};
 
  public SaleMachine() {                                  //預設的初始化函式(假設不賦值時都是10)
  countofBeer = 10;
  countofJuice = 10;
  countofOnedollar = 10;
  countofFivecent = 10;
  countofCola = 10;
  
  }
 
  public SaleMachine(int Beer,int Juice,int Fivecent,int Onedallar,int Cola) {   //初始化函式
   countofBeer = Beer;
   countofJuice = Juice;
   countofCola = Cola;
   countofOnedollar = Onedallar;
   countofFivecent = Fivecent;
  }
 
  public String currentState() {                                  // 系統提示當前售貨機的狀態
   String s = "Current State:"+"\n"+"Beer: "+" "+countofBeer+"\n"+"Juice: "+countofJuice+"\n"+
              " "+"Cola:"+countofCola+"\n"+"Five Cents:"+" "+countofFivecent+"\n"+
              "One Dollar:"+" "+countofOnedollar;
   return s;
             
  }
 
  public String atuseroption(String operation,String money) {   //operation是使用者選擇的的產品,money是使用者投入的錢
   if(money.equalsIgnoreCase(Money[0])) {                         //假如使用者投入了5角
    if(operation.equals(Drinks[0])) {                              // 假如使用者選擇了啤酒
     if(countofBeer > 0) {      
      countofBeer--;
      countofFivecent++;
      result = "Succeed Information\n" +
                "Type: Beer;Money: 5 Cents;Change: 0\n\n"+
                currentState();
      return result;
     }
     else {                                              // 啤酒沒有了
      result = "Failed Information\n" +
              "Beer Without!\n"+"Fifty cents coming soon!";
      return result;
     }
    }
    else if(operation.equals(Drinks[1])) {                   // 使用者選擇了橙汁
     if(countofJuice > 0) {                        // 使用者選擇了橙汁並且還有橙汁
      countofJuice--;
      countofFivecent++;
      result = "Succeed Information\n" +
                     "Type: Juice;Money: 5 Cents;Change: 0\n\n"+
                     currentState();
            return result;
     }
     else {                                        //橙汁沒有了
      result = "Failed Information\n" +
                     "Juice Without!\n"+"Fifty cents coming soon!";
      return result;
     }
    }
   
    if(operation.equals(s6)) {          //使用者選擇退錢
     
     result = "Money coming soon!";
     return result;
    }
    else {                                                 // 用那個戶選擇有錯誤
     result = "Failed Information\n" +
                    "Operation Error! \n"+"Fifty cents coming soon!";
     return result;
    }
   }
   else if (money.equalsIgnoreCase(Money[1])){                    //假如使用者投入1Dollar
    if(countofFivecent > 0) {
     if(operation.equals(Drinks[0]) && countofBeer > 0) {      //假如使用者選擇了啤酒並且還有啤酒
      countofBeer--;
      countofFivecent--;
      countofOnedollar++;
      result = "Succeed Information\n" +
                            "Type: Beer;Money: 1 Dollar;Change: 5 Cents\n\n"+
                            currentState();
                  return result;
     
     }
    
     if(operation.equals(Drinks[1]) && countofJuice > 0) {       //假如使用者選擇了橙汁並且還有橙汁
      countofJuice--;
      countofFivecent--;
      countofOnedollar++;
      result = "Succeed Information\n" +
                              "Type: Juice;Money:1 Dollar;Change: 5 Cents\n\n"+
                               currentState();
                     return result;
     
     }
    
     if(operation.equals(Drinks[3]) && countofBeer > 1) {     // 假如使用者選擇了兩瓶啤酒
      countofBeer -= 2;
      countofOnedollar++;
      result = "Succeed Information\n" +
                              "Type: Two Beer;Money:1 Dollar;Change: 0 Cents\n\n"+
                              currentState();
      return result;
     
     }
    
     if(operation.equals(Drinks[4]) && countofJuice > 1) {     //假如使用者選擇了兩瓶橙汁
      countofJuice -= 2;
      countofOnedollar++;
      result = "Succeed Information\n" +
                              "Type: Two Juice;Money:1 Dollar;Change: 0 Cents\n\n"+
                              currentState();
      return result;
     }
    
     if(operation.equals(Drinks[5]) && countofJuice > 0 && countofBeer > 0) {    //假如使用者選擇了一瓶啤酒一瓶橙汁
      countofBeer--;
      countofJuice--;
      countofOnedollar++;
      result = "Succeed Information\n" +
                              "Type: Beer and Juice;Money:1 Dollar;Change: 0 Cents\n\n"+
                             currentState();
      return result;
     
     }
    
     if(operation.equals(s6)) {         //使用者選擇退錢
     
      result = "Money coming soon!";
      return result;
     }
    
     else if(operation.equals(Drinks[5]) && (countofJuice == 0 || countofBeer == 0)){                           //使用者選的一瓶啤酒喝一瓶橙汁但是其中啤酒或者橙汁沒有了
      result = "Failed Information\n" +
                     "Beer or Juice Without!\n"+"One Dollar coming soon!";
      return result;
     }
    
     else if(operation.equals(Drinks[4]) && countofJuice <= 1) {  //使用者選擇了兩瓶橙汁但橙汁數量不夠了
      result = "Failed Information\n" +
                     "Juice is not enough!\n"+"One Dollar coming soon!";
      return result;
     }
    
     else if(operation.equals(Drinks[3]) && countofBeer <= 1) { //使用者選擇了兩瓶啤酒但啤酒數量不夠了
      result = "Failed Information\n" +
                     "Beer is not enough!\n"+"One Dollar coming soon!";
      return result;
     
     }
    
     else {
      if(operation.equals(Drinks[0]) && countofBeer == 0) {        //假如使用者選擇了一瓶啤酒但啤酒沒有了
       result = "Failed Information\n" +
                      "Beer Without!\n"+"One Dollar coming soon!";
       return result;
      
      }
      else if(operation.equals(Drinks[1]) && countofJuice == 0) {   //假如使用者選擇了一瓶橙汁但橙汁沒有了
       result = "Failed Information\n" +
                      "Juice Without!\n"+"One Dollar coming soon!";
       return result;
      }
      else {                                                // 使用者選擇的既不是橙汁也不是啤酒
       result = "Failed Information\n" +
                      "Operation Error!\n"+"One Dollar coming soon!";
       return result;
      }
     }
    }
    else {                                                         // 沒有零錢了
     result = "Failed Information\n" +
                    "Change Without!\n"+"One Dollar coming soon!";
     return result;
    }
   }
   else {                                                            // 使用者投的錢的既不是5Cents也不是1Dollar
    result = "Failed Information\n" +
                   "Money Error!\n"+"Money coming soon!";
    return result;
   }
  }
 
  public String atuseroption(String operation,String money1,String money2) {
   if(money1.equalsIgnoreCase(Money[0]) && money2.equalsIgnoreCase(Money[0])) {  //使用者投入兩個五角的
    if(operation.equals(Drinks[3])) {                          // 使用者選擇了兩瓶啤酒
     if(countofBeer > 1) {      //啤酒還有兩瓶或兩瓶多
      countofBeer -= 2;
      countofFivecent += 2;
      result = "Succeed Information\n" +
                "Type: Two Beer;Money: 1 Dollar;Change: 0\n\n"+
                currentState();
      return result;
     }
     else {                        //啤酒不夠了
      result = "Failed Information\n" +
                     "Beer is not enough!\n"+"Money coming soon!";
      return result;
     }
    }
   
    else if(operation.equals(Drinks[4])) {  //使用者選擇了兩瓶橙汁
     if(countofJuice > 1) {            //橙汁還有兩瓶或兩瓶多
      countofJuice -= 2;
      countofFivecent += 2;
      result = "Succeed Information\n" +
                "Type: Juice;Money: 1 Dollar;Change: 0\n\n"+
                currentState();
      return result;
     }
     else {                              //橙汁不夠了
      result = "Failed Information\n" +
                     "Juice is not enough!\n"+"Money coming soon!";
      return result;
     }
    
    }
   
    else if(operation.equals(Drinks[5])) {         //使用者選擇了啤酒和橙汁
     if(countofBeer > 0 && countofJuice > 0) {
      countofBeer--;
      countofJuice--;
      countofFivecent +=2;
      result = "Succeed Information\n" +
                "Type: Beer and Juice;Money: 1 Dollar;Change: 0\n\n"+
                currentState();
      return result;
     }
     else {                                     //啤酒或者橙汁不夠了
      result = "Failed Information\n" +
                     "Beer or Juice Without!\n"+"Money coming soon!";
      return result;
     }
    }
    else {                                     //使用者選擇了錯誤
     result = "Failed Information\n" +
                    "Operation Error!\n"+"Money coming soon!";
     return result;
    }
   }
    else if(money1.equalsIgnoreCase(Money[0]) && money2.equalsIgnoreCase(Money[1])
      || money1.equalsIgnoreCase(Money[1]) && money2.equalsIgnoreCase(Money[0])) {   //使用者投入了一個五角的和一個一元的
     if(operation.equals(Drinks[2])) {   //使用者選擇了可樂           
      if(countofCola > 0) {        //可樂還有
       countofCola--;
       countofFivecent++;
       countofOnedollar++;
       result = "Succeed Information\n" +
                 "Type: Cola;Money: 1 Dollar and 5 Cents;Change: 0\n\n"+
                 currentState();
       return result;
      }
      else {                       //可樂不夠了
       result = "Failed Information\n" +
                      "Cola Without!\n"+"Money coming soon!";
       return result;
      }
     
      }
     else {                      //選擇錯誤
      result = "Failed Information\n" +
                     "Operation Error!\n"+"Money coming soon!";
      return result;
     
     }
    }
   
    else if(money1.equalsIgnoreCase(Money[1]) && money2.equalsIgnoreCase(Money[1])) {  //使用者投入兩個一元的
     if(operation.equals(Drinks[2])) {     //使用者選擇了可樂
      if(countofFivecent > 0) {         //是否還有零錢
       if(countofCola > 0) {         //是否還有可樂
        countofCola--;
        countofOnedollar +=2;
        countofFivecent--;
        result = "Succeed Information\n" +
                  "Type: Cola;Money: 1 Dollar and 1 Dollar;Change: 5 Cents\n\n"+
                  currentState();
        return result;
       }
       else {                     //可樂沒有了
        result = "Failed Information\n" +
                       "Cola Without!\n"+"Money coming soon!";
        return result;
       }
      
      }
      else {                  //零錢沒有了
       result = "Failed Information\n" +
                      "Change Without!\n"+"One Dollar coming soon!";
       return result;
      }
     }
     else {                     //選擇錯誤
      result = "Failed Information\n" +
                     "Operation Error!\n"+"Money coming soon!";
      return result;
     }
    }
   
   else {                           //投入的錢有錯
    result = "Failed Information\n" +
                   "Money Error!\n"+"Money coming soon!";
    return result;
   }
  }
}

//TestSaleMachine.java

package tu;

import javax.swing.JOptionPane;

public class TestSaleMachine {
  private static String Drinks[] = {"Beer","Juice","Cola","Two Beer","Two Juice","Beer and Juice","Draw Back Money"};
  private static String Money[] = {"5C","1D"};
  private static int money1,money2;
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
   //對系統進行初始化(五角的個數,一元的個數,橙汁的個數,啤酒的個數)
        String s1 = JOptionPane.showInputDialog("請輸入啤酒的個數:");
        int Beer = Integer.parseInt(s1);
        String s2 = JOptionPane.showInputDialog("請輸入橙汁的個數:");
        int Juice = Integer.parseInt(s1);
        String s3 = JOptionPane.showInputDialog("請輸入五角的個數:");
        int FiveCent = Integer.parseInt(s1);
        String s4 = JOptionPane.showInputDialog("請輸入一元的個數:");
        int OneDollar = Integer.parseInt(s1);
        String s5 = JOptionPane.showInputDialog("請輸入可樂的個數:");
        int Cola = Integer.parseInt(s5);
        SaleMachine sale1 = new SaleMachine(Beer,Juice,FiveCent,OneDollar,Cola);
       
       
        while(Beer != 0 && Juice != 0 && Cola != 0) {
         //顯示系統的當前狀態
         JOptionPane.showMessageDialog(null,"Welcome to use the vending machine\n"+ sale1.currentState());
         //提示使用者選擇投幣
         JOptionPane.showMessageDialog(null, "You can choose to put into two COINS(“5C”,“1D”)."+
                 "You Have a Choice:\n"+"1:  5C\n"+"2:   1D"  );
       
         String money  = JOptionPane.showInputDialog("Please input your to put COINS(Such as:If you want to choose:“5C”," +
                     "You can input 1.):");
         money1 = Integer.parseInt(money);
         //系統提示是否再一次投幣
         JOptionPane.showMessageDialog(null, "Whether you choose to input anther coin(0: NO   1: YES)");
         String choice = JOptionPane.showInputDialog("Please input your choice(0 or 1):");  //輸入0表示不在投幣輸入1表示再一次投幣
         int choice1 = Integer.parseInt(choice);
        
         if(choice1 == 1) {
          money  = JOptionPane.showInputDialog("Please input your again to put COINS(Such as:If you want to choose:“5C”," +
       "You can input 1.):");
          money2 = Integer.parseInt(money);
         }
         //提示使用者選擇飲料
         JOptionPane.showMessageDialog(null, "The vending machine has two kinds of drinks: Beer and Juice.\n"+
        "You Have a Choice:\n1:  Beer \n"+"2:  Juice\n"+"3:  Cola\n"+"4:   Two Beer\n"+
           "5:  Two Juice\n" +"6:  Beer and Juice\n"+"7:  Draw Back Money"  );
        
         String option  = JOptionPane.showInputDialog("Please input you want to choose drinks" +
                     "(Such as:If you want to choose:“Two Beer“,You can input 4.):");
         int option1 = Integer.parseInt(option);
      
         if(choice1 == 0)
          JOptionPane.showMessageDialog(null,sale1.atuseroption(Drinks[option1 - 1], Money[money1 - 1]));
          else if(choice1 == 1) {
         
                   JOptionPane.showMessageDialog(null,sale1.atuseroption(Drinks[option1 - 1], Money[money1 - 1],Money[money2 - 1]));
         }
        }
 }

}