//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); } }
/// <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(); } }
//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); }
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); } }
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); } }
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(); }
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(); } }
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(); } } }
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(); } } }
//"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); }
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); }
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); }
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(); } }