Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Últimos assuntos
Relogio

Agenda com arquivo

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Agenda com arquivo

Mensagem  juk em Sex Nov 16, 2012 6:03 pm

Ainda esta em desenvolvimento, se o arquivo dados.bin não existir vai da erro então entra no menu 3>1 e salvar dados !!
Código:

#include <stdio.h>
#include <stdlib.h> //função exit(0)
FILE *fptr;//criar ponteiro para o arquivo
int i=0;
int close=1; //usado como constante ...
int menusair=1;
int nregis; //conta quantas entrada foi feita no arquivo ..

  struct agenda_dados
  {
    char nome[20];
    char sobrenome[10];
    int tel;
    int cel;
    char end[40];
    int cpf;
    int data;
    int nregistro;
  };
  struct agenda_dados agenda[10];  //registro de dados
 
int memoria(); 
void menu();
int cadastro();
int imprimir();
int existe();
int gravar();
int carregarmen();
void imprimirarquivo();
int memoria();
void menu();


int main()    //função main
{
menu();    //chama o menu
getchar();
return(0);
}
int cadastro() //função de cadastro da agenda
{
   
  memoria();
  int sair=0;
  i=nregis+1; //atribuição do registro de memoria
  do
  {
    
  printf("\n---------- AGENDA %d ----------\n\n\n",i);
  printf("Nome ..................: ");
  scanf(" %[^\n]",agenda[i].nome);          /*quando e char não precisa do &,O " %[^\n]"  para pega nomes com espaço */
  getchar(); //limpa buff do teclado
  printf("Sobrenome..............: ");
  scanf("%[^\n]",agenda[i].sobrenome);
  printf("Numero do TEL.FIXO.....: ");
  scanf("%d",&agenda[i].tel);
  getchar();
  printf("Numero do TEL.CELULAR..: ");
  scanf("%d",&agenda[i].cel);
  getchar();
  printf("Endereco...............: ");
  scanf("%[^\n]", agenda[i].end);
  getchar();
  printf("CPF....................:");
  scanf("%d",&agenda[i].cpf);
  getchar();
  printf("Data de Nascimento.....:");
  scanf("%d",&agenda[i].data);
  agenda[i].nregistro=i+agenda[i].nregistro;  //salvando contador de posição
  i++;
  printf("Digite 0 para sair ou 1 para continuar...:");
  scanf("%d",&sair);
 }
 while(sair!=0);
 return(0);
}

