Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida em exercício


Andrah

Pergunta

/*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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...