Controle de Funcionários (Básico)

Publicado por Fernando Hidalgo Mansano 26/02/2004

[ Hits: 20.491 ]

Download G_E_L.CPP




Script utilizando estrutura e funções, tais como: Cadastro, Consulta, Alteração,
Exclusão Física e Lógica de Arquivo.
O arquivo deve estar no diretorio "c:\hidalgo\" .

  



Esconder código-fonte

// Fernando Hidalgo Mansano
// fhm_online@hotmail.com
// Ribeirão Preto - SP

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>



struct funcionario

{

   char nome[40];

   int codigo;

   double salario;

   int e;

};



void gravar();

void ler();

void alterar();

void exclui_logic();

void exclui_fisic();



void main()

{

   struct funcionario f;

   FILE *fptr;

   char aux[40], op;

   char resp;

   clrscr();

   printf("\n1 - Cadastrar");

   printf("\n2 - Consultar");

   printf("\n3 - Sair");

   printf("\n4 - Alterar");

   printf("\n5 - Exclusao Logica");

   printf("\n6 - Exclusao Fisica");

   printf("\n\nOpcao: ");

   resp=getche();

   switch (resp)

   {

   case '1': gravar();

      break;

   case '2': ler();

      break;

   case '3': printf("\nsaindo");

      break;

   case '4': alterar();

      break;

   case '5': exclui_logic();

      break;

   case '6': exclui_fisic();

   }

}





void gravar()

{

   struct funcionario f;

   FILE *fptr;

   char aux[40], op;

   int resp;





   if ((fptr = fopen("c:/hidalgo/bdhidalgo.bi" , "rb+")) == NULL)

      if ((fptr = fopen("c:/hidalgo/bdhidalgo.bi" , "wb")) == NULL)

      {

         printf("\n Erro: ");

         getche();

         exit(1);

      }

   do{   printf("\n Nome: ");

      gets(f.nome);

      printf("\n Codigo: ");

      gets(aux);

      f.codigo = atoi(aux);

      printf("\n Salario: ");

      gets(aux);

      f.salario = atof(aux);

      f.e = 0;

      fseek(fptr, 0, 2);

      fwrite(&f, sizeof(f), 1, fptr);

      printf("\n Cadastrar outro funcionario? (s/n)\n");

      op = getch();

      }while((op == 's') || (op == 'S'));

   fclose(fptr);

}



void ler()

{

   struct funcionario f;

   FILE *fptr;

   char aux[40], op;

   int resp;





      if ((fptr = fopen("c:/hidalgo/bdhidalgo.bi" , "rb")) == NULL)

      {

         printf("\n Erro: ");

         getche();

         exit(1);

      }

   fseek(fptr, 0, 0);

   while(fread(&f, sizeof (f), 1, fptr))

   {   if (f.e == 0)

      {

         printf("\n Nome: %s", f.nome);

         printf("\n Codigo: %d", f.codigo);

         printf("\n Salario: %.2lf\n", f.salario);

      }

   }

   fclose(fptr);

   getche();

}



void alterar()

{   FILE *fptr;

   struct funcionario f;

   char aux[40], nomeaux[40];

   clrscr();



   if ((fptr=fopen("c:/hidalgo/bdhidalgo.bi","rb+"))==NULL)

   {   printf("\n ERRO!");

      exit(1);

   }



   printf("\n Entre com o nome do Funcionario: ");

   gets (nomeaux);

   fseek(fptr,0,0);



   while (fread(&f, sizeof(f),1,fptr))

   {   if(strcmp(f.nome, nomeaux)==0)

         if(f.e==0)

         {   fseek(fptr, ftell(fptr) - sizeof (f), 0);

            printf("\n Novo Salario");

            gets(aux);

            f.salario = atof(aux);

            fwrite(&f, sizeof (f), 1, fptr);

            fseek(fptr, 0, 2);

         }

      }

   fclose(fptr);

   getch();

}



void exclui_logic()

{   FILE *fptr;

   struct funcionario f;

   char aux[40], nomeaux[40];

   clrscr();



   if ((fptr=fopen("c:/hidalgo/bdhidalgo.bi","rb+"))==NULL)

   {   printf("\n ERRO!");

      getch();

      exit(1);

   }



   printf("\n Entre com o nome do Funcionario: ");

   gets (nomeaux);

   fseek(fptr,0,0);



   while (fread(&f, sizeof (f), 1, fptr))

   {   if(strcmp(f.nome, nomeaux)==0)

         if(f.e==0)

         {   fseek(fptr, ftell(fptr) - sizeof (f), 0);

            f.e=1;

            fwrite(&f, sizeof (f), 1, fptr);

            fseek(fptr, 0, 2);

         }

      }

   fclose(fptr);

   getch();

}



void exclui_fisic()

{

   FILE *fptr, *fptrnovo, *fptrback;

   struct funcionario f;

   clrscr();



   if ((fptr=fopen("c:/hidalgo/bdhidalgo.bi","rb"))==NULL)

   {   printf("\n ERRO!");

      exit(1);

   }



   if ((fptrnovo=fopen("c:/hidalgo/novo.bi","wb"))==NULL)

   {   printf("\n ERRO!");

      exit(1);

   }



   if ((fptrback=fopen("c:/hidalgo/back.bi","rb+"))==NULL)

   {   if((fptrback=fopen("c:/hidalgo/back.bi","wb"))==NULL)

      {   printf("\n ERRO!");

         exit(1);

      }

   }



   while (fread(&f,sizeof(f),1,fptr))

   {   if(f.e==0)

      {   fwrite(&f,sizeof(f),1,fptrnovo);

      }

      else

      {

         fwrite(&f,sizeof(f),1,fptrback);

      }

   }





   fclose(fptr);

   fclose(fptrback);

   fclose(fptrnovo);

   remove("c:/hidalgo/bdhidalgo.bi");

   remove("c:/hidalgo/novo.bi");

   remove("c:/hidalgo/bdhidalgo.bi");

   getch();

}






Scripts recomendados

Conversão integral de textos em letras maiúsculas

Pequeno simulador de Banco de Dados

Codigo para criar arquivo de log

Cadastro de arquivo usando ncurses como menu

Cadastro de Alunos Versao 1.0


  

Comentários
[1] Comentário enviado por arrb em 26/02/2004 - 10:35h

Ué, é para Rwindows?

[2] Comentário enviado por fhm_online em 26/02/2004 - 11:11h

Basta readapitar o codigo
Sem muitas dificuldades ne??

[3] Comentário enviado por arrb em 26/02/2004 - 11:26h

Concordo, sem muitas dificuldades....

Mas custava muito ter subido um codigo para ser compilado no linux sem modificaçoes, tipo no gcc?

Valew

[4] Comentário enviado por fhm_online em 26/02/2004 - 11:33h

É que no momento estou sem um equipamento a disposição...
Na próxima farei o possível para mandar já compilado no gcc...
Obrigado e valew pela dica!!

[5] Comentário enviado por HeltonBarbosa em 07/07/2006 - 10:30h

Muito bom esse código. Vai ser de grande ajuda para muitos iniciantes em C iguais a mim.
Valeu!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts