コード例 #1
0
        private static void CreateCashCounter(CashCounter cashCounter, Point creationPoint)
        {
            var cashCounterView = CreateCashCounterView("Cash Counter",
                                                        cashCounter.CashInRubles, CashCounter.MaxCashInRubles);

            _mappedTopology.CashCounter = CreateCashCounterPictureBox(cashCounterView, creationPoint);
        }
コード例 #2
0
ファイル: Menu.cs プロジェクト: jzkarap/VendingMachine
        public Menu(Dictionary <string, Stack <Item> > slots, CashCounter cashCounter, Queue <Item> purchases)
        {
            while (true)
            {
                Console.WriteLine("(1) Display Vending Machine Items");
                Console.WriteLine("(2) Purchase");
                Console.WriteLine("(Q) Quit");

                string userInput = Console.ReadLine();

                while (userInput != "1" &&
                       userInput != "2")
                {
                    Console.WriteLine("Please select option 1 or option 2!");
                    userInput = Console.ReadLine();
                }
                if (userInput == "1")
                {
                    DisplayItemsMenu items = new DisplayItemsMenu();
                    items.Run(slots, cashCounter, purchases);
                }
                if (userInput == "2")
                {
                    PurchaseMenu purchase = new PurchaseMenu(slots, cashCounter, purchases);
                }
                if (userInput == "Q")
                {
                    break;
                }
            }
        }
コード例 #3
0
ファイル: UnitTest1.cs プロジェクト: jfslike/VendingMachine
        public void Purchase_With_Too_Little_Cash()
        {
            Vendor testVendor = new Vendor();

            CashCounter testCounter = new CashCounter();

            testCounter.Feed(1);

            Item testItem = new Item("Thing", (decimal)2.25, "Stuff");

            Stack <Item> testStack = new Stack <Item>();

            testStack.Push(testItem);
            testStack.Push(testItem);
            testStack.Push(testItem);

            Dictionary <string, Stack <Item> > testItems = new Dictionary <string, Stack <Item> >();

            testItems.Add("A1", testStack);

            Queue <Item> testPurchases = new Queue <Item>();

            testVendor.Transaction(testCounter, testItems, "A1", testPurchases);

            int amountOfItemsInTestList = 0;

            foreach (var kvp in testItems)
            {
                amountOfItemsInTestList = kvp.Value.Count;
            }

            Assert.AreEqual(3, amountOfItemsInTestList);
            Assert.AreEqual(0, testPurchases.Count);
        }
コード例 #4
0
ファイル: UnitTest1.cs プロジェクト: jfslike/VendingMachine
        public void Purchase_With_Enough_Cash()
        {
            Vendor testVendor = new Vendor();

            CashCounter testCounter = new CashCounter();

            testCounter.Feed(10);

            Item testItem = new Item("Thing", (decimal)2.25, "Stuff");

            Stack <Item> testStack = new Stack <Item>();

            testStack.Push(testItem);
            testStack.Push(testItem);
            testStack.Push(testItem);

            Dictionary <string, Stack <Item> > testItems = new Dictionary <string, Stack <Item> >();

            testItems.Add("A1", testStack);

            Queue <Item> testPurchases = new Queue <Item>();

            testVendor.Transaction(testCounter, testItems, "A1", testPurchases);

            Assert.AreEqual(testItem, testPurchases.Dequeue());
        }
コード例 #5
0
ファイル: UnitTest1.cs プロジェクト: jfslike/VendingMachine
        public void Vending_Machine_Test_Charge()
        {
            CashCounter cashCounter = new CashCounter();

            cashCounter.Charge("Barf", "Test", (decimal)3.45);

            Assert.AreEqual((decimal)0, cashCounter.Balance);
        }
コード例 #6
0
ファイル: UnitTest1.cs プロジェクト: jfslike/VendingMachine
        public void Vending_Machine_Feed_Money()
        {
            CashCounter cashCounter = new CashCounter();

            cashCounter.Feed(5);

            Assert.AreEqual(5, cashCounter.Balance);
        }
