Este
programita te permite dar de altas y de bajas tanto físicas y lógicas de un
archivo y también permite imprimir texto.
#include"stdio.h"
#include"conio.h"
#include"ctype.h"
void
menu(void);
void
altas(void);
void
bajas_log(void);
void
bajas_fis(void);
void
imprime(void);
struct registro
{
char clave[10];
char nombre[20];
char apeidos[20];
char carrera[50];
char activo;
};
struct registro nuevo;
main()
{
char TECLA;
int baja=0;
textbackground(1);
clrscr();
do
{
menu();
gotoxy(60,24);
TECLA=toupper(getche());
switch(TECLA)
{
case 'A':
altas();
break;
case 'B':
baja=submenu();
switch(baja)
{
case 1:
bajas_log();
break;
case 2:
bajas_fis();
break;
}
clrscr();
break;
case 'I':
imprime();
clrscr();
break;
}
}while(TECLA!='S');
}
void
imprime(void)
{
FILE *archivo;
int leidos;
archivo=fopen("C:Registro.txt","r");
if(archivo==NULL)
{
gotoxy(26,12);printf("ERROR: Nose
puede abrir el archivo");
getch();
exit(0);
}
while(!(feof(archivo)))
{
leidos=fread(&nuevo,sizeof(nuevo),1,archivo);
if(leidos)
{
if(nuevo.activo!='X')
{
clrscr();
gotoxy(25,10);printf("Nombre");
gotoxy(25,11);printf("Apeidos");
gotoxy(25,12);printf("Carrera");
gotoxy(25,13);printf("Clave");
gotoxy(26,8);printf("Los Datos del
registro eliminado");
gotoxy(33,10);printf("%s",nuevo.nombre);
gotoxy(33,11);printf("%s",nuevo.apeidos);
gotoxy(33,12);printf("%s",nuevo.carrera);
gotoxy(33,13);printf("%s",nuevo.clave);
getch();
}
}
}
}
void
bajas_log(void)
{
FILE *archivo2;
FILE *archivo;
char claveles[10];
int leidos;
clrscr();
archivo=fopen("C:Registro.txt","r");
if(archivo==NULL)
{
gotoxy(26,12);printf("ERROR: Nose
puede abrir el archivo");
getch();
exit(0);
}
archivo2=fopen("Registr.tmp","a");
gotoxy(17,11);
printf("Dame la clave del registro a dar
de baja logica");
getchar();gotoxy(30,12);gets(claveles);
while(!(feof(archivo)))
{
leidos=fread(&nuevo,sizeof(nuevo),1,archivo);
if(leidos)
{
if(strcmp(nuevo.clave,claveles)!=0)
{
fwrite(&nuevo,sizeof(nuevo),1,archivo2);
}
else
{
if(nuevo.activo=='E')
{
nuevo.activo='X';
fwrite(&nuevo,sizeof(nuevo),1,archivo2);
}
else
{
clrscr();
gotoxy(25,12);
printf("El registro a sido eliminado
anteriormente");
fwrite(&nuevo,sizeof(nuevo),1,archivo2);
}
}
}
}
fclose(archivo);
fclose(archivo2);
remove("C:Registro.txt");
rename("Registr.tmp","C:Registro.txt");
getch();
}
void
bajas_fis(void)
{
FILE *archivo2;
FILE *archivo;
char claveles[10];
int leidos;
clrscr();
archivo=fopen("C:Registro.txt","r");
if(archivo==NULL)
{
gotoxy(26,12);printf("ERROR: Nose
puede abrir el archivo");
getch();
exit(0);
}
archivo2=fopen("Registr.tmp","a");
gotoxy(26,11);
printf("Dame la clave a liminar");
getchar();gotoxy(30,12);gets(claveles);
while(!(feof(archivo)))
{
leidos=fread(&nuevo,sizeof(nuevo),1,archivo);
if(leidos)
{
if(strcmp(nuevo.clave,claveles)!=0)
{
fwrite(&nuevo,sizeof(nuevo),1,archivo2);
}
else
{
clrscr();
textcolor(15);
gotoxy(25,10);cprintf("Nombre");
gotoxy(25,11);cprintf("Apeidos");
gotoxy(25,12);cprintf("Carrera");
gotoxy(25,13);cprintf("Clave");
gotoxy(26,8);cprintf("Los Datos del
registro eliminado");
textcolor(15);
gotoxy(33,10);cprintf("%s",nuevo.nombre);
gotoxy(33,11);cprintf("%s",nuevo.apeidos);
gotoxy(33,12);cprintf("%s",nuevo.carrera);
gotoxy(33,13);cprintf("%s",nuevo.clave);
}
}
}
fclose(archivo);
fclose(archivo2);
remove("C:Registro.txt");
rename("Registr.tmp","C:Registro.txt");
getch();
}
int
submenu(void)
{
int opc;
clrscr();
do
{
gotoxy(40,10);
printf("Menu");
gotoxy(34,11);printf("1.-Baja
logica");
gotoxy(34,12);printf("2.-Baja
fisica");
scanf("%d",&opc);
if(opc==1)
{
break;
}
else
if(opc==2)
{
break;
}
else
{
clrscr();
gotoxy(26,12);
printf("Esta opcion no esta en el
menu");
getch();
clrscr();
}
}while(1);
return opc;
}
void
altas(void)
{
FILE *archivo;
long escribe;
archivo=fopen("C:Registro.txt","a");
if(archivo==NULL)
{
gotoxy(26,12);printf("ERROR: Nose
puede abrir el archivo");
getch();
exit(0);
}
textcolor(15);
gotoxy(1,5);cprintf("Nombre :");
gotoxy(1,6);cprintf("Apeidos :");
gotoxy(1,8);cprintf("Carrera :");
gotoxy(1,9);cprintf("Numero de control
:");
textcolor(14);
gotoxy(10,5);gets(nuevo.nombre);
gotoxy(11,6);gets(nuevo.apeidos);
getchar();
gotoxy(11,8);gets(nuevo.carrera);
gotoxy(21,9);gets(nuevo.clave);
nuevo.activo='E';
fwrite(&nuevo,sizeof(nuevo),1,archivo);
fclose(archivo);
clrscr();
}
void
menu(void)
{
textcolor(15);
gotoxy(10,1);cprintf("ltas");
gotoxy(40,1);cprintf("ajas");
gotoxy(70,1);cprintf("alir");
gotoxy(40,10);cprintf("mprime");
gotoxy(21,24);cprintf("*** Elige una
opcion del menu........[ ] ***");
textcolor(14);
gotoxy(9,1);cprintf("A");
gotoxy(39,1);cprintf("B");
gotoxy(69,1);cprintf("S");
gotoxy(39,10);cprintf("I");
}