//el siguiente archivo contiene datos acerca de los empleados de una empresa, estos datos son los siguentes //nombre //apellido //sueldo //cantidad de cargas familiares //seguro medico //fonasa o isapre //afp // se pide dise�ar un programa que realice los siguentes procesos //a) un procedimiento que cree los archivos con los datos iniciales( el usuario debe definir cuando no quiera seguir ingresando los datos) // b) un procedimiento que liste todos los datos del archivo // c) un procedimiento que permita a�adir un empleado // d) una funcion que retorne la cantidad de empleados que tienen mas de 3 cargas familiares, imprimir es este dato en el programa principal // e) una funcion que reciba por parametro el apellido de un empleado y retorne su sueldo // f)una funcion que retorne la suma total de todos los sueldos de los empleados // el programa principal debe incluir el menu con las siguentes opciones: // 1 crear archivo // 2 listar empleados // 3 agregar empleados // 4cantidad de cargas // 5 sueldo de empleado // 6total sueldo // ingrese su opcion #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> #include <conio.h> void ingresar(); void listar(); void agregar(); int cantidad(); long suel_emple(char apellido[15]); long sueldos(void); struct empleado { char nomb[10]; char apell[15]; int cargas; long sueldo; char seguro[7]; char afp[20]; }; struct empleado emple; FILE *f; int main() { int opc, cant; long sueldo; char a[15]; do { system("CLS"); printf("\n\n\n MENU PRINCIPAL "); printf("\n ==== ========= \n\n\n"); printf(" 1) crear archivo\n"); printf(" 2) listar empleados\n"); printf(" 3) agregar empleados\n"); printf(" 4) cantidad de cargas\n"); printf(" 5) sueldo de empleado\n"); printf(" 6) total sueldos\n"); printf(" 0) salir\n"); printf("Ingrese su opcion : "); scanf("%d", &opc); switch (opc) { case 1: system("CLS"); ingresar(); break; case 2: system("CLS"); listar(); getchar(); break; case 3: system("CLS"); agregar(); break; case 4: system("CLS"); cant = cantidad(); printf("\n\nLa cantidad de cargas de los empleados es: %d", cant); getchar(); break; case 5: system("CLS"); printf("\n\nIngrese el nombre del empleado que desea buscar: "); fflush(stdin); gets(a); fflush(stdin); sueldo = suel_emple(a); if (sueldo ==0) { printf("\n\nEl empleado no existe"); } else{ printf("\n\nEl sueldo del empleado es: %ld", sueldo); } getchar(); break; case 6: system("CLS"); sueldo = sueldos(); printf("\n\nEl total de los sueldos de los empleados es: %ld", sueldo); getchar(); break; case 0: system("CLS"); printf("\n\n\n\n\nPROGRAMA FINALIZADO......"); getchar(); break; default: printf("Ingrese opcion nuevamente"); getchar(); } }while (opc!=0); } void ingresar() { char resp; char cadena[100]; if((f=fopen("empleados.dat","w"))==NULL) { printf("El archivo no existe"); getchar(); return; } do { printf("\n\n\nIngrese nombre: "); fflush(stdin); fgets(emple.nomb,10,stdin); fflush(stdin); printf("\nIngrese apellido: "); fgets(emple.apell,15,stdin); fflush(stdin); printf("\nIngrese cantidad de cargas familiares: "); scanf("%d",&emple.cargas); printf("\nIngrese sueldo:"); scanf("%ld",&emple.sueldo); printf("\nIngrese seguro medico (Fonasa/Isapre): "); fflush(stdin); fgets(emple.seguro,7,stdin); fflush(stdin); printf("\nIngrese AFP: "); fgets(emple.afp,20,stdin); fflush(stdin); strcpy(cadena,""); printf("%d",sizeof(struct empleado));system("PAUSE"); fwrite(&emple, sizeof(struct empleado),1,f); printf ("\n\n\nDesea continuar (S/N):"); resp = toupper(getchar()); }while(resp != 'N'); fclose(f); } void listar() { if((f=fopen("empleados.dat","r"))==NULL) { printf("El archivo no existe"); getchar(); return; } rewind(f); fread(&emple, sizeof(struct empleado),1,f); printf("%s",emple.nomb); while (!feof(f)) { printf("\n\n\nNombre: %s", emple.nomb); printf("\nApellido: %s", emple.apell); printf("\nCantidad de cargas familiares: %d", emple.cargas); printf("\nSueldo: %ld", emple.sueldo); printf("\nSeguro medico (Fonasa/Isapre): %s", emple.seguro); printf("\nAFP: %s", emple.afp); fread(&emple, sizeof(struct empleado),1,f); } fclose(f); } void agregar() { if((f=fopen("empleados.dat","a"))==NULL) { printf("El archivo no existe"); getchar(); return; } printf("\n\n\nIngrese nombre: "); fflush(stdin); gets(emple.nomb); fflush(stdin); printf("\nIngrese apellido: "); fflush(stdin); gets(emple.apell); fflush(stdin); printf("\nIngrese cantidad de cargas familiares: "); scanf("%d",&emple.cargas); printf("\nIngrese sueldo:"); scanf("%ld",&emple.sueldo); printf("\nIngrese seguro medico (Fonasa/Isapre): "); fflush(stdin); gets(emple.seguro); fflush(stdin); printf("\nIngrese AFP: "); fflush(stdin); gets(emple.afp); fflush(stdin); fwrite(&emple, sizeof(struct empleado),1,f); fclose(f); } int cantidad() { int cont=0; if((f=fopen("empleados.dat","r"))==NULL) { printf("el archivo no existe"); getchar(); return(0); } fread(&emple,sizeof(struct empleado),1,f); while(!feof(f)) { if (emple.cargas>3) cont++; fread(&emple,sizeof(struct empleado),1,f); } fclose(f); return(cont); } long suel_emple(char apellido[15]) { if((f=fopen("empleados.dat","r"))==NULL) { printf("el archivo no existe"); getchar(); return(0); } fread(&emple,sizeof(struct empleado),1,f); while(!feof(f)) { if (strcmp(apellido, emple.apell)==0){ return(emple.sueldo); } fread(&emple,sizeof(struct empleado),1,f); } fclose(f); return(0); } long sueldos(void) { long total=0; if((f=fopen("empleados.dat","r"))==NULL) { printf("el archivo no existe"); getchar(); return(0); } fread(&emple,sizeof(struct empleado),1,f); while(!feof(f)) { total=total+emple.sueldo; fread(&emple,sizeof(struct empleado),1,f); } fclose(f); return(total); }
viernes, 13 de abril de 2012
Trabajas con archivo de datos - C++
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario