diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 4b151ab..de5c651 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,14 @@ - + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/org/codedifferently/Main.java b/src/main/java/org/codedifferently/Main.java deleted file mode 100644 index 435139b..0000000 --- a/src/main/java/org/codedifferently/Main.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.codedifferently; - -//TIP To Run code, press or -// click the icon in the gutter. -public class Main { - public static void main(String[] args) { - //TIP Press with your caret at the highlighted text - // to see how IntelliJ IDEA suggests fixing it. - System.out.printf("Hello and welcome!"); - - for (int i = 1; i <= 5; i++) { - //TIP Press to start debugging your code. We have set one breakpoint - // for you, but you can always add more by pressing . - System.out.println("i = " + i); - } - } -} \ No newline at end of file diff --git a/src/main/java/org/codedifferently/bobby/Coffee.java b/src/main/java/org/codedifferently/bobby/Coffee.java new file mode 100644 index 0000000..d08cfb6 --- /dev/null +++ b/src/main/java/org/codedifferently/bobby/Coffee.java @@ -0,0 +1,38 @@ +package org.codedifferently.bobby; + +public class Coffee { + + private String name; + private double cost; + private boolean isDrink; + + public Coffee(String name, double cost, boolean isDrink) { + this.name = name; + this.cost = cost; + this.isDrink = isDrink; + } + + public String getName() { + return name; + } + + public double getCost() { + return cost; + } + + public boolean getIsDrink() { + return isDrink; + } + + public void setName(String name) { + this.name = name; + } + + public void setCost(double cost) { + this.cost = cost; + } + + public void setIsDrink(boolean isDrink) { + this.isDrink = isDrink; + } +} diff --git a/src/main/java/org/codedifferently/bobby/Customer.java b/src/main/java/org/codedifferently/bobby/Customer.java new file mode 100644 index 0000000..f30e2a1 --- /dev/null +++ b/src/main/java/org/codedifferently/bobby/Customer.java @@ -0,0 +1,59 @@ +package org.codedifferently.bobby; + +public class Customer { +private String custName; +private String custEmail; +private int numberOfDrinks; + +public Customer(){ +this.custName = ""; +this.custEmail= ""; +this.numberOfDrinks = 0; + + +} +public Customer(String custName, String custEmail){ + this.custName = custName; + this.custEmail = custEmail; +this.numberOfDrinks = 0; +} + +public String getCustName(){ + return custName; + } + + public String getCustEmail(){ + return custEmail; +} + +public int getNumberOfDrinks(){ + return numberOfDrinks; +} + + +public void setCustName(String custName){ + this.custName = custName; + } + + public void setCustEmail(String custEmail){ + this.custEmail = custEmail; +} +public void setNumberOfDrinks(int numberOfDrinks){ + this.numberOfDrinks = numberOfDrinks; +} +public void addDrink(){ + + this.numberOfDrinks++; +} +public boolean rewardsEligible(){ + + return numberOfDrinks>=5; +} + + +public void drinksReset(){ + this.numberOfDrinks = 0; +} + +} + diff --git a/src/main/java/org/codedifferently/bobby/Main.java b/src/main/java/org/codedifferently/bobby/Main.java new file mode 100644 index 0000000..7df6fc7 --- /dev/null +++ b/src/main/java/org/codedifferently/bobby/Main.java @@ -0,0 +1,178 @@ +package org.codedifferently.bobby; + +import java.util.Scanner; + +public class Main { + + public static void main(String[] args) { + + Scanner input = new Scanner(System.in); + boolean storeIsOpen = true; + boolean isRewardsMember; + + // -------- MENU -------- + Coffee latte = new Coffee("Medium Latte", 3.35, true); + Coffee espresso = new Coffee("Medium Espresso", 3.40, true); + Coffee latteLarge = new Coffee("Large Latte", 4.79, true); + Coffee espressoLarge = new Coffee("Large Espresso", 4.99, true); + Coffee cupOfJoe = new Coffee("Regular Cup of Joe", 2.60, true); + Coffee bagel = new Coffee("Sliced Bagel", 2.00, false); + Coffee pastry = new Coffee("Pastry", 4.40, false); + + // -------- SALES -------- + Sales sales = new Sales(); + + // -------- PRELOADED MEMBER -------- + Customer bobby = new Customer(); + bobby.setCustName("Bobby"); + bobby.setCustEmail("bobby@gmail.com"); + bobby.setNumberOfDrinks(4); // close to free drink for testing + + while (storeIsOpen) { + + System.out.println("\nWelcome to Triple C's!"); + + // -------- MEMBER CHECK -------- + while (true) { + System.out.print("Are you a rewards member? (yes/no): "); + String memberAnswer = input.nextLine().toLowerCase(); + + if (memberAnswer.equals("yes")) { + isRewardsMember = true; + break; + } + else if (memberAnswer.equals("no")) { + isRewardsMember = false; + break; + } + else { + System.out.println("Please answer yes or no."); + } + } + + Customer currentCustomer = null; + + if (isRewardsMember) { + currentCustomer = bobby; + System.out.println("Welcome back " + currentCustomer.getCustName()); + } + else { + + while (true) { + System.out.print("Would you like to join rewards? (yes/no): "); + String join = input.nextLine().toLowerCase(); + + if (join.equals("yes")) { + + currentCustomer = new Customer(); + + System.out.print("Enter name: "); + currentCustomer.setCustName(input.nextLine()); + + System.out.print("Enter email: "); + currentCustomer.setCustEmail(input.nextLine()); + + break; + } + else if (join.equals("no")) { + break; + } + else { + System.out.println("Please answer yes or no."); + } + } + } + + sales.newCustomer(); + double transactionTotal = 0; + boolean ordering = true; + + // -------- ORDER LOOP -------- + while (ordering) { + + System.out.println("\nMENU"); + System.out.println("1. Medium Latte - $3.35"); + System.out.println("2. Medium Espresso - $3.40"); + System.out.println("3. Large Latte - $4.79"); + System.out.println("4. Large Espresso - $4.99"); + System.out.println("5. Cup of Joe - $2.60"); + System.out.println("6. Bagel - $2.00"); + System.out.println("7. Pastry - $4.40"); + System.out.println("0. Finish Order"); + System.out.print("Choose an option: "); + + int choice; + + while (true) { + String choiceInput = input.nextLine(); + + if (choiceInput.matches("[0-7]")) { + choice = Integer.parseInt(choiceInput); + break; + } + else { + System.out.print("Please enter a number 0–7: "); + } + } + + Coffee selected = null; + + switch (choice) { + case 1 -> selected = latte; + case 2 -> selected = espresso; + case 3 -> selected = latteLarge; + case 4 -> selected = espressoLarge; + case 5 -> selected = cupOfJoe; + case 6 -> selected = bagel; + case 7 -> selected = pastry; + case 0 -> ordering = false; + } + + if (!ordering || selected == null) continue; + + sales.soldDrink(); + + boolean freeDrink = currentCustomer != null + && selected.getIsDrink() + && currentCustomer.rewardsEligible(); + + if (freeDrink) { + System.out.println(selected.getName() + " is FREE!"); + currentCustomer.drinksReset(); + } + else { + System.out.println("Added: " + selected.getName()); + transactionTotal += selected.getCost(); + sales.addCost(selected.getCost()); + + if (currentCustomer != null && selected.getIsDrink()) { + currentCustomer.addDrink(); + } + } + } + + // -------- GOLDEN TICKET -------- + if (currentCustomer != null && transactionTotal > 20) { + System.out.println("Golden Ticket bonus progress!"); + currentCustomer.addDrink(); + } + + // -------- RECEIPT -------- + System.out.printf("\nTotal: $%.2f\n", transactionTotal); + + if (currentCustomer != null) { + System.out.println("Drinks toward reward: " + + currentCustomer.getNumberOfDrinks()); + } + + System.out.print("\nAnother customer? (yes/no): "); + storeIsOpen = input.nextLine().equalsIgnoreCase("yes"); + } + + // -------- DAILY SUMMARY -------- + System.out.println("\n--- Daily Sales Summary ---"); + System.out.println("Customers served: " + sales.getTotalCustomers()); + System.out.println("Drinks sold: " + sales.getDrinksSold()); + System.out.printf("Total revenue: $%.2f\n", sales.getTotalRevenue()); + } +} \ No newline at end of file diff --git a/src/main/java/org/codedifferently/bobby/Sales.java b/src/main/java/org/codedifferently/bobby/Sales.java new file mode 100644 index 0000000..a5c3e28 --- /dev/null +++ b/src/main/java/org/codedifferently/bobby/Sales.java @@ -0,0 +1,32 @@ +package org.codedifferently.bobby; + +public class Sales { + private int drinksSold = 0; + private double totalRevenue = 0.0; + private int totalCustomers = 0; + + public void soldDrink(){ + + drinksSold++; + } + +public void newCustomer(){ + totalCustomers++; +} +public void addCost(double amount){ + + totalRevenue += amount; +} + +public int getDrinksSold(){ + return drinksSold; +} + +public int getTotalCustomers(){ + return totalCustomers; +} + +public double getTotalRevenue(){ + return totalRevenue; +} +} \ No newline at end of file