Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JACKCB

Criar uma função para buscar o cadastro a partir do nome do funcionár

Recommended Posts

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define max 20

typedef struct Data TipoData;

struct Data{
    int dia;
    int mes;
    int ano;
};
    struct Funcionario{

        int   matricula;
        char  nome[30];
        char  estadoCivil[9];
        char  endereco[40];
        char  cargo[30];
        float salario;
        int cont;

        TipoData nascimento;

    }Cadastro[max];


    void inicia_lista(void), enter(void);
    void delete(void), lista(void);
    void altera(void);
    int menu(void), procurar(void);
int main(void) {

    char escolha;

    inicia_lista(); // Inicializa a estrutura
    for(; ;){
        escolha = menu();
        switch (escolha) {
            case 1: enter();break;

            case 2: delete();break;

            case 3: lista();break;

            case 4: altera();break;

            case 5: busca();break;

            case 6: exit(0);break;
        }
    }
}

void inicia_lista(void){
    register int t;

    for (t = 0; t < max; ++t) Cadastro[t].nome[0] = '\0';
}

int menu(void){
    char s[80];

    int c;

    fflush(stdin);
    printf("\n(1)- Cadastrar");
    printf("\n(2)- Excluir");
    printf("\n(3)- Listar");
    printf("\n(4)- Alterar");
    printf("\n(5)- Procurar");
    printf("\n(6)- Sair");

    do {
        printf("\n > ");
        fflush(stdout);
        gets(s);
        c = atoi(s);
    } while (c < 0 || c > 5);
    return c;
}

// Verifica se o vetor está cheio senão faz o cadastro
void enter(void){

    int Cad;
    Cad = procurar();

    if (Cad == -1) {
        printf("\nO vetor está cheio!\n");
        return;
    }

    // Inicio do cadastro
        fflush(stdin);
        printf("\nInforme a matricula do funcionário: ");
        fflush(stdout);
        scanf("%d",&Cadastro[Cad].matricula);
        fflush(stdin);
        printf("\nDigite o nome do funcionario: ");
        fflush(stdout);
        gets(Cadastro[Cad].nome);
        printf("\nData de Nascimento: ");
        fflush(stdout);
        scanf("%d %d %d",&Cadastro[Cad].nascimento.dia, &Cadastro[Cad].nascimento.mes, &Cadastro[Cad].nascimento.ano);
        fflush(stdin);
        printf("\nEstado civil do funcionário: ");
        fflush(stdout);
        gets(Cadastro[Cad].estadoCivil);
        fflush(stdin);
        printf("\nEndereco do funcionário: ");
        fflush(stdout);
        gets(Cadastro[Cad].endereco);
        fflush(stdin);
        printf("\nCargo do funcionário: ");
        fflush(stdout);
        gets(Cadastro[Cad].cargo);
        fflush(stdin);
        printf("\nSalário: ");
        fflush(stdout);
        scanf("%f",&Cadastro[Cad].salario);
} // Fim do cadastro

// Encontra uma estrutura não usada
 int procurar(void){
    register int t;
    for (t = 0; Cadastro[t].nome[0] && t < max; ++t);
    if (t == max) return -1; // nenhum elemento livre

    return t;
}

 // Pede o endereco do vetor onde se encontra o cadastro p/ exclusão
void delete(void){
    register int converte;
    char s[80];

    printf("\nDigite o endereço do funcionário que deseja excluir: ");
    fflush(stdout);
    gets(s);
    converte = atoi(s); // converte s em num int
    if (converte >= 0 && converte < max)
        Cadastro[converte].nome[0] = '\0';
}

void lista(void){

    register int t;

    for (t = 0; t < max; ++t) {
        if (Cadastro[t].nome[0]) {
            printf("\nMatricula: %d",Cadastro[t].matricula);
            printf("\nNome: %s",Cadastro[t].nome);
            printf("\nData de Nascimento: %d/%d/%d",Cadastro[t].nascimento.dia, Cadastro[t].nascimento.mes, Cadastro[t].nascimento.ano);
            printf("\nEstado Civil: %s",Cadastro[t].estadoCivil);
            printf("\nEndereço: %s",Cadastro[t].endereco);
            printf("\nCargo: %s",Cadastro[t].cargo);
            printf("\nSalário: %.2f",Cadastro[t].salario);
            printf("\nEndereço para exclusão: %d",t);
            printf("\n\n");
        }
    }
}

