public UserInterface(VendingMachine vm) { this.vm = vm; }
public void GenerateDisplayItemsMenu(Dictionary <string, SnackItem> Snacks, VendingMachine Vend, bool bMainMenu = true) { Console.Clear(); List <string> sListOfKeys = new List <string>(); foreach (string s in Snacks.Keys) { sListOfKeys.Add(s); } string[] saKeys = sListOfKeys.ToArray(); decimal dBalanceOverride = Vend.Balance; if (dBalanceOverride > 999.99m) { dBalanceOverride = 999.99m; } string sLine = "_______________________________________________\n" + "|| _ _ _ _ _ _ _ _ _ _ ||\n" + "|| / \\ / \\ / \\ / \\ / \\ / \\ / \\ / \\ / \\ / \\ ||\n" + "|| ( V | E | N | D | O | M | A | T | I | C ) ||\n" + "|| \\_/ \\_/ \\_/ \\_/ \\_/ \\_/ \\_/ \\_/ \\_/ \\_/ ||\n" + "||___________________________________________||\n" + "|| || || || || ||\n" + $"|| A1 || A2 || A3 || A4 || Balance ||\n" + $"|| || || || || ${string.Format("{0:000.00}", dBalanceOverride)} ||\n" + $"|| || || || || ||\n" + $"|| || || || || [A] [B] ||\n" + $"|| B1 || B2 || B3 || B4 || [C] [D] ||\n" + $"|| || || || || ||\n" + $"|| || || || || [1] [2] ||\n" + $"|| || || || || [3] [4] ||\n" + $"|| C1 || C2 || C3 || C4 || ||\n" + $"|| || || || || ||\n" + $"|| || || || || ||\n" + $"|| || || || || ||\n" + $"|| D1 || D2 || D3 || D4 || ||\n" + $"|| || || || || ||\n" + $"|| || || || || ||\n" + $"|| || || || || ||\n" + "||______________________________|| ||\n" + "|| || ||\n" + "|| || ||\n" + "||______________________________||___________||\n\n"; string[] newStringArray = sLine.Split('\n'); foreach (string s in newStringArray) { Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine(s); Console.ResetColor(); } int n = 0; sLine = ""; foreach (string s in saKeys) { if (Snacks[saKeys[n]].nAmount <= 0) { sLine += "**SOLD OUT**\n"; } else { sLine += $"{ Snacks[saKeys[n]].sLocation} - { Snacks[saKeys[n]].sName} - ${ Snacks[saKeys[n]].dPrice}\n"; } n++; } Console.WriteLine(sLine); Console.ForegroundColor = ConsoleColor.White; if (bMainMenu) { Console.WriteLine("1). Insert Money"); Console.WriteLine("2). Select Product"); Console.WriteLine("3). Finish Transaction"); Console.WriteLine("4). Exit"); } }
public void Display(VendingMachine vend) { string directory = Environment.CurrentDirectory; string filename = "Log.txt"; string fullPath = Path.Combine(directory, filename); vmfw = new VendingMachFileWriter(fullPath); List <Item> allPurchases = new List <Item>(); while (true) { Console.WriteLine("(1) Feed Money"); Console.WriteLine("(2) Select Product"); Console.WriteLine("(3) Finish Transaction"); Console.WriteLine("(Q) Return to Main Menu"); string input = Console.ReadLine().ToUpper(); if (input == "1" || input == "(1)") { Console.WriteLine("Please enter a dollar amount(1, 2, 5, 10,)"); string[] validMoneyValues = { "1", "2", "5", "10" }; string moneyInput = Console.ReadLine(); if (validMoneyValues.Contains(moneyInput)) { decimal moneyParsed = 0; Decimal.TryParse(moneyInput, out moneyParsed); vend.FeedMoney(moneyParsed); Console.WriteLine("Money balance is " + vend.Balance.ToString("C")); vmfw.LogMessage("FEED MONEY: " + moneyParsed.ToString("C") + " " + vend.Balance.ToString("C")); } else { Console.WriteLine("Amount not valid, your bill is being returned"); } } else if (input == "2" || input == "(2)") { Console.WriteLine("Which slot would you like to choose?"); string slotInput = Console.ReadLine().ToUpper(); if (!vend.DoesSlotExist(slotInput)) { Console.WriteLine("That slot does not exist, please try again"); } else if (vend.IsSoldOut(slotInput)) { Console.WriteLine("I'm sorry that item is sold out, please try again with another choice."); } else if (vend.InsufficientFunds(slotInput)) { Console.WriteLine("I'm sorry you do not have enough money"); } else { try { Item purchasedItem = vend.Purchase(slotInput); allPurchases.Add(purchasedItem); Console.WriteLine("you have purchased " + purchasedItem.Name); Console.WriteLine("your new balance is " + vend.Balance); } catch (VendingMachineException ex) { Console.WriteLine(ex.Message); } } } else if (input == "3" || input == "(3)") { decimal oldBalance = vend.Balance; Change change = vend.CompleteTransaction(); Console.WriteLine("Your Change is " + change.NumberOfQuarters + " quarters, " + change.NumberOfDimes + " dimes, " + change.NumberOfNickels + " nickles"); Console.WriteLine("Enjoy your meal!"); foreach (Item food in allPurchases) { Console.WriteLine(food.Consume()); } vmfw.LogMessage("GIVE CHANGE :" + oldBalance.ToString("C") + " " + vend.Balance.ToString("C")); string salesPath = Path.Combine(directory, "salesreport.txt"); vmfw = new VendingMachFileWriter(salesPath); decimal totalSales = 0; foreach (Item item in allPurchases) { vmfw.SalesReport(item.Name + "|" + item.Price); totalSales += item.Price; } vmfw.SalesReport(""); vmfw.SalesReport("**TOTAL SALES** " + totalSales.ToString("C")); vmfw.SalesReport(""); vmfw.SalesReport("Never gonna give you up, never gonna let you down"); vmfw.SalesReport("Never gonna run around and desert you"); vmfw.SalesReport("Never gonna make you cry, never gonna say goodbye"); vmfw.SalesReport("Never gonna tell a lie and hurt you"); } else if (input == "Q" || input == "(Q)") { Console.WriteLine("Returning to Main Menu"); break; } } }
public void Display() { Money moneyInMachine = new Money(); VendingMachine vendingMachine = new VendingMachine(); Money.Balance = moneyInMachine.MoneyInitial; while (true) { Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("Welcome to the Virtual Vending Machine!"); Console.WriteLine(); Console.WriteLine("(1) Display Vending Machine Items"); Console.WriteLine("(2) Purchase Item"); Console.WriteLine("(3) Exit"); string userInput = Console.ReadLine(); if (userInput == "1") { vendingMachine.DisplayAllItems(); Console.WriteLine(); Console.WriteLine("Please press ENTER to go back to the MAIN MENU."); } else if (userInput == "2") { Console.WriteLine("(1) Feed Money"); Console.WriteLine("(2) Select Product"); Console.WriteLine("(3) Finish Transaction"); Console.WriteLine($"Current Money Provided: {Money.Balance:C2}"); string userInput2 = Console.ReadLine(); if (userInput2 == FEEDMONEY) { Console.WriteLine("How much money in dollars do you want to insert?"); while (true) { // current money provided indicates how much money the customer has fed into the machine Console.WriteLine("$1, $2, $5, or $10 dollars?"); decimal amountInserted = decimal.Parse(Console.ReadLine()); // need a try catch if (amountInserted == 1.0M || amountInserted == 2.0M || amountInserted == 5.0M || amountInserted == 10.0M) { // get the amount of money input Console.WriteLine($"You have {moneyInMachine.AddMoney(amountInserted):C2} to spend."); Log.LogFeedMoney(Money.Balance, amountInserted); Console.WriteLine(); Console.WriteLine("Please press ENTER to continue with your purchase."); break; } else { Console.WriteLine("INVALID AMOUNT"); } } } else if (userInput2 == "2") { while (true) { Console.WriteLine(); Console.WriteLine("Which item would you like to purchase?"); Console.WriteLine(); // display all items vendingMachine.DisplayAllItems(); string itemChosen = Console.ReadLine(); // if item exists and itemPrice < MoneyInitial, able to give it if (vendingMachine.ItemExists(itemChosen) && vendingMachine.VendingItems[itemChosen].ItemsRemaining > 0 && vendingMachine.VendingItems[itemChosen].ItemPrice < Money.Balance) { Console.WriteLine($"Yay! You selected {itemChosen}!"); Console.Beep(588, 200); Console.WriteLine("Beep..."); Console.WriteLine(); Console.Beep(440, 200); Console.WriteLine("...Boop..."); Console.WriteLine(); Console.Beep(370, 200); Console.WriteLine("......Beep..."); Console.WriteLine(); Console.Beep(294, 200); Console.WriteLine(".........Boop..."); Console.WriteLine(); Console.WriteLine($"............... You got a {vendingMachine.VendingItems[itemChosen].ItemName}!"); Console.WriteLine("Enjoy!!!"); Console.WriteLine($"{vendingMachine.VendingItems[itemChosen].VendingMessage}"); Log.LogItem(vendingMachine.VendingItems[itemChosen].ItemName, itemChosen, Money.Balance, Money.Balance -= vendingMachine.VendingItems[itemChosen].ItemPrice); //Money.Balance = Money.Balance - vendingMachine.VendingItems[itemChosen].ItemPrice; vendingMachine.VendingItems[itemChosen].ItemsRemaining--; break; } // else if !item exists Console.Writeline("Item does not exist.") and return to purchase menu else if (!vendingMachine.ItemExists(itemChosen)) { Console.Clear(); Console.WriteLine(); Console.WriteLine("Whoops! The item does not exist!"); Console.WriteLine("GAME OVER!"); Console.WriteLine("Please try again!"); Console.WriteLine(); Console.WriteLine($"Your remaining balance is {Money.Balance:C2}"); } // else if !item sold out Console.Writeline("Item is SOLD OUT." and return to purchase menu. // ItemsRemaining <= 0; else if (vendingMachine.ItemExists(itemChosen) && vendingMachine.VendingItems[itemChosen].ItemsRemaining < 1 && vendingMachine.VendingItems[itemChosen].ItemPrice < Money.Balance)// see if money works { Console.Clear(); Console.WriteLine(); Console.WriteLine($"Again... {itemChosen} is SOLD OUT! Sorry boo thang!"); Console.WriteLine(); Console.WriteLine($"Your remaining balance is {Money.Balance:C2}"); } else if (vendingMachine.ItemExists(itemChosen) && vendingMachine.VendingItems[itemChosen].ItemPrice > Money.Balance) { Console.Clear(); Console.WriteLine(); Console.WriteLine("Insufficient Funds... Please select another item."); Console.WriteLine(); Console.WriteLine($"Your remaining balance is {Money.Balance:C2}"); break; } } } else if (userInput2 == "3") { Console.WriteLine("Finishing Transaction"); //give back change here in nickels, dimes, quarters (decimal) // update the machine's balance to 0 remaining Log.LogGiveChange(Money.Balance, 0M); Money.ChangeGiven(); Console.WriteLine(); Console.WriteLine($"Your remaining balance is {Money.Balance:C2}"); } } else if (userInput == "3") { Console.WriteLine("Please come again soon! Have a nice day!"); break; } Console.ReadLine(); Console.Clear(); } }
//Method to display all items in the vending machine in a grid with ASCII art needs a Vending Machine object passed as an argument public static void Display(VendingMachine vm) { //Grab a refererence to the Dictionary stored in Vending Machine Dictionary <string, Item> items = vm.items; Console.WriteLine("________________________________________________________________________________________"); Console.WriteLine("| |"); Console.WriteLine("| |"); Console.WriteLine("| __________________________________________________________________________________ |"); Console.WriteLine("| | | |"); for (int i = 0; i < 4; i++) { string letter = ""; switch (i) { case 0: letter = "A"; break; case 1: letter = "B"; break; case 2: letter = "C"; break; case 3: letter = "D"; break; } Console.Write("| |"); for (int j = 1; j <= 4; j++) { string keyLookup = letter + j; Console.Write($"{keyLookup,-20}"); } Console.Write("| |\r\n"); Console.Write("| |"); for (int j = 1; j <= 4; j++) { string keyLookup = letter + j; string nameString = items[keyLookup].Name; if (items[keyLookup].Quantity < 1) { nameString = "**SOLD OUT**"; } Console.Write($"{nameString,-20}"); } Console.Write("| |\r\n"); Console.Write("| |"); for (int j = 1; j <= 4; j++) { string keyLookup = letter + j; Console.Write($"{items[keyLookup].Price,-20:c}"); } Console.Write("| |\r\n"); Console.WriteLine("| | | |"); Console.WriteLine("| | | |"); } Console.WriteLine("| |________________________________________________________________________________| |"); Console.WriteLine("| |"); Console.WriteLine("| ________________________________________________________________ |"); Console.WriteLine("| | | |"); Console.WriteLine("| | | |"); Console.WriteLine("| |______________________________________________________________| |"); Console.WriteLine("| |"); Console.WriteLine("|______________________________________________________________________________________|"); Console.WriteLine(" | | | | "); Console.WriteLine(" |___| |___| "); }
public void MakePurchase(string slot, string item, decimal startBal, decimal price, decimal finalBal, VendingMachine vendingMachine, List <VendingMachineItem> customer, VendingMachineLogger logger, MainMenu mainmenu) { vendingMachine.Purchase(slot, vendingMachine, customer, mainmenu); logger.RecordTransaction($"{item} {slot.ToUpper()}", startBal, price, finalBal); }
public void DisplaySubMenu(VendingMachine vendingMachine, List <VendingMachineItem> customer, MainMenu mainmenu, VendingMachineLogger logger) { PurchaseMenu purchaseMenu = new PurchaseMenu(); purchaseMenu.Display(vendingMachine, customer, mainmenu, purchaseMenu, logger); }
public UserInterface(VendingMachine vendingMachine) { this.vendingMachine = vendingMachine; }