//Método de modificacion de nómina semanal
        public static void CambiaSemana(ref Nomina[] Nomina)
        {
            int    semana = 0;
            int    opcion = 0;
            String cadena = null;


            //Entrada de Datos
            semana = Interfaz.ElegirSemana(Nomina);                //Se pide la semana mediante el método de interfaz
            if (BuscaSemana(Nomina, ref semana))                   //A continuación se lanza el método Buscasemana
            {                                                      //que nos devuelve la posición del array en la que está la semana y si existe.
                opcion = Interfaz.ModificarNomina(Nomina[semana]); //Si existe se lanza la interfaz para seleccionar la opción que vamos a modificar
            }
            else
            {
                opcion = 0;
            }                    //Si no se encuentra la semana se pasa la opción de abortar la modificación


            //PROCESO
            switch (opcion)
            {
            case 0:
                cadena = "Modificación cancelada";
                break;

            //Modificación de los datos
            case 1:    //Lanza la Interfaz para modificar las horas
                Nomina[semana].Horas_pre = Interfaz.SolicitarHoras();
                cadena = "Horas modificadas con éxito.";
                break;

            case 2:    //Lanza la Interfaz para modificar el precio de la hora.
                Nomina[semana].PrecioPre = Interfaz.SolicitarPrecio();
                cadena = "Precio de la hora de trabajo modificado con éxito.";
                break;

            case 3:    //Lanza la Interfaz para modificar el precio de la hora.
                Nomina[semana].JornadaPre = Interfaz.SolicitarJornada();
                cadena = "Jornada modificada con éxito.";
                break;

            case 4:    //Lanza la Interfaz para modificar el precio de la hora.
                Nomina[semana].RetencionPre = Interfaz.SolicitarRetencion();
                cadena = "Retención modificada con éxito.";
                break;
            }
            Interfaz.Continuar(cadena);
        }
        //Métodos que controlan el funcionamiento de la clase GestionNomina y la Interfaz
        public static void GestionNominas(int numb, ref bool flag, string dni)
        {
            string fecha;
            Nomina[] Nomina = null;
            Nomina semana = null;
            try
            {
                //Recuperamos la nómina del trabajador y la cargamos en un Array de Nóminas de trabajo.
                Nomina = Ficheros.GetNomina(dni);
                //Ordenamos el array y lo redimensionamos, dejando huecos en las semanas no creadas aún
                Gestion_Nomina.OrdenaNomina(ref Nomina);

                switch (numb)
                {
                    case 0:
                        flag = true;
                        break;
                    //Introducir nóminas
                    case 1:
                        /*Comprobamos que el array no ha llenado los seis espacios que es el máximo de semanas
                        * que tiene un mes. En caso de haber huecos, lanzamos los métodos para pedir la semana
                        *  e introducirla en el array nómina, tras lo cual se almacena en el fichero.*/
                        if (!Gestion_Nomina.LimiteSemanas(Nomina))
                        {
                            semana = Interfaz.AgregarSemana(Nomina);
                            Gestion_Nomina.CreaSemana(ref Nomina, ref semana);
                            Ficheros.GuardarNominaTemporal(ref Nomina);
                        }
                        else
                        {
                            Interfaz.Error("No se pueden agregar más semanas, se ha alcanzado el máximo posible de semanas de un mes");
                        }
                        break;
                    //Modificar Nóminas
                    case 2:
                        /*Con esta opción vamos a cambiar los parámetros de la nómina, para lo que lanzamos el 
                        * método de cambio de la semana. Y, una vez terminado, se guarda la nómina en el fichero.*/
                        Gestion_Nomina.CambiaSemana(ref Nomina);
                        Ficheros.GuardarNominaTemporal(ref Nomina);
                        break;

                    //Modificar archivo de configuracion
                    case 3:
                        /* Esta opción lanza una interfaz que nos va a permitir modificar los parámetros almacenados en 
                        * app.config, previa validación de la contraseña de administrador*/
                        int option = 0;
                        float valor = 0;
                        string pass = null;
                        pass = Interfaz.PedirContraseña();
                        if (GestionNegocio.ValidarContraseña(pass))
                        {
                            Interfaz.PedirDatosArchivoConf(ref option, ref valor);
                            Ficheros.ModConfig(option, valor);
                            Interfaz.Continuar("Valor modificado con éxito");
                        }
                        else
                        {
                            Interfaz.Error("La contraseña no coincide.");
                            Interfaz.Continuar();
                            break;
                        }
                        break;
                    //Eliminar nominas
                    case 4:
                        /*La opción de eliminar nóminas a su vez lanza un menú por interfaz que permite eliminar una sóla semana
                        * del array de nóminas o, por el contrario, eliminar todas las posiciones de dicho array.
                        * Tanto en un método como en el otro, se lanza un método en gestión de nómina que es el que se encarga de 
                        * hacer la eliminación y redimensión del array. */
                        int ordinal = 0, opcion = 0;
                        opcion = Interfaz.EliminarSemanaOpcion();
                        if (opcion == 1)
                        {
                            ordinal = Interfaz.ElegirSemana(); // Pide la semana a eliminar
                            Gestion_Nomina.ProcesoEliminarSemana(ref Nomina, ordinal);
                        }
                        else
                        {
                            Gestion_Nomina.ProcesoEliminarNomina(ref Nomina);
                        }
                        Ficheros.GuardarNominaTemporal(ref Nomina);
                        break;
                    //Mostrar Nómina Temporal
                    case 5:
                        /*En esta opción se muestra la nómina temporal, con el número de semanas
                        * como los parámetros tales como número de horas, horas extra, 
                        * precio de la hora extra, porcentaje de retencion, etc.*/
                        Console.WriteLine(Interfaz.MostrarNominaTemporal(Nomina, dni));
                        Console.ReadLine();
                        break;
                    //Cerrar Nómina del Mes
                    case 6:
                        /*Este método sirve para guardar la nómina del mes, exportándola a un archivo de texto 
                        * (después de mostrarla en pantalla y pedir confirmación) y eliminar el archivo temporal*/
                        string cadena = null;
                        /*Se calculan los parámetros tales como horas extra trabajadas, salario base, extra, 
                        * retenciones y neto, y se almacenan en él array de nóminas*/
                        Gestion_Nomina.CalculaParcial(ref Nomina);
                        //La interfaz muestra por pantalla los parciales semanales y se devuelve en la variable cadena.
                        cadena = Interfaz.MostrarNomina(Nomina, dni);
                        //El método cierreMes devuelve (y concatena) en la variable cadena el resultado del cálculo de los totales de cada semana.
                        cadena += Interfaz.CierreMes(Nomina);
                        if (!Confirmar())//se pide confirmación para guardar los cambios.
                        {
                            //Almacena en el fichero
                            fecha = Interfaz.Pidefecha();//En este método vamos a pedir la fecha de mes y año de la nómina para almacenarla.
                            Ficheros.CerrarNomina(cadena, fecha);//En este método almacenamos la cadena de texto en un archivo nombrado con la fecha y el dni del trabajador.
                            //Eliminar fichero
                            Ficheros.BorrarTemporal(dni); //Eliminamos el fichero temporal de la nómina del sistema.
                            Interfaz.Continuar("Nómina Exportada Correctamente \n \t\tPulsa una tecla para continuar...");
                        }
                        else
                        {
                            Interfaz.Continuar();
                        }

                        break;
                }
            }
            catch (Exception e)
            {
                Interfaz.Error(e.Message);
                Interfaz.Continuar("Pulsa una tecla para continuar...");
            }
        }