import java.util.*;
public class SnackBar { // Only one KeyboardInput object needs to be created. It can be // shared amongst the methods by storing a reference to it in // an instance variable. private KeyboardInput in;
// The menu used by an instance of this class. private Menu menu;
// The order list private OrderList orderList;
public SnackBar() { in = new KeyboardInput(); menu = new Menu(); orderList = new OrderList(); }
/** * The main loop of the program. Keep asking the user to enter * a command number until the user quits. */ public void go() { while (true) { displayCommands(); int command = getCommand(); if (quitSelected(command)) { break; } runCommand(command); } }
private void displayCommands() { System.out.println("\nSnack Bar"); System.out.println("1. Display Menu"); System.out.println("2. Add Menu Item"); System.out.println("3. Remove Menu Item"); System.out.println("4. Change Price of Menu Item"); System.out.println("5. Save Menu"); System.out.println("6. Load Menu"); System.out.println("7. Enter Order"); System.out.println("8. Display Order"); System.out.println("9. Quit"); }
private int getCommand() { System.out.print("\nSelect command: "); return in.readInteger(); }
private boolean quitSelected(int n) { return (n == 9)? true : false; }
private void runCommand(int item) { switch (item) { case 1: displayMenu(); break; case 2: addMenuItem(); break; case 3: removeMenuItem(); break; case 4: changePrice(); break; case 5: saveMenu(); break; case 6: loadMenu(); break; case 7: enterOrder(); break; case 8: displayOrder(); break; default: System.out.println("\nSorry - don't recognise that input, try again"); } }
/** * Display the food menu. */ private void displayMenu() { System.out.println("Snack Bar Menu"); System.out.println("--------------"); ArrayList items = menu.getMenuItems(); for (int i = 0; i < items.size(); i++) { MenuItem item = (MenuItem) items.get(i); System.out.println((i + 1) + ". " + item.getName() + "\t\t" + item.getPrice()); } }
private void addMenuItem() { System.out.println("\nAdd Menu Item"); System.out.print("Name: "); String name = in.readString(); System.out.print("Price (in pence): "); int price = in.readInteger(); menu.addItem(name, price); }
private void removeMenuItem() { displayMenu(); ArrayList items = menu.getMenuItems(); int toRemove = 0; System.out.print("Enter number of menu item to remove: "); toRemove = in.readInteger(); if ((toRemove > 0) && (toRemove <= items.size())) { menu.removeItem(toRemove - 1); } else { System.out.println("Invalid item number, nothing done"); } }
private void changePrice() { displayMenu(); ArrayList items = menu.getMenuItems(); int toChange = 0; System.out.print("Enter number of menu item to change price of: "); toChange = in.readInteger(); if ((toChange > 0) && (toChange <= items.size())) { System.out.println("Enter new price: "); int newPrice = in.readInteger(); menu.changeItemPrice(toChange - 1, newPrice); } else { System.out.println("Invalid item number, nothing done"); } }
private void saveMenu() { System.out.print("Enter file name: "); String fileName = in.readString(); FileOutput output = new FileOutput(fileName); menu.save(output); output.close(); }
private void loadMenu() { System.out.print("Enter file name: "); String fileName = in.readString(); FileInput input = new FileInput(fileName); menu.load(input); input.close(); }
private void enterOrder() { System.out.println("\nNew Order"); System.out.println("---------"); Order order = enterOrderItems(); orderList.addOrder(order); }
private Order enterOrderItems() { Order order = new Order(); ArrayList items = menu.getMenuItems(); while (true) { displayMenu(); System.out.print("Enter menu item number or press ENTER only to stop: "); int menuitem = in.readInteger(); if (menuitem == 0) { break; } if ((menuitem > 0) && (menuitem <= items.size())) { order.addOrderItem((MenuItem) items.get(menuitem - 1)); } } return order; }
private void displayOrder() { ArrayList orders = orderList.getOrders(); if (orders.size() == 0) { System.out.println("There are no orders"); } else { System.out.println("There are " + orders.size() + " orders"); System.out.println("numbered from 1 to " + orders.size()); System.out.print("Enter number of order to display: "); int orderNumber = in.readInteger(); if ((orderNumber > 0) && (orderNumber <= orders.size())) { Order order = (Order) orders.get(orderNumber - 1); displayOrderItems(order); } } }
private void displayOrderItems(Order order) { System.out.println("Order contains:"); ArrayList orderItems = order.getOrderItems(); for (int i = 0; i < orderItems.size(); i++) { MenuItem item = (MenuItem) orderItems.get(i); System.out.println(item.getName() + "\t\t" + item.getPrice()); } System.out.println("Total: " + order.getTotal()); }
// The main method is as simple as possible, just creating // a PhoneBook object and calling its go method. public static void main(String[] args) { SnackBar snackBar = new SnackBar(); snackBar.go(); } }