public List <VendingMachineItem> ReadFile()
        {
            List <VendingMachineItem> stock = new List <VendingMachineItem>();

            using (StreamReader sr = new StreamReader("vendingmachine.csv"))
            {
                while (!sr.EndOfStream)
                {
                    string             line  = sr.ReadLine();
                    string []          parts = line.Split('|');
                    VendingMachineItem vmi   = new VendingMachineItem(parts[3], parts[1], decimal.Parse(parts[2]), parts[0]);
                    stock.Add(vmi);
                }
            }
            return(stock);
        }
コード例 #2
0
 public void AddItemToCart(VendingMachineItem item)
 {
     ShoppingCart.Add(item);
 }
コード例 #3
0
 public void ReturnToInventory(VendingMachineItem item)
 {
     Inventory[item.SlotID].Add(item);
 }
コード例 #4
0
 public void RemoveItemFromInventory(VendingMachineItem item)
 {
     Inventory[item.SlotID].Remove(item);
 }
コード例 #5
0
 public void PayForItem(VendingMachineItem item)
 {
     CurrentMoneyProvided -= item.PriceOfItem;
 }
コード例 #6
0
        /// <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();
            }
        }
コード例 #7
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");
                }
            }
        }
コード例 #8
0
        public double SelectProduct(double customerBalance)
        {
            Console.Clear();
            //if customers balance is 0 and tries to select product
            if (customerBalance <= 0.0)
            {
                Console.WriteLine("You must deposit money before making a selection!");
                Console.ReadLine();
                return(customerBalance);
            }

            //message: must deposit money first
            //return to purchase menu
            Console.WriteLine($"Your balance is: {customerBalance:C}");
            if (customerBalance > 0.75)
            {
                DisplayItemList();
            }


            bool   isIncorrect   = true;
            string customerInput = "";


            while (isIncorrect)
            {
                Console.WriteLine("Enter the slot number to purchase: ");
                customerInput = Console.ReadLine().ToUpper();


                if (!itemInventory.ContainsKey(customerInput))
                {
                    Console.WriteLine("That is an incorrect slot number");
                    isIncorrect = true;
                }
                else
                {
                    isIncorrect = false;
                }
            }

            foreach (KeyValuePair <string, VendingMachineItem> item in itemInventory)
            {
                string             slot     = item.Key;
                VendingMachineItem vendItem = item.Value;



                if (customerInput == slot)
                {
                    if (customerBalance >= vendItem.Price && vendItem.Count > 0)
                    {
                        //customer balance is updated
                        customerBalance -= vendItem.Price;

                        //inventory is updated
                        vendItem.Count--;
                        vendItem.Sales++;

                        //balance of vending machine is updated
                        this.SalesTotal += vendItem.Price;

                        //item is dispensed
                        Console.WriteLine($"Here is your {vendItem.Name}");
                        //user receives a message
                        vendItem.MakeSound(vendItem.Type);
                        audit.AddToTheFile(vendItem.Name, slot, vendItem.Price, customerBalance);
                    }
                    else if (customerBalance < vendItem.Price)
                    {
                        Console.WriteLine("You don't have enough money for that item.");
                        Console.WriteLine("Press (esc) to leave and get more money or (Enter) to buy something else");
                        ConsoleKey keyInput = Console.ReadKey().Key;
                        if (keyInput == ConsoleKey.Escape)
                        {
                            break;
                        }
                        else if (keyInput == ConsoleKey.Enter)
                        {
                            continue;
                        }
                    }
                    else if (vendItem.Count == 0)
                    {
                        Console.WriteLine($"SOLD OUT");
                    }
                }
            }

            //customer returns to purchase menu


            return(customerBalance);
        }
