Last active
August 29, 2015 14:01
-
-
Save Bolinha1/944d87dc73edaa90f2d7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #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