static void Main(string[] args) { Console.WindowWidth = 100; Console.WindowHeight = 30; var System = new string[4000, 3]; //Instantiates an empty 2d array named System UserInterface ui = new UserInterface(); //Creates the navigation menu CSVProcessorClass csvProcess = new CSVProcessorClass(); //Instantiates CSV processor class WineItemCollection wineCollection = new WineItemCollection(); WineItem searchWine = new WineItem(); int choice = ui.GetUserInput(); while (choice != 5) { switch (choice) { case 1: //Load array from CSV file csvProcess.loadWineArray(System); break; case 2: //Search wine list searchWine.searchWineList(System); ui.DisplaySearchResults(searchWine.ToString()); //Demonstrate override method break; case 3: //Add new wine wineCollection.addWineToArray(System); break; case 4: //Print entire list //ui.printFullArray(System); ui.PrintAllOutput(System); break; case 5: Environment.Exit(-1); //Exits program break; } choice = ui.GetUserInput(); } }
/* ADD WINE ITEM TO THE LIST */ public void Add(WineItem wineItem) { // If this item won't fit in the array, throw an exception. // Example, if we're trying to fit a WineItem into position 12, but there's only 11 spaces in the wineItems array, throw an exception // (-1 on the wineItems.Length value since its maximum index is 1 less than its length) if (nextArrayPosition > (wineItems.Length - 1)) // Is the next array position more than the last index of the wineItems array? { // Make the list larger WineItem[] newWineItemList = new WineItem[(wineItems.Length + 1)]; // Make a wineItemList the size of the old one, but one more larger. for (int index = 0; index < wineItems.Length; index++) { // Copy all of the wineItems into the new wineItems array newWineItemList[index] = wineItems[index]; } wineItems = newWineItemList; // Give the old wineItems array a new, bigger wineItemList } wineItems[nextArrayPosition] = wineItem; // Add the given WineItem to the wineItems array nextArrayPosition++; // Increment the array so it's ready for the next time a WineItem is added Debug.WriteLine("WineItem added: " + wineItem.ToString()); }
public void SearchById(List <WineItem> wineList) { WineItem result = null; do { Console.WriteLine("Search Records:"); Console.Write("Enter Id to search for:"); userInputString = Console.ReadLine(); result = wineList.Find(x => x.WINEID == userInputString); if (result == null) { Console.WriteLine("Invalid Value"); } } while (result == null); Console.WriteLine("ID Name Amount"); Console.WriteLine("-----------------------------------------------------------------"); Console.WriteLine(result.ToString()); }
/// <summary> /// For debugging/testing purposes. Bypasses UserInterface class and tests individual classes directly. /// </summary> private void Testing() { #region WineItemTest Console.WriteLine(Environment.NewLine + "******************************" + Environment.NewLine + "Test For WineItem functionality." + Environment.NewLine + "******************************" + Environment.NewLine); string ID1 = "12345"; string ID2 = "67890"; string aDesc1 = "aDesc"; string aDesc2 = "OtherDesc"; string aSize1 = "Size 1"; string aSize2 = "Size 500"; WineItem WineTest1 = new WineItem(ID1, aDesc1, aSize1); WineItem WineTest2 = new WineItem(ID2, aDesc2, aSize2); Console.WriteLine("TEST- ForcePrint:" + Environment.NewLine + WineTest1.WineID + " " + WineTest1.WineDescription + " " + WineTest1.WineSize + Environment.NewLine); Console.WriteLine("TEST- ToString():"); Console.WriteLine(WineTest1.ToString()); Console.WriteLine(WineTest2.ToString()); Console.WriteLine(Environment.NewLine); #endregion #region WineItemCollectionTest Console.WriteLine(Environment.NewLine + "******************************" + Environment.NewLine + "Test For Collection functionality." + Environment.NewLine + "******************************" + Environment.NewLine); WineItemCollection collectionTest = new WineItemCollection(5); collectionTest.LoadWineItem(WineTest1, 0, 1); collectionTest.LoadWineItem(WineTest2, 1, 1); Console.WriteLine("TEST- Above items added to collection and displayed:"); Console.WriteLine(collectionTest.GetCollectionToString()); #endregion #region CSVProcessorTest Console.WriteLine(Environment.NewLine + "******************************" + Environment.NewLine + "Test For CSVProcessor functionality." + Environment.NewLine + "******************************" + Environment.NewLine); CSVProcessor loadThings = new CSVProcessor(); int ArraySize = loadThings.LoadListSize; Console.WriteLine("TEST- # of Items loaded: " + Environment.NewLine + ArraySize + Environment.NewLine); WineItemCollection wineCollection = new WineItemCollection(ArraySize); loadThings = new CSVProcessor(wineCollection, 0); Console.WriteLine("TEST- Collection Contents After Load:"); Console.WriteLine(wineCollection.GetCollectionToString()); #endregion }
/// <summary> /// Handles Menu option 3. Searching of Wine List. /// </summary> private void SearchWineList() { // Determines if there is a list to even search. if (wineItemCollection.WineItemArray[0] != null) { try { mainMenu.DisplayLine("Enter ID to search for: "); IDString = mainMenu.GetUserInput(); // Allows user to back out. if (IDString.ToLower() != "esc") { wineItem = wineItemCollection.SearchWineItem(IDString, 0); if (wineItem.WineDescription == "ID is Not Found") { mainMenu.DisplayLine("The entered ID (" + wineItem.WineID + ") is not found."); } else { mainMenu.DisplayLine("Match Found: " + wineItem.ToString()); } } } catch { mainMenu.DisplayLine("Error, invalid ID. Please enter 5 characters."); } } else { mainMenu.DisplayLine("There are no items to search. Please load a file or add items first."); } }
static void Main(string[] args) { bool isLoadedCSV = false; UserInterface ui = new UserInterface(); WineItem wineItem = new WineItem(); WineItemCollections wineItemCollection = new WineItemCollections(); CSVProcessor file = new CSVProcessor(); int choice = ui.GetUserInput(); while (choice != 5) // exits program if user selects 5, otherwise menu keeps displaying { switch (choice) { case 1: { if (!isLoadedCSV) // loads file first time, afterward displays that it's already been loaded { file.ImportCSV("../../../datafiles/WineList.csv", wineItemCollection); Console.WriteLine("File successfully loaded."); Console.WriteLine(); isLoadedCSV = true; } else { Console.WriteLine("File has already been loaded."); Console.WriteLine(); } break; } case 2: { // displays all wine items Console.WriteLine(wineItemCollection.ToString()); Console.WriteLine(); break; } case 3: { // allows user to search for wine by ID and displays wine info or that wine does not exist Console.WriteLine("Enter the ID you wish to search for: "); string searchWineItemID = Console.ReadLine(); WineItem wineItemResult = wineItemCollection.SearchWine(searchWineItemID); if (wineItemResult != null) { Console.WriteLine(wineItemResult.ToString()); } else { Console.WriteLine("The ID was not found in the database."); } Console.WriteLine(); break; } case 4: { // allows user to add wine item to array if the ID is not already in the database Console.WriteLine("Please enter the wine ID: "); string userID = Console.ReadLine(); WineItem wineItemResult = wineItemCollection.SearchWine(userID); if (wineItemResult != null) { Console.WriteLine("That ID is already in the database."); } else { Console.WriteLine("Please enter the wine description: "); string userDescription = Console.ReadLine(); Console.WriteLine("Please enter the wine pack: "); string userPack = Console.ReadLine(); WineItem userWineItem = new WineItem(userID, userDescription, userPack); wineItemCollection.AddWineItem(userWineItem); Console.WriteLine(); Console.WriteLine(userWineItem.ToString() + " successfully added."); Console.WriteLine(); } } break; } choice = ui.GetUserInput(); } }