Pequeno simulador de Banco de Dados

Publicado por Kleber de Andrade Reis 27/01/2005

[ Hits: 29.200 ]

Download dba_gcc.c




Esse pequeno programa mostra a utilizacão de algumas funcões para manipulacão de arquivos em C......muito legal!!!!
é um pequeno simulador de um banco de dados.......

vale a pena conferir!!!!

em primeiro lugar voces devem mudar o caminho de localizacão do arquivo para onde acharem melhor, tomando o cuidado de que as pastas existam..... na linha:

char *str1 = "/mnt/wind/teste/dbase/dbase";

qualquer dúvida:   slack.kleber@gmail.com

  



Esconder código-fonte

//Pequeno simulador de um Banco de Dados

//escrito por Kleber de Andrade Reis..........



#include <stdio.h>

#include <stdlib.h>

#include <string.h>



FILE *fp;

char *str1 = "/mnt/wind/teste/dbase/dbase";

char c;



struct cadastro

{

   char nome[50];

   char end[100];

   char tel[20];

};



void name()

{

    struct cadastro reg;

    char n[50];

    int i=0,aux=0;

    

    system("clear");

    printf("***Procura por Nome***\n\n");

    printf("Digite o nome a ser pesquisado\n");

    gets(n);

    rewind(fp);

    

    while(fread(®,sizeof(struct cadastro),1,fp)==1)

    {    

        if(!strcmp(n,reg.nome))

        {

            system("clear");

            printf("\n\nRegistro: %i\n",i);

            printf("\n\nNome: %s\n",reg.nome);

            printf("Endereco: %s\n",reg.end);

            printf("Tel: %s\n\n",reg.tel);

            aux=1;
            sleep(5);

        }

        i++;

    }

    if(aux==0)

    {

        printf("\nEsse nome nao consta em nossos cadastros\n");  

    }

};              

    

void altera()

{

    struct cadastro reg_alt, reg_lido;

    int i, c;

    

    system("clear");

    printf("***Alteracao***\n\n");

    printf("Digite o numero do registro\n");

    scanf("%d",&i);

    fseek(fp,i*sizeof(struct cadastro),SEEK_SET);

    if(fread(®_lido,sizeof(struct cadastro),1,fp)!=1)

    {

        printf("Registro inexistente\n\n");

    }

    else

    {

        system("clear");

        printf("\n\nNome: %s\n",reg_lido.nome);

        printf("Endereco: %s\n",reg_lido.end);

        printf("Tel: %s\n\n",reg_lido.tel);

        

        reg_alt=reg_lido;

        printf("1 - Nome    2 - Endereco    3 - Telefone\n");

        scanf("%d",&c);

        getchar();

        printf("\n\n");

        

        switch (c)

        {

            case 1:

                printf("Nome: ");

                gets(reg_alt.nome);

                break;

                

            case 2:

                printf("Endereco: ");

                gets(reg_alt.end);

                break;

                

            case 3:

                printf("Telefone: ");

                gets(reg_alt.tel);

                break;

        }  

        fseek(fp,-1*sizeof(struct cadastro) ,SEEK_CUR);

        fwrite(®_alt,sizeof(struct cadastro),1,fp);    

    }

};



void excluir()

{

    struct cadastro reg;

    int i;

    char c;

    system("clear");

    printf("***Limpa um Cadastro***\n\n");

    printf("Digite o numero do registro\n");

    scanf("%d",&i);

    fseek(fp,i*sizeof(struct cadastro),SEEK_SET);

    

    if(fread(®,sizeof(struct cadastro),1,fp)!=1)

    {

        printf("Registro inexistente\n\n");

    }

    else

    {

        printf("\n\nNome: %s\n",reg.nome);

        printf("Endereco: %s\n",reg.end);

        printf("Tel: %s\n\n",reg.tel);

        printf("Digite S para confirmar a exclusao\n");

        getchar();

        c=getchar();

        if(c=='S')

        {

            strcpy(reg.nome,"");

            strcpy(reg.end,"");

            strcpy(reg.tel,"");

            fseek(fp,-1*sizeof(struct cadastro),SEEK_CUR);

            fwrite(®,sizeof(struct cadastro),1,fp);

        }

    }        

};    



