Pequeno simulador de Banco de Dados
Publicado por Kleber de Andrade Reis 27/01/2005
[ Hits: 29.416 ]
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
//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);
}
leitura/escrita de dados/estruturas em arquivo
Contando a quantidade de palavras de um arquivo texto
Leitura de arquivo texto separando as colunas
Pilhas C/C++ - Pares e ímpares
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?









