Pequeno simulador de Banco de Dados
Publicado por Kleber de Andrade Reis 27/01/2005
[ Hits: 29.200 ]
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); }
Manipulação de registros em arquivos utilizando índices
Editar o arquivo /etc/rc.d/rc.local
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (6)