Controle de Funcionários (Básico)
Publicado por Fernando Hidalgo Mansano 26/02/2004
[ Hits: 20.452 ]
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(); }
Programa para inversão de colunas
Manipulação de registros em arquivos utilizando índices
Leitura de arquivo texto separando as colunas
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Falta pacotes de suporte ao sistema de arquivos (Gerenciador de discos... (6)
A area de trabalho ficou preta (16)
Agora temos uma assistente virtual no fórum!!! (244)
Servidor said: 530 5.7.0 Must issue a STARTTLS command first (in r... (0)