Jump to content
Fórum Script Brasil
  • 0

Dúvida em exercício


Question

/*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 to post
Share on other sites

1 answer to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148692
    • Total Posts
      644524
×
×
  • Create New...