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