Estructura de Datos II

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define true 1
#define false 0
#include<ctype.h>
#include <string.h>
#include <math.h>
typedef struct
   { int codigo;
     char nombre[8];
     float sueldo;
     int estado;
   } registro;
registro reg;
int bytesreg = sizeof(reg);
FILE *pf;
int res,nureg;

int encontrar(int llave)
{  int encontrado=false;
   int n=0;
   while(!feof(pf) && !encontrado)
   {  fread(&reg ,bytesreg, 1, pf);
      n=n+1;
      if (reg.codigo==llave) encontrado=true;
    }
    if(encontrado && reg.estado) return(n);
    else return(0);
}
void consulta()
{    int desp,cod;
     pf=fopen("datos","rb");
     printf("Codigo a Buscar --->  ");scanf("%d",&cod);
     desp=encontrar(cod);
     if (desp!=0)
      {
       printf("\n Codigo  %d     ",reg.codigo);
       printf("\n Nombre  %s     ",reg.nombre);
       printf("\n Sueldo  %10.2f  ",reg.sueldo);
      }
     else printf("El codigo no se encuemtra en el archivo ");
     fclose(pf);getch();
}
void borrar()
{  int desp,cod;
     pf=fopen("datos","r+b");
     printf("Codigo a Borrar --->  ");scanf("%d",&cod);
     desp=encontrar(cod);
     if (desp!=0)
{ reg.estado=false;
  fseek(pf,(desp-1)*bytesreg,SEEK_SET);
  fwrite(&reg,bytesreg,1,pf);
  printf("registro %d   borrado\n",reg.codigo);
  printf("Enter para continuar ");getch();
}
     else {printf("no se enontro    \n");
   printf("presione Enter para continuar");getch();}
     fclose(pf);
}
void modificar()
{  int desp,cod;
     pf=fopen("datos","r+b");
     printf("Codigo a Modificar --->  ");scanf("%d",&cod);
     desp=encontrar(cod);
     if (desp!=0)
{ printf("Nuevo sueldo  ?"); scanf("%f",&reg.sueldo);
  fseek(pf,(desp-1)*bytesreg,SEEK_SET);
  fwrite(&reg,bytesreg,1,pf);
  printf("registro  %d  modificado\n",reg.codigo);
  printf("Enter para continuar\n");getch();
}
     else { printf("El registro  %d  no se enontro    \n",cod);
    printf("Enter para continuar\n");getch();
  }
     fclose(pf);
}
void incluir()
{  printf("codigo de la cuenta             ");scanf("%d",&reg.codigo);
   printf("\n Nombre del cuantahabiente    ");scanf("%s",&reg.nombre);
   printf("\n Sueldo de la cuenta          ");scanf("%f",&reg.sueldo);
   reg.estado=true;
   pf=fopen("datos","r+b");
   fseek(pf,0L,SEEK_END);
   fwrite(&reg,bytesreg,1,pf);
   fclose(pf);
}
void armar()
{ int cr,i,c=10;
char vl[26]={'A','E','I','O','U','B','C','D','E','G','O','I','L','M','N',
     'P','A','R','S','E','I','U','O','A','E','A'};
  printf("Cuantos registros  >  ");scanf("%d",&nureg);
  pf = fopen("datos","w+b");
  randomize();
  for (cr=1;cr<=nureg;cr++)
  { c=c+random(10)+1;reg.codigo=c;
    for (i=0;i<7; i++) reg.nombre[i]=vl[random(25)+1];
    reg.nombre[7]='\0';
    reg.sueldo =sqrt(reg.codigo)*1000;
    reg.estado=true;
    fwrite(&reg,bytesreg, 1, pf);
  }
  printf("\n  Archivo creado < ENTER > para continuar \n");getch();
  fclose(pf);
}
void visualizar()
{  int nuli=1;
   int nr=1;
   pf = fopen("datos","rb");
   fread(&reg , bytesreg, 1, pf);
   printf("         NURE CODIGO            NOMBRE                 SUELDO\n");
   printf("        --  --------            -------                ------\n");
   while(!feof(pf))
   { if (reg.estado)
     {printf("\t %3d %3d",nr++,reg.codigo);
      printf("\t\t\ %s",reg.nombre);
      printf("\t\t\%10.2f\n",reg.sueldo);
      nuli++;
     }
     if (nuli>=20)
     { printf("         Presione < enter> para continuar  ");
       getch();nuli=1;clrscr();
       printf("       NURE CODIGO             NOMBRE                 SUELDO\n");
       printf("       --- ----                -------                ------\n");
      }
      fread(&reg , bytesreg, 1, pf);
    }
    printf("                        Presione < ENTER > para continuar \n");
    fclose(pf);getch();
}
void main()
{ int res;
 clrscr();
 textbackground(1);
 do
 {
   clrscr();
   textcolor(10);
   printf("                       M   E   N   U        \n\n\n");
   printf("\n 1. Armar archivo entrada\n");
   printf("\n 2. Mostrar  el archivo\n");
   printf("\n 3. Buscar un registro en el archivo\n");
   printf("\n                        4. Borrar registro            \n");
   printf("\n                        5. INCLUIR REGISTRO            \n");
   printf("\n                        6. MODIFICAR CODIGO           \n");
   printf("\n                 7. SALIR\n");
   printf("\n         Opcion --->:");
   scanf("%d", &res);
   switch(res)
     {case 1 :clrscr();armar();break;
      case 2 :clrscr();visualizar();break;
      case 3: clrscr();consulta();break;
      case 4: clrscr();borrar();break;
      case 5: clrscr();incluir();break;
      case 6: clrscr();modificar();break;
     }
 }
 while (res!=7);
}

No hay comentarios:

Publicar un comentario