added Inventory and VendingMachine
This commit is contained in:
parent
cb38d7392b
commit
707b932c8b
38
src/main/java/products/Inventory.java
Normal file
38
src/main/java/products/Inventory.java
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
package main.java.products;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class Inventory<T> {
|
||||||
|
private Map<T, Integer> inventory = new HashMap<T, Integer>();
|
||||||
|
|
||||||
|
public int getQuantity(T item){
|
||||||
|
Integer value = inventory.get(item);
|
||||||
|
return value == null? 0 : value ;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add(T item){
|
||||||
|
int count = inventory.get(item);
|
||||||
|
inventory.put(item, count+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deduct(T item) {
|
||||||
|
if (hasItem(item)) {
|
||||||
|
int count = inventory.get(item);
|
||||||
|
inventory.put(item, count - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasItem(T item){
|
||||||
|
return getQuantity(item) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clear(){
|
||||||
|
inventory.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void put(T item, int quantity) {
|
||||||
|
inventory.put(item, quantity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
15
src/main/java/products/VendingMachine.java
Normal file
15
src/main/java/products/VendingMachine.java
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package main.java.products;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
public interface VendingMachine {
|
||||||
|
public long selectProductAndGetPrice(Product product);
|
||||||
|
|
||||||
|
public void insertCoin(Denomination denomination);
|
||||||
|
|
||||||
|
public List<Denomination> refund();
|
||||||
|
|
||||||
|
public void reset();
|
||||||
|
}
|
||||||
|
|
7
src/main/java/products/VendingMachineFactory.java
Normal file
7
src/main/java/products/VendingMachineFactory.java
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package main.java.products;
|
||||||
|
|
||||||
|
public class VendingMachineFactory {
|
||||||
|
public static VendingMachine createVendingMachine() {
|
||||||
|
return new VendingMachineImpl();
|
||||||
|
}
|
||||||
|
}
|
48
src/main/java/products/VendingMachineImpl.java
Normal file
48
src/main/java/products/VendingMachineImpl.java
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
package main.java.products;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class VendingMachineImpl implements VendingMachine {
|
||||||
|
|
||||||
|
private Inventory<Object> cashInventory = new Inventory<Object>();
|
||||||
|
private Inventory<Product> productInventory = new Inventory<Product>();
|
||||||
|
private long totalSales;
|
||||||
|
private Product currentItem;
|
||||||
|
private long currentBalance;
|
||||||
|
|
||||||
|
public VendingMachineImpl() {
|
||||||
|
initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initialize() {
|
||||||
|
//change to better values
|
||||||
|
for (Denomination c : Denomination.values()) {
|
||||||
|
cashInventory.put(c, 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
for () {
|
||||||
|
productInventory.put(i, 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long selectProductAndGetPrice(Product product) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void insertCoin(Denomination denomination) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Denomination> refund() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reset() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package main.java.products;
|
package main.java.products;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class main {
|
public class main {
|
||||||
@ -11,35 +12,52 @@ public class main {
|
|||||||
System.out.println("2. A snack");
|
System.out.println("2. A snack");
|
||||||
System.out.println("3. A meal");
|
System.out.println("3. A meal");
|
||||||
|
|
||||||
|
int selectedType = sc.nextInt();
|
||||||
int opt3 = sc.nextInt();
|
double price = 0;
|
||||||
if (opt3 == 1) {
|
if (selectedType == 1) {
|
||||||
orderADrink();
|
price = orderADrink();
|
||||||
} else if (opt3 == 2) {
|
} else if (selectedType == 2) {
|
||||||
orderASnack();
|
price = orderASnack();
|
||||||
} else if (opt3 == 3){
|
} else if (selectedType == 3) {
|
||||||
orderAMeal();
|
price = orderAMeal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
System.out.println("Choose payment option");
|
||||||
|
System.out.println("1. Cash");
|
||||||
|
System.out.println("2. Credit card");
|
||||||
|
|
||||||
|
int paymentType = sc.nextInt();
|
||||||
|
if (paymentType == 1) {
|
||||||
|
payInCash(price);
|
||||||
|
} else if (paymentType == 2) {
|
||||||
|
payWithCard(price);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void orderADrink() {
|
|
||||||
DrinkMenu drinkMenu = new DrinkMenu();
|
|
||||||
drinkMenu.showMenu();
|
|
||||||
int opt;
|
|
||||||
Drink orderedDrink = null;
|
|
||||||
while (orderedDrink == null) {
|
|
||||||
opt = sc.nextInt();
|
|
||||||
if (opt < 1 || opt > 4) {
|
|
||||||
System.out.println("You have chosen wrong option");
|
|
||||||
} else {
|
|
||||||
orderedDrink = drinkMenu.get(opt - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
System.out.println("You ordered " + orderedDrink);
|
|
||||||
System.out.println("Price: " + orderedDrink.getPrice());
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void orderASnack() {
|
|
||||||
|
|
||||||
|
private static double orderADrink() {
|
||||||
|
DrinkMenu drinkMenu = new DrinkMenu();
|
||||||
|
drinkMenu.showMenu();
|
||||||
|
int opt;
|
||||||
|
Drink orderedDrink = null;
|
||||||
|
while (orderedDrink == null) {
|
||||||
|
opt = sc.nextInt();
|
||||||
|
if (opt < 1 || opt > 4) {
|
||||||
|
System.out.println("You have chosen wrong option");
|
||||||
|
} else {
|
||||||
|
orderedDrink = drinkMenu.get(opt - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("You ordered " + orderedDrink);
|
||||||
|
System.out.println("Price: " + orderedDrink.getPrice());
|
||||||
|
return orderedDrink.getPrice();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static double orderASnack() {
|
||||||
SnackMenu snackMenu = new SnackMenu();
|
SnackMenu snackMenu = new SnackMenu();
|
||||||
snackMenu.showMenu();
|
snackMenu.showMenu();
|
||||||
int opt;
|
int opt;
|
||||||
@ -54,9 +72,11 @@ public class main {
|
|||||||
}
|
}
|
||||||
System.out.println("You ordered " + orderedSnack);
|
System.out.println("You ordered " + orderedSnack);
|
||||||
System.out.println("Price: " + orderedSnack.getPrice());
|
System.out.println("Price: " + orderedSnack.getPrice());
|
||||||
|
return orderedSnack.getPrice();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void orderAMeal() {
|
private static double orderAMeal() {
|
||||||
MealMenu mealMenu = new MealMenu();
|
MealMenu mealMenu = new MealMenu();
|
||||||
mealMenu.showMenu();
|
mealMenu.showMenu();
|
||||||
int opt;
|
int opt;
|
||||||
@ -71,9 +91,29 @@ public class main {
|
|||||||
}
|
}
|
||||||
System.out.println("You ordered " + orderedMeal);
|
System.out.println("You ordered " + orderedMeal);
|
||||||
System.out.println("Price: " + orderedMeal.getPrice());
|
System.out.println("Price: " + orderedMeal.getPrice());
|
||||||
|
return orderedMeal.getPrice();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void payWithCard(double price) {
|
||||||
|
System.out.println("Follow the instructions on the pin pad");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void payInCash(double price) {
|
||||||
|
System.out.println("Insert money");
|
||||||
|
System.out.println("Type inserted denominations, type 'q' when done.");
|
||||||
|
double sum= 0;
|
||||||
|
while (!Objects.equals(sc.nextLine(), "q")){
|
||||||
|
double denomination = sc.nextDouble();
|
||||||
|
sum+=denomination;
|
||||||
|
|
||||||
|
}
|
||||||
|
if (sum > price)
|
||||||
|
giveChange();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void giveChange() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user