コード例 #7
0
ファイル: UnitTest1.cs プロジェクト: jfslike/VendingMachine
        public void Vending_Machine_Balance_Test()
        {
            CashCounter cashCounter = new CashCounter();

            decimal balance = cashCounter.Balance;

            Assert.AreEqual <decimal>(0, balance);
        }
コード例 #8
0
ファイル: UnitTest1.cs プロジェクト: jfslike/VendingMachine
        public void Vending_Machine_Return_Change()
        {
            CashCounter cashCounter = new CashCounter();

            cashCounter.Feed(5);

            cashCounter.GetChange();

            Assert.AreEqual(0, cashCounter.Balance);
        }
コード例 #9
0
        static void Main(string[] args)
        {
            Dictionary <string, Stack <Item> > stock = GetItems();

            CashCounter cashCounter = new CashCounter();

            Queue <Item> purchases = new Queue <Item>();

            Menu main = new Menu(stock, cashCounter, purchases);
        }
コード例 #10
0
        private void ShowClickedCashCounterProperties(DataGridViewImageCell cell)
        {
            CashCounter clickedCashCounter = cell.Tag as CashCounter;

            clickedElement = clickedCashCounter;

            MakePropertiesControls1Visible();

            labelElementProperty1.Text  = "Денег в кассе";
            nudElementProperty1.Minimum = CashCounter.MinCashInRubles;
            nudElementProperty1.Maximum = CashCounter.MaxCashInRubles;
            nudElementProperty1.Value   = clickedCashCounter.CashInRubles;
        }
コード例 #11
0
        public bool AddCashCounter(int x, int y, CashCounter cashCounter)
        {
            if (CanAddCashCounter(x, y))
            {
                DataGridViewImageCell cell = (DataGridViewImageCell)field.Rows[y].Cells[x];

                cell.Value = CashCounter.Image;
                cell.Tag   = cashCounter;

                CashCountersCount++;

                return(true);
            }

            return(false);
        }
コード例 #12
0
        private void nudElementProperty1_ValueChanged(object sender, EventArgs e)
        {
            if (clickedElement is CashCounter)
            {
                CashCounter cashCounter = (CashCounter)clickedElement;
                cashCounter.CashInRubles = (int)nudElementProperty1.Value;
            }
            else if (clickedElement is FuelDispenser)
            {
                FuelDispenser fuelDispenser = (FuelDispenser)clickedElement;
                fuelDispenser.FuelFeedRateInLitersPerMinute = (int)nudElementProperty1.Value;
            }
            else if (clickedElement is FuelTank)
            {
                FuelTank fuelTank = (FuelTank)clickedElement;
                fuelTank.Volume = (int)nudElementProperty1.Value;

                nudElementProperty2.Maximum = fuelTank.Volume;
            }
        }
コード例 #13
0
        public DisplayItems(Dictionary <string, Stack <Item> > slots, CashCounter currentCounter, Queue <Item> purchases, Vendor machine)
        {
            Console.Clear();

            foreach (var kvp in slots)
            {
                if (kvp.Value.Count > 0)
                {
                    Console.WriteLine($"{kvp.Key} {kvp.Value.Peek().Name}".PadRight(25) + $"{kvp.Value.Peek().Cost:c}");
                }
                else
                {
                    Console.WriteLine("SOLD OUT!!");
                }
            }

            Console.WriteLine("\nPress Enter to continue.\n");
            Console.ReadLine();
            Console.Clear();
            Menu main = new Menu(slots, currentCounter, purchases, machine);
        }
