Skip to content

Instantly share code, notes, and snippets.

@Bolinha1
Last active August 29, 2015 14:01
Show Gist options
  • Select an option

  • Save Bolinha1/944d87dc73edaa90f2d7 to your computer and use it in GitHub Desktop.

Select an option

Save Bolinha1/944d87dc73edaa90f2d7 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
int codigoDepartamento;
char nomeDepartamento[42];
float orcamentoDepartamento;
int status;
}Departamento;
typedef struct
{
int codigoCargo;
char nomeCargo[42];
float salarioCargo;
int status;
}Cargo;
typedef struct
{
int codigoFuncionario;
int codigoDepartamento;
int codigoCargo;
char nomeFuncionario[42];
int dependentesFuncionario;
float adicional;
int status;
}Funcionario;
void cadastroDepartamento(Departamento departamento);
void consultaTodosDepartamentos(Departamento departamento);
int verificaExistenciaCodigoDepartamento(int codigoDepartamento);
void editarDepartamento(Departamento departamento);
void cadastroCargo(Cargo cargo);
void consultaTodosCargos(Cargo cargo);
int verificaExistenciaCodigoCargo(int codigoCargo);
void editarCargo(Cargo cargo);
void cadastroFuncionario(Funcionario funcionario);
void consultaTodosFuncionarios(Funcionario funcionario);
void consultaTodosFuncionariosDeUmCargo();
void calculaLerite();
int main()
{
Cargo cargo;
//cadastroCargo(cargo);
consultaTodosCargos(cargo);
//printf("%d \n", verificaExistenciaCodigoCargo(1));
//editarCargo(cargo);
Departamento departamento;
//cadastroDepartamento(departamento);
consultaTodosDepartamentos(departamento);
//printf("%d \n", verificaExistenciaCodigoDepartamento(122));
//editarDepartamento(departamento);
Funcionario funcionario;
//cadastroFuncionario(funcionario);
consultaTodosFuncionarios(funcionario);
//consultaTodosFuncionariosDeUmCargo();
calculaLerite();
}
void cadastroFuncionario(Funcionario funcionario)
{
//cadastro de departamento
int codigoDepartamento, codigoCargo;
printf("\n Informe o codigo do funcionario");
scanf("%d", &funcionario.codigoFuncionario);
printf("\n Informe o codigo do departamento");
scanf("%d", &codigoDepartamento);
while(verificaExistenciaCodigoDepartamento(codigoDepartamento) == -1)
{
printf("Informe um codigo de departamento existente");
printf("\n Informe o codigo do departamento");
scanf("%d", &codigoDepartamento);
}
funcionario.codigoDepartamento = codigoDepartamento;
printf("\n Informe o codigo do cargo");
scanf("%d", &codigoCargo);
while(verificaExistenciaCodigoCargo(codigoCargo) == -1)
{
printf("Informe um codigo de cargo existente");
printf("\n Informe o codigo do cargo");
scanf("%d", &codigoCargo);
}
funcionario.codigoCargo = codigoCargo;
printf("\n Informe o nome do funcionario");
scanf("%s", funcionario.nomeFuncionario);
printf("\n Informe a quantidade de dependentes");
scanf("%d", &funcionario.dependentesFuncionario);
printf("\n Informe o adicional");
scanf("%f", &funcionario.adicional);
printf("\n Informe o status");
scanf("%d", &funcionario.status);
FILE * arquivoFuncionario;
arquivoFuncionario = fopen("funcionario.txt", "a+b");
if(arquivoFuncionario == NULL)
{
printf("\n Houve um erro na abertura do arquivo funcionario");
return;
}
fwrite(&funcionario, sizeof(Funcionario), 1, arquivoFuncionario);
if(ferror(arquivoFuncionario))
{
printf("\n Houve um erro enquanto escrevia no arquivo Funcionario");
return;
}
fclose(arquivoFuncionario);
printf("\n Escreveu com sucesso \n");
}
int verificaExistenciaCodigoCargo(int codigoCargo)
{
Cargo cargo;
FILE *arquivoCargo;
arquivoCargo = fopen("cargo.txt", "rb");
if(arquivoCargo == NULL)
{
printf("Houve um erro");
return;
}
rewind(arquivoCargo);
while(fread(&cargo, sizeof(Cargo), 1, arquivoCargo))
{
if(cargo.codigoCargo == codigoCargo)
{
return 1;
}
}
fclose(arquivoCargo);
return -1;
}
int verificaExistenciaCodigoDepartamento(int codigoDepartamento)
{
Departamento departamento;
FILE *arquivoDepartamento;
arquivoDepartamento = fopen("departamento.txt", "rb");
if(arquivoDepartamento == NULL)
{
printf("Houve um erro");
return;
}
rewind(arquivoDepartamento);
while(fread(&departamento, sizeof(Departamento), 1, arquivoDepartamento))
{
if(departamento.codigoDepartamento == codigoDepartamento)
{
return 1;
}
}
fclose(arquivoDepartamento);
return -1;
}
void consultaTodosFuncionarios(Funcionario funcionario)
{
FILE *arquivoFuncionario;
arquivoFuncionario = fopen("funcionario.txt", "rb");
if(arquivoFuncionario == NULL)
{
printf("Houve um erro");
return;
}
rewind(arquivoFuncionario);
while(fread(&funcionario, sizeof(Funcionario), 1, arquivoFuncionario))
{
printf("\n Esse é o codigo do funcionario %d \n", funcionario.codigoFuncionario);
printf("\n Esse é o codigo do departamento %d \n", funcionario.codigoDepartamento);
printf("\n Esse é o codigo do cargo %d \n", funcionario.codigoCargo);
printf("\n Esse é o nome do funcionario %s \n", funcionario.nomeFuncionario);
printf("\n Essa é a quantidade de dependentes do funcionario %d \n", funcionario.dependentesFuncionario);
printf("\n Esse é o adicional do funcionario %2lf \n", funcionario.adicional);
printf("\n Esse é o status do funcionario %d \n", funcionario.status);
}
fclose(arquivoFuncionario);
}
void consultaTodosFuncionariosDeUmCargo()
{
Cargo cargo;
Funcionario funcionario;
int codigoCargo;
printf("\n Informe o codigo de um cargo para ver os seus funcionarios");
scanf("%d", &codigoCargo);
while(verificaExistenciaCodigoCargo(codigoCargo) == -1)
{
printf(" \n Nao existe esse codigo de cargo, informe outro \n");
printf("\n Informe o codigo de um cargo para ver os seus funcionarios");
scanf("%d", &codigoCargo);
}
cargo.codigoCargo = codigoCargo;
FILE *arquivoCargo;
FILE *arquivoFuncionario;
arquivoCargo = fopen("cargo.txt", "rb");
arquivoFuncionario = fopen("funcionario.txt", "rb");
if(arquivoFuncionario == NULL || arquivoCargo == NULL)
{
printf("\n Houve um erro na hora de abrir o arquivo");
return;
}
rewind(arquivoCargo);
while(fread(&cargo, sizeof(Cargo), 1, arquivoCargo))
{
if(cargo.codigoCargo == codigoCargo)
{
rewind(arquivoFuncionario);
printf("\n Codigo cargo %d \n", cargo.codigoCargo);
printf("\n Nome do cargo do funcionario %s \n", cargo.nomeCargo);
while(fread(&funcionario, sizeof(Funcionario), 1, arquivoFuncionario))
{
if(cargo.codigoCargo == funcionario.codigoCargo)
{
printf("\n Nome funcionario %s \n", funcionario.nomeFuncionario);
}
}
}
}
fclose(arquivoCargo);
fclose(arquivoFuncionario);
}
void calculaLerite()
{
Cargo cargo;
Funcionario funcionario;
FILE * arquivoCargo;
FILE * arquivoFuncionario;
float lerite;
arquivoCargo = fopen("cargo.txt", "rb");
arquivoFuncionario = fopen("funcionario.txt", "rb");
while(fread(&cargo, sizeof(Cargo), 1, arquivoCargo))
{
while(fread(&funcionario, sizeof(Funcionario), 1, arquivoFuncionario))
{
lerite = cargo.salarioCargo + funcionario.adicional;
printf("O funcionario %s tem holerie de %f \n", funcionario.nomeFuncionario, lerite);
}
}
}
void cadastroDepartamento(Departamento departamento)
{
//cadastro de departamento
printf("\n Informe o codigo do departamento");
scanf("%d", &departamento.codigoDepartamento);
printf("\n Informe o nome do departamento");
scanf("%s", departamento.nomeDepartamento);
printf("\n Informe o orçamento do departamento");
scanf("%f", &departamento.orcamentoDepartamento);
printf("\n Informe o status do departamento");
scanf("%d", &departamento.status);
FILE * arquivoDepartamento;
arquivoDepartamento = fopen("departamento.txt", "a+b");
if(arquivoDepartamento == NULL)
{
printf("\n Houve um erro na abertura do arquivo departamento");
return;
}
fwrite(&departamento, sizeof(Departamento), 1, arquivoDepartamento);
if(ferror(arquivoDepartamento))
{
printf("\n Houve um erro enquanto escrevia no arquivo Departamento");
return;
}
fclose(arquivoDepartamento);
printf("\n Escreveu com sucesso \n");
}
void consultaTodosDepartamentos(Departamento departamento)
{
FILE *arquivoDepartamento;
arquivoDepartamento = fopen("departamento.txt", "rb");
if(arquivoDepartamento == NULL)
{
printf("Houve um erro");
return;
}
rewind(arquivoDepartamento);
while(fread(&departamento, sizeof(Departamento), 1, arquivoDepartamento))
{
printf("\n Esse é o codigo do departamento %d \n", departamento.codigoDepartamento);
printf("\n Esse é o nome do departamento %s \n", departamento.nomeDepartamento);
printf("\n Esse é o orcamento do departamento %f \n", departamento.orcamentoDepartamento);
}
fclose(arquivoDepartamento);
}
void editarDepartamento(Departamento departamento)
{
FILE *arquivoDepartamento;
char nome[42];
arquivoDepartamento = fopen("departamento.txt", "r+b");
printf("\n Nome do departamento que quer alterar: ");
scanf("%s", nome);
while (fread(&departamento, sizeof(Departamento), 1, arquivoDepartamento))
{
if (strcmp(departamento.nomeDepartamento, nome) == 0)
{
printf("\n Digite os dados novamente: \n");
printf("\n Nome departamento: ");
scanf("%s", departamento.nomeDepartamento);
printf("\n Orcamento: ");
scanf("%f", &departamento.orcamentoDepartamento);
fseek(arquivoDepartamento, ftell(arquivoDepartamento) - sizeof(Departamento), 0);
fwrite(&departamento, sizeof(Departamento), 1, arquivoDepartamento);
fseek(arquivoDepartamento, 0, 2);
}
}
fclose(arquivoDepartamento);
}
void cadastroCargo(Cargo cargo)
{
//cadastro de cargo
printf("\n Informe o codigo do cargo");
scanf("%d", &cargo.codigoCargo);
printf("\n Informe o nome do cargo");
scanf("%s", cargo.nomeCargo);
printf("\n Informe o salario do cargo");
scanf("%f", &cargo.salarioCargo);
printf("\n Informe o status do cargo");
scanf("%d", &cargo.status);
FILE * arquivoCargo;
arquivoCargo = fopen("cargo.txt", "a+b");
if(arquivoCargo == NULL)
{
printf("\n Houve um erro na abertura do arquivo cargo");
return;
}
fwrite(&cargo, sizeof(Cargo), 1, arquivoCargo);
if(ferror(arquivoCargo))
{
printf("\n Houve um erro enquanto escrevia no arquivo Cargo");
return;
}
fclose(arquivoCargo);
printf("\n Escreveu com sucesso \n");
}
void consultaTodosCargos(Cargo cargo)
{
FILE *arquivoCargo;
arquivoCargo = fopen("cargo.txt", "rb");
if(arquivoCargo == NULL)
{
printf("Houve um erro");
return;
}
rewind(arquivoCargo);
while(fread(&cargo, sizeof(Cargo), 1, arquivoCargo))
{
printf("\n Esse é o codigo do cargo %d \n", cargo.codigoCargo);
printf("\n Esse é o nome do cargo %s \n", cargo.nomeCargo);
printf("\n Esse é o salario do cargo %f \n", cargo.salarioCargo);
}
fclose(arquivoCargo);
}
void editarCargo(Cargo cargo)
{
FILE *arquivoCargo;
char nome[42];
arquivoCargo = fopen("cargo.txt", "r+b");
printf("\n Nome do cargo que quer alterar: ");
scanf("%s", nome);
while (fread(&cargo, sizeof(Cargo), 1, arquivoCargo))
{
if (strcmp(cargo.nomeCargo, nome) == 0)
{
printf("\n Digite os dados novamente: \n");
printf("\n Nome cargo: ");
scanf("%s", cargo.nomeCargo);
printf("\n Salario: ");
scanf("%f", &cargo.salarioCargo);
fseek(arquivoCargo, ftell(arquivoCargo) - sizeof(Cargo), 0);
fwrite(&cargo, sizeof(Cargo), 1, arquivoCargo);
fseek(arquivoCargo, 0, 2);
}
}
fclose(arquivoCargo);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment