Logo Studenta

CEU San Pablo _ Ingeniería biomedica _ java _Algoritmos y estructuras de datos_ _ MainPrueba

Esta es una vista previa del archivo. Inicie sesión para ver el archivo original

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package consola;
import java.io.*;
import modelo.Fecha;
import modelo.Poblacion;
import modelo.Raton;
import persistencia.Persistencia;
import modelo.Utilidades;
/**
 *
 * @author Catalina
 */
public class MainPrueba {
 public static void main(String[] args) throws IOException,
 FileNotFoundException, ClassNotFoundException {
 Poblacion miPoblacion = new Poblacion();
 while (true) {
 System.out.println("\nOPCIONES MENU:\n"
 + "1) Abrir un archivo que contenga una poblacion de ratones.\n"
 + "2) Crear poblacion de ratones.\n"
 + "3) Crear poblacion virtual de Ratones"
 + "4) Anadir Raton a poblacion ya existente.\n"
 + "5) Listar codigos de referencia de los ratones de una poblacion.\n"
 + "6) Eliminar un raton.\n"
 + "7) Modificar los datos de un raton.\n"
 + "8) Ver informacion de un raton.\n"
 + "9) Ver la evolucion de una Familia.\n"
 + "10) Guardar.\n"
 + "11) Guardar como.\n"
 + "12) Salir del programa.\n");
 int opcionMenu = 0;
 BufferedReader consola = new BufferedReader(new InputStreamReader(System.in));
 File directorioPorDefecto = new File(System.getProperty("user.dir"));
 try {
 String nopcionMenu = consola.readLine();
 opcionMenu = Integer.parseInt(nopcionMenu);
 } catch (IOException ex) {
 System.out.println("\nSe ha producido un error al leer de la consola\n");
 }
 switch (opcionMenu) {
 case 1:
 File archivoA;
 String nombreArch = "miPoblacion";
 try {
 System.out.println("\nIntroduzca el nombre de la poblacion que desea abrir: ");
 nombreArch = consola.readLine();
 } catch (IOException ex) {
 System.out.println("Error al leer nombre");
 }
 System.out.println("Este es el directorioque tienen los archivos por defecto\n");
 System.out.println(directorioPorDefecto);
 System.out.println("\nIntroduzca el directorio donde se encuentra el archivo\n");
 String stringDirectorioIntroducidoAbrirArchivo = "C:\\Users\\Catalina\\Documents\\NetBeansProjects\\PRACTICA RATONES";
 try {
 stringDirectorioIntroducidoAbrirArchivo = consola.readLine();
 } catch (IOException ex) {
 System.out.println("Error al leer el directorio");
 }
 File directorioIntroducidoAbrirArchivo = new File(stringDirectorioIntroducidoAbrirArchivo);
 archivoA = new File(directorioIntroducidoAbrirArchivo, nombreArch);
 try {
 miPoblacion = Persistencia.cargarPoblacion(archivoA);
 } catch (FileNotFoundException ex) {
 System.out.println("\n Introduzca un archivo existente\n");
 }
 break;
 case 2:
 try {
 System.out.println("\nCREAR UNA NUEVA POBLACION DE RATONES:\n");
 System.out.println("\nIntroduzca el nombre de la poblacion: ");
 String nnombrePoblacion = consola.readLine();
 System.out.println("\nIntroduzca el nombre del responsable: ");
 String nresponsable = consola.readLine();
 String nnnumDias;
 int nnumDias;
 boolean vdi = false;
 do {
 System.out.println("\nIntroduzca el numero de dias que permanece en las instalaciones (Inferior a 630 y multiplo de 45): ");
 nnnumDias = consola.readLine();
 nnumDias = Integer.parseInt(nnnumDias);
 vdi = validarDiasEnInstalaciones(nnumDias);
 //PQ NO LO ENCUENTRA???????????????????????????????????
 } while (!vdi);
 miPoblacion = new Poblacion(nnombrePoblacion, nresponsable, nnumDias);
 } catch (IOException ex) {
 System.out.println("\nError al leer poblacion de consola\n");
 }
 break;
 case 3://FALTA*************************************************************************************
 System.out.println("\nCREAR POBLACION VIRTUAL DE RATONES:");
 break;
 case 4:
 try {
 System.out.println("\nCREAR UN NUEVO RATON Y ANADIRLO:\n");
 System.out.println("\nIntroduzca el codigo de referencia: ");
 String ncodigoDeReferencia = consola.readLine();
 System.out.println("\nIntroduzca una descripcion del raton: ");
 String ndescripcion = consola.readLine();
 String nnnsexo, nnsexo;
 do {
 System.out.println("\nIntroduzca el sexo del raton: ");
 nnnsexo = consola.readLine();
 nnsexo = nnnsexo.toUpperCase();
 } while (!nnsexo.equals("HEMBRA") && !nnsexo.equals("MACHO"));
 Raton.Sexo nsexo = Raton.Sexo.valueOf(nnsexo);
 String nndia;
 int ndia;
 boolean validNumero = false;
 boolean validIntervalo = false;
 do {
 System.out.println("\nIntroduzca el dia de nacimiento: ");
 nndia = consola.readLine();
 validNumero = isNumeric(nndia);
 if (validNumero) {
 validIntervalo = validarDia();
 }
 //@todo y si no es in numero?
 // ndia = Integer.parseInt(nndia);
 } while (!validIntervalo);
 String nnmes;
 int nmes;
 boolean valid2 = false;
 do {
 System.out.println("\nIntroduzca el mes de nacimiento: ");
 nnmes = consola.readLine();
 //@todo y si no es in numero?
 nmes = Integer.parseInt(nnmes);
 } while (nmes < 1 || nmes > 12);
 String nnano;
 int nano;
 do {
 System.out.println("\nIntroduzca el ano de nacimiento: ");
 nnano = consola.readLine();
 //@todo y si no es in numero?
 nano = Integer.parseInt(nnano);
 } while (nano < 1980 || nano > 2017);
 Fecha nfechaNacimiento = new Fecha(ndia, nmes, nano);
 //@todo Funcinan bien las fechas?
 //HECHO
System.out.println("\nIntroduzca el peso: ");
 String nnpeso = consola.readLine();
 //@todo y si no es in numero?
 int npeso = Integer.parseInt(nnpeso);
 System.out.println("\nIntroduzca la temperatura: ");
 String nntemperatura = consola.readLine();
 //@todo y si no es in numero?
 float ntemperatura = Float.parseFloat(nntemperatura);
 Raton.Cromosomas ncromosomas = null;
 do {
 System.out.println("Introduzca la combinacion de cromosomas ");
 String nnncromosomas = consola.readLine();
 nnncromosomas = nnncromosomas.toUpperCase();
 if (nsexo == Raton.Sexo.HEMBRA) {
 if (nnncromosomas.equals("XX")) {
 ncromosomas = Raton.Cromosomas.XX;
 }
 if (nnncromosomas.equals("XMX")) {
 ncromosomas = Raton.Cromosomas.XMX;
 }
 if (nnncromosomas.equals("XXM")) {
 ncromosomas = Raton.Cromosomas.XXM;
 }
 if (nnncromosomas.equals("XMXM")) {
 ncromosomas = Raton.Cromosomas.XMXM;
 }
 } else {
 System.out.println("\nVuelva a introducir una combinacion valida de cromosomas\n");
 }
 if (nsexo == Raton.Sexo.MACHO) {
 if (nnncromosomas.equals("XY")) {
 ncromosomas = Raton.Cromosomas.XY;
 }
 if (nnncromosomas.equals("XMY")) {
 ncromosomas = Raton.Cromosomas.XMY;
 }
 if (nnncromosomas.equals("XYM")) {
 ncromosomas = Raton.Cromosomas.XYM;
 }
 if (nnncromosomas.equals("XMYM")) {
 ncromosomas = Raton.Cromosomas.XMYM;
 }
 } else {
 System.out.println("\nVuelva a introducir una combinacion valida de cromosomas\n");
 }
 } while (ncromosomas == null);
 Raton miRaton = new Raton(ncodigoDeReferencia, ndescripcion, nsexo, nfechaNacimiento, npeso, ntemperatura, ncromosomas);
 boolean anadir = miPoblacion.anadirRatonAPoblacion(miRaton);
 if (anadir) {
 System.out.println("Anadido correctamente");
 } else {
 System.out.println("No se pueden anadir mas ratones");
 }
 } catch (IOException ex) {
 System.out.println("\nError al leer raton de consola\n");
 }
 break;
 case 5:
 System.out.println("\nLISTAR CODIGO DE TODOS LOS RATONES\n");
 System.out.println("Introduzca el orden en el que desea ver los codigos:"
 + "\n 1) Orden alfabetico de los codigos de referencia."
 + "\n 2) Orden peso de los ratones."
 + "\n 3) Orden fecha de nacimiento de los ratones."
 + "\n\nOPCION: ");
 String nseleccion = "";
 int seleccion = 0;
 try {
 nseleccion = consola.readLine();
 seleccion = Integer.parseInt(nseleccion);
 } catch (IOException ex) {
 ex.printStackTrace();
 System.out.println("Error al leer de la consola");
 }
 miPoblacion.listarCodigosOrdenadosPor(seleccion);
 break;
 case 6:
 //Arreglarrrrrr***********************************************************************************
 System.out.println("\nELIMINAR UN RATON\n");
 System.out.println("\nIntroduzca su codigo de referencia: ");
 String nncodigoDeReferencia = consola.readLine();
 miPoblacion.eliminarRaton(nncodigoDeReferencia);
 //FALTA: Mecanismo de confirmacion para que el usuario sepa que lo ha borrado bien, por ejemplo un return
 /*int posicion = miPoblacion.buscarRaton(nncodigoDeReferencia);
 if (posicion != -1) {
 
 System.out.println("Raton eliminado");
 } else {
 System.out.println("No existe el raton");
 }*/
 break;
 case 7:
 System.out.println("\nMODIFICAR UN RATON\n");
 System.out.println("\nIntroduzca su codigo de referencia: ");
 String nnncodigoDeReferencia = consola.readLine();
 Raton raton = miPoblacion.recuperarRaton(nnncodigoDeReferencia);
 if (raton != null) {
 int opcion = 0;
 Raton.Cromosomas cromosomas = raton.cromosomas;
 String descripcion = raton.descripcion;
 int fechaDia = raton.fechaNacimiento.getdia();
 int fechaMes = raton.fechaNacimiento.getmes();
 int fechaAno = raton.fechaNacimiento.getano();
 int peso = raton.peso;
 Raton.Sexo sexo = raton.sexo;
 float temperatura = raton.temperatura;
 System.out.println("\n¿Que campo del raton desea modificar?\n"
 + "1) Modificar descripcion.\n"
 + "2) Modificar sexo.\n"
 + "3) Modificar fecha de nacimiento.\n"
 + "4) Modificar peso.\n"
 + "5) Modificar temperatura.\n"
 + "6) Modificar cromosomas.\n");
 try {
 String nopcion = consola.readLine();
 opcion = Integer.parseInt(nopcion);
 } catch (IOException ex) {
 System.out.println("\nError al leer la opcion\n");
 }
 switch (opcion) {
 case 1:
 System.out.println("\nIntroduzca la nueva descripcion: ");
 descripcion = consola.readLine();
 break;
 case 2:
 String nnnsexo,
 nnsexo;
 do {
 System.out.println("\nIntroduzca el nuevo sexo del raton: ");
 nnnsexo = consola.readLine();
 nnsexo = nnnsexo.toUpperCase();
 sexo = Raton.Sexo.valueOf(nnsexo);
 } while (!nnsexo.equals("HEMBRA")
|| !nnsexo.equals("MACHO"));
 break;
 case 3:
 System.out.println("\nIntroduzca una opcion:\n"
 + "1) Modificar dia.\n"
 + "2) Modificar mes.\n"
 + "3) Modificar ano.\n");
 int opcionFecha = 0;
 String nopcionFecha = consola.readLine();
 opcionFecha = Integer.parseInt(nopcionFecha);
 switch (opcionFecha) {
 case 1:
 String nfechaDia;
 do {
 System.out.println("\n Introduzca el nuevo dia: ");
 nfechaDia = consola.readLine();
 fechaDia = Integer.parseInt(nfechaDia);
 //@todo error en la validacion, y codigo repetido
 } while (fechaDia < 1 && fechaDia > 31);
 break;
 case 2:
 String nfechaMes;
 do {
 System.out.println("\n Introduzca el nuevo mes: ");
 nfechaMes = consola.readLine();
 fechaMes = Integer.parseInt(nfechaMes);
 //@todo error en la validacion, y codigo repetido
 } while (fechaMes < 1 && fechaMes > 12);
 break;
 case 3:
 String nfechaAno;
 do {
 System.out.println("\n Introduzca el nuevo ano: ");
 nfechaAno = consola.readLine();
 fechaAno = Integer.parseInt(nfechaAno);
 //@todo error en la validacion, y codigo repetido
 } while (fechaAno < 1980 && fechaAno > 2017);
 break;
 }
 break;
 case 4:
 System.out.println("\nIntroduzca el nuevo peso: ");
 String npeso = consola.readLine();
 peso = Integer.parseInt(npeso);
 break;
 case 5:
 System.out.println("\nIntroduzca la nueva temperatura: ");
 String ntemperatura = consola.readLine();
 temperatura = Float.parseFloat(ntemperatura);
 break;
 case 6:
 Raton.Cromosomas xcromosomas = null;
 do {
 System.out.println("Introduzca la nueva combinacion de cromosomas: ");
 String nnncromosomas = consola.readLine();
 nnncromosomas = nnncromosomas.toUpperCase();
 if (sexo == Raton.Sexo.HEMBRA) {
 if (nnncromosomas.equals("XX")) {
 xcromosomas = Raton.Cromosomas.XX;
 }
 if (nnncromosomas.equals("XMX")) {
 xcromosomas = Raton.Cromosomas.XMX;
 }
 if (nnncromosomas.equals("XXM")) {
 xcromosomas = Raton.Cromosomas.XXM;
 }
 if (nnncromosomas.equals("XMXM")) {
 xcromosomas = Raton.Cromosomas.XMXM;
 }
 } else {
 if (sexo == Raton.Sexo.MACHO) {
 if (nnncromosomas.equals("XY")) {
 xcromosomas = Raton.Cromosomas.XY;
 }
 if (nnncromosomas.equals("XMY")) {
 xcromosomas = Raton.Cromosomas.XMY;
 }
 if (nnncromosomas.equals("XYM")) {
 xcromosomas = Raton.Cromosomas.XYM;
 }
 if (nnncromosomas.equals("XMYM")) {
 xcromosomas = Raton.Cromosomas.XMYM;
 }
 } else {
 System.out.println("\nVuelva a introducir una combinacion valida de cromosomas\n");
 }
 }
 } while (cromosomas == null);
 cromosomas = xcromosomas;
 break;
 }
 Fecha fechaNacimiento = new Fecha(fechaDia, fechaMes, fechaAno);
 Raton modificado = new Raton(nnncodigoDeReferencia, descripcion, sexo, fechaNacimiento, peso, temperatura, cromosomas);
 miPoblacion.modificarRaton(nnncodigoDeReferencia, modificado);
 } else {
 System.out.println("No existe el raton con codigo " + nnncodigoDeReferencia);
 }
 break;
 case 8:
 System.out.println("\nVER INFORMACION DETALLADA DE UN RATON\n");
 System.out.println("\nIntroduzca el codigo de referencia\n ");
 try {
 String ncodigoDeReferencia = consola.readLine();
 miPoblacion.mostrarPoblacion(ncodigoDeReferencia);
 } catch (IOException ex) {
 System.out.println("\nSe ha producido un error\n");
 }
 break;
 case 9:
 System.out.println("\nSIMULAR EVOLUCION A LO LARGO DEL TIEMPO");
 break;
 case 10:
 File archivoG;
 System.out.println("\nGUARDAR\n");
 System.out.println("Se guardará automaticamente en el directorio por defecto que es : ");
 System.out.println(directorioPorDefecto);
 String nombreArchivoGuardar = miPoblacion.getNombrePoblacion();
 archivoG = new File(directorioPorDefecto, nombreArchivoGuardar);
 Persistencia.guardarPoblacion(archivoG, miPoblacion);
 break;
 case 11:
 File archivoGC;
 System.out.println("\nGUARDAR COMO\n");
 String nombreArchivoGC = "miPoblacion";
 try {
System.out.println("\nIntroduzca el nombre con el que desea guardar la poblacion: ");
 nombreArchivoGC = consola.readLine();
 } catch (IOException ex) {
 System.out.println("Error al leer nombre");
 }
 System.out.println("Este es el directorio en el que se guardan los archivos por defecto\n");
 System.out.println(directorioPorDefecto);
 System.out.println("\nIntroduzca el directorio donde quiere guardar el archivo\n");
 String stringDirectorioIntroducidoGC = "C:\\Users\\Catalina\\Documents\\NetBeansProjects\\PRACTICA RATONES";
 try {
 stringDirectorioIntroducidoGC = consola.readLine();
 } catch (IOException ex) {
 System.out.println("Error al leer el directorio");
 }
 File directorioIntroducidoGC = new File(stringDirectorioIntroducidoGC);
 archivoGC = new File(directorioIntroducidoGC, nombreArchivoGC);
 try {
 Persistencia.guardarPoblacion(archivoGC, miPoblacion);
 System.out.println(miPoblacion);
 } catch (FileNotFoundException ex) {
 System.out.println("\n Introduzca un archivo existente\n");
 }
 break;
 case 12:
 //@todo estaria bien liberar recursos
 System.exit(0);
 break;
 }
 }
 }
}

Continuar navegando