private static void SuggestPerfumeMenu() { Console.Clear(); Dictionary <String, int> RequestedAccords = new Dictionary <String, int>(); RequestedAccords.Add("", 0); AcceptedInputs.Clear(); AcceptedInputs = AcceptedInputs.Concat(PerfumeFinder.GetKnownAccords()).ToList(); while (RequestedAccords.Keys.ToList().Except(AcceptedInputs).Count() != 0) { RequestedAccords.Clear(); Console.WriteLine("---- Suggest Me A Perfume ----\n"); Console.WriteLine("From this menu, program can suggest to you the closest perfume for your given accords."); Console.WriteLine("\nExample input : whiskey:82,citrus:70"); Console.Write("\nEnter your accord selections : "); Input = Console.ReadLine(); Console.Clear(); try { foreach (String accord_data in Input.Split(',')) { RequestedAccords.Add(accord_data.Split(':')[0], Int32.Parse(accord_data.Split(':')[1])); } } catch (Exception ex) { if (ex is ArgumentNullException || ex is FormatException || ex is IndexOutOfRangeException) { RequestedAccords.Add("", 0); continue; } throw; } } Perfume SuggestedPerfume = PerfumeFinder.SuggestPerfumeByRequestedAccords(RequestedAccords); Console.WriteLine("---- Suggest Me A Perfume ----\n"); Console.WriteLine("The program suggest you this perfume !"); Console.WriteLine($"\n{SuggestedPerfume.Info()}"); Console.Write("\n -------------------------------------------"); Console.Write("\n|...Press any key to go back to main menu...|"); Console.Write("\n -------------------------------------------\n"); Console.ReadKey(); Scene = MainMenu; }
public static void Start() { ProgramRun = true; Scene = MainMenu; PerfumeFinder.Initialize("data/parfume-data.txt"); while (ProgramRun) { Scene(); } }
private static void InformationMenu() { Console.Clear(); Console.WriteLine("---- Information About Perfume Dataset ----\n"); Console.WriteLine("From this menu, you can see some information about dataset that program uses."); Console.WriteLine($"\nTotal number of perfumes : {PerfumeFinder.FindPerfumeAmountTotal()}"); Console.WriteLine($"Total number of perfumes for men : {PerfumeFinder.FindPerfumeAmountByGender(EGender.Men)}"); Console.WriteLine($"Total number of perfumes for women: {PerfumeFinder.FindPerfumeAmountByGender(EGender.Women)}"); Console.WriteLine($"Total number of perfumes for women and men: {PerfumeFinder.FindPerfumeAmountByGender(EGender.Both)}"); Console.WriteLine($"Perfume amount for each accord : "); PerfumeFinder.ConsoleWritePerfumeAmountForEachAccord(); Console.Write("\n -------------------------------------------"); Console.Write("\n|...Press any key to go back to main menu...|"); Console.Write("\n -------------------------------------------\n"); Console.ReadKey(); Scene = MainMenu; }
private static void FindByNameMenu() { Console.Clear(); Console.WriteLine("---- Find Perfume by Name ----\n"); Console.WriteLine("From this menu, you can enter name of your perfume and it will show it's properties."); Console.WriteLine("If you don't know the exact name of it, you can write down as much as you can remember.\nProgram will show the possible ones."); Console.Write("\nEnter the name of your perfume : "); Input = Console.ReadLine(); Console.Clear(); PerfumeFinder.FindPerfumesByName(Input); PerfumeFinder.ConsoleWriteFoundPerfumes(); Console.Write("\n -------------------------------------------"); Console.Write("\n|...Press any key to go back to main menu...|"); Console.Write("\n -------------------------------------------\n"); Console.ReadKey(); Scene = MainMenu; }
private static void FilterByAccordsMenu() { Boolean Include_mode; Console.Clear(); Input = ""; AcceptedInputs.Clear(); AcceptedInputs.Add("0"); AcceptedInputs.Add("1"); while (!AcceptedInputs.Contains(Input)) { Console.WriteLine("---- Filter and Find Perfumes by Accords ----\n"); Console.WriteLine("From this menu, you can enter the accords that you want in your perfume."); Console.WriteLine("Depending on your filter mode selection, program will show you the perfumes filtered by your desired accords!"); Console.WriteLine("\nFilter modes :"); Console.WriteLine("0 : Show perfumes that doesn't includes specified accords."); Console.WriteLine("1 : Show perfumes that does includes specified accords."); Input = Console.ReadLine(); Console.Clear(); } Include_mode = Input == "1"; List <String> RequestedAccordIndexes = new List <string> { "" }; AcceptedInputs.Clear(); for (int i = 0; i < PerfumeFinder.FindKnownAccordsAmount(); ++i) { AcceptedInputs.Add(i.ToString()); } while (RequestedAccordIndexes.Except(AcceptedInputs).Count() != 0) { Console.WriteLine("---- Filter and Find Perfumes by Accords ----\n"); Console.WriteLine("From this menu, you can enter the accords that you want in your perfume."); Console.WriteLine("Depending on your filter mode selection, program will show you the perfumes filtered by your desired accords!"); Console.WriteLine("\nKnown Accords :"); PerfumeFinder.ConsoleWriteKnownAccords(); Console.WriteLine("\nExample input for loved, vanilla, woody, smoky accords : 5,24,15,33"); Console.Write("Enter the indexes of desired accords : "); Input = Console.ReadLine(); RequestedAccordIndexes = new List <String>(Input.Split(',')); Console.Clear(); } PerfumeFinder.FindPerfumesByAccords(PerfumeFinder.FindAccordsByIndexes(RequestedAccordIndexes), Include_mode); PerfumeFinder.ConsoleWriteFoundPerfumes(); Console.Write("\n -------------------------------------------"); Console.Write("\n|...Press any key to go back to main menu...|"); Console.Write("\n -------------------------------------------\n"); Console.ReadKey(); Scene = MainMenu; }