Database using vector and struct in c

Asked

Viewed 44 times

-2

People I need to make a program where I save client data and accounts, I’m trying to save the data of the struct in a vector (it was requested this way) but I’m not getting out of place, I don’t know what could be wrong, someone would have some light on how to solve this?

Another small problem would be line 52 where I am not able to use the gets so the user can type the name giving space between letters, since the scanf stops after identifying a blank

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


//ARMAZENAR EM ESTRUTURA E UNIOES
typedef union CPF_CNPJ cpf_cnpj;
union CPF_CNPJ{
    int cpfOUcnpj[14];
};

typedef struct Cliente cl;
struct Cliente{
    char nome[50];
    int RG[10];
    char endereco[50];
    int telefone[11];
    float renda[20];
    int tipo_cliente[1]; //1-private, 2-alta renda, 3-varejo
    cpf_cnpj tipoPessoa; //numa união o cpf ou cnpj do
       // cliente que pode ser uma pessoa física ou jurídica.
};
typedef struct Dados_Contas dc;
struct Dados_Contas{
    int Numero_Conta[6]; //deve ser unico e gerado pelo programa
    int Agencia[5];
    float Saldo_Conta[20];
    char Tipo_Conta[20];
    struct Cliente Titulares; // titulares (deve estar vinculado aos clientes cadastrados)
    int rg_titular;

};
void Cadastro_Conta (dc conta[], int qtd_cl, int num){
    int i, titular;

    for (i=0;i<=qtd_cl;i++){
    printf("O seguinte numero foi selecionado para sua conta:  %d \n", num);
    printf("Digite ele novamente para confirmar: \n"); scanf("%d", &conta[i].Numero_Conta);
    printf("Agencia: \n"); scanf("%d", &conta[i].Agencia);
    printf("Saldo da conta: \n"); scanf("%f", &conta[i].Saldo_Conta);
    printf("Tipo da conta: \n"); scanf("%s", &conta[i].Tipo_Conta);
    printf("Digite o RG do titular: \n"); scanf("%d", &conta[i].rg_titular);

    }
      // titulares


}

void Cadastro_Cliente (cl cliente[], int qtd_cl){
    int i;
    for (i=0;i<=qtd_cl;i++){
    printf("Nome: \n"); gets(Cliente[i].nome); //scanf("%s", &cliente[i].nome);
    printf("RG: \n"); scanf("%d", &cliente[i].RG);
    getchar();
    printf("Endereco: \n"); gets(Cliente[i].endereco); //scanf("%s", &cliente[i].endereco);
    printf("Telefone: \n"); scanf("%d", &cliente[i].telefone);
    printf("Renda: \n"); scanf("%f", &Cliente[i].renda);
    printf("Tipo de cliente: \n 1- Private: Superior a 1M \n 2- Alta renda: acima de 100mil \n 3- Publico geral \n"); scanf("%d", &cliente[i].tipo_cliente);
    printf("Cpf ou CNPJ: \n"); scanf("%d", &cliente[i].tipoPessoa);
    }
}

