예제 #1
0
        // Method Purchase Screen
        public void PurchaseSubmenu()
        {
            while (true)
            {
                Console.WriteLine($"Current Balance: {vendingMachine.Balance:C}");
                Console.WriteLine();
                Console.WriteLine("1. Feed Money");
                Console.WriteLine("2. Select Product");
                Console.WriteLine("3. Finish Transaction");

                Console.Write("Please make a selection: ");
                string input = Console.ReadLine();

                if (input == "1")
                {
                    Console.WriteLine();
                    Console.Write("Enter dollar amount to feed into the vending machine: ");

                    if (int.TryParse(Console.ReadLine(), out int dollarsEntered))
                    {
                        // Accepted dollar bills
                        if ((dollarsEntered == 1) || (dollarsEntered == 2) || (dollarsEntered == 5) || (dollarsEntered == 10))
                        {
                            Console.WriteLine();
                            vendingMachine.FeedMoney(dollarsEntered);
                        }
                        // Not an accepted bill amount
                        else
                        {
                            Console.WriteLine();
                            Console.WriteLine($"The dollar amount you have entered is not valid.");
                        }
                    }
                    // User tried to enter something other than integer
                    else
                    {
                        Console.WriteLine();
                        Console.WriteLine($"The dollar amount you have entered is not valid.");
                    }
                }
                else if (input == "2")
                {
                    Console.WriteLine();
                    DisplayInventory();
                    Console.Write("Enter the item position to purchase: ");
                    string possiblePurchase = Console.ReadLine().ToUpper();
                    Console.WriteLine();
                    vendingMachine.DispenseItem(possiblePurchase);
                }
                else if (input == "3")
                {
                    Console.WriteLine();
                    Console.Write("Here is your change: ");
                    Change change = vendingMachine.GiveChange();
                    Console.WriteLine($"{change.NumberOfQuarters} quarters, {change.NumberOfDimes} dimes, {change.NumberOfNickels} nickles");
                    Console.WriteLine();

                    while (vendingMachine.PurchasedItems.Count != 0)
                    {
                        //Console.WriteLine($"{vendingMachine.PurchasedItems[0].MakeSound()}");
                        //vendingMachine.PurchasedItems.RemoveAt(0);
                        Console.WriteLine($"{vendingMachine.ConsumeItems()}");
                    }

                    Console.ReadLine();
                    break;
                }
                else
                {
                    Console.WriteLine("Please enter a valid selection!");
                }
            }
        }
예제 #2
0
        public void Run(VendingMachine vendingMachine)
        {
            Console.Clear();
            while (true)
            {
                vendingMachine.DisplayItems();
                Console.WriteLine($"1. Add Funds Balance: ${vendingMachine.Balance}");
                Console.WriteLine("2. Enter Product ID");
                Console.WriteLine("3. Finish vending");
                Console.WriteLine("Q  Quit");
                Console.Write("Choice: ");
                string choice = Console.ReadLine();
                Console.WriteLine();

                if (choice == "1")
                {
                    List <int> nums = new List <int>()
                    {
                        1, 2, 5, 10
                    };
                    int enteredBills = 0;

                    while (true)
                    {
                        Console.Write("Please Enter Dollar Amount 1,2,5 or 10 $");
                        try
                        {
                            enteredBills = int.Parse(Console.ReadLine());
                            break;
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Choice not valid, please try again");
                        }
                    }

                    if (nums.Contains(enteredBills))
                    {
                        // both logs the activity to add funds and add funds to the balance
                        this.CreateLog(vendingMachine.Balance, vendingMachine.AddFunds(enteredBills), "FEED MONEY");
                        Console.Clear();
                    }
                    else
                    {
                        Console.WriteLine("Invalid dollar amount");
                    }
                }
                else if (choice == "2")
                {
                    Console.Write("Please enter LetterNumber item slot to purchase from: ");
                    string itemSlot = Console.ReadLine().ToUpper();
                    Console.WriteLine();

                    if (!vendingMachine.Stock.ContainsKey(itemSlot))
                    {
                        Console.WriteLine("Selection not valid\n");
                    }
                    else if (vendingMachine.Stock.ContainsKey(itemSlot) && vendingMachine.Stock[itemSlot].Price < vendingMachine.Balance && vendingMachine.Stock[itemSlot].Quantity > 0)
                    {
                        // calling select product will return the update balance to be logged, log transaction
                        this.CreateLog(vendingMachine.Balance, vendingMachine.SelectProduct(itemSlot), vendingMachine.LoggingInfo);
                        Console.WriteLine($"{vendingMachine.Stock[itemSlot].Name} purchased\n");
                    }
                    else if (vendingMachine.Stock[itemSlot].Price > vendingMachine.Balance)
                    {
                        Console.WriteLine("PLEASE ADD MORE FUNDS!\n");
                    }
                    else if (vendingMachine.Stock[itemSlot].Quantity == 0)
                    {
                        Console.WriteLine("ITEM SOLD OUT!\n");
                    }
                }
                else if (choice == "3")
                {
                    decimal beginningBalance = vendingMachine.Balance;
                    decimal endingBalance;

                    // makes change on remaining balance
                    Console.WriteLine($"Here is the remaining balance of ${vendingMachine.Balance}");
                    Console.WriteLine(vendingMachine.MakeChange());

                    endingBalance = vendingMachine.Balance;

                    // create log with starting balance, final balance $0, and message
                    this.CreateLog(beginningBalance, endingBalance, "GIVE CHANGE");

                    Console.WriteLine();
                    Console.WriteLine("Time to mange!");
                    Console.WriteLine(vendingMachine.ConsumeItems());
                    vendingMachine.Cart.Clear();
                }
                else if (choice.ToLower() == "q")
                {
                    break;
                }
                else
                {
                    Console.WriteLine("Choice Not Valid");
                    Console.WriteLine("Please try again");
                    Console.WriteLine();
                }
            }
        }