コード例 #9
0
        public void VendingMachine()
        {
            string                    itemName                = "";
            decimal                   price                   = 0m;
            string                    type                    = "";
            int                       quantity                = 0;
            string                    slot                    = "";
            decimal                   grossSales              = 0m;
            VendingMachineItem        vendingMachineItem      = new VendingMachineItem(itemName, price, type, quantity, slot);
            List <VendingMachineItem> vendingMachineStockList = vendingMachineItem.GetVendingMachineItems();
            Reports                   reports                 = new Reports();
            List <string>             recordActivityList      = new List <string>();

            //Makes sure the program loops
            bool stillOpen = true;

            while (stillOpen)
            {
                string            secondSelection   = "";
                decimal           moneyEntered      = 0m;
                decimal           balance           = 0m;
                MoneyTransactions moneyTransactions = new MoneyTransactions(moneyEntered, balance, price);
                string            purchaseItemName  = "";
                Purchase_Order    purchaseOrder     = new Purchase_Order(purchaseItemName);
                decimal           balanceRemaining  = 0m;
                ExceptionChecks   exceptionChecks   = new ExceptionChecks();
                decimal           moneyInMachine    = 0m;

                //main menu
                Console.WriteLine("(1) Display Vending Machine Items");
                Console.WriteLine("(2) Purchase");
                Console.WriteLine("(3) Exit");

                string firstSelection = Console.ReadLine();
                if (firstSelection == "1")
                {
                    for (int i = 0; i < vendingMachineStockList.Count; i++)
                    {
                        Console.Write($"Slot: {vendingMachineStockList[i].Slot}   ");
                        Console.Write($"Price: {vendingMachineStockList[i].Price}   ");
                        Console.Write($"Item: {vendingMachineStockList[i].ItemName}   ");
                        //check quantity
                        if (vendingMachineStockList[i].Quantity == 0)
                        {
                            Console.Write("SOLD OUT");
                        }
                        Console.WriteLine();
                    }
                }
                else if (firstSelection == "2")
                {
                    while (secondSelection != "3")
                    {
                        Console.WriteLine("(1) Feed Money");
                        Console.WriteLine("(2) Select Product");
                        Console.WriteLine("(3) Finish Transaction");
                        secondSelection = Console.ReadLine();
                        if (secondSelection == "1")
                        {
                            string activity = "Feed Money";
                            Console.WriteLine("Please feed money in whole dollar amounts ex: (1, 2, 5, 10)");
                            string dollarAmountFed = Console.ReadLine();
                            if (dollarAmountFed == "1" || dollarAmountFed == "2" || dollarAmountFed == "5" || dollarAmountFed == "10")
                            {
                                //handles all cases where user input is invalid
                                moneyInMachine = moneyTransactions.CountEnteredMoney(dollarAmountFed);
                                Console.WriteLine($"Balance: ${moneyInMachine}");
                                decimal amountFed = decimal.Parse(dollarAmountFed);
                                recordActivityList = reports.RecordActivity(activity, amountFed, moneyInMachine);
                                reports.AuditLine(recordActivityList);
                            }
                            else
                            {
                                Console.WriteLine("Error: Please feed money in whole dollar amounts ex: (1, 2, 5, 10)");
                            }
                        }
                        else if (secondSelection == "2")
                        {
                            Console.WriteLine("Please select Item slot you wish to Purchase");
                            for (int i = 0; i < vendingMachineStockList.Count; i++)
                            {
                                Console.Write($"Slot: {vendingMachineStockList[i].Slot}   ");
                                Console.Write($"Price: {vendingMachineStockList[i].Price}   ");
                                Console.Write($"Item: {vendingMachineStockList[i].ItemName}   ");
                                if (vendingMachineStockList[i].Quantity == 0)
                                {
                                    Console.Write("SOLD OUT");
                                }
                                Console.WriteLine();
                            }
                            string customerSelection = Console.ReadLine();
                            bool   isSlotValid       = exceptionChecks.CheckIfSlotIsValid(customerSelection, vendingMachineStockList);
                            if (!isSlotValid)
                            {
                                Console.WriteLine("Error: Invalid Selection");
                            }
                            else
                            {
                                string  itemPurchased = purchaseOrder.GetItemPurchaseName(customerSelection, vendingMachineStockList);
                                decimal itemPrice     = moneyTransactions.GetItemPrice(customerSelection, vendingMachineStockList);

                                bool    isItemInStock        = exceptionChecks.CheckIfItemInStock(customerSelection, vendingMachineStockList);
                                decimal currentBalance       = moneyTransactions.GetCurrentBalance();
                                bool    canBalanceCoverPrice = exceptionChecks.CheckIfBalanceCanCoverPrice(itemPrice, currentBalance);

                                if (!canBalanceCoverPrice)
                                {
                                    Console.WriteLine("Error: Not Enough Money");
                                }
                                else if (!isItemInStock)
                                {
                                    Console.WriteLine("Error: Item Is Sold Out");
                                }
                                else
                                {
                                    //handles updating balanceRemaining, getting item price, getting item putchased
                                    balanceRemaining = moneyTransactions.GetBalanceAfterPurchase(customerSelection, vendingMachineStockList);
                                    //adds to Reports for grossSales
                                    grossSales = moneyTransactions.GrossSales(customerSelection, vendingMachineStockList);
                                    //updates the user
                                    Console.WriteLine($"Item: {itemPurchased} Cost: {itemPrice} Balance Remaining: {balanceRemaining}");
                                    //prints special type message
                                    vendingMachineItem.CheckTypePrintMessage(customerSelection, vendingMachineStockList);
                                    //updates stock
                                    vendingMachineStockList = purchaseOrder.UpdateVendingMachineStock(customerSelection, vendingMachineStockList);

                                    string itemNameSlot = $"{itemPurchased} {customerSelection}";
                                    recordActivityList = reports.RecordActivity(itemNameSlot, itemPrice, balanceRemaining);
                                    reports.AuditLine(recordActivityList);
                                }
                            }
                        }
                        else if (secondSelection == "3")
                        {
                            string     activity      = "Give Change";
                            List <int> change        = moneyTransactions.Change();
                            decimal    endingBalance = change[3];

                            Console.WriteLine($"quarters: {change[0]} dimes: {change[1]} nickels: {change[2]}");
                            recordActivityList = reports.RecordActivity(activity, balanceRemaining, endingBalance);
                            reports.AuditLine(recordActivityList);
                        }
                        else
                        {
                            //handles 2nd menu selections
                            Console.WriteLine("Error: Must enter a valid selcetion");
                        }
                    }
                }
                else if (firstSelection == "3")
                {
                    //closes program
                    stillOpen = false;
                }
                else if (firstSelection == "4")
                {
                    //hidden main menu option
                    reports.SalesReport(grossSales, vendingMachineStockList);
                }
                else
                {
                    //handles main menu selections
                    Console.WriteLine("Error: Must enter a valid selcetion");
                }
            }
        }