Base de Dades en C++ || Base de Datos en C++ –> Lista Enlazada

Buenas buenas, hoy traigo una autentica base de datos en c++ estandart, funciona en todos los compiladores, pero os recomiendo el builderc++.
Lo he hecho lo mas esquemático posible por una mejor entendimiento del código , todo mismo alguna duda en el foro,jeje. Chao.

Por cierto Toda obra mia, en media horita, y lo importante es que FUNCIONA al 100%.


Builder c++ Compiler (Faltan Las librerias del Include standars, ej: conio,msdos,…)

//———————————————————————#include

#include

#include

#include

#include

#include

#include

#include

#pragma hdrstop

//———————————————————————
USERES(“Project1.res”);

//———————————————————————
struct FITXA

{

char nom[20];

char cognom[20];

struct FITXA *enllac;

}*inici,*aux,*aux2,*darrer,*anterior;

//———————————————————————

FILE *punter;

//———————————————————————
int x,contador1,contador2;

char nome[20];

//———————————————————————
void carregar();

void mostrar();

void insertar();

void cercar();

void borrar();

void primerRegistre();

void enmigRegistre();

void ultimRegistre();

//———————————————————————
void carregar()

{

punter= fopen(“alumne.txt”,”a+”);

inici=(struct FITXA*)malloc(sizeof(struct FITXA));

if(malloc==NULL){printf(“n ERROR ERROR ERROR !!”);sleep(2);exit(1);}

fscanf(punter,”%s %s”,inici->nom,inici->cognom);

inici->enllac=NULL;

darrer=inici;

while(feof(punter)==0)

{

aux=(struct FITXA*)malloc(sizeof(struct FITXA));

darrer->enllac=aux;

aux->enllac=NULL;

darrer=aux;

fscanf(punter,”%s %s”,darrer->nom,darrer->cognom);

}

}

//———————————————————————
//———————————————————————
void mostrar()

{

aux=inici;

while(aux!=NULL)

{

printf(“n %s %s “,aux->nom,aux->cognom);

aux=aux->enllac;

}

printf(“n”);

printf(“n Polseu Una Tecla Per Continuar…”);

getch();

}

//———————————————————————
//———————————————————————
void insertar()

{

darrer=(struct FITXA*)malloc(sizeof(struct FITXA));

aux=inici;

while(aux->enllac!=NULL)

{

aux=aux->enllac;

}

aux->enllac=darrer;

darrer->enllac=NULL;

clrscr();

printf(“n INSERCIO DE REGISTRES “);

printf(“n”);

printf(“n”);

printf(“n Introdueix NOM:”);

scanf(“%s”,darrer->nom);

printf(“n”);

printf(“n Introdueix COGNOM:”);

scanf(“%s”,darrer->cognom);

printf(“n %s %s”,darrer->nom,darrer->cognom);

//fprintf(punter,”n%s %s”,darrer->nom,darrer->cognom);

printf(“n”);

fclose(punter);

//carregar();

mostrar();

}

//———————————————————————
//———————————————————————
void cercar()

{

clrscr();

printf(“n CERCAR REGISTRES “);

printf(“n”);

printf(“n”);

printf(“n Introdueix NOM a Cercar:”);

scanf(“%s”,&nome);

aux=inici;

while(aux!=NULL)

{

if(strcmp(aux->nom,nome)==0)

{

printf(“n %s %s “,aux->nom,aux->cognom);

}

aux=aux->enllac;

}

printf(“n”);

printf(“n Polseu Una Tecla Per Continuar…”);

getch();

}

//———————————————————————
//———————————————————————
void borrar()

{

contador1=1;

contador2=1;

clrscr();

printf(“n BORRAR REGISTRES “);

printf(“n”);

printf(“n”);

printf(“n Introdueix NOM a Borrar:”);

scanf(“%s”,&nome);

aux=inici;

while(aux!=NULL)

{

if(strcmp(aux->nom,nome)==0)

{

contador1=contador2;

printf(“n Registre a Borrar: %s %s “,aux->nom,aux->cognom);

}

aux=aux->enllac;

contador2++;

}

contador2–;

printf(“n Registre a borrar Num.: %d”,contador1);

printf(“n Num. Total de Registres: %d”,contador2);

getch();

if(contador1==1){primerRegistre();}

if(contador1==contador2){ultimRegistre();}

if((contador1!=1)&&(contador1!=contador2)){enmigRegistre();}

printf(“n”);

printf(“n Polseu Una Tecla Per Continuar…”);

getch();

}

//———————————————————————
void primerRegistre()

{

clrscr();

printf(“n primerRegistre “);

printf(“n”);

printf(“n”);

aux=inici;

inici=inici->enllac;

free(aux);

getch();

}

//———————————————————————
void enmigRegistre()

{

clrscr();

printf(“n enmigRegistre “);

printf(“n”);

printf(“n”);

x=0;

aux=inici;

contador1–;

while(1)

{

x++;

if(contador1==x)

{

aux2=aux->enllac;

aux->enllac=aux2->enllac;

free(aux2);

break;

}

aux=aux->enllac;

}

getch();

}

//———————————————————————
void ultimRegistre()

{

clrscr();

printf(“n ultimRegistre “);

printf(“n”);

printf(“n”);

aux=darrer;

darrer=inici;

while(darrer->enllac!=NULL)

{

darrer=darrer->enllac;

}

darrer->enllac=NULL;

free(aux);

getch();

}

//———————————————————————

main()

{

carregar();

mostrar();

insertar();

cercar();

borrar();

clrscr();

mostrar();

//fprintf(punter,”n%s %s”,darrer->nom,darrer->cognom); //GUARDAR al fitxero

fclose(punter);

}

Todos Los Derechos Reservados. Shersoft Co.Ltd. 2008


PD: Por cierto es necessario que lo mireis pq crea ficheros automaticamente. Y no guarda los datos (registros)por seguridad, todo mismo la función de guardar registros está escrita como comentario , solo teneis que quitar las (//) para que se guarde.
basededatos

Leave a Reply