Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Christiano Bremm

Problema para inserir dados

Recommended Posts

Ao Inserir a mercadoria, programa acusa que ja existe. Não estou achando o problema, alguém consegue?

 

-----------------------------------------------------------------------------------------------------------------

 


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

struct loja
{
    int cod;
    char fornecedor[20];
    float val_forn;
};

struct Comp_forn
{
    int cod;
    int cod_prod;
    char nome_prod[20];
    float val_unit;
    int quantidade;
};
int VerifForn(FILE *arq, char arquivo[100],int cod);

void inserir (FILE *arq, char arquivo[100],int alt);
void verificarF(FILE *arq,char arquivo[100]);
void consultar (FILE *arq, char arquivo[100], int alt);
void apagar(FILE *arq, char arquivo[100], int alt);
void alterar(FILE *arq, char arquivo[100], int alt);


int main()
{   int    A;
    int  B;

    char C;
    char   fornecedor_arq[100] = "fornecedores.txt";
    char   compra_arq[100]      = "compras.txt";

    struct loja fornec;
    struct Comp_forn compras;

    FILE   *arquivo_fornecedor, *arquivo_compras;

    verificarF(arquivo_fornecedor, fornecedor_arq);
    verificarF(arquivo_compras, compra_arq);

    do{
        system("cls");
        printf("=======LOJA DE CHOCOLATE======= \n");
        printf("(1) - INSERIR informações\n");
        printf("(2) - MODIFICAR informações\n");
        printf("(3) - CONSULTAR informações\n");
        printf("(4) - APAGAR informações \n");
        printf("(0) - SAIR\n\n");
        printf("OPCAO DESEJADA : ");
        fflush(stdin);
        C=tolower(getchar());
        system("cls");
        switch (C) {
            case 49:
                printf("==INSERIR==\n");
                printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
                scanf("%i",&A);
                while(A==1 || A==2){
                    if (A==1)
                        inserir(arquivo_fornecedor, fornecedor_arq,A);
                    else
                        inserir(arquivo_compras, compra_arq,A);

system("cls");
                    printf("==INSERIR==\n");
                    printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
                    scanf("%i",&A);
                }
                break;
            case 51:
                printf("==CONSULTAR==\n");
                printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
                scanf("%d",&A);
                while(A==1 || A==2){
                    if (A == 1)
                        consultar(arquivo_fornecedor, fornecedor_arq,A);
                    else
                        consultar(arquivo_compras, compra_arq,A);

system("cls");
                    printf("==CONSULTAR==\n");
                    printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
                    scanf("%d",&A);
                }
                break;
            case 50:
                printf("==MODIFICAR==\n");
                printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
                scanf("%d",&A);
                while(A==1 || A==2){
                    if (A == 1)
                        alterar(arquivo_fornecedor, fornecedor_arq,A);
                    else
                        alterar(arquivo_compras, compra_arq,A);

system("cls");
                    printf("==MODIFICAR==\n");
                    printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
                    scanf("%d",&A);
                }
                break;
            case 52:
                printf("==APAGAR==\n");
                printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
                scanf("%d",&A);
                while(A==1 || A==2){
                    if (A == 1)
                        APAGAR(arquivo_fornecedor, fornecedor_arq,A);
                    else
                        APAGAR(arquivo_compras, compra_arq,A);

system("cls");
                    printf("==APAGAR==\n");
                    printf("1-FORNECEDOR \n2-MERCADORIAS\n3-SAIR\nOPCAO: ");
                    scanf("%d",&A);
                }
                break;
            case 48:
                exit(1);
            default:
                printf("==OPCAO INVALIDA==\n");
                getch();
                break;

        }
    } while (C != 48);

    return 0;
}


void verificarF(FILE *arq, char arquivo[100]){
    arq = fopen(arquivo, "rb+");
    if(arq == NULL){
        arq = fopen(arquivo,"wb+");
        if(arq == NULL){
            printf("==ARQUIVO COM PROBLEMA NA CRIACAO OU ABERTURA==\n");
            exit(1);
        }
    }
}


