static void Main(string[] args) { //number of items which can be added in inventory, can be any number var numberOfItems = 100; var userInput = string.Empty; //to indicate if adding items to inventory is finished bool stageOneFinished = false; var currentCart = new List <InventoryModel> { }; //derived classed initialization InventoryStore inventory = new InventoryStore(); Cart shoppingCart = new Cart(inventory.items); //loop so console application doesn't get closed for (int i = 0; i < numberOfItems; i++) { if (!stageOneFinished) { //display message just once, on opening app if (i == 0) { Console.WriteLine("Add items to inventory in expected input format: \nADD sku(number) name(string) quantity(number) price(number i.e 3.5)"); } //read user input userInput = Console.ReadLine().ToUpper(); //check for user command ADD if (userInput.Contains("ADD")) { //check number of elements in user input, splitted by space if (userInput.Split(' ').Length == 5) { int sku, quantity; float price; //try parse array elements bool convertSku = int.TryParse(userInput.Split(' ')[1], out sku); string name = userInput.Split(' ')[2].ToLower(); bool convertQuantity = int.TryParse(userInput.Split(' ')[3], out quantity); bool convertPrice = float.TryParse(userInput.Split(' ')[4].Replace('.', ','), out price); //check if all elements are succesfully parsed, if yes call add method if (convertSku && convertQuantity && convertPrice) { inventory.Add(sku, name, quantity, price); } else { Console.WriteLine("Add item in expected input format!"); } } else { Console.WriteLine("Some input parameters missing!"); } } //user END command else if (userInput.Contains("END")) { inventory.End(); //set stage one to finished stageOneFinished = true; userInput = string.Empty; } } else { //display message just once, on proceeding to stage two if (inventory.items.Count == i - 1) { Console.WriteLine("Additem to the current shopping cart in expected input format: \nADD sku(number) quantity(number)"); } userInput = Console.ReadLine().ToUpper(); if (userInput.Contains("ADD")) { if (userInput.Split(' ').Length == 3) { int sku, quantity; bool convertSku = int.TryParse(userInput.Split(' ')[1], out sku); bool convertQuantity = int.TryParse(userInput.Split(' ')[2], out quantity); if (convertSku && convertQuantity) { currentCart = shoppingCart.Add(sku, quantity); } else { Console.WriteLine("Add item in expected input format!"); } } else { Console.WriteLine("Some input parameters missing!"); } } else if (userInput.Contains("REMOVE")) { if (userInput.Split(' ').Length == 3) { var sku = int.Parse(userInput.Split(' ')[1]); var quantity = int.Parse(userInput.Split(' ')[2]); currentCart = shoppingCart.Remove(sku, quantity); } } //call cart checkout method else if (userInput.Contains("CHECKOUT")) { shoppingCart.Checkout(currentCart); } //exist console app else if (userInput.Contains("END")) { shoppingCart.End(); } } } }