int imprimir() //função imprimir dados da memroia
{
int cont=0;
i=nregis+1; ///imprimir tudo
printf("Entrada da agenda:%d",cont);
do
 {
   
  printf("\n\n --------- Dados %d NA MEMORIA!! ---------\n\n",cont);
  printf("Nome ..................: %s\n", agenda[cont].nome);
  printf("Sobrenome..............: %s\n", agenda[cont].sobrenome);
  printf("Telefone Fixo.....:....: %d\n", agenda[cont].tel);
  printf("Telefone Celular.......: %d\n", agenda[cont].cel);
  printf("Endereço...............: %s\n", agenda[cont].end);
  printf("CPF....................: %d\n", agenda[cont].cpf);
  printf("Data de Nascimento.....: %d\n", agenda[cont].data);
  printf("Numero da entrada sys..: %d\n", agenda[cont].nregistro); //esse deve ser nosso 'contador'
  printf("\n");
  cont++;
}while (cont<i);
getchar(); 
return(0);
}
int existe()  //testa exitencia do arquivod 'dados.bin'
{
        
     if((fptr = fopen("dados.bin", "r")) == NULL)
        {                         
              printf("Erro! Impossível abrir o arquivo ou Inexistente!\n");
              getchar();
              return 1; //retorna 1 se o arquivo não existir
              }
              else
              {
              printf("Arquivo Existente !!\n");
              getchar();
              return 0; //retorna 0 se arquivo existe
         }
              fclose(fptr); //fecha arquivo por causa da função fopen
             
             
}
int gravar()
{
   int erro;
    fptr=fopen("dados.bin","wb");
            int t=0;
              do
             {
                erro=fwrite (&agenda[t], sizeof(struct agenda_dados), 1, fptr); //se caso de erro na gravação,fwrite retorna "0"
               
                if (erro == 1)
                  {
              printf(" \ndados %d ok \n !",t);    //dados gravados com sucesso
                }
              else
                {
               printf(" \ndados %d erro \n!",t);    //erro na gravaçao
               break;
                }
             
                t++;
              } while (t<i);
              fclose(fptr);
              return(erro);        
}
int carregarmen()
{
   int erro; //recebe erro da do if
   int t=0;  if((fptr = fopen("dados.bin", "r")) == NULL) /* Abre o arquivo novamente para leitura 'r'*/
              {
              printf("Erro na abertura do arquivo");
              }
              while (EOF) //EOF(END OF FILE) Ler os dados ate o final do arquivo
             {
                (erro=fread(&agenda[t], sizeof(struct agenda_dados), 1,fptr));
                if (erro == 1)
                  {
              printf(" \ndados %d ok \n !",t);    //dados carregados com sucesso
                }
              else
                {
               printf(" \ndados %d erro \n!",t);    //erro na letirua
               break;
                }
                nregis=agenda[t].nregistro; //ponto de partida do nosso i
                t++;
              }       
              fclose(fptr);
              return(erro);
             
}
void imprimirarquivo()
{
   int erro; //recebe erro da do if
   int t=0;
   if((fptr = fopen("dados.bin", "r")) == NULL) /* Abre o arquivo novamente para leitura 'r'*/
              {
              printf("Erro na abertura do arquivo");
              }
              while (EOF) //EOF(END OF FILE) Ler os dados ate o final do arquivo
             {
                (erro=fread(&agenda[t], sizeof(struct agenda_dados), 1,fptr));
                if (erro == 1)
                  {
              printf(" \ndados %d ok \n !",t);    //dados carregados com sucesso
                }
              else
                {
               printf(" \nERRO NA LEITURA\n#ERRO LOOP %d # !!\n",t);    //erro na Leitura
                 break;// sai do loop no caso de erro
              
                }
                printf("\n\n --------- Dados da Agenda %d---------\n\n",t);
                printf("Nome ................: %s\n", agenda[t].nome);
                printf("Sobrenome............: %s\n", agenda[t].sobrenome);
                printf("Telefone Fixo........: %d\n", agenda[t].tel);
                printf("Telefone Celular.....: %d\n", agenda[t].cel);
                printf("Endereço.............: %s\n", agenda[t].end);
                printf("CPF..................: %d\n", agenda[t].cpf);
                printf("Data de Nascimento...: %d\n", agenda[t].data);
                printf("Numero da entrada sys..: %d\n", agenda[t].nregistro); //esse deve ser nosso 'contador'
                printf("\n");
           
                t++;
              }
              fclose(fptr);
              printf("O Arquivo Foi fechado 'fclose'\n");// o contador i deve começa apos o ultimo numero do registro !
              getchar();
}
int memoria()
{
     int carregar;
  printf(">>>>>ATENÇÂO<<<<\nAntes de cadastrar novos Pessoas vc deve carregar o arquivo dados.bin");
  printf("Deseja carregar o arquivos dados.bin\n1_SIM\t\t\t\n2_NÂO\n:");
  scanf("%d",&carregar);
  if(carregar==1)
{
   carregarmen();
}
return 0;
}
void menu()
{
do
  {
   int op;
   printf("Escolha uma das opção:\n1_Cadastrar:\n2_Imprimi os dados da agenda\n3_Menu Gravar/Carregar\n0_Sair\n");
   scanf("%d",&op);
   getchar();
   switch (op)
   {
      case 1:
      {
         cadastro();
         break;
      }
      case 2:
      {
         imprimir();
         break;
      }
      case 3:
      {
       int op2;
            do
             {
              printf("Escolha uma das opção:\n1_Salva 'dados.bin':\n2_Carrega os dados para a memoria\n3_Imprimir dados.bin\n4_Sobrepor Arquivos\n0_Sair\n");
              scanf("%d",&op2);
             getchar();
             switch (op2)
                       {
                        case 1:
                              {
                               if(existe()==1)    //testa a existencia do arquivo para não destruir os dados
                                  {
                                printf("Sendo criado novos dados e sendo salvo!!\n");
                                getchar();
                                  gravar();
                                  break;
                                  }
                                else
                                  {
                                 printf("Arquivo Contem dados.....\nCarregue os dados para memoria.....\n");
                                 break;
                                  }
                                 }
                        case 2:
                              {
                                carregarmen(); 
                               break;
                               }
                        case 3:
                              {
                                imprimirarquivo();
                                  break;
                              }
                        case 4:
                        {
                       gravar();
                    }
                        case 0:
                              {
                                printf("Saindo >>1 Menu.....\n");
                                close=0;
                                break;
                              }
       
                       }
                  }while (close!=0);
                break;
              }
      case 0:
      {
         printf("Saindo\t\nBy.......");
         menusair=0;
         break;
      }
   }
}while (menusair!=0);   
}
avatar
juk

Mensagens : 225
Data de inscrição : 02/04/2012

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum