luistavares

Programa para cadastros em arquivo

Oct 10th, 2012
75
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. ===========================================================================
  3. Programa: PESQUISA.C
  4. Objetivo: Cadastrar dados sobre pessoas e realizar pesquisas.
  5. Estrutura de Dados: Arquivo Binário
  6. ===========================================================================
  7. */
  8.  
  9. #include <stdio.h>
  10. #include <conio.h>
  11. #include <string.h>
  12. #include <stdlib.h>
  13. typedef struct {
  14.                 int codigo;
  15.                 char nome[50];
  16.                 char sexo;
  17.                 int idade;
  18.                 float altura;
  19.                } Treg_pessoas;
  20. typedef FILE * Tarq_pessoas;
  21.  
  22. void cadastrar(Tarq_pessoas arq_pessoas, Treg_pessoas reg_pessoas){
  23.      int codigo;
  24.      printf("\nCodigo: ");
  25.      scanf("%i", &codigo);
  26.      arq_pessoas = fopen("pessoas.dat", "ab");
  27.      if (arq_pessoas == NULL){
  28.         arq_pessoas = fopen("pessoas.dat", "wb");
  29.      }
  30.      while (codigo>0){
  31.        reg_pessoas.codigo = codigo;
  32.        do{
  33.         printf("\nNome: ");
  34.         fflush(stdin);
  35.         scanf("%[^\n]",&reg_pessoas.nome);
  36.        }while (reg_pessoas.nome == "");
  37.        do{
  38.         printf("\nSexo: ");
  39.         fflush(stdin); /*fflush limpa o buffer do teclado (entrada padrao).*/
  40.         scanf("%c", &reg_pessoas.sexo);
  41.        }while (reg_pessoas.sexo != 'M' && reg_pessoas.sexo != 'F');
  42.        do{
  43.         printf("\nIdade: ");
  44.         scanf("%i", &reg_pessoas.idade);
  45.        }while (reg_pessoas.idade <= 0);
  46.        do{
  47.         printf("\nAltura: ");
  48.         scanf("%f", &reg_pessoas.altura);
  49.        }while (reg_pessoas.altura <= 0);
  50.        fwrite(&reg_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
  51.        printf("\nPara sair digite <-1>");
  52.        printf("\nPara continuar digite o proximo Codigo: ");
  53.        scanf("%i", &codigo);
  54.      }
  55.      fclose(arq_pessoas);
  56. }
  57. void pesquisa_codigo(Tarq_pessoas arq_pessoas, Treg_pessoas reg_pessoas){
  58.     int codigo;
  59.     printf("\nPESQUISA POR CODIGO");
  60.     printf("\n\nDigite o Codigo: ");
  61.     scanf("%i", &codigo);
  62.     arq_pessoas = fopen("pessoas.dat", "rb");
  63.     if (arq_pessoas == NULL){
  64.         printf("\n\nFalha na Abertura do Arquivo: pessoas.dat");
  65.     }
  66.     else{
  67.         fread(&reg_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
  68.         while (! feof(arq_pessoas) && reg_pessoas.codigo != codigo){
  69.           fread(&reg_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
  70.         }
  71.         if (! feof(arq_pessoas)){
  72.           printf("\n\nNome: %s", reg_pessoas.nome);
  73.           printf("\nSexo: %c", reg_pessoas.sexo);
  74.           printf("\nIdade: %i", reg_pessoas.idade);
  75.           printf("\nAltura: %.2f", reg_pessoas.altura);
  76.         }
  77.         else{
  78.           printf("\n\nCodigo Nao Encontrado!!!");
  79.         }
  80.         fclose(arq_pessoas);
  81.     }
  82.     printf("\n\n");
  83.     getch();
  84. }
  85. void pesquisa_nome(Tarq_pessoas arq_pessoas, Treg_pessoas reg_pessoas){
  86.     char nome[20];
  87.     printf("\nPESQUISA POR NOME");
  88.     printf("\n\nDigite o Nome: ");
  89.     fflush(stdin);
  90.     scanf("%[^\n]", &nome);
  91.     arq_pessoas = fopen("pessoas.dat", "rb");
  92.     if (arq_pessoas == NULL){
  93.         printf("\n\nFalha na Abertura do Arquivo: pessoas.dat");
  94.     }
  95.     else{
  96.         fread(&reg_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
  97.         while (! feof(arq_pessoas) && strcmp(reg_pessoas.nome,nome) != 0){                        //Função strcmp compara dois literais. Se iguais retorna o valor 0.
  98.           fread(&reg_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
  99.         }
  100.         if (! feof(arq_pessoas)){
  101.           printf("\n\nCodigo: %i", reg_pessoas.codigo);
  102.           printf("\nSexo: %c", reg_pessoas.sexo);
  103.           printf("\nIdade: %i", reg_pessoas.idade);
  104.           printf("\nAltura: %.2f", reg_pessoas.altura);
  105.         }
  106.         else{
  107.           printf("\n\nNome Nao Encontrado!!!");
  108.         }
  109.         fclose(arq_pessoas);
  110.     }
  111.     printf("\n\n");
  112.     getch();
  113. }
  114. void pesquisa_sexo(Tarq_pessoas arq_pessoas, Treg_pessoas reg_pessoas){
  115. printf("\nPESQUISA POR SEXO");
  116.     char sexo;
  117.     do{
  118.         printf("\n\nDigite o Sexo (M ou F): ");
  119.         fflush(stdin);
  120.         scanf("%c", &sexo);
  121.     }while (sexo != 'F' && sexo != 'M');
  122.     arq_pessoas = fopen("pessoas.dat", "rb");
  123.     if (arq_pessoas == NULL){
  124.         printf("\n\nFalha na Abertura do Arquivo: pessoas.dat");
  125.     }
  126.     else{
  127.         fread(&reg_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
  128.         while (! feof(arq_pessoas))
  129.         {
  130.           if (sexo == reg_pessoas.sexo){
  131.             printf("\n\nCodigo: %i", reg_pessoas.codigo);
  132.             printf("\nNome: %s", reg_pessoas.nome);
  133.             printf("\nIdade: %i", reg_pessoas.idade);
  134.             printf("\nAltura: %.2f", reg_pessoas.altura);
  135.           }
  136.           fread(&reg_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
  137.         }
  138.         fclose(arq_pessoas);
  139.     }
  140.     printf("\n\n");
  141.     getch();
  142. }
  143. void relatorio(Tarq_pessoas arq_pessoas, Treg_pessoas reg_pessoas){
  144.     printf("\nRELATORIO GERAL");
  145.     arq_pessoas = fopen("pessoas.dat", "rb");
  146.     if (arq_pessoas == NULL){
  147.         printf("\n\nFalha na Abertura do Arquivo: pessoas.dat");
  148.     }
  149.     else{
  150.         fread(&reg_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
  151.         while (! feof(arq_pessoas))
  152.         {
  153.           printf("\n\nCodigo: %i", reg_pessoas.codigo);
  154.           printf("\nNome: %s", reg_pessoas.nome);
  155.           printf("\nSexo: %c", reg_pessoas.sexo);
  156.           printf("\nIdade: %i", reg_pessoas.idade);
  157.           printf("\nAltura: %.2f", reg_pessoas.altura);
  158.           fread(&reg_pessoas, sizeof(Treg_pessoas), 1, arq_pessoas);
  159.         }
  160.         fclose(arq_pessoas);
  161.     }
  162.     printf("\n\n");
  163.     getch();
  164. }
  165. void main()
  166. {
  167.   int codigo, opcao;
  168.   char nome[20];
  169.   char sexo;
  170.   Tarq_pessoas arq_pessoas;
  171.   Treg_pessoas reg_pessoas;
  172.  
  173.   do
  174.   {
  175.     system("cls");
  176.     printf("\n1 - Cadastrar Pessoas");      
  177.     printf("\n2 - Pesquisa por Codigo");          
  178.     printf("\n3 - Pesquisa por Nome");      
  179.     printf("\n4 - Pesquisa por Sexo");
  180.     printf("\n5 - Relatorio Geral");
  181.     printf("\n0 - Finaliza");
  182.     printf("\n\nOpcao: ");
  183.     scanf("%i", &opcao);
  184.     switch (opcao)
  185.     {
  186.      case 1:
  187.         cadastrar(arq_pessoas, reg_pessoas);
  188.      break;
  189.      case 2:
  190.         pesquisa_codigo(arq_pessoas, reg_pessoas);
  191.      break;
  192.      case 3:
  193.         pesquisa_nome(arq_pessoas, reg_pessoas);
  194.      break;
  195.      case 4:
  196.         pesquisa_sexo(arq_pessoas, reg_pessoas);
  197.      break;
  198.      case 5:
  199.         relatorio(arq_pessoas, reg_pessoas);
  200.      break;
  201.      case 0:
  202.      break;
  203.      default:   printf("\n\nOpcao Invalida!!!\n\n");
  204.         getch();
  205.      break;
  206.     }  
  207.   }while (opcao != 0);
  208. }
RAW Paste Data