void consulta()

{

    struct cadastro reg;

    int i;

    system("clear");

    printf("***Consulta***\n\n");

    printf("Digite o numero do registro\n");

    scanf("%d",&i);

    fseek(fp,i*sizeof(struct cadastro),SEEK_SET); 

    

    if(fread(®,sizeof(struct cadastro),1,fp)!=1)

    {

        printf("Registro inexistente\n\n");

    }

    else

    {

        printf("\n\nNome: %s\n",reg.nome);

        printf("Endereco: %s\n",reg.end);

        printf("Tel: %s\n\n",reg.tel);
        sleep(5);

    }     

};    



void abrir()

{

    fp=fopen(str1,"rb+");

    if(fp==NULL)

        fp=fopen(str1,"wb+");

};



void lista()

{

    struct cadastro reg;

    int i=0,j=0;

    char c;

    rewind(fp);

    while(fread(®,sizeof(struct cadastro),1,fp)==1)

        j++;

    rewind(fp);

    while(fread(®,sizeof(struct cadastro),1,fp)==1)

    {

        system("clear");

        printf("***LISTAGEM GERAL***");

        printf("\nRegistro %d\n\n",i);

        printf("l - ultimo registro     n - proximo registro\n");

        printf("b - registro anterior   f - primeiro registro\n\n");

        printf("Nome: %s\n",reg.nome);

        printf("Endereco: %s\n",reg.end);

        printf("Tel: %s\n",reg.tel);

        printf("\n\nDigite sua opcao \n");

        c=getchar();

        getchar();        

            

        switch(c)

        {

            case 'l':

                fseek(fp,-1*sizeof(struct cadastro),SEEK_END);

                i=j;

                break;

            case 'f':

                rewind(fp);

                i=0;

                break;

            case 'n':

                i++;

                break;

            case 'b':

                fseek(fp,-2*sizeof(struct cadastro),SEEK_CUR);

                i--;

                break;

            default:

                printf("comando (%c) desconhecido\n\n\n",c);

                break;

        }

    }    

};



int insere()

{

    struct cadastro reg;

    

    printf("Nome:\n");

    gets (reg.nome);

    

    printf("Endereco:\n");

    gets (reg.end);

    

    printf("Telefone:\n");

    gets (reg.tel);

    

    fseek(fp, 0, SEEK_END);

    fwrite(®, sizeof(struct cadastro), 1, fp);

};



int i=0,z,y;

char op[10];



main (void)

{

    abrir();

    for(;;)

    {

        system("clear");

        printf("*******************MENU*********************\n\n");

        printf("i - insere um cadastro no banco de dados\n");

        printf("l - lista os cadastros existentes\n");

        printf("a - alterar cadastro existente\n");

        printf("p - procurar por um cadastro\n");

        printf("e - excluir um cadastro\n");

        printf("n - procurar por um nome no cadastro\n");

        printf("s - sair do programa\n");

        printf("\n********************************************\n");

        printf("Digite sua opcao: ");

        gets(op);

        system("clear");

        if(strlen(op)>1)

        ;

        else

        {

            switch(op[0])

            {

                case 'i':

                    insere();

                    break;

                case 'l':

                    lista();

                    break;

                case 'a':

                    altera();

                    break;

                case 'p':

                    consulta();

                    getchar();

                    break;

                case 'e':

                    excluir();

                    getchar();

                    break;

                case 'n':

                    name();

                    break;

                case 's':

                    fclose(fp);

                    exit(0);

                    break;

                default:

                    printf("comando (%s) desconhecido\n\n\n",op);

                    break;

            }

        }

    }

    fclose(fp);

    printf("comando (%s) desconhecido\n\n\n",op);

    printf("O programa sera encerrado!!!!Pressione qualquer tecla\n");

    exit(1);

}

Scripts recomendados

Manipulação de registros em arquivos utilizando índices

Manipulando o arquivo mtab

Agenda Eletronica

Editar o arquivo /etc/rc.d/rc.local

[C] Arquivos e Stat


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts