//Método utilizado para la creación de nuevos trabajadores public static void NuevoTrabajador(ref Trabajador[] listaTrabajadores, int mode) { Trabajador trabtemp; Trabajador[] copia = null; bool salida = false; //Inicialización de variables string mensaje = null; string mensaje2 = null; bool existe = false; // Entrada de Datos do { // ENTRADA trabtemp = Interfaz.PlantillaCrearTrabajador(); existe = ExisteTrabajador(listaTrabajadores, trabtemp.dni_pre); //Comprueba si existe o no el trabajador if (listaTrabajadores == null) //Si la lista de trabajadores está vacía, le asigna una posición { listaTrabajadores = new Trabajador[1]; } if (listaTrabajadores != null) //Como no es nula, debido a la anterior creación de la posición { if (existe == false) { //Gestión dinámica de la memoria copia = new Trabajador[listaTrabajadores.Length]; //Copiamos el tamaño del array de trabajadores listaTrabajadores.CopyTo(copia, 0); //Volcamos el contenido del array de trabajadores en copia listaTrabajadores = new Trabajador[listaTrabajadores.Length + 1]; //Asignamos una posición más copia.CopyTo(listaTrabajadores, 0); //Copiamos todo de nuevo al array de trabajadores copia = null; //Volvemos copia a null para ahorrar memoria listaTrabajadores[listaTrabajadores.Length - 1] = trabtemp; //Asignamos el nuevo trabajador al array mensaje = "Trabajador registrado correctamente"; if (mode == 1)// Modo 1: Creamos empleados por NuevoTrabajadors { mensaje2 = "Desea registrar otro Trabajador (s/n): "; salida = Interfaz.Continuar(mensaje); Interfaz.Pregunta(ref mensaje2, ref salida); Ficheros.GuardarTrabajadores(listaTrabajadores); } else //Creamos empleados desde la nómina. { salida = true; } } else //Si existe el trabajador, asignamos que salga del bucle { salida = true; } } } while (!salida); }
//Método para borrar un trabajador public static void BorrarTrabajador(ref Trabajador[] listaTrabajadores) { Trabajador[] copia; int posicion = 0; string dni = null; bool existe = false; //bool correcto = false; string mensaje; int j = 0; //Vamos a pedir el DNI para buscar a la persona que vamos a borrar dni = Interfaz.PlantillaPedirDni(); //En segundo lugar buscamos si existe dicho DNI introducido. existe = ExisteTrabajador(listaTrabajadores, dni, ref posicion); // Condición para conocer si la cuenta se encuentra sin saldo y además si existe. if (existe == true) { // Creamos un array de Copia para volcar los datos, con longitud de los trabajadores -1 copia = new Trabajador[listaTrabajadores.Length - 1]; /* For para recorrer el array, si encotnramos dicho DNI, borramos dicha posición y datos.*/ for (int i = 0; i < listaTrabajadores.Length; i++, j++) { if (i != posicion) { copia[j] = listaTrabajadores[i]; } else { j -= 1; } } //Array dinámico listaTrabajadores = new Trabajador[copia.Length]; copia.CopyTo(listaTrabajadores, 0); //Ponemos el array de copia en Null para ahorrar memoria copia = null; mensaje = "Trabajador borrado con éxito"; Interfaz.Continuar(mensaje); Interfaz.Continuar(); } else { mensaje = "El trabajador que está intentando borrar no existe.\n"; Interfaz.Error(mensaje); Interfaz.Continuar(); } }