Ejemplo n.º 1
0
void DlgPropiedades::on_editPorcentaje_changed()
// Se activa cuando el porcentaje del campo cambia
{
    try {
		unsigned int peso = (unsigned int) editPorcentaje->get_value();
		int numCampo = getOpcion( tablaColumnas );

		if ( numCampo >= 0
		  && ( (unsigned int) numCampo ) < documento->getListaCampos().size() )
		{
			Campo * cmp = documento->getListaCampos()[ numCampo ];
            CampoNotaParcial * c;

			if ( ( c = dynamic_cast<CampoNotaParcial *>( cmp ) ) != NULL ) {
			    c->putEsPuntuacionSobreDiez();
                botPuntuarSobre10->set_active( true );
				c->putPeso( peso );

				if ( !editPorcentaje->is_sensitive() ) {
					activarPropiedades();
				}
			}
		}
		else desactivarPropiedades();
    }
    catch(...) {
        showError( *this, "Error inesperado. Tratando de normalizar..." );
        on_botNormalizar_clicked();
    }
}
Ejemplo n.º 2
0
int main(int argc, char *argv[]){
    
    int max = 0; /* numero maximo de trabajadores que se van a registrar */
    int trabajadoresInscritos = 0;
    char opcion= 'z';
    char (*nombres)[MAX_CHAR];
    float *salarios;
    float *horasextra;
    float valorHoraExtra = 0;
    
    /* -----  Validación de los argumentos ---- */
    if (argc<=2){
        printf("ERROR: Se esperaba el maximo numero de empleados y el valor de la hora extra; se esperaba %s <numero empleados> <Valor Hora Extra>\n", argv[0]);
        exit(0);
    }else{
        max = atoi(argv[1]);
        valorHoraExtra = atof(argv[2]);
        if(max <=0){
            printf("ERROR: argumento no valido se esperaba un numero de trabajadores a registrar positivo mayor que 0: %s\n", argv[1]);
            exit(0);
         }if(valorHoraExtra<=0){
             printf("ERROR: argumento no valido <valor Hora Extra>\n");
         }
         
         
    }
    /* Memoria dinamica */
    
    nombres = (char (*)[MAX_CHAR])malloc(sizeof(char[MAX_CHAR])*max);
    salarios =(float *) malloc(sizeof(float)*max);
    horasextra = (float *)malloc(sizeof(float)*max);
    
    do{
        getOpcion(&opcion);
        switch(opcion){
            case 'a':
                registrar(&trabajadoresInscritos,  max, nombres,salarios,horasextra);
                break;
                
            case 'b':
                mostrarListaEmpleados(nombres, salarios, horasextra,trabajadoresInscritos);
                break;
            case 'c':
                calculaNomina(nombres, salarios, horasextra,trabajadoresInscritos,valorHoraExtra);
                break;
            case 'q':
                printf("\nsaliendo del programa...\n");
                break;
            default:
                printf("---- ****Opción incorrecta %c****------\n\n",opcion);
                break;
        }
    }while(opcion!='q');
    
    printf("\n");
    return 0;
    
}
Ejemplo n.º 3
0
void DlgPropiedades::on_botEsInformativo_toggled()
{
	int numCampo = getOpcion( tablaColumnas );

	if ( numCampo >= 0 ) {
		Campo * c = documento->getListaCampos()[ numCampo ];

		c->putEsInformativo( botEsInformativo->get_active() );
	}
	else {
		botEsInformativo->set_sensitive( false );
		botEsInformativo->set_active( false );
	}
}
Ejemplo n.º 4
0
void DlgPropiedades::insertarColumnaTipo()
{
	Campo *c = NULL;
	CampoNotaParcial * n;

	// Obtener la fila seleccionada
	int op = getOpcion( tablaSeleccionada );

	if ( op >= 0 ) {
	    // Crear el campo adecuado
		if ( op == 0 ) {
			c = new(std::nothrow) CampoInfo( documento );
			c->nombre = "Info";
		}
		else
		if ( op == 1 ) {
			c = new(std::nothrow) CampoNotaParcial( documento );
			c->nombre = "Nota";
		}
		else
		if ( op == 2 ) {
			c = new(std::nothrow) CampoVerif( documento );
			c->nombre = "Comprobar";
		}
		else
		if ( op == 3 ) {
			c = new(std::nothrow) CampoNotaExtra( documento );
			c->nombre = "Nota extra";
		}
		else {
			ponMsgError( "ERROR Interno: opción no existente" );
			goto FIN;
		}

		if ( c != NULL ) {
			documento->insertaNuevoCampo( c );
			c->normalizarNumFilas();

			if ( ( n = dynamic_cast<CampoNotaParcial *>( c ) ) != NULL )
            {
                n->putEsPuntuacionSobreDiez();
                documento->normalizarNotasParciales();
            }
		}
		else ponMsgError( *this, "Sin memoria, creando campos" );
	} else ponMsgError( *this, "Debe seleccionar una opción de alguna lista" );

	FIN:
	return;
}
Ejemplo n.º 5
0
void DlgPropiedades::on_botAbajo_clicked()
/// Gestor para el botón abajo (pasar un campo a la pos. inferior)
{
	int numCampo = getOpcion( tablaColumnas );

	if ( numCampo >= 0 ) {
		if ( ((unsigned int) numCampo)  < documento->getListaCampos().size() - 1 ) {
			documento->intercambiarPosicionesCampos( numCampo, numCampo + 1 );
			actualizaListadoCampos();
            setOpcion( tablaColumnas, numCampo + 1 );
			activarPropiedades();
		}
	}
	else ponMsgError( *this, "Debe seleccionar un campo primero" );
}
Ejemplo n.º 6
0
void DlgPropiedades::on_botArriba_clicked()
/// Gestor para el botón abajo (pasar un campo a la pos. superior)
{
	int numCampo = getOpcion( tablaColumnas );

	if ( numCampo >= 0 ) {
		if ( numCampo >= 1 ) {
			documento->intercambiarPosicionesCampos( numCampo, numCampo - 1 );
			actualizaListadoCampos();
			setOpcion( tablaColumnas, numCampo - 1 );
			activarPropiedades();
		}
	}
	else ponMsgError( *this, "Debe seleccionar un campo primero" );
}
Ejemplo n.º 7
0
void DlgPropiedades::on_editValor_changed()
// Cambiar este campo supone cambiar el nombre de la columna
{
	int numCampo = getOpcion( tablaColumnas );

	if ( numCampo >= 0 ) {
		Campo * c = documento->getListaCampos()[ numCampo ];

		// Meterlo
		c->nombre = editValor->get_text();

		// Actualizar la fila en cuestión
		Gtk::TreeIter it = refModeloCampos->children()[ numCampo ];
  		( *it )->set_value( 0, editValor->get_text() );
	}
}
Ejemplo n.º 8
0
void DlgPropiedades::on_botBorrarCol_clicked()
/// El gestor del botón borrar, para eliminar un campo
{
	int numCampo = getOpcion( tablaColumnas );

	if ( numCampo >= 0 ) {
        if ( askYesNo( *this,
               "Borrar columna",
               Glib::ustring( "¿Esta seguro?" ),
               "Todo el contenido (filas) de la columna va a ser eliminado" ) )
        {
            if ( documento->eliminarCampo( numCampo ) ) {
                actualizaListadoCampos();
                desactivarPropiedades();
            }
            else ponMsgError( *this, "Lo siento, se trata de un campo vital" );
        }
	}
	else ponMsgError( *this, "Debe seleccionar un campo primero" );
}
Ejemplo n.º 9
0
void DlgPropiedades::on_botEsNecesarioAprobar_toggled()
{
	int numCampo = getOpcion( tablaColumnas );

	if ( numCampo >= 0 ) {
		Campo * c = documento->getListaCampos()[ numCampo ];

		if ( dynamic_cast<CampoNotaParcial *>( c ) != NULL ) {
			( (CampoNotaParcial *) c )->putEsNecesarioAprobar(
					botEsNecesarioAprobar->get_active() )
			;
		}
		else {
			botEsNecesarioAprobar->set_sensitive( false );
			botEsNecesarioAprobar->set_active( false );
		}

	} else {
		botEsNecesarioAprobar->set_sensitive( false );
		botEsNecesarioAprobar->set_active( false );
	}
}
Ejemplo n.º 10
0
void DlgPropiedades::activarPropiedades()
{
	botEsInformativo->set_sensitive();
	editValor->set_sensitive();
	botBorrarCol->set_sensitive();
	botArriba->set_sensitive();
	botAbajo->set_sensitive();

	// Meter la info
	int numCampo = getOpcion( tablaColumnas );
	if ( numCampo >= 0 ) {
		Campo * c = documento->getListaCampos()[ numCampo ];

		botEsInformativo->set_active( c->esInformativo() );
		editValor->set_text( c->nombre );

		if ( dynamic_cast<CampoNotaParcial *>( c ) ) {
			editPorcentaje->set_sensitive();
			editPorcentaje->set_value( ( (CampoNotaParcial *) c)->getPeso() );
			botPuntuarSobre10->set_sensitive();
			botPuntuarSobre10->set_active(
						( (CampoNotaParcial *) c )->esPuntuacionSobreDiez()
			);
			botEsNecesarioAprobar->set_sensitive();
			botEsNecesarioAprobar->set_active(
						( (CampoNotaParcial *) c )->esNecesarioAprobar()
			);
		}
		else {
			editPorcentaje->set_sensitive( false );
			editPorcentaje->set_value( 0 );
			botPuntuarSobre10->set_sensitive( false );
			botPuntuarSobre10->set_active( false );
			botEsNecesarioAprobar->set_active( false );
			botEsNecesarioAprobar->set_sensitive( false );
		}
	}
}
Ejemplo n.º 11
0
void DlgPropiedades::on_botPuntuarSobre10_toggled()
{
	int numCampo = getOpcion( tablaColumnas );
	CampoNotaParcial * campo;

	if ( numCampo >= 0 ) {
		Campo * c = documento->getListaCampos()[ numCampo ];

		if ( dynamic_cast<CampoNotaParcial *>( c ) != NULL ) {
			campo = (CampoNotaParcial *) c;

			campo->putEsPuntuacionSobreDiez( botPuntuarSobre10->get_active() );
		}
		else {
			botPuntuarSobre10->set_sensitive( false );
			botPuntuarSobre10->set_active( false );
		}

	} else {
		botPuntuarSobre10->set_sensitive( false );
		botPuntuarSobre10->set_active( false );
	}
}
Ejemplo n.º 12
0
void DlgPropiedades::insertarColumnaPred()
{
	Campo *c = NULL;
	CampoNotaParcial * n;

	// Obtener la fila seleccionada
	int op = getOpcion( tablaSeleccionada );

	if ( op >= 0 ) {
	    // Crear el campo adecuado
		if ( op == 0 ) {
			c = new(std::nothrow) CampoNotaConceptual( documento );
			c->nombre = DocumentoCalifa::NombrePredNotaConceptual;
		}
		else
		if ( op == 1 ) {
			c = new(std::nothrow) CampoInfo( documento );
			c->nombre = DocumentoCalifa::NombrePredObservaciones;
		}
		else
		if ( op == 2 ) {
			c = new(std::nothrow) CampoNotaParcial( documento );
			c->nombre = DocumentoCalifa::NombrePredPractica;
		}
		else
		if ( op == 3 ) {
			c = new(std::nothrow) CampoNotaParcial( documento );
			c->nombre = DocumentoCalifa::NombrePredPracticaFinal;
		}
		else
		if ( op == 4 ) {
			c = new(std::nothrow) CampoNotaParcial( documento );
			c->nombre = DocumentoCalifa::NombrePredExamen;
		}
		else
		if ( op == 5 ) {
			c = new(std::nothrow) CampoInfo( documento );
			c->nombre = DocumentoCalifa::NombrePredNombre;
		}
		else
		if ( op == 6 ) {
			c = new(std::nothrow) CampoNotaExtra( documento );
			c->nombre = DocumentoCalifa::NombrePredNotaExtra;
		}
		else {
			ponMsgError( *this, "ERROR Interno, opción no existente" );
			goto FIN;
		}

		if ( c != NULL ) {
			documento->insertaNuevoCampo( c );
			c->normalizarNumFilas();

			if ( ( n = dynamic_cast<CampoNotaParcial *>( c ) ) != NULL )
            {
                n->putEsPuntuacionSobreDiez();
                documento->normalizarNotasParciales();
            }
		}
		else ponMsgError( *this, "Sin memoria, creando campos" );

	} else ponMsgError( *this, "Debe seleccionar una opción de alguna lista" );

	FIN:
	return;
}
Ejemplo n.º 13
0
int main(void)
{
  int opcion;

  Lista l; 
  EMPLEADO e; /* almacena temporalmente el empleado introducido por el
		 usuario */
  int Cedula;
    
	
	
  l= NULL; /* lista vacia */

  system("clear"); 
  Menu(); /*Muestra las opciones del menu*/

  opcion = getOpcion();
  /* Lazo principal: presenta el menu, y realiza la accion de acuerdo
     a la seleccion del usuario */
  while (opcion != '4' ) { 
    switch (opcion) {
    case '1': /* Insertar empleado */
      printf("Por favor inserte la informacion del empleado en el siguiente orden:\n");
      printf("Nombre :");
      /* Crea espacio para el nombre y lo pasa en la estructura e */
      e.Nombre = (char*)malloc(sizeof(char)*MAXNOMBRE);
      scanf("%s",e.Nombre);
      printf("\nEdad :");
      scanf("%d", &e.Edad);
      printf("\nSueldo:");
      scanf("%f",&e.Sueldo);
	
      printf("\nCedula :");
      scanf("%ld",&e.Cedula);

      l = InsertarEmp(l, &e);
      printf("Presione ENTER\n");
      getEnter(); 
      getEnter(); /* se llama dos veces porque el scanf deja el ENTER
		     de fin de linea en el buffer */
      break;
    case '2':/* Eliminar empleado */
      printf("Por favor introduzca la cedula del empleado que desea eliminar de la nomina:\n ");
      printf("\nCedula: ");
      scanf("%ld",&Cedula);
      l= EliminarEmp(l,Cedula);
      printf("Presione ENTER\n");
      getEnter();
      getEnter(); /* se llama dos veces porque el scanf deja el ENTER
		     de fin de linea en el buffer */
      break;
    case '3': /* Consultar */
      Consultar(l);
      break;
    case '4': /* Salir */
      exit(1);
      break;
    default:
      printf("Invalida opcion, por favor vuelva a intentar.\n\n");
      break;
    }
    Menu();
    opcion = getOpcion();
  }
  printf("Se termino el programa.\n");
  return 0;
	
}
Ejemplo n.º 14
0
int main()
{

    int opcion = 0,  ultimo_id = 0;
    char auxTitulo[50], auxNacionalidad[50], auxDirector[50] ;
    int lugarLibre;
    int i;


    ePeliculas peliculas[cELEMENTOS];
    eDirectores directores[cELEMENTOS];

    iniciarDatosArray(peliculas, cELEMENTOS, VACIO);//Inicio Datos en  0 "Vacio"
    while (opcion != 6)
    {
        opcion = getOpcion(opcion);
            switch (opcion)
            {
            case 1:
                lugarLibre = buscarPrimerOcurrencia(peliculas, cELEMENTOS);
                if (lugarLibre == LLENO)
                {
                    printf("Lleno! ");
                    break;
                }
                if(!getStringValidado("Titulo: ", auxTitulo))
                {
                    printf("Solo debe contener letras...");
                    break;
                }
                if(!getStringValidado("Nacionalidad: ", auxNacionalidad))
                {
                    printf("Solo debe contener letras...");
                    break;
                }
                if(!getStringValidado("Director: ", auxDirector))
                {
                    printf("Solo debe contener letras...");
                    break;
                }
                /*if(buscarPrimerOcurrencia(peliculas,cELEMENTOS) == LLENO)
                {
                    printf("\n\nEL LEGAJO YA EXISTE!!!\n");
                    break;
                }*/
                strcpy(peliculas[lugarLibre].titulo, auxTitulo);
                strcpy(peliculas[lugarLibre].nacionalidad, auxNacionalidad);
                strcpy(peliculas[lugarLibre].director, auxDirector);
                peliculas[lugarLibre].flag_estado = OCUPADO;
                peliculas[lugarLibre].id_peliculas = ultimo_id +1;
                ultimo_id = ultimo_id +1;
                printf( "cargado");
                break;

            case 2:
            printf("\nLISTAR\n");
                for(i=0;i < cELEMENTOS; i++)
                {
                    if(peliculas[i].flag_estado == OCUPADO)
                    {
                        printf("\n%s - %s - %s - %d \n",peliculas[i].titulo,peliculas[i].nacionalidad,peliculas[i].director, peliculas[i].id_peliculas);
                    }
                }
                break;

            }

    }
    return 0;
}