/// <summary> /// displays the menu allowing the user to select which size /// of bill(s) to feed into the machine /// includes an option to return to the previous menu when finished /// also displays the total amount of money in tthe machine /// !this menu doesn't need to handle invalid input /// any invalid dollar bill simply isn't accepted and has no affect /// </summary> public void FeedMoneyMenu() { bool exit = false; while (!exit) { Console.Clear(); Console.WriteLine("\n" + _title); Console.WriteLine("Select Amount of Money to Feed:\n"); Console.WriteLine("(1) $1\n(2) $2\n(3) $5\n(4) $10\n(5) $20"); Console.WriteLine($"\n{_pressR} when you are finished.\n"); Console.Write($"Current Money Provided: {_vm.MachineBalance.ToString("C")}"); char selection = Console.ReadKey().KeyChar; if (selection == 'r' || selection == 'R') { exit = true; } else { _vm.FeedMoney(selection); } } }
public void DisplayPurchaseMenu() { string userChoice = ""; double customerBalance = 0.0; while (userChoice != "3") //Finish gets you out of this menu { Console.WriteLine($"Your current balance is: {customerBalance:C}"); Console.WriteLine(); Console.WriteLine("Enter 1 to add to your balance"); Console.WriteLine("Enter 2 to select a product to purchase"); Console.WriteLine("Enter 3 to finish the transaction"); userChoice = Console.ReadLine(); if (userChoice == "1") { customerBalance = vendMach.FeedMoney(customerBalance); Console.Clear(); } else if (userChoice == "2") { customerBalance = vendMach.SelectProduct(customerBalance); } } vendMach.FinishTransaction(customerBalance); Console.Clear(); }
private MenuOptionResult FeedMoney() { bool isValidData = false; while (!isValidData) { try { Console.Write("Please insert cash ($1, $2, $5, or $10)(please enter just the number (no $)): "); double balanceBefore = vendingMachine.GetBalance(); int money = int.Parse(Console.ReadLine()); if (money == 1 || money == 2 || money == 5 || money == 10) { vendingMachine.FeedMoney(money); isValidData = true; } else { throw new Exception(); } } catch (Exception) { Console.WriteLine("Please enter either $1, $2, $5, or $10"); } } return(MenuOptionResult.DoNotWaitAfterMenuSelection); }
public void EnterPurchaseMenu(VendingMachine vm) { while (true) { DisplayPurchaseMenu(vm); string selection = Console.ReadLine(); switch (selection) { case "1": Console.WriteLine("Enter the amount you would like to add in whole dollars"); string input = Console.ReadLine(); int amt; bool didParseSucceed = int.TryParse(input, out amt); if (!didParseSucceed) { Console.WriteLine("Invalid entry. Please try again."); break; } vm.FeedMoney(amt); break; case "2": vm.DisplayCurrentInventory(); Console.WriteLine("Please enter a selection"); string input1 = Console.ReadLine().ToUpper(); vm.Dispense(input1); break; case "3": Console.WriteLine("Thank you for your patronage!"); (int numQ, int numD, int numN) = ChangeIntoQuarDimNic(vm); Console.WriteLine($"Your change is {numQ} Quarters, {numD} Dimes, and {numN} Nickels."); return; default: break; } Console.WriteLine("Press enter to continue."); Console.ReadLine(); } }
public static void FeedMoneyMenu(VendingMachine vendingMachine) { bool isExit = false; while (!isExit) { Console.Clear(); Console.Write("How many dollars would you like to add? "); string dollarsInput = Console.ReadLine(); int dollars = 0; if (int.TryParse(dollarsInput, out dollars)) { if (dollars > 0) { vendingMachine.FeedMoney(dollars); Console.WriteLine($"{dollars:c} has been added to your balance."); Console.WriteLine($"Your balance is now {vendingMachine.Balance:c}"); Console.ReadKey(); } else { Menu.DisplayMessage("Please enter a positive whole dollar amount."); } isExit = true; } else if (dollarsInput == "") { isExit = true; } else { Menu.DisplayMessage("Please enter money in whole numerals."); } } }
/// <summary> /// /// </summary> /// <param name="vm"></param> public void Run(VendingMachine vm) { while (true) { Console.Clear(); Console.WriteLine("Please make a choice."); Console.WriteLine("1. Feed Money."); Console.WriteLine("2. Select Product."); Console.WriteLine("3. Finish Transaction."); Console.WriteLine($"Current Money Provided : $ {vm.MachineBalance}"); string choice = Console.ReadLine(); if (choice == "1") { Console.WriteLine("Please insert cash."); moneyEntered = Console.ReadLine(); vm.FeedMoney(moneyEntered); } else if (choice == "2") { Console.WriteLine("Please enter a product code: "); productKeyEntered = Console.ReadLine(); vm.SelectProduct(productKeyEntered); } else if (choice == "3") { vm.FinishTransaction(); Console.Clear(); break; } else { Console.WriteLine("Invalid option."); Console.ReadLine(); } } }
/// <summary> /// Displays the purchase menu /// </summary> public void Display() { while (true) { Console.WriteLine(); Console.WriteLine("Make a delicious unhealthy purchase"); Console.WriteLine(); Console.WriteLine("___ 1 <<--->> Feed Me Money! ___"); Console.WriteLine(); Console.WriteLine("___ 2 <<--->> Select your junk food ___"); Console.WriteLine(); Console.WriteLine("___ 3 <<--->> Finish Transaction ___"); Console.WriteLine(); Console.WriteLine("___ Q <<--->> Return to Main Menu ___"); Console.WriteLine(); Console.WriteLine($" ***Your balance is ${vm.Balance} ***"); Console.WriteLine(); Console.Write("____What option do you want to select? ____ "); Console.WriteLine(); Console.WriteLine(); string input = Console.ReadLine().ToUpper(); Console.WriteLine(); if (input == "1") { Console.WriteLine("How much money do you want to waste on junk (in whole dollars)?"); Console.WriteLine(); string moneyGiven = Console.ReadLine(); Console.WriteLine(); try { decimal amount = decimal.Parse(moneyGiven); vm.FeedMoney(amount); Console.WriteLine($" ***Your balance is ${vm.Balance} ***"); Console.WriteLine(); Console.WriteLine("Hit Enter to go back to select your junk food."); Console.WriteLine(); } catch (FormatException ex) { Console.WriteLine("What in tarnation did you just do? Let's try again."); Console.WriteLine(); Console.WriteLine("Hit Enter to go back to select your junk food."); Console.WriteLine(); } } else if (input == "2") { Console.WriteLine(); Console.WriteLine($" ***Your balance is ${vm.Balance} ***"); Console.WriteLine(); Console.WriteLine("Displaying Vending Machine Items"); Console.WriteLine(); Console.WriteLine("**** Here are your wonderful snack options ****"); Console.WriteLine(); List <VendingMachineItem> stock = vm.Stock; foreach (VendingMachineItem item in stock) { Console.WriteLine($"{item.SlotIdentifier.PadLeft(10)} {item.Name.PadRight(20)} {item.Price}\t Qty. ({item.Quantity}) "); } Console.WriteLine(); Console.WriteLine("Which junk food would you like to put in your pie hole?"); Console.WriteLine(); string selection = Console.ReadLine().ToUpper(); Console.WriteLine(); try { VendingMachineItem vmi = vm.SelectProduct(selection); string noises = vmi.GetsConsumed(vmi.Type); Console.WriteLine(); Console.WriteLine($"Here is your junk food ... {vmi.Name}, {noises}."); Console.WriteLine(); Console.WriteLine($" ***Your balance is ${vm.Balance} ***"); Console.WriteLine(); Console.WriteLine("Hit ENTER to make another unhealthy eating decision or finish your transaction."); Console.WriteLine(); } catch (VendingMachineException ex) { Console.WriteLine(ex.Message); Console.WriteLine(); Console.WriteLine("Hit Enter to go back to select your junk food."); } } else if (input == "3") { Change change = new Change(); string customerChange = change.CalculatedChange(vm.Balance); Console.WriteLine(customerChange); vm.ClearBalance(); Console.WriteLine(); Console.WriteLine($"__* The Last Resort Vending Machine's balance is ${vm.Balance} *__"); Console.WriteLine(); Console.WriteLine("****Keep the change, ya filthy animal!****"); Console.WriteLine(); break; } else if (input == "Q") { Console.WriteLine("Hit ENTER to return to main menu."); break; } else { Console.WriteLine("HAHAHA What was that? Hit ENTER and try that again!"); } Console.ReadLine(); } }
public void Display() { while (true) { Console.WriteLine(); Console.WriteLine("Purchase Menu"); Console.WriteLine("1] >> Feed Money "); Console.WriteLine("2] >> Select Product"); Console.WriteLine("3] >> Finish Transaction"); Console.WriteLine("Q] >> Return to Main Menu"); Console.Write("Please make a selection: "); string input = Console.ReadLine(); if (input == "1") { Console.WriteLine(""); // Feeding Money vm.FeedMoney(vm); Console.Clear(); } else if (input == "2") { Console.WriteLine(""); // Selecting Product (string slotID, bool enoughMoney, bool notSoldOut) = vm.SelectProduct(); if (enoughMoney && slotID != "Q" && notSoldOut) { itemToConsume = vm.CurrentStock[slotID].SlotItem; vm.Dispense(vm, slotID); Console.WriteLine($"{vm.CurrentStock[slotID].SlotItem.ProductName} dispensing now . . ."); System.Threading.Thread.Sleep(3000); } if (!notSoldOut) { Console.WriteLine(); Console.WriteLine("Item is sold out!"); System.Threading.Thread.Sleep(2000); } Console.Clear(); } else if (input == "3") { if (vm.Balance == 0) { Console.WriteLine(); Console.WriteLine("Transaction Cancelled"); Console.WriteLine(); System.Threading.Thread.Sleep(1000); Console.WriteLine($"Returning to main menu now . . ."); System.Threading.Thread.Sleep(2000); Console.Clear(); } else { Console.WriteLine(""); // Finishing Transaction vm.GiveChange(vm); Console.WriteLine(); System.Threading.Thread.Sleep(1500); Customer customer = new Customer(); if (itemToConsume != null) { string result = customer.Consume(itemToConsume.Type); Console.WriteLine(result); Console.WriteLine(); } System.Threading.Thread.Sleep(2000); Console.WriteLine($"Returning to main menu now . . ."); System.Threading.Thread.Sleep(3500); Console.Clear(); } } else if (input.ToUpper() == "Q") { Console.WriteLine("Returning to main menu"); break; } else { Console.WriteLine("Please try again"); } } }
static void Main(string[] args) { try { bool isComplete = false; while (!isComplete) { string choice = ""; bool exitToMainMenu = false; ReadInInputFile.InputInventory(); Console.WriteLine("Welcome to the Vend-Matic 500!"); Console.WriteLine(); Console.WriteLine("Please see our menu options below."); Console.WriteLine("(1) Display items"); Console.WriteLine("(2) Purchase"); choice = Console.ReadLine(); if (choice == "1") { VendingMachine.DisplayItems(); Console.WriteLine("Please press(2) to make a purchase: "); choice = Console.ReadLine(); } if (choice == "2") { decimal fedMoney = 0; do { Console.WriteLine("Purchase Menu"); Console.WriteLine("(1) Feed Money"); Console.WriteLine("(2) Select Product"); Console.WriteLine("(3) Finish Transaction"); Console.WriteLine("Current Money Provided: $" + fedMoney); string selection = Console.ReadLine(); if (selection == "1") { Console.WriteLine("Please feed money in whole dollar amounts($1, $5, $10, or $20)"); Console.WriteLine("How much money do you want to feed?"); string fedMoneyString = Console.ReadLine(); if (fedMoneyString == "1" || fedMoneyString == "5" || fedMoneyString == "10" || fedMoneyString == "20") { fedMoney += VendingMachine.FeedMoney(fedMoneyString); } else { Console.WriteLine("Incorrect denomination. The money fed must be in whole dollar amounts(ex. $1, $5, etc)"); Console.WriteLine(); } } if (selection == "2") { VendingMachine.DisplayItems(); Console.WriteLine("Please type your selection(ex. A1)"); string selectedProduct = Console.ReadLine().ToUpper(); if (VendingMachine.vendMachine.ContainsKey(selectedProduct)) { fedMoney = VendingMachine.PurchaseItem(selectedProduct, fedMoney); } else { Console.WriteLine("Incorrect entry. Item does not exist!"); Console.WriteLine(); } } if (selection == "3") { VendingMachine.DispenseChange(fedMoney); Console.WriteLine("Are sure you want to finish you transaction? "); string exitQuestion = Console.ReadLine().ToUpper(); if (exitQuestion == "N") { exitToMainMenu = false; } if (exitQuestion == "Y") { exitToMainMenu = true; } fedMoney = 0; } }while (!exitToMainMenu); } Console.ReadLine(); } } catch (Exception e) { Console.WriteLine(e.Message); } }
public void PurchaseMenu(VendingMachine vendingMachine) { while (true) { Console.WriteLine("-----TE Vending Machine-----"); Console.WriteLine(" Powered by Umbrella Corp"); Console.WriteLine(); Console.WriteLine("> To Feed Money, press 1: "); Console.WriteLine("> To Select Product, press 2: "); Console.WriteLine("> To Finish Transaction, press 3: "); Console.WriteLine(); Console.WriteLine($"> Current Money Provided {vendingMachine.Balance:C}"); Console.WriteLine(); string input = Console.ReadLine().ToUpper(); if (input == "1") { Console.Write("> How much money would you like to insert, $1, $2, $5, or $10? "); decimal moneyFed = decimal.Parse(Console.ReadLine()); decimal[] validAmount = new decimal[4] { 1M, 2M, 5M, 10M }; if (validAmount.Contains(moneyFed)) { vendingMachine.FeedMoney(moneyFed); Console.Clear(); } else { Console.WriteLine("That is not a valid amount to deposit. Please try again."); Console.WriteLine(); } } else if (input == "2") { Console.Clear(); Console.WriteLine("-----TE Vending Machine-----"); Console.WriteLine(" Powered by Umbrella Corp"); Console.WriteLine(); DisplayStock(vendingMachine); Console.Write("> What product would you like to purchase? "); Console.WriteLine(); Console.WriteLine(); Console.WriteLine($"> Current Money Provided {vendingMachine.Balance:C}"); string productSelection = Console.ReadLine().ToUpper(); while (true) { if (!vendingMachine.ValidProductSelection(productSelection)) { Console.WriteLine("This is not a valid product choice. Please try again."); Console.WriteLine(); break; } else if (!vendingMachine.ProductInStock(productSelection)) { Console.WriteLine("This product is currently out of stock. Please select a different product."); Console.WriteLine(); break; } else if (!vendingMachine.HasRequiredBalance(productSelection)) { Console.WriteLine("You have not inserted enough money to buy this product. Please insert more money or select a different item!"); Console.WriteLine(); break; } else { Console.WriteLine(); Console.WriteLine("Your product is now being dispensed. Thank you!"); Console.WriteLine(); vendingMachine.DispenseItem(productSelection); break; } } } else if (input == "3") { Console.Clear(); Console.WriteLine(); Console.WriteLine($"> Your change is... "); Change change = vendingMachine.MakeChange(vendingMachine.Balance); Console.WriteLine($"{change.Quarters} quarters, " + $"{change.Dimes} dimes, " + $"and {change.Nickels} nickels."); Console.WriteLine(); while (vendingMachine.PurchasedStock.Count > 0) { PurchasableItem item = vendingMachine.PurchasedStock.Dequeue(); //vendingMachine.SalesReport(item); Console.WriteLine(item.ConsumeMessage()); } Console.WriteLine(); Console.WriteLine("> Press any key to continue..."); Console.ReadKey(); Console.Clear(); break; } } }
static void Main(string[] args) { string currentDirectory = Directory.GetCurrentDirectory(); string inputFileName = "vendingmachine.csv"; string readFilePath = Path.Combine(currentDirectory, inputFileName); VendingMachine vendoMatic600 = new VendingMachine(readFilePath); bool exitMainMenu = false; Menu mainMenu = new Menu(); string[] mainMenuOptions = { "Display Items", "Purchase", "EXIT", "Sales Report" }; Menu purchaseMenu = new Menu(); string[] purchaseMenuOptions = { "Feed Money", "Select Product", "Finish Transaction" }; //while loop returns user to the main menu while (!exitMainMenu) { mainMenu.DisplayMenu(mainMenuOptions, 1); string inputKey = Console.ReadLine(); if (inputKey == "1") { Console.Clear(); Console.WriteLine(vendoMatic600.DisplayProducts()); } else if (inputKey == "2") { //purchaseMenu is displayed, loop for same reason bool exitPurchaseMenu = false; while (!exitPurchaseMenu) { Console.WriteLine(); purchaseMenu.DisplayMenu(purchaseMenuOptions); string purchaseInputKey = Console.ReadLine(); Console.WriteLine($"\nCurrent Money: {vendoMatic600.StoredMoney.ToString("C2")}"); if (purchaseInputKey == "1") { Console.Clear(); Console.WriteLine($"\nInsert a bill: $(1), $(2), $(5), or $(10)"); string moneyInserted = Console.ReadLine(); Console.WriteLine(vendoMatic600.FeedMoney(moneyInserted)); } else if (purchaseInputKey == "2") { Console.Clear(); Console.WriteLine(vendoMatic600.DisplayProducts()); Console.WriteLine($"Current Money: {vendoMatic600.StoredMoney.ToString("C2")}"); Console.WriteLine("\nSelect the product you would like to purchase by entering its slot. Ex: A4, C3, B1, D2, etc"); string userSelectedSlot = Console.ReadLine().ToUpper(); Console.Clear(); Console.WriteLine(vendoMatic600.SelectItemAndPurchase(userSelectedSlot)); } else if (purchaseInputKey == "3") { int[] finalChangeInCoins = vendoMatic600.GiveChange(); Console.WriteLine($"\nYour change is: {finalChangeInCoins[0]} quarter(s), {finalChangeInCoins[1]} dime(s), {finalChangeInCoins[2]} nickel(s)"); exitPurchaseMenu = true; } else { Console.WriteLine("\nUnknown input. Try again."); } } } else if (inputKey == "3") { if (vendoMatic600.StoredMoney != 0) { vendoMatic600.GiveChange(); } Console.WriteLine(); exitMainMenu = true; } else if (inputKey == "4") { SalesReport salesReport = new SalesReport(); string partialFileName = "SalesReport"; DirectoryInfo salesReportDirectory = new DirectoryInfo(currentDirectory); FileInfo[] salesReportFiles = salesReportDirectory.GetFiles(partialFileName + "*.txt"); if (salesReportFiles.Length == 0) { salesReport.CreateFirstReport(vendoMatic600); } else { salesReport.CreateUpdatedSalesReport(vendoMatic600); } Console.WriteLine("\nSales Report Generated\n"); } else { Console.WriteLine("\nUnknown input. Try again.\n"); } } }
public void Display() { while (true) { Console.WriteLine(); Console.WriteLine("Purchase Menu"); Console.WriteLine("1] >> Feed Money"); Console.WriteLine("2] >> Select Product"); Console.WriteLine("3] >> Finish Transaction"); Console.WriteLine("Q] >> Quit"); Console.WriteLine($"You have ${vm.Balance} left."); Console.WriteLine(); Console.Write("What option do you want to select? "); string input = Console.ReadLine(); Console.WriteLine(); if (input == "1") { try { Console.Write("How much money are you feeding the vending machine? "); decimal moneyFed = decimal.Parse(Console.ReadLine()); Console.WriteLine(); vm.FeedMoney(moneyFed); Console.WriteLine($"Current Total Money Provided: ${vm.Balance}"); } catch (FormatException e) { Console.WriteLine(); Console.WriteLine("That is not money. Please enter money."); } } else if (input == "2") { Console.Write("Please select which product you would like to purchase by the slot identification: "); string slot = Console.ReadLine().ToUpper(); Console.WriteLine(); Item item = vm.SelectProduct(slot); purchasedItems.Add(item); } else if (input == "3") { Console.WriteLine(); Console.WriteLine(vm.DispenseChange()); // checking the type of the user's item, and returning the sound. foreach (Item item in purchasedItems) { Console.WriteLine(item.MakeSound()); } } else if (input == "Q" || input == "q") { Console.WriteLine("Returning to main menu"); break; } else { Console.WriteLine("Please try again"); } } }
static void Main(string[] args) { string currentDir = Environment.CurrentDirectory; string filename = "vendingmachine.csv"; string filePath = Path.Combine(currentDir, filename); bool programDone = false; try { VendingMachine.InitializeInventory(filePath); } catch { programDone = true; } Menu.ResetScreen(); while (!programDone) { Console.WriteLine("What would you like to do?\n(1) Display Vending Machine Items\n(2) Purchase\n(3) Quit"); string userInput = Console.ReadLine(); if (userInput == "1") { Menu.ResetScreen(); Menu.DisplayProducts(); } else if (userInput == "2") { Menu.ResetScreen(); while (!programDone) { Console.WriteLine($"{Menu.DisplayMachineBalance()}What would you like to do?\n(1) Feed Money\n(2) Select Product\n(3) Finish Transaction"); userInput = Console.ReadLine(); if (userInput == "1") { Menu.ResetScreen(); while (userInput != "x") { Console.WriteLine($"{Menu.DisplayMachineBalance()}Please insert a bill (We accept $1, $2, $5, $10) or press 'x' to return to the previous menu..."); userInput = Console.ReadLine(); Menu.ResetScreen(); VendingMachine.FeedMoney(userInput); } } else if (userInput == "2") { Menu.ResetScreen(); Menu.DisplayProducts(); Console.WriteLine($"{Menu.DisplayMachineBalance()}Please enter a number associated with the item you'd like to receive..."); userInput = Console.ReadLine(); VendingMachine.SelectProduct(userInput); } else if (userInput == "3") { Menu.ResetScreen(); VendingMachine.FinishTransaction(); programDone = true; } else { Console.WriteLine("\nInvalid input, please try again...\n"); } } } else if (userInput == "3") { Menu.ResetScreen(); VendingMachine.FinishTransaction(); programDone = true; } else { Console.WriteLine("\nInvalid input, please try again...\n"); } } //Logs sales history, printing the results to our sales file Logger.ReadSalesHistory(filename); Logger.UpdateSalesHistory(Customer.Purchases); Logger.PrintSalesHistory(); Console.ReadLine(); }