Follow By Email

lunes, 28 de febrero de 2011

Trabajas con archivo de datos - C++

//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);
<br />
<pre style="white-space: pre-wrap; word-wrap: break-word;"></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;"></pre>
<pre style="white-space: pre-wrap; word-wrap: break-word;">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", &amp;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",&amp;emple.cargas);
           printf("\nIngrese sueldo:");
           scanf("%ld",&amp;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(&amp;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(&amp;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(&amp;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",&amp;emple.cargas);
     printf("\nIngrese sueldo:");
     scanf("%ld",&amp;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(&amp;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(&amp;emple,sizeof(struct empleado),1,f);
    while(!feof(f))
    {
        if (emple.cargas&gt;3)
             cont++;
        fread(&amp;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(&amp;emple,sizeof(struct empleado),1,f);
    while(!feof(f))
    {
        if (strcmp(apellido, emple.apell)==0){
            return(emple.sueldo);
        } 
        fread(&amp;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(&amp;emple,sizeof(struct empleado),1,f);
    while(!feof(f))
    {
        total=total+emple.sueldo;
        fread(&amp;emple,sizeof(struct empleado),1,f);
    }
    fclose(f);
    return(total);
}

No hay comentarios:

Publicar un comentario