Ir ao conteúdo

Posts recomendados

Postado

Galera beleza, to precisando de ajuda na elaboração de um trabalho. Meu projeto e um programa de cadastro de produtos, estou fazendo o registro dos mesmos em pilhas, preciso criar uma opção que faça busca destes produtos na pilha, por exemplo buscar pelo codigo do produto e ele exibir o registro completo do produto, criei uma opçaõ de ver a pilha completa mas tambem preciso da opção de busca pois é exigida no projeto. Alem disso esta tendo erros para salvar os dados em um arquivo txt, o programa roda normalmente mas sempre da que o arquivo não foi encontrado mesmo ja sendo criado e adicionado na mesma pasta. Se alguém puder solucionar este problemas para mim eu ficaria muito grato!

 

 

 

 

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

using namespace std;


typedef struct cadastro
{
    char produto[30];
    int codigo;
    int quant;
    char valor;
    
    struct cadastro *estoque;
} cadastro;

 cadastro *lista, *topo = NULL;

int i=0;
int n;

FILE *arquivo;

void inserir()
{     printf ("\n\n Quantos produtos deseja cadastrar?: ");
    scanf ("%d",&n);
    
      for (i=0; i<n; i++)
    {
        lista=(cadastro *) malloc (2*sizeof(cadastro));

        fflush(stdin);
        printf("\n\n    Produto: ");
        gets(lista->produto);
         printf("    Codigo: ");
        scanf("%d",&lista->codigo);
        printf("    Quantidade: ");
        scanf("%d",&lista->quant);
        printf("    Valor: R$");
        scanf("%f",&lista->valor);
        lista->estoque=NULL;
        if(topo==NULL) //pilha vazia?
        {
            topo=lista;
                }
        else
        {
            lista->estoque=topo;
            topo=lista;
        }
    }
   
}
void imprimir ()
{
     cadastro *tmp;
    tmp=topo;
    if (tmp==NULL)   //aqui ele testa p/ saber se a pilha está vazia
    {
        printf ("\n\n     PILHA VAZIA! INSIRA UM DADO E TENTE NOVAMENTE.\n");
    }
    else
    {
        while (tmp!=NULL)
        {
            printf("\n\n    Produto: %s\n", tmp->produto);
            printf("    Codigo: %d\n",tmp->codigo);
            printf("    Quantidade: %d\n",tmp->quant);
            printf("    Valor: R$%0.2f\n\n",tmp->valor);
            tmp=tmp->estoque;
        }

    }

}
void deletar ()
{
    char alerta;
    cadastro *del;
    del = topo;
    if (topo == NULL)
    {
        printf ("\n\n     Pilha vazia!\n");
    }
    else
    {
        printf("\n\n      Tem certeza que deseja excluir pilha? (S/N): ");
        scanf("%c",&alerta);
        //tolower
        if (alerta=='s')
        {
            topo = topo -> estoque;
            free(del);
            printf("\n      Pilha apagada! \n");
        }
        if (alerta=='n')
        {
            printf("\n      Pilha apagada! \n");
        }
        if (alerta!='s' && alerta!='n')
        {
            printf("\n\n      Opcao invalida\n");
        }
    }

}
void buscar()
{
    // ?????
}

void backup ()
{
    FILE *arquivo;
    cadastro *tmp;
    tmp = topo;
      arquivo=fopen("estoque.txt","wb");
      
      if(arquivo==NULL)
      {printf("\n Erro na abertura do arquivo \n");
      }else{
      
      if(tmp==NULL)
      {printf("\n Erro ao salvar pois a pilha esta vazia \n");
      }
      while (tmp!=NULL)
    {
        fprintf(arquivo,"\n\n Produto: %s \n",tmp->produto);
        fprintf(arquivo,"     Codigo: %d \n",tmp->codigo);
        fprintf(arquivo,"     Quantidade: %d \n",tmp->quant);
        fprintf(arquivo,"     Valor: %f ",tmp->valor);
        tmp=tmp->estoque;
    }

    fclose(arquivo);
    printf("\n\n    ARQUIVO SALVO COM SUCESSO!\n");
}
}

int main ()
{
    char op_menu=0, op_menu_interno=0; 

    do
    {//Menu
            printf("\n\t____________________\n\n\tREGISTRO DE PRODUTOS\n\t____________________\n\n\n");
            printf("\t1 - Cadastro\n");
            printf("\t2 - Ver cadastros\n");
            printf("\t3 - Excluir cadastro\n");
            printf("\t4 - Buscar produto\n");
            printf("\t5 - Copiar (Backup)\n");
            printf("\t6 - Sair\n\n");
            printf("\tInforme a opcao desejada: ");
            scanf("%d",&op_menu );
        op_menu=tolower(op_menu);
        fflush(stdin); 
        switch(op_menu)
        {
        case 1  :
            fflush(stdin);
            system("cls"); //limpa a tela
            inserir();
            printf("\n");
            do
            {
                printf("    0 - Menu principal: ");
                scanf("%s",&op_menu_interno);
            }
            while (op_menu_interno!='0');
            system("cls");
            break;
            fflush(stdin);
        case 2:
            system("cls");
            imprimir();
            printf("\n");
            do
            {
                printf("    0 - Menu principal: ");
                scanf("%s",&op_menu_interno);
            }
            while (op_menu_interno!='0');
            system("cls");
            break;


        case 3:
            fflush(stdin);
            system("cls");
            deletar();
            printf("\n");
            do
            {
                printf("    0 - Menu principal: ");
                scanf("%s",&op_menu_interno);
            }
            while (op_menu_interno!='0');
            system("cls");
            break;
            
            case 4: // buscar
            
            
            case 5:
            fflush(stdin);
            system("cls");
            backup();
            printf("\n");
            do
            {
                printf("    0 - Menu principal: ");
                scanf("%s",&op_menu_interno);
            }
            while (op_menu_interno!='0');
            system("cls");
            break;
       
        case 6:
            system("cls");
            printf("\n");
            printf("Finalizando programa...");
            printf("\n");
            exit(0);
            break;
        default:
            system("cls");
            printf("Codigo invalido! Digite novamente");
            break;
        }

    }
    while (op_menu!=7);
    return (0);

 

  • Obrigado 1

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...