void altera(void){

     register int t;
     char s[80];


    printf("\nDigite a posição do funcionario para alterar: ");
    fflush(stdout);
    gets(s);

    t = atoi(s);

        printf("\n\t\tDADOS DO FUNCIONÁRIO");
        // Altera matricula
        fflush(stdin);
        printf("\nMatricula Atual: %d",Cadastro[t].matricula);
        fflush(stdin);
        printf("\nAlterar para: ");
        fflush(stdout);
        scanf("%d",&Cadastro[t].matricula);
        printf("\nMatricula alterada para: %d",Cadastro[t].matricula);
        //fim altera matricula

        printf("\n");

        fflush(stdin);
        //Altera Nome
        printf("\nNome Atual: %s",Cadastro[t].nome);
        printf("\nAlterar para: ");
        fflush(stdout);
        gets(Cadastro[t].nome);
        printf("\nNome alterado para: %s",Cadastro[t].nome);
        //Fim Altera Nome

        printf("\n");

        //Altera Data
    printf("\nData de Nascimento Atual: %d/%d/%d",Cadastro[t].nascimento.dia, Cadastro[t].nascimento.mes, Cadastro[t].nascimento.ano);
        printf("\nAlterar para: ");
        fflush(stdout);
        scanf("%d %d %d",&Cadastro[t].nascimento.dia, &Cadastro[t].nascimento.mes, &Cadastro[t].nascimento.ano);

        printf("\nData de Nascimento alterada para %d/%d/%d",Cadastro[t].nascimento.dia, Cadastro[t].nascimento.mes,
        Cadastro[t].nascimento.ano);
        // Fim altera Data

        printf("\n");

        fflush(stdin);
        //Altera Estado Civil
        printf("\nEstado Civil Atual: %s",Cadastro[t].estadoCivil);
        fflush(stdin);
        printf("\nAlterar para: ");
        fflush(stdout);
        gets(Cadastro[t].estadoCivil);
        printf("\nEstado Civil alterado para: %s",Cadastro[t].estadoCivil);
        //Fim Altera Estado Civil

        printf("\n");

        fflush(stdin);
        //Altera Endereco
        printf("\nEndereço Atual: %s",Cadastro[t].endereco);
        printf("\nAlterar para: ");
        fflush(stdout);
        gets(Cadastro[t].endereco);
        printf("\nEndereco alterado para: %s",Cadastro[t].endereco);
        //Fim altera endereco

        printf("\n");

        fflush(stdin);
        //Altera Cargo
        printf("\nCargo Atual: %s",Cadastro[t].cargo);
        printf("\nAlterar para: ");
        fflush(stdout);
        gets(Cadastro[t].cargo);
        printf("\nCargo alterado para: %s",Cadastro[t].cargo);
        //Fim Altera Cargo

        printf("\n");

        fflush(stdin);
        //Altera Salario
        printf("\nSalário Atual: %.2f",Cadastro[t].salario);
        printf("\nAlterar para: ");
        fflush(stdout);
        scanf("%f",&Cadastro[t].salario);
        printf("\nSalário alterado para: %.2f",Cadastro[t].salario);
        //Fim Altera Salario

        printf("\n");

        printf("\nEndereço para exclusão: %d",t);

        printf("\n\n");
        return t;
    }

int busca(void){
    char s[80];
    register int t;
    int achou = 0;

            printf("\nDigite o nome: ");
            fflush(stdout);
            gets(s);

            for (t = 0; t <= 1; t++) {
            if (Cadastro[t].nome[0]) {
            printf("\nNome: %s",Cadastro[t].nome);
            }
        }
        return t;
    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugiro que utilize a tag CODE, quando for postar códigos. Facilita no entendimento do mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E então...O que vc quer com isso?

Já te digo pra tirar o fflush(stdin) e o gets daí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.