0% found this document useful (0 votes)
28 views10 pages

Code 094929

A Java Code of Restaurant ordering management system, the method use in it is Add, remove, Total and store
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views10 pages

Code 094929

A Java Code of Restaurant ordering management system, the method use in it is Add, remove, Total and store
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

package Assignments;

import java.text.SimpleDateFormat;
import java.util.LinkedHashMap;
import java.util.*;

public class RESTO {


static class MenuItem {
String name;
double price;

public MenuItem(String name, double price) {


this.name = name;
this.price = price;
}
}

static class Order {


int orderNumber;
String orderDate;
List<OrderDetails> items;

public Order(int orderNumber) {


this.orderNumber = orderNumber;
this.orderDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
this.items = new ArrayList<>();
}

public void addItem(MenuItem item, int quantity) {


this.items.add(new OrderDetails(item, quantity));
}
}
static class OrderDetails {
MenuItem item;
int quantity;

public OrderDetails(MenuItem item, int quantity) {


this.item = item;
this.quantity = quantity;
}
}

private static final Map<String, List<MenuItem>> menu = new LinkedHashMap<>();


private static final Map<Integer, MenuItem> numberedMenu = new HashMap<>();
private static final List<Order> orders = new ArrayList<>();
private static int orderCount = 0;

public static void main(String[] args) {


checkLogin();
}

static void mainMenu() {


Menu();
Scanner scanner = new Scanner(System.in);
boolean isRunning = true;

while (isRunning) {
System.out.println("\n===== Restaurant Ordering System =====");
System.out.println("1. Display Menu");
System.out.println("2. Place an Order");
System.out.println("3. Remove an Order");
System.out.println("4. Calculate Total Bill");
System.out.println("5. Generate Report");
System.out.println("6. Exit");
System.out.print("Enter your choice: ");
int choice = scanner.nextInt();

switch (choice) {
case 1: displayMenu(); break;
case 2: placeOrder(scanner); break;
case 3: removeOrder(scanner); break;
case 4: calculateBill(scanner); break;
case 5: generateReport(); break;
case 6: isRunning = false; break;
default: System.out.println("Invalid choice. Please try again.");
}
}

scanner.close();
}

private static void Menu() {


menu.put("Main Course", Arrays.asList(
new MenuItem("Beef bulalo (2-3 servings)", 199.00),
new MenuItem("Kare-kare (1-2 servings)", 189.00),
new MenuItem("Pork sisig (2-3 servings)", 169.00)
));
menu.put("Sidedish", Arrays.asList(
new MenuItem("Laing (2-3 servings)", 199.00),
new MenuItem("Chopsuey (1-2 servings)", 189.00),
new MenuItem("Pinakbet (2-3 servings)", 169.00)
));
menu.put("Beverage", Arrays.asList(
new MenuItem("Ice tea (1 liter)", 60.00),
new MenuItem("Buko Pandan (1 liter)", 50.00),
new MenuItem("Mango Shake (1 serving)", 70.00)
));
menu.put("Dessert", Arrays.asList(
new MenuItem("Halo-Halo (1 serving)", 50.00),
new MenuItem("Maja Blanca (1-2 servings)", 60.00),
new MenuItem("Turon (per piece)", 15.00)
));

int itemNumber = 1;
for (List<MenuItem> category : menu.values()) {
for (MenuItem item : category) {
numberedMenu.put(itemNumber++, item);
}
}
}

private static void displayMenu() {


System.out.println("\n===== Menu =====");
for (String category : menu.keySet()) {
System.out.println("\n" + category + ":");
for (Map.Entry<Integer, MenuItem> entry : numberedMenu.entrySet()) {
if (menu.get(category).contains(entry.getValue())) {
System.out.printf("%d. %-20s ₱%.2f\n", entry.getKey(),
entry.getValue().name, entry.getValue().price);
}
}
}
}

private static void placeOrder(Scanner scanner) {


Order order = new Order(++orderCount);
boolean ordering = true;
while (ordering) {
displayMenu();
System.out.println("\nEnter the number of the Dish to order (Enter 0 to finish):");
int Dish = scanner.nextInt();

if (Dish == 0) {
ordering = false;
break;
}

MenuItem selectedItem = numberedMenu.get(Dish);


if (selectedItem != null) {
System.out.println("Enter the quantity:");
int quantity = scanner.nextInt();
order.addItem(selectedItem, quantity);
System.out.println(quantity + " " + selectedItem.name + "(s) added to your order.");
} else {
System.out.println("Invalid item number. Please try again.");
}
}

if (!order.items.isEmpty()) {
orders.add(order);
}
}

private static void removeOrder(Scanner scanner) {


if (orders.isEmpty()) {
System.out.println("\nNo orders to remove.");
return;
}
System.out.println("\n===== Current Orders =====");
for (Order order : orders) {
System.out.printf("\nOrder #%d | Date: %s\n", order.orderNumber, order.orderDate);
for (OrderDetails orderDetails : order.items) {
System.out.printf("%s x %d\n", orderDetails.item.name, orderDetails.quantity);
}
}

System.out.print("\nEnter the order number to remove: ");


int orderNumber = scanner.nextInt();
Order selectedOrder = orders.stream().filter(o -> o.orderNumber ==
orderNumber).findFirst().orElse(null);

if (selectedOrder != null) {
System.out.print("Enter the dish number to remove: ");
int dishNumber = scanner.nextInt();
if (dishNumber <= selectedOrder.items.size() && dishNumber > 0) {
OrderDetails orderDetails = selectedOrder.items.get(dishNumber - 1);
System.out.print("Enter how many will be remove: ");
int Remove = scanner.nextInt();

if (Remove >= orderDetails.quantity) {


selectedOrder.items.remove(orderDetails);
System.out.println("All " + orderDetails.item.name + "(s) removed.");
} else {
orderDetails.quantity -= Remove;
System.out.println(Remove + " " + orderDetails.item.name + "(s) removed.");
}

if (selectedOrder.items.isEmpty()) {
orders.remove(selectedOrder);
}
} else {
System.out.println("Invalid dish number.");
}
} else {
System.out.println("Invalid order number.");
}
}

private static void calculateBill(Scanner scanner) {


System.out.println("\n===== Final Bill =====");
double total = 0.0;

for (Order order : orders) {


for (OrderDetails orderDetails : order.items) {
double cost = orderDetails.item.price * orderDetails.quantity;
total += cost;
System.out.printf("%-20s x %d = ₱%.2f\n", orderDetails.item.name,
orderDetails.quantity, cost);
}
}

System.out.println("\nTotal: ₱" + total);

System.out.print("With DISCOUNT? [y/n]: ");


String discount = scanner.next();
if (discount.equalsIgnoreCase("y")) {
System.out.print("(1: PWD 20%, \n2: SCD 20%, \n3: Pag-ibig 5%):"
+ "Enter discount choice ");
int discountChoice = scanner.nextInt();
switch (discountChoice) {
case 1: total *= 0.20; break;
case 2: total *= 0.20; break;
case 3: total *= 0.5; break;
default: System.out.println("Invalid choice.");
}
}

System.out.printf("Final Total: ₱%.2f\n", total);

double amountPaid = 0.0;


while (amountPaid < total) {
double Balance = total - amountPaid;
System.out.printf("\nRemaining Balance: ₱%.2f\n", Balance);
System.out.print("Enter cash received: ₱");
double cash = scanner.nextDouble();

if (cash < Balance) {


amountPaid += cash;
System.out.printf("Payment of ₱%.2f received. Remaining balance: ₱%.2f\n", cash,
Balance - cash);
} else {
amountPaid += cash;
double change = amountPaid - total;
System.out.printf("Cash Tendered of ₱%.2f received. Change to be given: ₱%.2f\n",
cash, change);
break;
}
}

System.out.println("Ending Sale!.");
}

private static void generateReport() {


System.out.println("\n===== Report =====");
if (orders.isEmpty()) {
System.out.println("No orders to report.");
} else {
double totalReport = 0;
for (Order order : orders) {
double cost = 0;
System.out.printf("\nOrder #%d | Date: %s\n", order.orderNumber, order.orderDate);
for (OrderDetails orderDetails : order.items) {
double itemTotal = orderDetails.item.price * orderDetails.quantity;
System.out.printf("%-20s x %d = ₱%.2f\n", orderDetails.item.name,
orderDetails.quantity, itemTotal);
cost += itemTotal;
}
System.out.printf("Total for Order #%d: ₱%.2f\n", order.orderNumber, cost);
totalReport += cost;
}
System.out.printf("\nOverall Sales (today): ₱%.2fa\n", totalReport);
}
}

private static void checkLogin() {


Scanner scan = new Scanner(System.in);
String user = "Nadine geronimo";
System.out.println("#= Welcome! To Restaurant Ordering Management System =#\n \n\t#= Login
=#\n");
System.out.print("Enter username: ");
String name = scan.nextLine();
System.out.print("Enter password: ");
int pass = scan.nextInt();

if (name.equalsIgnoreCase(user) && pass == 1234) {


mainMenu();
} else {
System.out.println("Incorrect username or password!");
checkLogin();
scan.close();
}
}
}

You might also like