/*1. Escreva uma função, que insira dados de N funcionários da Universidade Cabo Verde e envia-los para ficheiro como o nome
funcionarios.txt (o programa deverá informar quantos funcionários deseja inserir no sistema?);
2. Escreva uma função, que imprima registos de todos os funcionários que se encontra no ficheiro com o nome funcionarios.txt, inserido
anteriormente?
3. Escreva uma função, que imprima os funcionários por categoria.
4. Escreva uma função, que permite calcular quanto gasta a universidade com os funcionários por categoria?
5. Temos três tipos de categorias dos funcionários [Docente, Diretor e Técnico], sabendo que o funcionário que é Docente recebe 2500$
por cada hora, um Diretor recebe 3500$ por hora, e um Técnico recebe 1500$ por hora. Escreva uma função, que mostra o salário de
um determinado funcionário dependendo do seu salário liquido por hora, sabendo que INPS é de 12%, IUR é de 20% e sindicato é de
1%;
6. Escreva uma função, que ordena os funcionários na ordem crescentes e envia-los para o ficheiro com o nome
ordenar_funcionarios.txt;
7. Escreva uma função, que imprima todos os funcionários com salario maior que 75000$.
8. Escreva uma função, que dado nº de NIF permite eliminar todas as informações desse funcionário.
//Dados do funcionário
struct Funcionario {
char nome[20];
int NIF;
char categoria;
float salario;
int Hora_Trabalhados;
//Verificar se está ativo no Sistema
int ativo;
};
// Para não atrapalhar o bom funcionamento
void pressioneEnter() {
char c;
do {
c = getch();
} while (c != 13);
}
void IncerirFuncionario(struct Funcionario funcionario[],int n) {
system("COLOR 0F");
int i;
FILE *file; // cria variável ponteiro para o arquivo
file= fopen("funcionarios.txt", "w"); //abrindo o arquivo
if(file == NULL) //testando se o arquivo foi realmente criado
printf("\n-->não foi possivel abrir o fecheiro\n\n");
else {
printf ("\n\n\n\n\tUNICV \n\n");
printf("\n\n\n\t\tDigite o numero de Funcionarios que pretende registrar: ");
scanf("%i",&n);
fflush(stdin);
system("cls");
static int i=0;
int y=n+i;
if(y>99)
menu(funcionario,n);
printf("\n\n\n\t\t-------- INSCRIÇÃO DE FUNCIONÁRIO --------\n\n");
fprintf(file,"\n\n\t----- LISTA DOS FUNCIONÁRIOS ----\n\n");
fprintf(file,"\tNome NIF Salário Categoria Horas\n\n");
for(; i<y; i++) {
system("COLOR 0B");
// para obter dados e armazenar no arquivo
printf("\n\tDigite o nome do funcionário: ");
scanf(" %s",&funcionario.nome); printf("\n\tDigite o NIF do funcionário: "); scanf("%d",&funcionario.NIF); printf("\n\tDigite o salario do funcionario: "); scanf("%f", &funcionario.salario); printf("\n\tDigite a categoria do funcionário: "); scanf(" %c", &funcionario.categoria); printf("\n\tDigite a Hora trabalhados pelo funcionário: "); scanf("%d", &funcionario.Hora_Trabalhados); printf("\n\n"); //A Escrevendo no arquivo fprintf(file,"\t%s \t %d \t %.1f \t %c\t %d\n",funcionario.nome,funcionario.NIF,funcionario.salario,funcionario.categoria,funcionario.Hora_Trabalhados); } printf("\n\t\t-------------------------<3--------------------------\n"); printf("\n\t Incritos com sucesso! \n\n\t Registado no fecheiro -> funcionarios.txt\n\n"); printf ("\n\n\n\t\t\tPressione ENTER para Continuar->"); fflush(stdin); pressioneEnter(); system("cls"); menu(funcionario,y); } fclose(file); // para fechar o arquivo }
if ( i > 99 ) printf("\n\n\t\tNIF não encontrado\n"); } fclose(file); printf ("\n\n\n\t\t\tPressione ENTER para Continuar->"); fflush(stdin); pressioneEnter(); system("cls"); }
void menu(struct Funcionario funcionario[],int n) { int op; do { system("COLOR 0F"); //Menu printf("\n\n\t\t\t\t---> SISTEMA DE REGISTO E CONTROLE DE FUNCIONÁRIO \n\n"); printf("\n\t\t* 1 ------- INSERIR OS FUNCIONÁRIOS E ENVIA-LOS PARA O FICHEIRO ------------------------ *\n"); printf("\n\t\t* 2 ------- IMPRIMIR A LISTA DOS FUNCIONÁRIOS DO FICHEIRO ------------------------------ *\n"); printf("\n\t\t* 3 ------- IMPRIMIR OS FUNCIONÁRIOS POR CATEGORIA ------------------------------------- *\n"); printf("\n\t\t* 4 ------- GASTO DA UNIVERSIDADE COM OS FUNCIONÁRIOS ---------------------------------- *\n"); printf("\n\t\t* 5 ------- CALCULAR O SALÁRIO DE UM FUNCIONÁRIO X EM FUNÇÃO DO SEU SALÁRIO POR HORA --- *\n"); printf("\n\t\t* 6 ------- ORDENAR FUNCIONÁRIO NA ORDEM CRESCENTE ------------------------------------- *\n"); printf("\n\t\t* 7 ------- IMPRIMIR OS FUNCIONÁRIOS COM SALÁRIO MAIOR QUE 75000$ ---------------------- *\n"); printf("\n\t\t* 8 ------- ELIMINAR UM FUNCIONÁRIO A PARTIR DO Nº DO NIF ------------------------------ *\n"); printf("\n\t\t* 0 ------- Sair\n\n"); printf("\n\tEscolha uma opcao: "); scanf("%d",&op); printf("\n"); switch (op) { case 0: printf("\n\n\n\n\n\t-> Saindo... \n\n"); break; case 1: system("cls"); IncerirFuncionario(funcionario,n); break; case 2: system("cls"); ImprimirFuncionarios(funcionario,n); break; case 8: system("cls"); EliminarFuncionario(funcionario,n); break; default: system("COLOR C0"); printf("\n\t\t\t\t*-*-*-*-- ERRO --> Numero INVALIDO!\n\n"); printf ("\n\tPressione ENTER para Tentar Novamente->"); fflush(stdin); pressioneEnter(); system("cls"); } } while (op != 0);
int main() { setlocale(LC_ALL, "Portuguese"); struct Funcionario funcionario[100]; int n; printf ("\n\tPressione ENTER para iniciar->"); fflush(stdin); pressioneEnter(); system("cls"); menu(funcionario,n); return 0; }
Pergunta
Andrah
/*1. Escreva uma função, que insira dados de N funcionários da Universidade Cabo Verde e envia-los para ficheiro como o nome
funcionarios.txt (o programa deverá informar quantos funcionários deseja inserir no sistema?);
2. Escreva uma função, que imprima registos de todos os funcionários que se encontra no ficheiro com o nome funcionarios.txt, inserido
anteriormente?
3. Escreva uma função, que imprima os funcionários por categoria.
4. Escreva uma função, que permite calcular quanto gasta a universidade com os funcionários por categoria?
5. Temos três tipos de categorias dos funcionários [Docente, Diretor e Técnico], sabendo que o funcionário que é Docente recebe 2500$
por cada hora, um Diretor recebe 3500$ por hora, e um Técnico recebe 1500$ por hora. Escreva uma função, que mostra o salário de
um determinado funcionário dependendo do seu salário liquido por hora, sabendo que INPS é de 12%, IUR é de 20% e sindicato é de
1%;
6. Escreva uma função, que ordena os funcionários na ordem crescentes e envia-los para o ficheiro com o nome
ordenar_funcionarios.txt;
7. Escreva uma função, que imprima todos os funcionários com salario maior que 75000$.
8. Escreva uma função, que dado nº de NIF permite eliminar todas as informações desse funcionário.
*/
//bibliotecas
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#include <conio.h>
#include <time.h>
//Dados do funcionário
struct Funcionario {
char nome[20];
int NIF;
char categoria;
float salario;
int Hora_Trabalhados;
//Verificar se está ativo no Sistema
int ativo;
};
// Para não atrapalhar o bom funcionamento
void pressioneEnter() {
char c;
do {
c = getch();
} while (c != 13);
}
void IncerirFuncionario(struct Funcionario funcionario[],int n) {
system("COLOR 0F");
int i;
FILE *file; // cria variável ponteiro para o arquivo
file= fopen("funcionarios.txt", "w"); //abrindo o arquivo
if(file == NULL) //testando se o arquivo foi realmente criado
printf("\n-->não foi possivel abrir o fecheiro\n\n");
else {
printf ("\n\n\n\n\tUNICV \n\n");
printf("\n\n\n\t\tDigite o numero de Funcionarios que pretende registrar: ");
scanf("%i",&n);
fflush(stdin);
system("cls");
static int i=0;
int y=n+i;
if(y>99)
menu(funcionario,n);
printf("\n\n\n\t\t-------- INSCRIÇÃO DE FUNCIONÁRIO --------\n\n");
fprintf(file,"\n\n\t----- LISTA DOS FUNCIONÁRIOS ----\n\n");
fprintf(file,"\tNome NIF Salário Categoria Horas\n\n");
for(; i<y; i++) {
system("COLOR 0B");
// para obter dados e armazenar no arquivo
printf("\n\tDigite o nome do funcionário: ");
scanf(" %s",&funcionario.nome);
printf("\n\tDigite o NIF do funcionário: ");
scanf("%d",&funcionario.NIF);
printf("\n\tDigite o salario do funcionario: ");
scanf("%f", &funcionario.salario);
printf("\n\tDigite a categoria do funcionário: ");
scanf(" %c", &funcionario.categoria);
printf("\n\tDigite a Hora trabalhados pelo funcionário: ");
scanf("%d", &funcionario.Hora_Trabalhados);
printf("\n\n");
//A Escrevendo no arquivo
fprintf(file,"\t%s \t %d \t %.1f \t %c\t %d\n",funcionario.nome,funcionario.NIF,funcionario.salario,funcionario.categoria,funcionario.Hora_Trabalhados);
}
printf("\n\t\t-------------------------<3--------------------------\n");
printf("\n\t Incritos com sucesso! \n\n\t Registado no fecheiro -> funcionarios.txt\n\n");
printf ("\n\n\n\t\t\tPressione ENTER para Continuar->");
fflush(stdin);
pressioneEnter();
system("cls");
menu(funcionario,y);
}
fclose(file); // para fechar o arquivo
}
void ImprimirFuncionarios(struct Funcionario funcionario[],int n) {
FILE *file;
file = fopen("C:\\Users\\alex\\Desktop\\teste4\\funcionarios.txt", "r");
if(file == NULL)
printf("\n-->não foi possivel abrir o fecheiro\n\n");
else {
int i;
printf("\n\n\n\t\t------- LISTA DOS FUNCIONÁRIOS ------\n\n");
for(i=0; i<n; i++) {
system("COLOR 0F");
fscanf(file,"%s",funcionario.nome);
fscanf(file,"%d",funcionario.NIF);
fscanf(file,"%.1f $00",funcionario.salario);
fscanf(file,"%c",funcionario.categoria);
fscanf(file,"%d horas",funcionario.Hora_Trabalhados);
printf("\n\tNome: %s",funcionario.nome);
printf("\n\tNIF: %d",funcionario.NIF);
printf("\n\tSalario: %.1f $00", funcionario.salario);
printf("\n\tCategoria: %c",funcionario.categoria);
printf("\n\tHoras de trabalho: %d horas", funcionario.Hora_Trabalhados);
printf("\n\n----------------------------------------------------------\n");
}
}
printf ("\n\n\n\t\t\tPressione ENTER para Continuar->");
fflush(stdin);
pressioneEnter();
system("cls");
fclose(file);
}
void OrdenarFuncionario(struct Funcionario funcionario[],int n){
}
void EliminarFuncionario(struct Funcionario funcionario[],int n) {
FILE *file;
//Abre o arquivo novamente para leitura
file = fopen("funcionarios.txt", "r+");
if(file == NULL)
printf("\n-->não foi possivel abrir o fecheiro\n\n");
else {
int nif, i;
char resp;
printf("\n\tInforme o NIF do funcionario a ser Eliminado: ");
scanf("%d",&nif);
while( funcionario.NIF == nif ) {
// FALTOU
if ( funcionario.ativo== 1 ) {
printf("\n\tNome: %s",funcionario.nome);
printf("\n\tNIF: %d",funcionario.NIF);
printf("\n\tSalario: %.1f $00", funcionario.salario);
printf("\n\tCategoria: %c",funcionario.categoria);
printf("\n\tHoras de trabalho: %d horas", funcionario.Hora_Trabalhados);
printf("\n\n----------------------------------------------------------\n");
}
printf("\n\tDeseja realmente eliminar o Funcionário? S/N:");
scanf("%c",&resp);
if ( ( resp == 'S' ) || ( resp == 's' ) ) {
funcionario.ativo=0;
printf("\n\tFuncionário eliminado com sucesso\n");
break;
} else {
if ( ( resp == 'N' ) || ( resp == 'n' ) ) {
printf("\tEliminação cancelada!\n");
break;
}
}
}
i++;
if ( i > 99 )
printf("\n\n\t\tNIF não encontrado\n");
}
fclose(file);
printf ("\n\n\n\t\t\tPressione ENTER para Continuar->");
fflush(stdin);
pressioneEnter();
system("cls");
}
void menu(struct Funcionario funcionario[],int n) {
int op;
do {
system("COLOR 0F"); //Menu
printf("\n\n\t\t\t\t---> SISTEMA DE REGISTO E CONTROLE DE FUNCIONÁRIO \n\n");
printf("\n\t\t* 1 ------- INSERIR OS FUNCIONÁRIOS E ENVIA-LOS PARA O FICHEIRO ------------------------ *\n");
printf("\n\t\t* 2 ------- IMPRIMIR A LISTA DOS FUNCIONÁRIOS DO FICHEIRO ------------------------------ *\n");
printf("\n\t\t* 3 ------- IMPRIMIR OS FUNCIONÁRIOS POR CATEGORIA ------------------------------------- *\n");
printf("\n\t\t* 4 ------- GASTO DA UNIVERSIDADE COM OS FUNCIONÁRIOS ---------------------------------- *\n");
printf("\n\t\t* 5 ------- CALCULAR O SALÁRIO DE UM FUNCIONÁRIO X EM FUNÇÃO DO SEU SALÁRIO POR HORA --- *\n");
printf("\n\t\t* 6 ------- ORDENAR FUNCIONÁRIO NA ORDEM CRESCENTE ------------------------------------- *\n");
printf("\n\t\t* 7 ------- IMPRIMIR OS FUNCIONÁRIOS COM SALÁRIO MAIOR QUE 75000$ ---------------------- *\n");
printf("\n\t\t* 8 ------- ELIMINAR UM FUNCIONÁRIO A PARTIR DO Nº DO NIF ------------------------------ *\n");
printf("\n\t\t* 0 ------- Sair\n\n");
printf("\n\tEscolha uma opcao: ");
scanf("%d",&op);
printf("\n");
switch (op) {
case 0:
printf("\n\n\n\n\n\t-> Saindo... \n\n");
break;
case 1:
system("cls");
IncerirFuncionario(funcionario,n);
break;
case 2:
system("cls");
ImprimirFuncionarios(funcionario,n);
break;
case 8:
system("cls");
EliminarFuncionario(funcionario,n);
break;
default:
system("COLOR C0");
printf("\n\t\t\t\t*-*-*-*-- ERRO --> Numero INVALIDO!\n\n");
printf ("\n\tPressione ENTER para Tentar Novamente->");
fflush(stdin);
pressioneEnter();
system("cls");
}
} while (op != 0);
int main() {
setlocale(LC_ALL, "Portuguese");
struct Funcionario funcionario[100];
int n;
printf ("\n\tPressione ENTER para iniciar->");
fflush(stdin);
pressioneEnter();
system("cls");
menu(funcionario,n);
return 0;
}
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.