void inserir(FILE *arq, char arquivo[100],int alt)
{
    arq = fopen(arquivo, "rb+");
    char XYZ[25];
    int  iXYZ;

    if (alt == 1){

        struct loja sXYZ;

        printf("INSIRA O CODIGO DO FORNECEDOR:\n");
        fflush(stdin);
        gets(XYZ);
        iXYZ = VerifForn(arq, arquivo,atoi(XYZ));
        while(iXYZ==1){
            printf("==JA CRIADO==\n");
            printf("INSIRA O CODIGO DO FORNECEDOR: ");
            gets(XYZ);
            iXYZ = VerifForn(arq, arquivo,XYZ);
            fflush(stdin);

        }
        sXYZ.cod = atoi(XYZ);
        printf("INSIRA O NOME DO FORNECEDOR: \n");
        gets(sXYZ.fornecedor);
        fflush(stdin);
        sXYZ.val_forn=0;
        fseek(arq,0,SEEK_END);
        fwrite(&sXYZ, sizeof(struct loja), 1, arq);
    }
    else{
        struct Comp_forn sXYZ;
        printf("INSIRA O CODIGO DO FORNECEDOR: \n");
        fflush(stdin);
        gets(XYZ);

        iXYZ = VerifForn(arq, arquivo,XYZ);
        while(iXYZ==0){
            printf("==JA CRIADO==\n");
            printf("INSIRA O CODIGO DO FORNECEDOR:\n");
            fflush(stdin);
            gets(XYZ);
            iXYZ = VerifForn(arq, arquivo,XYZ);
        }

        sXYZ.cod=atoi(XYZ);
        fflush(stdin);
        printf("INSIRA O CODIGO DO PRODUTO: \n");
        gets(XYZ);
        sXYZ.cod_prod = atoi(XYZ);
        fflush(stdin);
        printf("INSIRA O NOME DO PRODUTO: \n");
        gets(sXYZ.nome_prod);
        fflush(stdin);
        printf("INSIRA O PRECO DO PRODUTO:\n");
        scanf("%.2f", &sXYZ.val_unit);
        fflush(stdin);
        printf("INSIRA A QUANTIDADE COMPRADA DO PRODUTO: \n");
        scanf("%i", &sXYZ.quantidade);
        fflush(stdin);

        fseek(arq,0,SEEK_END);
        fwrite(&sXYZ,sizeof(struct Comp_forn),1, arq);
    }

    fclose(arq);
    printf("REGISTRO EXECUTADO! PRESSIONE ENTER PARA PROSSEGUIR\n");
    getch();
    system("cls");
}

void consultar (FILE *arq, char arquivo[100], int alt)
{


    if (alt == 1){
        struct loja fornecedor;
        int cod, ok = 0;
        char XYZ[25];

        fflush(stdin);
        arq = fopen(arquivo, "rb+");

        printf("INSIRA O CODIGO DO FORNECEDOR\n");
        fflush(stdin);
        gets(XYZ);
        cod = atoi(XYZ);

        rewind(arq);
        while(!feof(arq) && ok==0){

            fread(&fornecedor, sizeof(struct loja), 1, arq);

            if(fornecedor.cod == cod) {
                 printf("NOME DO FORNECEDOR: %s\n", fornecedor.fornecedor);
                 ok = 1;
            }
        }

        if (ok == 0){
            printf("NADA ENCONTRADO!\n");
        }

    } else {


        struct Comp_forn compras;
        int cod, ok = 0;
        char XYZ[25];
        fflush(stdin);
        arq = fopen(arquivo, "rb+");
        printf("INFORME O CODIGO DO PRODUTO: \n");
        fflush(stdin);
        gets(XYZ);
        cod = atoi(XYZ);
        rewind(arq);
        while(!feof(arq) && ok==0){

            fread(&compras, sizeof(struct Comp_forn), 1, arq);

            if(compras.cod_prod == cod) {
                 printf("CODIGO DO FORNECEDOR: %i \n", compras.cod);
                 printf("CODIGO DO PRODUTO: %i \n", compras.cod_prod);
                 printf("NOME DO PRODUTO: %s \n", compras.nome_prod);
                 printf("QUANTIDADE COMPRADA: %i \n", compras.quantidade);
                 printf("VALOR (und): %.2f \n", compras.val_unit);
                 ok = 1;
            }
        }

        if (ok == 0){
            printf("NADA ENCONTRADO\n");
        }

    }

     fclose(arq);
     printf("PRESSIONE ENTER\n");
     getch();
}