int main()
{
    //variaveis
    int Menu0,Menu1=0, Menu2=0, Menu3=0;
    int qtd_cl=0;
    int i=0;
    cl cadastro_cl[1000];
    dc conta[1000];
    srand(time(NULL)); //para o valor do numero da conta nao repetir
    //rand()%100000;

    //MENU
    do{
        printf("    MENU \n Digite um dos numeros abaixo: \n 1- Inserir \n 2- Imprimir \n 3- Atualizar \n 4- Deposito \n 5- Saque \n 6- Pix \n 0- Sair \n");
        scanf("%d", &Menu0);
        system("cls || clear");

        switch(Menu0){
    // 1- inserir
    case 1:
        printf("Voce deseja: \n 1- Inserir Nova Conta \n 2- Inserir Novo Cliente \n");
        scanf("%d", &Menu1);
        if(Menu1==1){ // chamada para nova conta
            int num=0;
            num= rand()%100000;

            Cadastro_Conta(conta, qtd_cl, num);


        } else if(Menu1==2){ // chamada para novo cliente
            Cadastro_Cliente(cadastro_cl ,qtd_cl);
        } else printf("ERRO!");

                //Mensagens de confirmacao para o usuario
        int x=0;
        if(Menu1==2){x=0;
            qtd_cl=qtd_cl+1;
            printf("Cadastro de Cliente realizado com sucesso! \n Digite 1 para retornar ao menu principal \n");
            scanf("%d", &x);
            if(x==1){
                system("cls || clear");
            }
        } else if(Menu1==1){x=0;
            printf("Cadastro da conta realizado com sucesso! \n Digite 1 para retornar ao menu principal\n");
            scanf("%d", &x);
            if(x==1){
                system("cls || clear");
            }
        }

        break;

    //2- imprimir
    case 2:
        printf("Voce deseja: \n 1- Imprimir dados de uma conta \n 2- Imprimir dados de um cliente \n 3- Lista de clientes de uma agencia \n 4- Lista de Contas por tipo de uma agencia \n");
        scanf("%d", &Menu2);
        if(Menu2==1){ // chamada imprimir dados de uma conta
            // ?????????????????????????????????????????????????

        } else if(Menu2==2){ // chamada para Imprimir dados de um cliente
            // ?????????????????????????????????????????????????

        } else if(Menu2==3){ // chamada para Lista de clientes de uma agencia
            for(i=0; i<=qtd_cl;i++){
                printf("Nome: \n %s \n" , cadastro_cl[i].nome);
                printf("RG: \n %d \n", cadastro_cl[i].RG);
                printf("Endereco: \n %s \n", cadastro_cl[i].endereco);
                printf("Telefone: \n %d \n", cadastro_cl[i].telefone);
                printf("Renda: \n %f \n", cadastro_cl[i].renda);
                printf("Tipo de cliente:\n %d \n" , cadastro_cl[i].tipo_cliente);
                printf("Cpf ou CNPJ: \n %d \n", cadastro_cl[i].tipoPessoa);
                system("cls || clear");
            }

        } else if(Menu2==4){ // chamada para Lista de Contas por tipo de uma agencia
            // ?????????????????????????????????????????????????

        }else printf("ERRO!");
        system("cls || clear");
        break;

    //3- Atualizar
    case 3:
        printf("Voce deseja: \n 1- Atualizar dados de um cliente \n 2- Atualizar dados de uma conta \n");
        scanf("%d", &Menu3);
        if(Menu3==1){ // chamada para atualizar dados de um cliente
                //NAO PODE MUDAR CPF
            // ?????????????????????????????????????????????????

        } else if(Menu3==2){ // chamada para atualizar dados de uma conta
            //NAO PODE MUDAR AGENCIA, NUMERO DA CONTA E TIPO
            // ?????????????????????????????????????????????????

        }else printf("ERRO!");
        system("cls || clear");
        break;

1 answer

2


Regarding the space problem use fgets instead of scanf.

Example: fgets(name, 20, stdin);

  • worked out, now my problem comes down to the time it printa, the string it is printing however what is not string it does not print

  • &#xA;Voce deseja:&#xA; 1- Inserir Nova Conta&#xA; 2- Inserir Novo Cliente&#xA;2&#xA;Nome:&#xA;thiago s&#xA;RG:&#xA;5858585&#xA;Endereco:&#xA;rua m&#xA;Telefone:&#xA;191919&#xA;Renda:&#xA;1919&#xA;Tipo de cliente:&#xA; 1- Private: Superior a 1M&#xA; 2- Alta renda: acima de 100mil&#xA; 3- Publico geral&#xA;1&#xA;Cpf ou CNPJ:&#xA;20202020&#xA;Cadastro de Cliente realizado com sucesso!&#xA; Digite 1 para retornar ao menu principal&#xA;

  • Name: Thiago s RG: 6159604 Address: street m Telephone: 6159696 Income: 0.000000 Customer type: 6159820 Cpf or CNPJ: 5683472 Name: 0.000000 Client type: 6160148 Cpf or CNPJ: 5683472 ............. Then he prints it and then duplicates it

Browser other questions tagged

You are not signed in. Login or sign up in order to post.