自動售貨機(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]));
}
}
}
}