Guest User

CadastroFuncionarios

a guest
May 31st, 2018
102
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int novo_codigo_funcionario = 1;
  6.  
  7. typedef struct {
  8.     char nome[30];
  9.     char telefone[17];
  10.     int idade;
  11.     double salario;
  12.     int codigo;
  13. } FUNCIONARIO;
  14.  
  15. void mostra_erro(const char* mensagem)
  16. {
  17.     printf(mensagem);
  18. }
  19.  
  20. void mostra_funcionario(FUNCIONARIO* funcionario)
  21. {
  22.     printf(" Codigo  : %d\n", funcionario->codigo);
  23.     printf(" Nome    : %s\n", funcionario->nome);
  24.     printf(" Telefone: %s\n", funcionario->telefone);
  25.     printf(" Idade   : %d\n", funcionario->idade);
  26.     printf(" Salario : %.2lf\n", funcionario->salario);
  27.     printf("\n");
  28. }
  29.  
  30. void preenche_nome_desejado(char* nome)
  31. {
  32.     fflush(stdin);
  33.  
  34.     printf("Digite o nome desejado: ");
  35.     scanf("%s", nome);
  36. }
  37.  
  38. void preenche_dados(FUNCIONARIO *funcionario)
  39. {
  40.     fflush(stdin);
  41.  
  42.     printf("Nome: ");
  43.     scanf("%s", funcionario->nome);
  44.  
  45.     printf("Telefone: ");
  46.     scanf("%s", funcionario->telefone);
  47.  
  48.     printf("Idade: ");
  49.     scanf("%d", &funcionario->idade);
  50.  
  51.     printf("Salario: ");
  52.     scanf("%lf", &funcionario->salario);
  53.  
  54.     funcionario->codigo = novo_codigo_funcionario++;
  55. }
  56.  
  57. void salva(FUNCIONARIO* funcionario)
  58. {
  59.     FILE *fp;
  60.  
  61.     if ((fp = fopen("CadastroFuncionario.dat", "ab")) == NULL)
  62.     {
  63.         mostra_erro("Nao foi possivel abrir/criar arquivo 'CadastroFuncionario.dat'\n");
  64.         exit(-1);
  65.     }
  66.  
  67.     if (!fwrite(funcionario, sizeof(FUNCIONARIO), 1, fp))
  68.     {
  69.         mostra_erro("Nao consegui gravar no arquivo\n");
  70.     }
  71.  
  72.     fclose(fp);
  73.     fp = NULL;
  74. }
  75.  
  76. FUNCIONARIO *busca_funcionario(char* nome_desejado, FUNCIONARIO* funcionario)
  77. {
  78.     FILE *fp;
  79.     FUNCIONARIO *retorno = NULL;
  80.  
  81.     if ((fp = fopen("CadastroFuncionario.dat", "rb")) == NULL)
  82.     {
  83.         mostra_erro("Nao foi possivel abrir arquivo 'CadastroFuncionario.dat'\n");
  84.         exit(-1);
  85.     }
  86.  
  87.     while (!feof(fp))
  88.     {
  89.         if (!fread(funcionario, sizeof(FUNCIONARIO), 1, fp))
  90.         {
  91.             break;
  92.         }
  93.  
  94.         if (strcmp(funcionario->nome, nome_desejado) == 0)
  95.         {
  96.             printf("Funcionario encontrado!\n");
  97.  
  98.             retorno = funcionario;
  99.  
  100.             break;
  101.         }
  102.     }
  103.  
  104.     return retorno;
  105. }
  106.  
  107. void mostra_menu()
  108. {
  109.     printf("\n");
  110.     printf("Opcao Descricao\n");
  111.     printf("  1   Cadastra funcionario\n");
  112.     printf("  2   Busca funcionario\n");
  113.     printf("  X   Sair\n\n");
  114.     printf("Opcao: ");
  115. }
  116.  
  117. void menu_cadastra_funcionario()
  118. {
  119.     FUNCIONARIO funcionario;
  120.  
  121.     preenche_dados(&funcionario);
  122.     salva(&funcionario);
  123.  
  124.     printf("Funcionario '%s' salvo oom sucesso\n", funcionario.nome);
  125. }
  126.  
  127. void menu_busca_funcionario()
  128. {
  129.     FUNCIONARIO funcionario;
  130.     char nome_desejado[30];
  131.  
  132.     preenche_nome_desejado(nome_desejado);
  133.     printf("O nome desejado e %s\n", nome_desejado);
  134.     if (busca_funcionario(nome_desejado, &funcionario) == NULL)
  135.     {
  136.         mostra_erro("Funcionario nao encontrado!\n");
  137.     }
  138.     else
  139.     {
  140.         mostra_funcionario(&funcionario);
  141.     }
  142. }
  143.  
  144. int main()
  145. {
  146.     char opcao = ' ';
  147.  
  148.     system("cls");
  149.     do
  150.     {
  151.         mostra_menu();
  152.  
  153.         fflush(stdin);
  154.         scanf("%c", &opcao);
  155.  
  156.         switch (opcao)
  157.         {
  158.         case '1':
  159.             menu_cadastra_funcionario();
  160.             break;
  161.         case '2':
  162.             menu_busca_funcionario();
  163.             break;
  164.         default:
  165.             break;
  166.         }
  167.     } while (opcao != 'X');
  168.  
  169.     return 0;
  170. }
RAW Paste Data