public static Person Import(String input) { var parameters = new Dictionary<string, string>(); var data = input.Split(';'); foreach (string item in data) { var specyficData = item.Split(':'); parameters[specyficData[0]] = specyficData[1]; } var person = new Person(); person.NameSurname = parameters["NS"]; IFormatProvider culture = new System.Globalization.CultureInfo("pl-PL", true); if (parameters.ContainsKey("BD")) { person.Birthdate = DateTime.Parse(parameters["BD"], culture); } if (parameters.ContainsKey("DD")) { person.Deathdate = DateTime.Parse(parameters["DD"], culture); } if (parameters.ContainsKey("S")) { switch (parameters["S"]) { case "M": person.Sex = PersonSex.Male; break; case "F": person.Sex = PersonSex.Female; break; } } return person; }
public TreeNode(Person Person) { this.Person = Person; Children = new List<TreeNode>(); }
static void Main(string[] args) { #region DANE DO BAZY /* var TreeNodes = new Dictionary<string, TreeNode>(); TreeNodes.Add("AnnaNode", new TreeNode(Person.Import("NS:Anna;BD:01.01.1935;S:F"))); TreeNodes.Add("BogdanNode", new TreeNode(Person.Import("NS:Bogdan;BD:01.01.1951;S:M"))); TreeNodes.Add("CelinaNode", new TreeNode(Person.Import("NS:Celina;BD:01.01.1954;S:F"))); TreeNodes.Add("DawidNode", new TreeNode(Person.Import("NS:Dawid;BD:01.01.1955;S:M"))); TreeNodes.Add("ElzbietaNode", new TreeNode(Person.Import("NS:Elżbieta;BD:01.01.1975;S:F"))); TreeNodes.Add("FranciszekNode", new TreeNode(Person.Import("NS:Franciszek;BD:01.01.1978;S:M"))); TreeNodes.Add("GrazynaNode", new TreeNode(Person.Import("NS:Grażyna;BD:01.01.1979;S:F"))); TreeNodes.Add("HenrykNode", new TreeNode(Person.Import("NS:Henryk;BD:01.01.1982;S:M"))); TreeNodes.Add("IrenaNode", new TreeNode(Person.Import("NS:Irena;BD:01.01.2004;S:F"))); TreeNodes.Add("JanNode", new TreeNode(Person.Import("NS:Jan;BD:01.01.2006;S:M"))); TreeNodes.Add("KamilaNode", new TreeNode(Person.Import("NS:Kamila;BD:01.01.2007;S:F"))); TreeNodes.Add("LeszekNode", new TreeNode(Person.Import("NS:Leszek;BD:01.01.2009;S:M"))); TreeNodes.Add("MalgorzataNode", new TreeNode(Person.Import("NS:Małgorzata;BD:01.01.2011;S:F"))); TreeNodes.Add("NataliaNode", new TreeNode(Person.Import("NS:Natalia;BD:01.01.2033;S:F"))); Console.WriteLine(TreeNodes["CelinaNode"].SetParent(TreeNodes["AnnaNode"])); Console.WriteLine(TreeNodes["DawidNode"].SetParent(TreeNodes["AnnaNode"])); Console.WriteLine(TreeNodes["ElzbietaNode"].SetParent(TreeNodes["BogdanNode"])); Console.WriteLine(TreeNodes["FranciszekNode"].SetParent(TreeNodes["BogdanNode"])); Console.WriteLine(TreeNodes["FranciszekNode"].SetParent(TreeNodes["CelinaNode"])); Console.WriteLine(TreeNodes["GrazynaNode"].SetParent(TreeNodes["DawidNode"])); Console.WriteLine(TreeNodes["HenrykNode"].SetParent(TreeNodes["DawidNode"])); Console.WriteLine(TreeNodes["IrenaNode"].SetParent(TreeNodes["ElzbietaNode"])); Console.WriteLine(TreeNodes["JanNode"].SetParent(TreeNodes["ElzbietaNode"])); Console.WriteLine(TreeNodes["KamilaNode"].SetParent(TreeNodes["FranciszekNode"])); Console.WriteLine(TreeNodes["LeszekNode"].SetParent(TreeNodes["GrazynaNode"])); Console.WriteLine(TreeNodes["MalgorzataNode"].SetParent(TreeNodes["GrazynaNode"])); //Console.WriteLine(TreeNodes["NataliaNode"].SetParent(TreeNodes["HenrykNode"])); //Console.WriteLine(TreeNodes["HenrykNode"].SetChild(TreeNodes["NataliaNode"])); Console.WriteLine(TreeNodes["LeszekNode"].SetChild(TreeNodes["NataliaNode"])); Console.WriteLine(TreeNodes["AnnaNode"].SetParent(TreeNodes["FranciszekNode"])); Console.WriteLine(TreeNodes["KamilaNode"].SetParent(TreeNodes["MalgorzataNode"])); Console.WriteLine(TreeNodes["LeszekNode"].SetParent(TreeNodes["ElzbietaNode"])); //Console.WriteLine(TreeNodes["GrazynaNode"].UnsetChild(TreeNodes["MalgorzataNode"])); //Console.WriteLine(TreeNodes["LeszekNode"].UnsetParent(TreeNodes["GrazynaNode"])); TreeNodes["GrazynaNode"].Person.SetDeathdate(DateTime.Parse("2013-01-01")); TreeNodes["FranciszekNode"].Person.SetDeathdate(DateTime.Parse("2005-01-01")); IdboConnection.SetDb(); IdboHelper<Dictionary<string, TreeNode>>.Insert(TreeNodes); */ #endregion IFormatProvider culture = new System.Globalization.CultureInfo("pl-PL", true); IdboConnection.SetDb(); var TreeNodes = new Dictionary<string, TreeNode>(); try { TreeNodes = IdboHelper<Dictionary<string, TreeNode>>.SelectAll()[0]; } catch (Exception e) { IdboHelper<Dictionary<string, TreeNode>>.Insert(TreeNodes); TreeNodes = IdboHelper<Dictionary<string, TreeNode>>.SelectAll()[0]; } while(true) { Console.WriteLine("--# MENU #--"); Console.WriteLine("0. List people"); Console.WriteLine("1. Add person"); Console.WriteLine("2. Edit person"); Console.WriteLine("3. Remove person"); Console.WriteLine("4. Add child to parent"); Console.WriteLine("5. Remove child from parent"); Console.WriteLine("6. Display all children"); Console.WriteLine("7. Display shared accessors"); Console.WriteLine("8. Display inheritants"); Console.WriteLine("9. Quit"); switch(Console.ReadLine()) { case "0": foreach(var node in TreeNodes) { Console.WriteLine(node.Value.Person); } break; case "1": var NewPerson = new Person(); Console.Write("Name: "); NewPerson.NameSurname = Console.ReadLine().ToString(); Console.Write("Sex: [m] f"); switch (Console.ReadLine()) { case "f": NewPerson.Sex = PersonSex.Female; break; default: NewPerson.Sex = PersonSex.Male; break; } Console.Write("Birth date: "); var tmp = Console.ReadLine(); try { NewPerson.Birthdate = DateTime.Parse(tmp, culture); } catch(Exception e) { NewPerson.Birthdate = DateTime.MinValue; } Console.Write("Death date: "); tmp = Console.ReadLine(); try { NewPerson.Deathdate = DateTime.Parse(tmp, culture); } catch(Exception e) { NewPerson.Deathdate = DateTime.MinValue; } var Node = new TreeNode(NewPerson); TreeNodes.Add(NewPerson.NameSurname, Node); IdboHelper<Dictionary<string, TreeNode>>.Update(TreeNodes); break; case "2": Console.Write("Person to edit: "); var ToEdit = TreeNodes[Console.ReadLine()]; Console.Write("Birth date: {0} ", ToEdit.Person.Birthdate); tmp = Console.ReadLine(); try { ToEdit.Person.Birthdate = DateTime.Parse(tmp, culture); } catch (Exception e) { ToEdit.Person.Birthdate = DateTime.MinValue; } Console.Write("Death date: {0} ", ToEdit.Person.Deathdate); tmp = Console.ReadLine(); try { ToEdit.Person.Deathdate = DateTime.Parse(tmp, culture); } catch (Exception e) { ToEdit.Person.Deathdate = DateTime.MinValue; } TreeNodes[ToEdit.Person.NameSurname] = ToEdit; break; case "3": Console.Write("Person to delete: "); TreeNodes.Remove(Console.ReadLine()); break; case "4": Console.WriteLine("Add relationship"); Console.Write("Parent: "); var parent = Console.ReadLine(); Console.Write("Child: "); var child = Console.ReadLine(); Console.WriteLine(TreeNodes[parent].SetChild(TreeNodes[child]) ? "Child has been added" : "Child has not been added"); break; case "5": Console.WriteLine("Remove relationship"); Console.Write("Parent: "); parent = Console.ReadLine(); foreach (var childd in TreeNodes[parent].Children) { Console.WriteLine(childd.Person); } child = Console.ReadLine(); Console.WriteLine(TreeNodes[parent].UnsetChild(TreeNodes[child])); break; case "6": Console.WriteLine("All potomkowie"); var nodee = TreeNodes[Console.ReadLine()]; var childs = nodee.GetChildren(TreeNodes, true); Console.WriteLine("{0}'s children:", nodee.Person.NameSurname); foreach (var childdd in childs) Console.WriteLine(childdd.Person); break; case "7": Console.WriteLine("Shared accessors"); Console.Write("First person: "); var leszek = TreeNodes[Console.ReadLine()]; Console.Write("Second person: "); var natalia = TreeNodes[Console.ReadLine()]; var leszekandnatalia = TreeNode.GetSharedAccessors(leszek, natalia, TreeNodes); Console.WriteLine("{0}&{1}'s shared accessors: ", leszek.Person.NameSurname, natalia.Person.NameSurname); foreach (var item in leszekandnatalia) { Console.WriteLine(item.Person); } break; case "8": Console.WriteLine("Inheritants"); Console.Write("Person: "); var nodeee = TreeNodes[Console.ReadLine()]; Console.WriteLine("{0}'s inheritants:", nodeee.Person.NameSurname); var inh = nodeee.GetInheritants(TreeNodes); foreach (var item in inh) { Console.WriteLine(item.Person); } break; } IdboHelper<Dictionary<string, TreeNode>>.Update(TreeNodes); } IdboConnection.CloseDB(); }