#include #include #include #include FILE *maes, *mov, *maestmp, *historico; struct clientes{ char nombre[11], apellidos[21], direccion[21], telefono[11]; int codigo; }; struct maestro { int codigo; char nombre[11], apellidos[21]; char direccion[21], telefono[11]; }regmaes; struct movi { char tipo; int codigo; char nombre[10], apellidos[20]; char direccion[20], telefono[10]; }regmov; void limpiar1(), limpiar2(); void main(void){ struct clientes cli; mov=fopen("k:\\files\\clientes.mov","r+b"); if ((maes=fopen("k:\\files\\clientes.dat","r+b"))==NULL){ //fclose(maes); maes=fopen("k:\\files\\clientes.dat","w+b"); while (!feof(mov)){ limpiar1();limpiar2(); fread(®mov,sizeof(regmov),1,mov); if (regmov.tipo=='A') { strcpy (regmaes.apellidos,regmov.apellidos); strcpy (regmaes.nombre,regmov.nombre); regmaes.codigo=regmov.codigo; strcpy (regmaes.direccion,regmov.direccion); strcpy (regmaes.telefono,regmov.telefono); clrscr(); printf ("%d \n%s \n%s \n%s \n%s", regmaes.codigo, regmaes.nombre,regmaes.apellidos, regmaes.direccion, regmaes.telefono); getch(); fwrite (®maes,sizeof(struct maestro),1,maes); } } } else{ fclose(maes); system("rename k:\\files\\clientes.dat clientes.tmp"); maes=fopen("k:\\files\\clientes.dat","w+b"); maestmp=fopen("k:\\files\\clientes.tmp","rb"); historico=fopen("k:\\files\\clientes.log","a+b"); limpiar1();limpiar2(); fread(®mov,sizeof(regmov),1,mov); fread(®maes,sizeof(regmaes),1,maestmp); while (!feof(mov) && !feof(maestmp)){ if (regmaes.codigo==regmov.codigo){ if(regmov.tipo=='A'){ printf("Error cliente duplicado.");getch(); fwrite(®maes,sizeof(regmaes),1,maes); limpiar1();limpiar2(); fread(®mov,sizeof(regmov),1,mov); fread(®maes,sizeof(regmaes),1,maestmp); } else{ if (regmov.tipo=='B'){ printf("Dando de baja..."); fwrite(®maes,sizeof(regmaes),1,historico); limpiar1();limpiar2(); fread(®mov,sizeof(regmov),1,mov); fread(®maes,sizeof(regmaes),1,maestmp); } else{ fwrite(&(regmov.codigo),2,1,maes); fwrite(&(regmov.nombre),11,1,maes); fwrite(&(regmov.apellidos),21,1,maes); fwrite(&(regmov.direccion),21,1,maes); fwrite(&(regmov.telefono),11,1,maes); limpiar1();limpiar2(); fread(®mov,sizeof(regmov),1,mov); fread(®maes,sizeof(regmaes),1,maestmp); } } } else{ if(regmov.codigo>regmaes.codigo){ fwrite(®maes,sizeof(regmaes),1,maes); limpiar2(); fread(®maes,sizeof(regmaes),1,maestmp); } else{ if (regmov.tipo=='A'){ fwrite(&(regmov.codigo),2,1,maes); fwrite(&(regmov.nombre),10,1,maes); fwrite(&(regmov.apellidos),20,1,maes); fwrite(&(regmov.direccion),20,1,maes); fwrite(&(regmov.telefono),10,1,maes); } else{ printf("Error: El cliente no existe.");getch(); } limpiar1(); fread(®mov,sizeof(regmov),1,mov); } } } // fin del while if (!feof(mov)){ while(!feof(mov)){ if(regmov.tipo=='A'){ strcpy (regmaes.apellidos,regmov.apellidos); strcpy (regmaes.nombre,regmov.nombre); regmaes.codigo=regmov.codigo; strcpy (regmaes.direccion,regmov.direccion); strcpy (regmaes.telefono,regmov.telefono); clrscr(); printf ("%d \n%s \n%s \n%s \n%s", regmaes.codigo, regmaes.nombre,regmaes.apellidos, regmaes.direccion, regmaes.telefono); getch(); fwrite (®maes,sizeof(struct maestro),1,maes); } else{ printf("Error: El cliente no existe.");getch(); } limpiar1(); fread(®mov,sizeof(regmov),1,mov); } } else{ if(!feof(maestmp)){ while(!feof(maestmp)){ fwrite(®maes,sizeof(regmaes),1,maes); limpiar2(); fread(®maes,sizeof(regmaes),1,maestmp); } } } fcloseall(); } unlink("k:\\files\\clientes.mov"); unlink("k:\\files\\clientes.tmp"); } void limpiar1(){ regmov.tipo=NULL;regmov.codigo=0; for (int n=0;n<21;n++){ regmov.apellidos[n]=NULL;regmov.direccion[n]=NULL; } for(n=0;n<11;n++){ regmov.nombre[n]=NULL;regmov.telefono[n]=NULL; } } void limpiar2(){ for (int n=0;n<21;n++){ regmaes.apellidos[n]=NULL;regmaes.direccion[n]=NULL; } for (n=0;n<11;n++){ regmaes.nombre[n]=NULL;regmaes.telefono[n]=NULL; } regmaes.codigo=0; }