コード例 #14
0
        public Menu(Dictionary <string, Stack <Item> > slots, CashCounter currentCounter, Queue <Item> purchases, Vendor machine)
        {
            Console.WriteLine("(1) Display Vending Machine Items");
            Console.WriteLine("(2) Purchase");

            string userInput = Console.ReadLine();

            while (userInput != "1" &&
                   userInput != "2")
            {
                Console.WriteLine("Please select option 1 or option 2!");
                userInput = Console.ReadLine();
            }
            if (userInput == "1")
            {
                DisplayItems items = new DisplayItems(slots, currentCounter, purchases, machine);
            }
            if (userInput == "2")
            {
                PurchaseMenu purchase = new PurchaseMenu(slots, currentCounter, purchases, machine);
            }
        }
コード例 #15
0
        public PurchaseMenu(Dictionary <string, Stack <Item> > stock, CashCounter currentCounter, Queue <Item> purchases, Vendor machine)
        {
            Console.Clear();

            Console.WriteLine("(1) Feed Money");
            Console.WriteLine("(2) Select Product");
            Console.WriteLine("(3) Finish Transaction");
            Console.WriteLine($"Current money provided: {currentCounter.Balance:c}");

            string userInput = Console.ReadLine();

            // Prompts user for valid menu selection
            while (userInput != "1" &&
                   userInput != "2" &&
                   userInput != "3")
            {
                Console.WriteLine("Please select option 1, 2, or 3!");
                userInput = Console.ReadLine();
            }

            // Prompts user to enter whole dollar amount $1-10
            // Does not allow invalid input
            if (userInput == "1")
            {
                Console.WriteLine();
                Console.Write("Please enter a whole dollar amount $1, $2, $5, or $10: ");
                userInput = Console.ReadLine();

                while (userInput != "1" &&
                       userInput != "2" &&
                       userInput != "5" &&
                       userInput != "10")
                {
                    Console.WriteLine("Please select a valid amount!");
                    userInput = Console.ReadLine();
                }

                currentCounter.Feed(decimal.Parse(userInput));
                PurchaseMenu purchase = new PurchaseMenu(stock, currentCounter, purchases, machine);
            }

            // Generates list of current stock,
            // Gets user selection,
            // Calls CashCounter.Charge function
            if (userInput == "2")
            {
                Console.Clear();

                foreach (var kvp in stock)
                {
                    if (kvp.Value.Count > 0)
                    {
                        Console.WriteLine($"{kvp.Key} {kvp.Value.Peek().Name}".PadRight(25) + $"{kvp.Value.Peek().Cost:c}");
                    }
                    else
                    {
                        Console.WriteLine("SOLD OUT!!");
                    }
                }

                Console.WriteLine();

                Console.Write("Please select an item: ");

                userInput = Console.ReadLine();

                Console.WriteLine();

                purchases = machine.Transaction(currentCounter, stock, userInput, purchases);

                Console.WriteLine("Press Enter to return to purchase menu!");

                Console.ReadLine();

                PurchaseMenu purchase = new PurchaseMenu(stock, currentCounter, purchases, machine);
            }

            if (userInput == "3")
            {
                int[] arrayOfChange = currentCounter.GetChange();

                int quarterCount = arrayOfChange[0];
                int dimeCount    = arrayOfChange[1];
                int nickelCount  = arrayOfChange[2];

                Console.WriteLine($"Change returned: {quarterCount} quarters, {dimeCount} dimes, {nickelCount} nickels");
                Console.WriteLine();
                Console.Write(".");
                Thread.Sleep(300);
                Console.Write(".");
                Thread.Sleep(300);
                Console.Write(".");
                Thread.Sleep(300);
                Console.Write(".");
                Thread.Sleep(300);
                Console.Clear();

                while (purchases.Count > 0)
                {
                    Item currentItem = purchases.Dequeue();
                    Console.WriteLine(currentItem.Noise());
                    Thread.Sleep(800);
                }

                Console.WriteLine("Thanks for shopping with ComplicatedVending!");
                Thread.Sleep(800);
                Console.WriteLine();
                Menu main = new Menu(stock, currentCounter, purchases, machine);
            }
        }