Beispiel #1
0
        /// <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);
                }
            }
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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();
            }
        }
Beispiel #8
0
        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");
                }
            }
        }
Beispiel #9
0
        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);
            }
        }
Beispiel #10
0
        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");
                }
            }
        }
Beispiel #12
0
        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");
                }
            }
        }
Beispiel #13
0
        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();
        }