Ir ao conteúdo

C Registro de vacina e com sistema de Busca "CPF"


Ir à solução Resolvido por kgin,

Posts recomendados

Postado

Ola sou iniciante, preciso fazer um sistema de Busca CPF e que imprima a ficha  do cadastrado, se possível me ajudarem.

o código (ajuda no case 3)

 

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

int main(){
struct registros{
char nome[100];
char cpf[100];
char vacina[100];
char data[100];
char lote[100];
}
RE[200];
    int escolha,i,quant,opcao, opcao2;
    setlocale(LC_ALL, "PORTUGUESE");

        do{
    system("cls");
    printf("\t\t=======================\n\t");
    printf("\t1- Registrar Vacinado.\n\t");
    printf("\t2- Listar Aplicações.\n\t");
    printf("\t3- Buscar CPF.\n\t");
    printf("\t4- Sair.\n\t");
    printf("\t=======================\n\t");
    printf("\tSelecione uma opção:  ");
    scanf("%d",&escolha);
    fflush(stdin);
            switch(escolha){
                case 1:
                system("cls");
                printf("Quantos cadastros deseja realizar?:");
                    scanf("%d", &quant);
                    fflush(stdin);
                    system("cls");
                for(i=1;i<=quant;i++){
                    printf("\t\n Insira seu nome:");
                    fflush(stdin);
                    scanf("%[^\n]s", RE[i].nome);
                    printf("\t\n Insira seu CPF:");
                    fflush(stdin);
                    scanf("%[^\n]s", RE[i].cpf);
                    printf("\t\n Insira nome da Vacina:");
                    fflush(stdin);
                    scanf("%[^\n]s", RE[i].vacina);
                    printf("\t\n Insira a Data:");
                    fflush(stdin);
                    scanf("%[^\n]s", RE[i].data);
                    printf("\t\n Insira numero do lote:");
                    fflush(stdin);
                    scanf("%[^\n]s", RE[i].lote);
                    printf("\n\n\t\t");
                    system("pause");
                    system("cls");
                    fflush(stdin);
                }
                break;

                case 2:
                for(i=1;i<=quant;i++){
                    system("cls");
                    printf("Exibindo cadastros\n");
                    printf("\t\n Nome:%s ",RE[i].nome);
                    printf("\t\n CPF:%s ",RE[i].cpf);
                    printf("\t\n Nome da Vacina:%s ",RE[i].vacina);
                    printf("\t\n Data:%s ",RE[i].data);
                    printf("\t\n Numero do lote:%s ",RE[i].lote);
                    system("pause");
                }
                break;

                case 3:


                //case de busca


                break;
                case 4:
                printf("Finalizando Algoritmo!");
                break;

            }

        }while(escolha!=4);


return 0;
}
 

  • Solução
Postado

@Vitor.MP4 Recomendo você parar de usar fflush().

Eu dei uma organizada e implementei uma maneira de fazer a busca.

De uma olhada

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

#define T_BUFFER 512
#define T_NOME 80
#define T_CPF 16
#define T_VACINA 100
#define T_DATA 15

#define Q_MAXIMO_VACINADOS 200

struct registro_vacinado {
    char nome[T_NOME];
    char cpf[T_CPF];
    char vacina[T_VACINA];
    char data[T_DATA];
    int lote;
};

void
msg_pausa(char *msg)
{
    char buffer[T_BUFFER];
    if (msg != NULL) {
        printf("%s\n", msg);
    }
    printf("Pressione enter para continuar!\n");
    fgets(buffer, T_BUFFER, stdin);
}

void
barra_simples(int tamanho, char chr)
{
    int contador;
    for (contador = 0; contador < tamanho; contador++)
        putchar(chr);
    putchar('\n');
}

int
menu_principal(void)
{
    char buffer[T_BUFFER] = {'\0'};
    int opcao;
    do {
        barra_simples(20, '=');
        printf("1-Registrar Vacinado.\n");
        printf("2-Listar Aplicacoes.\n");
        printf("3-Buscar CPF.\n");
        printf("4-Sair.\n");
        barra_simples(20, '=');
        fgets(buffer, T_BUFFER, stdin);
        sscanf(buffer, "%i", &opcao);
        if (opcao < 1 || opcao > 4) {
            printf("Opcao invalida!\n");
        }
    } while (opcao < 1 || opcao > 4);
    return(opcao);
}

