Controle de Funcionários (Básico)
Publicado por Fernando Hidalgo Mansano 26/02/2004
[ Hits: 20.430 ]
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\" .
// 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(); }
ListDir - Um listador de diretórios
Justificador de texto em 80 colunas
Exemplo de manipulação de arquivos
dog - semelhante ao cat do Linux
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Vou voltar moderar conteúdos de Dicas e Artigos (1)
SysAdmin ou DevOps: Qual curso inicial pra essa área? (3)
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta