UNIDAD 5: REGISTROS Y ARCHIVOS SECUENCIALES

TEMA LINUX GCC 9: BAJAS O ELIMINACIONES

Eliminación o bajas es el proceso por medio del cual algunos registros del archivo son purgados del archivo, existen dos maneras por las cuales se puede realizar ese proceso.

En la primera manera de la cual se proporciona el ejemplo correspondiente se usaran dos archivos, el archivo original y un archivo temporal, el procedimiento o algoritmo es muy sencillo, se lee el registro del archivo original y si no es el registro a eliminar entonces se almacena en el archivo temporal, cuando se termina de procesar todo el archivo original, el archivo temporal solo contendra todos los registros que no se quisieron eliminar, ya con estos dos archivo se procede a eliminar o borrar usando la instruccion remove de gcc-linux el archivo original y se procede a renombrar usando la instrucción rename de gcc linux el archivo temporal como nuevo archivo original.

Prog23.html

<HTML>
<FORM ACTION=/~tusitio/cgi-bin/prog23.cgi METHOD=post>
CLAVE A ELIMINAR:<INPUT TYPE=text NAME=CLAVE><BR>
<INPUT TYPE=submit VALUE=ELIMINAR>
</FORM></HTML>

prog23.cpp:

#include <string>
#include <iostream>
#include <lcnet.h>
using namespace std;
static struct {
int clave;
char nombre[30];
float peso;
} alumno;
int main() {
// cargando clave a eliminar
int clave=getinteger("CLAVE");
FILE *arch1;
FILE *arch2;
arch1 = fopen("//home//tusitio//alumnos.dat","r+");
arch2 = fopen("//home//tusitio//temporal.dat","at+");
// aqui siempre debe empezar el ciclo de lectura
// y fread() regresa siempre cuantas estructuras leyo
while(fread(&alumno,sizeof(alumno),1,arch1)==1)
{
if ( clave != alumno.clave)
fwrite(&alumno,sizeof(alumno),1,arch2);
}; // aqui termina while
//cerrando archivos
fclose(arch1);
fclose(arch2);
// removiendo y renombrando archivos
remove("//home//tusitio//alumnos.dat");
rename("//home//tusitio//temporal.dat","//home//tusitio//alumnos.dat");
//avisando
cout << "Content-type: text/html\n\n";
cout << "<html>" << endl;
cout <<"registro eliminado"<<endl;
cout << "</html>" << endl;
return 0;
}

archivo original usando prog20:

image76.jpg

corrida prog23 y pidiendo eliminar registro 3

image77.jpg

corrida prog20

image80.jpg

pobre ana maria se desparecio:>)

EL problema con esta manera de eliminar incluso fisicamente los registros del archivo es que no hay manera de recuperar esa información posteriormente.

Es por eso que otra tecnica común de eliminación es incluir un campo de estado, status o bandera o semaforo en el registro y conforme se va cargando el registro y antes de mandarlo a disco se le agrega a dicho campo el caracter 'A' –>alta, asi que cuando se quiera una baja solo se pondria dicho campo en 'B' y todos los programas de lectura, busqueda y filtros deberan revisar esta campo de estado antes de hacer algo con el registro.

TAREAS PROGRAMACION LINUX GCC PROGRAMACION LINUX GCC :

Construir programas de eliminacion usando los dos metodos( bajas fisicas como en el ejemplo y bajas logicas como se indica en el ultimo parrafo) para los archivos construidos.

Politica de Privacidad