Example #1
0
        private static void addNode()
        {
            Node node_class = new Node();

            Node.Nodes_struct node = node_class.get_new_node(listnodes_global);
            ret1 : Console.WriteLine("-----------------\nВведите название узла");
            node.name = Console.ReadLine();
            if (node_class.prov_new_name(listnodes_global, node.name))
            {
ret2:
                Console.WriteLine("Узел с таким именем уже есть в базе. Хотите изменить имя (true/false)?");
                bool ifi = true;
                if (bool.TryParse(Console.ReadLine(), out ifi) && ifi)
                {
                    goto ret1;
                }
                else if (ifi == false)
                {
                    //идем дальше;
                }
                else
                {
                    goto ret2;
                }
            }
            Console.WriteLine("-----------------\nНачинается ввод свойст узла (по завершении ввода введите '-exit'):");
            int p_count = 0;

            while (true)
            {
                Node.Propertys_struct prop = new Node.Propertys_struct();
                Console.WriteLine("Введите имя свойства и значение (Например, 'Хорошо 0.5')");
                String tmp = Console.ReadLine();
                if (tmp == "-exit")
                {
                    if (p_count >= 2)
                    {
                        Console.WriteLine("Ввод свойств окончен");
                        break;
                    }
                    else
                    {
                        Console.WriteLine("Вы ввели недостаточно свойств чтобы закончить ввод. Нужно ввести минимум два свойства");
                        continue;
                    }
                }
                String tmpname = ""; int j = -1;
                for (int i = 0; i < tmp.Length; i++)
                {
                    if (tmp[i] != ' ')
                    {
                        tmpname += tmp[i];
                    }
                    else
                    {
                        j = i + 1; break;
                    }
                }
                if (j < 2)
                {
                    continue;
                }
                tmp = tmp.Remove(0, j);
                double value = -1;
                if (!double.TryParse(tmp, out value))
                {
                    continue;
                }
                prop.name = tmpname;
                Node.Propertys_struct_value val = new Node.Propertys_struct_value();
                val.value = value;
                prop.values.Add(val);
                node.props.Add(prop);
            }
            if (listnodes_global.Count != 0)
            {
                Console.WriteLine("-----------------\nДобавьте исходящие связи к другим узла которые сейчас есть в базе. " +
                                  "Ниже представлен список доступных узлов введите номер узла к которому вы хотите направить связь от создаемого," +
                                  " если связей несколько то введите несколько цифр через пробел");
                for (int i = 0; i < listnodes_global.Count; i++)
                {
                    Console.WriteLine(listnodes_global[i].id + " " + listnodes_global[i].name);
                }
                Console.WriteLine("Выберите один узел или несколько из списка выше");
                List <int> v   = new List <int>();
                String     tmp = Console.ReadLine();
                try
                {
                    v.Add(int.Parse(tmp));
                }
                catch (Exception)
                {
                    tmp += " ";
                    int i = 0, j = 0;
                    while (i < tmp.Length)
                    {
                        if (tmp[i] != ' ')
                        {
                            i++;
                        }
                        else
                        {
                            v.Add(int.Parse(tmp.Substring(j, i - j)));
                            j = i + 1;
                        }
                    }
                }
ret3:
                for (int i = 0; i < v.Count; i++)
                {
                    for (int j = 0; j < v.Count; j++)
                    {
                        if (v[i] == v[j])
                        {
                            v.RemoveAt(i);
                            goto ret3;
                        }
                    }
                }
                for (int i = 0; i < listnodes_global.Count; i++)
                {
                    for (int j = 0; j < v.Count; j++)
                    {
                        if (listnodes_global[i].id == v[i])
                        { //найдена пара
                        }
                    }
                }
            }
        }