void APAGAR(FILE *arq, char arquivo[100], int alt)
{


    if (alt == 1){
        struct loja fornecedor;
        int cod, ok = 0, stop = -1;
        char XYZ[25];
        fflush(stdin);
        arq = fopen(arquivo, "rb+");
        printf("INFORME O CODIGO DO FORNECEDOR: \n");
        fflush(stdin);
        gets(XYZ);
        cod = atoi(XYZ);
        rewind(arq);
        while(!feof(arq) && ok == 0){
            stop++;
            fread(&fornecedor, sizeof(struct loja), 1, arq);

            if(fornecedor.cod == cod) {
                 printf("NOME DO FORNECEDOR: %s \n", fornecedor.fornecedor);
                 ok = 1;
            }
        }

        if (ok != 0){

            int escolha;
            printf("DESEJA APAGAR FORNECEDOR? %s (SIM = 1, NAO = 0)?", fornecedor.fornecedor);
            fflush(stdin);
            scanf("%i", &escolha);

            if (escolha == 1){
                fornecedor.cod = 999;
                fseek(arq, sizeof(struct loja) *stop, SEEK_SET);
                fwrite(&fornecedor,sizeof(struct loja),1, arq);
                printf("==REGISTRO APAGADO==\n");
            }
        } else {
            printf("==NADA ENCONTRADO==\n");
        }
    } else {


        struct Comp_forn compras;
        int cod, ok = 0, stop = -1;
        char XYZ[25];

        fflush(stdin);
        arq = fopen(arquivo, "rb+");
        printf("INFORME O CODIGO DO PRODUTO:\n");
        fflush(stdin);
        gets(XYZ);
        cod = atoi(XYZ);
        rewind(arq);

        while(!feof(arq) && ok==0){

            stop++;
            fread(&compras, sizeof(struct Comp_forn), 1, arq);

            if(compras.cod_prod == cod) {
                 ok = 1;
            }
        }

        if (ok != 0){

            int escolha;
            printf("APAGAR PRODUTO? %s (SIM = 1, NAO = 0)?", compras.nome_prod);
            fflush(stdin);
            scanf("%i", &escolha);

            if (escolha == 1){
                compras.cod_prod = 999;
                compras.cod  = 999;
                fseek(arq, sizeof(struct Comp_forn) *stop, SEEK_SET);
                fwrite(&compras,sizeof(struct Comp_forn),1, arq);
                printf("==REGISTRO EXCLUIDO==\n");
            }
        } else {
            printf("==NADA ENCONTRADO==\n");
        }

    }

     fclose(arq);
     printf("TECLE ENTER\n");
     getch();
}

void alterar(FILE *arq, char arquivo[100], int alt)
{


    if (alt == 1){
        struct loja fornecedor;
        int cod, ok = 0, stop = -1;
        char XYZ[25];

        fflush(stdin);
        arq = fopen(arquivo, "rb+");
        printf("INFORME O CODIGO DO FORNECEDOR: \n");
        fflush(stdin);
        gets(XYZ);
        cod = atoi(XYZ);
        rewind(arq);
        while(!feof(arq) && ok==0){

            stop++;
            fread(&fornecedor, sizeof(struct loja), 1, arq);
            if(fornecedor.cod == cod) {
                 printf("NOME DO FORNECEDOR: %s \n", fornecedor.fornecedor);
                 ok = 1;
            }
        }

        if (ok != 0){

            struct loja insertdados;

            insertdados.cod = fornecedor.cod;
            insertdados.val_forn = fornecedor.val_forn;
            printf("INSIRA NOVO NOME: \n");
            fflush(stdin);
            scanf("%s", &insertdados.fornecedor);
            fseek(arq, sizeof(struct loja) *stop, SEEK_SET);
            fwrite(&insertdados, sizeof(struct loja),1, arq);
            printf("==informações ALTERADAS==\n");

        } else {
            printf("==NADA ENCONTRADO==\n");
        }
    } else {

        struct Comp_forn compras;
        int cod, ok = 0, stop = -1;
        char XYZ[25];

        fflush(stdin);
        arq = fopen(arquivo, "rb+");
        printf("INSIRA O CODIGO DO PRODUTO:\n");
        fflush(stdin);
        gets(XYZ);
        cod = atoi(XYZ);
        rewind(arq);
        while(!feof(arq) && ok==0){

            stop++;
            fread(&compras, sizeof(struct Comp_forn), 1, arq);

            if(compras.cod_prod == cod) {
                 ok = 1;
            }
        }

        if (ok != 0){
            struct Comp_forn insertdados;

            insertdados.cod = compras.cod;
            insertdados.cod_prod = compras.cod_prod;

            printf("NOVO NOME DO PRODUTO:\n");
            fflush(stdin);
            scanf("%s", &insertdados.nome_prod);
            printf("NOVO VALOR (und):\n");
            fflush(stdin);
            scanf("%s", &insertdados.val_unit);
            printf("NOVA QUANTIDADE DE COMPRA:\n");
            fflush(stdin);
            scanf("%s", &insertdados.quantidade);

            fseek(arq, sizeof(struct Comp_forn) *stop, SEEK_SET);
            fwrite(&insertdados, sizeof(struct Comp_forn),1, arq);
            printf("==informações ALTERADAS==\n");
        } else {
            printf("==NADA ENCONTRADO==\n");
        }

    }

     fclose(arq);
     printf("==PRESSIONE ENTER==\n");
     getch();
}

    struct loja fornecedor;
    int VerifForn(FILE *arq, char arquivo[100],int cod){
    int ok = 0;

    rewind(arq);
    while(!feof(arq) && ok==0){
        fread(&fornecedor, sizeof(struct loja), 1, arq);
        if(fornecedor.cod == cod) {
            ok = 1;
        }
    }

    return(ok);
}
 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×