int main(void)
{
    struct registro_vacinado vacinados[Q_MAXIMO_VACINADOS];
    int
        q_registros = 0,
        opcao = 0,
        contador,
        n_busca = 0;
    char buffer[T_BUFFER];
    
    do {
        opcao = menu_principal();
        
        switch (opcao) {
            case 1:
                do {
                    struct registro_vacinado tmp;
                    do {
                        printf("Insira seu nome:");
                        fgets(buffer, T_BUFFER, stdin);
                        buffer[strlen(buffer)-1] = '\0';
                        strcpy(tmp.nome, buffer);
                        
                        printf("Insira seu CPF sem tracos ou pontos:");
                        fgets(buffer, T_BUFFER, stdin);
                        buffer[strlen(buffer)-1] = '\0';
                        strcpy(tmp.cpf, buffer);
                    
                        printf("Insira nome da Vacina:");
                        fgets(buffer, T_BUFFER, stdin);
                        buffer[strlen(buffer)-1] = '\0';
                        strcpy(tmp.vacina, buffer);
                    
                        printf("Insira a Data:");
                        fgets(buffer, T_BUFFER, stdin);
                        buffer[strlen(buffer)-1] = '\0';
                        strcpy(tmp.data, buffer);
                    
                        printf("Insira numero do lote:");
                        fgets(buffer, T_BUFFER, stdin);
                        sscanf(buffer, "%i", &tmp.lote);
                        
                        barra_simples(40, '-');
                        printf("Nome:%s\n", tmp.nome);
                        printf("CPF:%s\n", tmp.cpf);
                        printf("Nome da vacina:%s\n", tmp.vacina);
                        printf("Data da vacinacao:%s\n", tmp.data);
                        printf("Numero do lote:%i\n", tmp.lote);
                        barra_simples(40, '-');
                        printf("As informações estão corretas?\n1\\Sim ou 2\\não\n");
                        fgets(buffer, T_BUFFER, stdin);
                        sscanf(buffer, "%i", &opcao);
                        if (opcao == 2) {
                            printf("Insira as informações novamente!\n");
                        }
                    } while (opcao == 2);
                    printf("Salvar o cadastro?\n1\\Sim 2\\não\n");
                    fgets(buffer, T_BUFFER, stdin);
                    sscanf(buffer, "%i", &opcao);
                    if (opcao == 1) {
                        vacinados[q_registros] = tmp;
                        q_registros++;
                    }
                    
                    printf("Fazer outro cadastro?\n1\\Sim 2\\não\n");
                    fgets(buffer, T_BUFFER, stdin);
                    sscanf(buffer, "%i", &opcao);
                } while (opcao == 1);
                opcao = 0;
                break;
            
            case 2:
                for (contador = 0; contador < q_registros; contador++) {
                    printf("Exibindo cadastros\n");
                    printf("Nome:%s\n", vacinados[contador].nome);
                    printf("CPF:%s\n", vacinados[contador].cpf);
                    printf("Nome da Vacina:%s\n", vacinados[contador].vacina);
                    printf("Data:%s\n", vacinados[contador].data);
                    printf("Numero do lote:%i\n", vacinados[contador].lote);
                    msg_pausa(NULL);
                }
                break;
            
            case 3:
                printf("Digite o cpf para ser encontrado:");
                fgets(buffer, T_BUFFER, stdin);
                buffer[strlen(buffer)-1] = '\0';
                for (contador = 0; contador < q_registros; contador++) {
                    if (strcmp(vacinados[contador].cpf, buffer) == 0) {
                        n_busca = contador;
                        break;
                    }
                }
                
                if (contador < q_registros) {
                    printf("Registro de vacina encontrado!\n");
                    printf("O cpf %s e da pessoa %s\n", vacinados[n_busca].cpf, vacinados[n_busca].nome);
                } else {
                    printf("Registro não encontrado!\n");
                }
                msg_pausa(NULL);
                break;
            
            case 4:
                msg_pausa("O programa sera finalizado!");
        }
    } while (opcao != 4);
    return(0);
}

Versão online!

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...