Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 9 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 0 additions & 17 deletions src/main/java/org/codedifferently/Main.java

This file was deleted.

38 changes: 38 additions & 0 deletions src/main/java/org/codedifferently/bobby/Coffee.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
59 changes: 59 additions & 0 deletions src/main/java/org/codedifferently/bobby/Customer.java
Original file line number Diff line number Diff line change
@@ -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;
}

}

178 changes: 178 additions & 0 deletions src/main/java/org/codedifferently/bobby/Main.java
Original file line number Diff line number Diff line change
@@ -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());
}
}
32 changes: 32 additions & 0 deletions src/main/java/org/codedifferently/bobby/Sales.java
Original file line number Diff line number Diff line change
@@ -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;
}
}