Ejemplo n.º 1
0
 //Eliminar la especie, indicada como parametro, del arbol
 public static bool eliminarRecorrido(ArbolGeneral arbol, string[] especieDatos)
 {
     if (arbol.esHoja())
     {
         if (arbol.Raiz.Dato.Nombre == especieDatos[6])
         {
             Console.WriteLine("Especie [{0}] encontrada.", especieDatos[6]);
             return(true);
         }
         return(false);
     }
     else
     {
         Recorredor recorrerArbol = arbol.Raiz.ListaHijos.Recorredor;
         recorrerArbol.comenzar();
         while (recorrerArbol.esFin() == false)
         {
             if (eliminarRecorrido(recorrerArbol.obtenerElemento(), especieDatos))
             {
                 arbol.eliminarHijo(recorrerArbol.obtenerElemento());
             }
             recorrerArbol.proximo();
         }
         if (arbol.Raiz.ListaHijos.tamanioLista == 0)
         {
             return(true);
         }
         return(false);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// El Metodo elimina un hijo de la Lista actual, sin recursión
        /// </summary>
        /// <param name="hijo_a_Eliminar"></param>

        public void eliminarHijo(ArbolGeneral hijo_a_Eliminar)
        {
            try
            {
                Recorredor rec = getHijos().recorrer();
                rec.ObjLista = getHijos();
                rec.comenzar();

                while (!rec.fin())
                {
                    ArbolGeneral unArbol = (ArbolGeneral)rec.elemento();
                    if (unArbol.Equals(hijo_a_Eliminar))
                    {
                        rec.eliminar();
                    }

                    rec.proximo();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Ha ocurrido un error al intentar eliminar un hijo del Arbol");
                Console.WriteLine(e.Message);
                Console.ReadKey();
            }
        }
Ejemplo n.º 3
0
 //Se encargarga de insertar el dominio al arbol
 public static ArbolGeneral insetarDominioArbol(ArbolGeneral arbol, string[] dominio, int nivel)
 {
     if (nivel <= 7)
     {
         arbol.NivelNodo = nivel;
         if (nivel == 7)
         {
             if (arbol.Raiz.ListaHijos.nuevoIncluye(dominio[6]) == -1)
             {
                 arbol.agregarHijo(new ArbolGeneral(dominio[6], solicitarEspecie(dominio[6]))
                 {
                     NivelNodo = nivel
                 });
             }
             ;
         }
         else
         {
             arbol.agregarHijo(new ArbolGeneral(dominio[nivel]));
             Recorredor recorrerArbol = arbol.Raiz.ListaHijos.Recorredor;
             recorrerArbol.comenzar();
             while (!recorrerArbol.esFin())
             {
                 if (dominio[nivel] == (recorrerArbol.obtenerElemento()).Raiz.Dato.Nombre)
                 {
                     insetarDominioArbol(recorrerArbol.obtenerElemento(), dominio, ++nivel);
                 }
                 recorrerArbol.proximo();
             }
         }
     }
     return(arbol);
 }
Ejemplo n.º 4
0
 public static bool existeClase(ArbolGeneral enArbol, string enClase)
 {
     if (enArbol.NivelNodo == 3)
     {
         if (enArbol.Raiz.Dato.Nombre == enClase)
         {
             metBuscarEspecieClase(enArbol);
             return(true);
         }
         return(false);
     }
     else
     {
         Recorredor rec = enArbol.Raiz.ListaHijos.Recorredor;
         rec.comenzar();
         while (!rec.esFin())
         {
             if (existeClase(rec.obtenerElemento(), enClase))
             {
                 return(true);
             }
             rec.proximo();
         }
         return(false);
     }
 }
Ejemplo n.º 5
0
 public static bool existeEspecie(ArbolGeneral enArbol, string especieBusqueda)
 {
     if (enArbol.esHoja())
     {
         if (enArbol.Raiz.Dato.Nombre == especieBusqueda)
         {
             Console.WriteLine("Especie: {0} " +
                               "\n\tMetabolismo: {1}" +
                               "\n\tReproduccion: {2}",
                               especieBusqueda,
                               ((Especie)enArbol.Raiz.Dato).Dato.Metabolismo,
                               ((Especie)enArbol.Raiz.Dato).Dato.Reproduccion);
             return(true);
         }
         return(false);
     }
     else
     {
         Recorredor rec = enArbol.Raiz.ListaHijos.Recorredor;
         rec.comenzar();
         while (!rec.esFin())
         {
             if (existeEspecie(rec.obtenerElemento(), especieBusqueda))
             {
                 return(true);
             }
             rec.proximo();
         }
         return(false);
     }
 }
Ejemplo n.º 6
0
        static void Main(string[] args)
        {
            otroMetodo();
            //Crea instancia del Arbol Principal que se usa durante todo el programac
            ArbolGeneral arbolPrincipal = new ArbolGeneral("Dominio")
            {
                NivelNodo = 0
            };

            //Pasamos nuestro Arbol (con el que trabajaremos) a clase "Menu"
            Menu.inicio(arbolPrincipal);
            Console.ReadKey();
        }
Ejemplo n.º 7
0
 public void agregarHijos(ArbolGeneral nuevoHijo)
 {
     try
     {
         int ultimaPosicion = getHijos().getTamanio();
         getHijos().agregar(nuevoHijo, ultimaPosicion);
     }
     catch (Exception e)
     {
         Console.WriteLine("Ha ocurrido un error al intentar agregar un hijo nuevo al Arbol");
         Console.WriteLine(e.Message);
         Console.ReadKey();
     }
 }
Ejemplo n.º 8
0
 public static void proCategorias(ArbolGeneral enArbol, int profundidad)
 {
     if (enArbol.esHoja() || enArbol.NivelNodo == profundidad)
     {
         Console.WriteLine("> {0}", enArbol.Raiz.Dato.Nombre);
     }
     else
     {
         Recorredor rec = enArbol.Raiz.ListaHijos.Recorredor;
         rec.comenzar();
         while (!rec.esFin())
         {
             proCategorias(rec.obtenerElemento(), profundidad);
             rec.proximo();
         }
     }
 }
Ejemplo n.º 9
0
 public static void metBuscarEspecieClase(ArbolGeneral enArbol)
 {
     if (enArbol.esHoja())
     {
         Console.WriteLine("\n>Especie: ({0})" +
                           "\n\t>Metabolismo: {1}" +
                           "\n\t>Reproduccion: {2}",
                           ((Especie)enArbol.Raiz.Dato).Dato.Metabolismo,
                           ((Especie)enArbol.Raiz.Dato).Dato.Reproduccion);
     }
     else
     {
         Recorredor rec = enArbol.Raiz.ListaHijos.Recorredor;
         rec.comenzar();
         while (!rec.esFin())
         {
             metBuscarEspecieClase(rec.obtenerElemento());
             rec.proximo();
         }
     }
 }
Ejemplo n.º 10
0
        //"inicio" contiene la primer vista del programa, mostrando los modulos disponibles
        public static void inicio(ArbolGeneral enArbolGeneral)
        {
            ArbolGeneral arbolPrincipal = enArbolGeneral;
            bool         salirMenu      = false;

            do
            {
                #region Menu
                mostrarTitulo(" ");
                Console.WriteLine("\t1. Modulo de Administracion\n" +
                                  "\t2. Modulo de Consultas\n" +
                                  "\t3. Salir\n");
                Console.Write("\nOpcion: "); string opcion = Console.ReadLine();
                #endregion

                #region Opciones
                switch (opcion)
                {
                case "1":
                    Administracion.inicioAdmin(enArbolGeneral);
                    break;

                case "2":
                    Consulta.inicioConsulta(enArbolGeneral);
                    break;

                case "3":
                    salirMenu = true;
                    Console.WriteLine("Presione una tecla para salir...");
                    Console.ReadKey();
                    break;

                default:
                    Console.WriteLine("Opcion invalida");
                    Console.ReadKey();
                    break;
                }
                #endregion
            } while (!salirMenu);
        }
Ejemplo n.º 11
0
        static void Main(string[] args)
        {
            TipoDominio a = new TipoDominio("Seres Vivos");

            ArbolGeneral dominios = new ArbolGeneral(new NodoGeneral(a, new ListaConArreglo()));



            string[] dominio_separado = new string[] { "a", "b", "c", "d", "e", "f", "g" };
            ModuloAdministracion.agregarNodo(dominios, 0, dominio_separado, 1, 2);

            dominio_separado = new string[] { "a", "b", "c", "d", "e", "f", "t" };
            ModuloAdministracion.agregarNodo(dominios, 0, dominio_separado, 2, 2);

            dominio_separado = new string[] { "a", "b", "c", "d", "q", "w", "e" };
            ModuloAdministracion.agregarNodo(dominios, 0, dominio_separado, 2, 1);

            dominio_separado = new string[] { "a", "b", "c", "d", "e", "j", "l" };
            ModuloAdministracion.agregarNodo(dominios, 0, dominio_separado, 1, 1);

            dominio_separado = new string[] { "a", "z", "x", "v", "n", "m", "h" };
            ModuloAdministracion.agregarNodo(dominios, 0, dominio_separado, 2, 2);

            dominio_separado = new string[] { "p", "o", "ct", "dx", "eq", "fe", "gr" };
            ModuloAdministracion.agregarNodo(dominios, 0, dominio_separado, 1, 2);

            bool flagSalir = false;

            do
            {
                try
                {
                    Console.Clear();
                    Console.WriteLine("Bienvenido al Sistema de Nombres de Dominio Taxonomico");
                    Console.WriteLine(" ");
                    Console.WriteLine("Elija la opcion a la que desee ingresar: ");
                    Console.WriteLine(" ");
                    Console.WriteLine("1). Modulo Administración.");
                    Console.WriteLine("2). Modulo Consultas.");
                    Console.WriteLine("3). Salir de la Aplicación.");
                    Console.WriteLine(" ");
                    Console.Write("Opcion ==> "); int eleccion = Convert.ToInt32(Console.ReadLine());

                    switch (eleccion)
                    {
                    case 1:
                        //Modulos.modAdministracion(dominios);
                        ModuloAdministracion.Menu(dominios);
                        break;

                    case 2:
                        //Modulos.modConsultas(dominios);
                        ModuloConsultas.Menu(dominios);
                        break;

                    case 3:
                        Console.WriteLine("Hasta Luego! . . .");
                        flagSalir = true;
                        break;

                    default:
                        Console.Clear();
                        Console.WriteLine("La opcion ingresada es incorrecta. . .\nPor favor, vuelva a intentarlo");
                        flagSalir = false;
                        Console.ReadKey();
                        break;
                    }
                }
                catch
                {
                    Console.Clear();
                    Console.WriteLine("Ha ocurrido un error inesperado. . . \nPor favor, vuelva a intentarlo");
                    Console.ReadKey();
                }
            } while (!flagSalir);
        }
Ejemplo n.º 12
0
        public static void inicioAdmin(ArbolGeneral enArbol)
        {
            arbolAdmin = enArbol;
            bool salirAdministracion = false;

            do
            {
                #region Menu.Administracion
                Menu.mostrarTitulo("Módulo de Administración");
                Console.WriteLine("\t1. Ingresar nombre de dominio Taxonómico.\n" +
                                  "\t2. Ingresar nombre por cada Categoria Taxonómico.\n" +
                                  "\t3. Eliminar Especie.\n" +
                                  "\t4. Salir.\n");
                Console.Write("Opcion: "); string opcion = Console.ReadLine();
                #endregion

                #region Opciones
                switch (opcion)
                {
                    #region 1- Ingresar cadena completa en una linea
                case "1":
                    do
                    {
                        Menu.mostrarTitulo("Módulo de Administración > Dominio completo");
                        Console.WriteLine("\tIngresar nombre de Dominio Taxonomico:\n");

                        string[] nombreDominio = Console.ReadLine().Split('.');
                        if (esCorrecto(nombreDominio))
                        {
                            arbolAdmin = insetarDominioArbol(enArbol, nombreDominio, 0);

                            Menu.agregadoCorrecto(true);
                        }
                    } while (Menu.repetirOperacion() == 's');
                    break;
                    #endregion

                    #region 2- Ingresar cadena por categorias
                case "2":
                    do
                    {
                        string[]      categorias    = new string[] { "Reino", "Filo", "Clase", "Orden", "Familia", "Genero", "Especie" };
                        Cola <string> colaCategoria = new Cola <string>();
                        bool          esCorrecto    = true;
                        for (int i = 0; i < categorias.Count() && esCorrecto == true; i++)
                        {
                            Menu.mostrarTitulo("Módulo de Administración > Por categoria");
                            Console.WriteLine("\tIngresar nombre de Dominio Taxonomico\n ");
                            Console.WriteLine(categorias[i] + ": ");
                            string nuevaCategoria = Console.ReadLine();
                            if (nuevaCategoria != "" && nuevaCategoria != " ")
                            {
                                colaCategoria.encolarElemento(nuevaCategoria);
                            }
                            else
                            {
                                Menu.agregadoCorrecto(true);
                            }
                        }
                        if (esCorrecto == true)
                        {
                            //arbolAdmin = insetarDominioArbol(enArbol, colaCategoria, nivel);

                            Menu.agregadoCorrecto(true);
                        }
                    } while (Menu.repetirOperacion() == 's');
                    break;
                    #endregion

                    #region 3- Eliminar Especie
                case "3":
                    do
                    {
                        Menu.mostrarTitulo(" Eliminar 'Especie'");
                        Console.Write("\nPara eliminar una Especie, debe ingresar su dominio taxonomico correspondiente:\n");

                        string[] nombreDominio = Console.ReadLine().Split('.');
                        if (esCorrecto(nombreDominio))
                        {
                            if (arbolAdmin.Raiz.ListaHijos.tamanioLista == 0)
                            {
                                Console.WriteLine("El arbol no pose datos.");
                            }
                            else if (eliminarRecorrido(arbolAdmin, nombreDominio))
                            {
                                Console.WriteLine("Especie '[{0}]' eliminada con exito", nombreDominio[6]);
                            }
                            else
                            {
                                Console.WriteLine("Especie '{0}' no se encuentra en el Sistema.", nombreDominio[6]);
                            }
                        }
                    } while (Menu.repetirOperacion() == 's');
                    break;
                    #endregion

                case "4":
                    salirAdministracion = true;
                    Console.WriteLine("Regresando al Menu.");
                    Thread.Sleep(400);
                    break;

                case "5":
                    arbolAdmin.recorridoPreOrden();
                    Console.ReadKey();
                    break;

                default:
                    Console.WriteLine("Opcion invalida");
                    Console.ReadKey();
                    break;
                }
                #endregion
            } while (!salirAdministracion);
        }
Ejemplo n.º 13
0
        public static void inicioConsulta(ArbolGeneral arbol)
        {
            arbolConsulta = arbol;

            if (!arbolConsulta.esHoja())
            {
                bool salirMenuConsulta = false;
                do
                {
                    #region  Menu.Consultas
                    Menu.mostrarTitulo("Módulo de Consultas");
                    Console.WriteLine("\t1. Ver datos de especie\n" +
                                      "\t2. Ingrese una Clase\n" +
                                      "\t3. Ingrese profundidad\n" +
                                      "\t4. Salir\n");
                    Console.Write("Opcion: "); string opcion = Console.ReadLine();
                    #endregion

                    #region Opciones
                    char resp = ' ';

                    switch (opcion)
                    {
                        #region 1- Ver datos de especie seleccionada
                    case "1":
                        do
                        {
                            Menu.mostrarTitulo("Módulo de Consultas > Datos Especie");
                            Console.WriteLine("Ingrese el nombre de la Especie que desea conocer.\n");
                            Console.Write(">Especie: "); string especieBusqueda = Console.ReadLine();
                            //buscarCategoria29(this.arbolConsulta, especieBusqueda);
                            if (!existeEspecie(arbolConsulta, especieBusqueda))
                            {
                                Console.WriteLine("\nLa Especie ingresada '{0}' no existe.\n\nPulse una tecla para salir...", especieBusqueda);
                            }
                            Console.ReadKey();
                            resp = Menu.repetirOperacion();
                        } while (char.ToLower(resp) == 's');
                        break;
                        #endregion

                        #region 2- Ver las especies de una clase
                    case "2":
                        do
                        {
                            Menu.mostrarTitulo("Módulo de Consultas > Especies de Clase");
                            Console.WriteLine(">Clase: "); string claseBusqueda = Console.ReadLine();
                            if (!existeClase(arbolConsulta, claseBusqueda))
                            {
                                Console.WriteLine("\nLa Clase ingresada '{0}' no existe.\n\nPulse una tecla para salir...", claseBusqueda);
                            }
                            Console.ReadKey();
                            resp = Menu.repetirOperacion();
                        } while (char.ToLower(resp) == 's');
                        break;
                        #endregion

                        #region 3- Ver las categorias existentes en una profundidad

                    case "3":
                        do
                        {
                            int[] numeros = { 1, 2, 3, 4, 5, 6, 7 };
                            Menu.mostrarTitulo("Módulo de Consultas > Categorias por Profundidad");
                            Console.WriteLine(">Profundidad: ");
                            try
                            {
                                int profundidad = Convert.ToInt16(Console.ReadLine());
                                proCategorias(arbolConsulta, profundidad);
                            }
                            catch (Exception)
                            {
                                Console.WriteLine("El valor ingresado no es un numero ");
                            }
                            Console.ReadKey();
                            resp = Menu.repetirOperacion();
                        } while (char.ToLower(resp) == 's');
                        break;
                        #endregion

                    case "4":
                        salirMenuConsulta = true;
                        Console.WriteLine("Regresando al Menu.");
                        Thread.Sleep(400);
                        break;

                    default:
                        Console.WriteLine("Opcion invalida");
                        Console.ReadKey();
                        break;
                    }
                    #endregion
                } while (!salirMenuConsulta);
            }
            else
            {
                Console.Write("\n\nDetalle:\tEl Sistema Taxonomico no posee datos.\n");
                Console.ReadKey();
            }
        }