#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(® ,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(®,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",®.sueldo);
fseek(pf,(desp-1)*bytesreg,SEEK_SET);
fwrite(®,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",®.codigo);
printf("\n Nombre del cuantahabiente ");scanf("%s",®.nombre);
printf("\n Sueldo de la cuenta ");scanf("%f",®.sueldo);
reg.estado=true;
pf=fopen("datos","r+b");
fseek(pf,0L,SEEK_END);
fwrite(®,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(®,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(® , 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(® , 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