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.

75 changes: 75 additions & 0 deletions src/main/java/Customer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
public class Customer {
private String name;
private String phoneNumber;
private int points;


public Customer() {
this.name = "";
this.phoneNumber = "";
this.points = 0;
}


public Customer(String name, String phoneNumber, int points) {
this.name = name;
this.phoneNumber = phoneNumber;
this.points = points;
}


public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPhoneNumber() {
return phoneNumber;
}

public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}

public int getPoints() {
return points;

}

public void setPoints(int points) {
if (points < 0) points = 0;

this.points = points;
}


public void addPoints(int amount) {
if (amount > 0) {
this.points += amount;


}
}


public String getTier() {
if (points >= 200) return "Gold";

if (points >= 100) return "Silver";

return "Bronze";
}


public boolean redeemFreeDrink() {
if (points >= 100) {
points -= 100;

return true;
}
return false;
}
}
156 changes: 156 additions & 0 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);


Purchase item1 = new Purchase("House Coffee", 3.50, true);

Purchase item2 = new Purchase("Latte", 5.25, true);

Purchase item3 = new Purchase("Iced Tea", 2.75, true);

Purchase item4 = new Purchase("Blueberry Muffin", 3.25, false);

Purchase item5 = new Purchase("Bagel", 2.50, false);

Purchase item6 = new Purchase("Breakfast Sandwich", 6.00, false);

System.out.println("========================================");

System.out.println(" Kenny's Cafe");

System.out.println(" Coffee. Vibes. Breakfast");

System.out.println("========================================");


System.out.print("Enter customer name: ");

String name = scanner.nextLine();

System.out.print("Enter phone number: ");

String phone = scanner.nextLine();

Customer customer = new Customer(name, phone, 0);


double sessionTotal = 0.0;

int sessionPoints = 0;

int choice;


printMenu(item1, item2, item3, item4, item5, item6);

do {
System.out.print("\nChoose an option (1-6), 9 to reprint menu, 7 redeem free drink, 0 checkout: ");

while (!scanner.hasNextInt()) {
System.out.print("Numbers only. Try again: ");

scanner.next();
}
choice = scanner.nextInt();

if (choice == 9) {
printMenu(item1, item2, item3, item4, item5, item6);

} else if (choice >= 1 && choice <= 6) {
Purchase selected = getItemByChoice(choice, item1, item2, item3, item4, item5, item6);


System.out.println("Added: " + selected);

sessionTotal += selected.getPrice();

int earned = selected.pointsEarned();

sessionPoints += earned;

customer.addPoints(earned);

} else if (choice == 7) {

boolean redeemed = customer.redeemFreeDrink();
if (redeemed) {
System.out.println("✅ Redeemed Free Drink (-100 points). Enjoy!");

} else {
System.out.println("❌ Not enough points. Free Drink costs 100 points.");
}
} else if (choice == 0) {

break;
} else {
System.out.println("Invalid choice. Pick 1-6, 7, 9, or 0.");
}

} while (true);


System.out.println("\n========================================");

System.out.println("CHECKOUT SUMMARY");

System.out.println("========================================");

System.out.println("Session total: $" + String.format("%.2f", sessionTotal));

System.out.println("Points earned this session: " + sessionPoints);

System.out.println("Updated total points: " + customer.getPoints());


System.out.println("\n----------------------------------------");

System.out.println("FINAL CUSTOMER STATUS");

System.out.println("----------------------------------------");

System.out.println(customer.getName() + " | " + customer.getTier() + " | " + customer.getPoints());

System.out.println("Clean. Clear. Professional.");

System.out.println("========================================");

scanner.close();
}

private static void printMenu(Purchase i1, Purchase i2, Purchase i3, Purchase i4, Purchase i5, Purchase i6) {
System.out.println("\n--- MENU ---");
System.out.println("1) " + i1);

System.out.println("2) " + i2);

System.out.println("3) " + i3);

System.out.println("4) " + i4);

System.out.println("5) " + i5);

System.out.println("6) " + i6);
System.out.println("7) Redeem Free Drink (100 points)");

System.out.println("9) Reprint Menu");

System.out.println("0) Checkout");
}


private static Purchase getItemByChoice(int choice, Purchase i1, Purchase i2, Purchase i3, Purchase i4, Purchase i5, Purchase i6) {
if (choice == 1) return i1;

if (choice == 2) return i2;

if (choice == 3) return i3;

if (choice == 4) return i4;

if (choice == 5) return i5;
return i6; // choice == 6
}
}
64 changes: 64 additions & 0 deletions src/main/java/Purchase.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
public class Purchase {
private String itemName;

private double price;

private boolean isDrink;


public Purchase() {
this.itemName = "";

this.price = 0.0;

this.isDrink = false;
}


public Purchase(String itemName, double price, boolean isDrink) {
this.itemName = itemName;

this.price = price;

this.isDrink = isDrink;
}


public String getItemName() {
return itemName;

}

public void setItemName(String itemName) {
this.itemName = itemName;
}

public double getPrice() {
return price;
}

public void setPrice(double price) {
if (price < 0) price = 0;
this.price = price;
}

public boolean isDrink() {
return isDrink;
}

public void setDrink(boolean drink) {
isDrink = drink;
}


public int pointsEarned() {
return (int) (price * 10);
}

@Override
public String toString() {
return itemName + " - $" + String.format("%.2f", price);


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

This file was deleted.