Ir ao conteúdo
  • Cadastre-se

C++ Arquivos em linguagem C, Projeto peças(cadastro, alteração, consulta e vendas)


Posts recomendados

Ola, alguem poderia me ajudar? Tenho que fazer um projeto onde basicamente teria que criar um arquivo em C++ para cadastro/alteração de peças, e vendas também. Mas estou travada na parte da venda. Basicamente era pra por o codigo da peca e a quantidade e ela dar baixa no estoque da peça que tinha cadastrado anteriormente mas não vai. Vou por a baixo ate onde foi feito e anexar de imagem o que é pedido, se alguem puder me ajuda em ficaria muito agradecida.


 

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

struct pecas
 {
     char nome[34];
     int codigo;
     float valor;
     int e;
     int quantidade;
 } f;

ARQUIVO * fptr;

 void cadastro();
 void consulta();
 void alteracao();
 void vendas();
 void exclusao_logica();
 void exclusao_fisica();
 void ordenacao();
 void busca_binaria();

int main () 
{ 
  char opc;

  do 
  {system ("cls"); 
      printf ("\ n 1 - Cadastro de peça"); 
      printf ("\ n 2 - Consultar pecas"); 
      printf ("\ n 3 - Alteração de peças"); 
      printf ("\ n 4 - Vendas"); 
      printf ("\ n 5 - Exclusão Lógica"); 
      printf ("\ n 6 - Exclusão física"); 
      printf ("\ n 7 - Ordenação pelo nome"); 
      printf ("\ n 8 - Busca Binaria"); 
      printf ("\ n 9 - Sair"); 
      printf ("\ n Opcao:"); 
      opc = getche (); 
      switch (opc) 
        { 
            case '1': cadastro (); 
                       pausa; 
            caso '2': consulta (); 
                       pausa;
            caso '3': alteracao (); 
                       pausa; 
            caso '4': vendas (); 
                       pausa; 
            caso '5': exclusao_logica (); 
                       pausa; 
            caso '6': exclusao_fisica (); 
                       pausa; 
            caso '7': ordenação (); 
                       pausa; 
            case '8': busca_binaria (); 
                       pausa; 
            case '9': printf ("\ n \ nSaindo ... \ n"); 
                       pausa; 
            padrão: printf ("\ n Opcao% c invalida", opc); 
                       getch (); 
                       pausa;

  } while (opc! = '9'); 
retornar 0; 
}

/ ************************************************* ********************** / 
void cadastro () 
  {char op; 
    if ((fptr = fopen ("pecas.dados", "rb +")) == NULL) 
        {if ((fptr = fopen ("pecas.dados", "wb")) == NULL) 
            {printf ("\ n Erro "); 
                saída (1); 
            } 
        } 
    do 
    { 
        printf ("\ n Entre com os dados para o cadastro de peças \ n"); 
        printf ("\ n Nome:"); 
        setbuf (stdin, NULL); 
        scanf ("% [^ \ n]", f.nome); 
        printf ("\ n Codigo:"); 
        scanf ("% d", & f.codigo); 
        printf ("\ n Valor:");

        printf("\n Quantidade: ");
        scanf("%d", &f.quantidade);
        f.e=0;
        fseek(fptr,0,2);
        fwrite(&f,sizeof(f),1,fptr);
        printf("\n Deseja cadastrar outro (S/N): ");
        op=getche();

    } while ((op! = 'n') && (op! = 'n')); ((op == 'S') || (op == 's')); 
    fclose (fptr); 
  }

  / ************************************************* ************************************* / 
 void consulta () 
  {if (((fptr = fopen ( "pecas.dados", "rb")) == NULL) 
            {printf ("\ n Erro"); 
                saída (1); 
            } 
        printf ("\ n Consulta de todos como partes \ n");

        while (fread (& f, sizeof (f), 1, fptr)) 
        {if (fe == 0) 
               {printf ("\ n \ n Nome:% s", f.nome); 
                printf ("\ n Codigo:% d", f.codigo); 
                printf ("\ n Valor:% .2f", f.valor); 
                printf ("\ n Quantidade:% d", f.quantidade); 
               } 
        } 
        GETCH (); 
        fclose (fptr); 
  }

  / ************************************************* ************************************* / 
 alteração nula () 
  {char nome [34]; 
      if ((fptr = fopen ("pecas.dados", "rb +")) == NULL) 
            {printf ("\ n Erro"); 
                saída (1); 
            } 
        printf ("\ n Entre com o nome da ervilha alterado no valor \ n"); 
        setbuf (stdin, NULL); 
        scanf ("% [^ \ n]", nome);

        Enquanto (fread (& f, sizeof (f), 1, fptr)) 
        {if (strcmp (f.nome, nome) == 0) 
             if (fe == 0) 
               {fseek (fptr, ftell (fptr) -sizeof ( f) 0); // fseek (fptr, -sizeof (fptr), 1); 
                printf ("\ nNovo Valor"); 
                scanf ("% f", & f.valor); 
                fwrite (& f, tamanhoof (f), 1, fptr); 
                fseek (fptr, 0,2); 
               } 
        } 
        Fclose (fptr); 
  } 
  / ************************************************** ****** / 
  void vendas () 
  {int codigovendas, quant; 
    {if ((fptr = fopen ("pecas.dados", "rb")) == NULL) 
            {printf ("\ n Erro"); 
                saída (1); 
            }
        }
             printf("\n Vendas de pecas cadastradas \n");
             printf("\n Digite o nome da peca que vai ser vendida \n");
             scanf("%d", &codigovendas);
             printf("\n Digite a quantidade de pecas que serão vendidas");
             scanf("%d", quant);


               if(codigovendas == f.codigo){
                printf("\n venda concluida");
                f.quantidade = f.quantidade-quant;
               }
               else
               printf("\n codigo n cadastrado");

        getch (); 
        fclose (fptr);

  }

  / ************************************************* ************************************* / 
 void exclusao_logica () 
  {char nome [34 ]; 
      if ((fptr = fopen ("pecas.dados", "rb +")) == NULL) 
            {printf ("\ n Erro"); 
                saída (1); 
            } 
        printf ("\ n Entre com o nome da peça excluído logicamente \ n"); 
        setbuf (stdin, NULL); 
        scanf ("% [^ \ n]", nome);

        Enquanto (fread (& f, sizeof (f), 1, fptr)) 
        {if (strcmp (f.nome, nome) == 0) 
             if (fe == 0) 
               { 
                fseek (fptr, ftell (fptr) -sizeof ( f) 0); 
                fe = 1; 
                fwrite (& f, tamanho de (f), 1, fptr); 
                fseek (fptr, 0,2); 
               } 
        } 
        GETCH (); 
        fclose (fptr);

  }


  /**************************************************************************************/
 void exclusao_fisica()
  {

  }


  /**************************************************************************************/
 void ordenacao()
  {

  }

  /**************************************************************************************/
 void busca_binaria()
  {

  }

a.png

Link para o comentário
Compartilhar em outros sites

Olá

 

Seu programa ainda tem muitos problemas, eu acho

 

  • Não use acentos no código, comentários, variáveis. Só vai dar problema dependendo em que máquina for abrir o código, e em pouco ajuda na prática.
  • case e default são os comandos dentro do case
  • não use variáveis globais a menos que receba em dobro em dinheiro ou em nota. É só problema.Passe parâmetros entre as funções.
  • evite retornar void. É um desperdício. No mínimo pode retornar alguma condição ou valor significativo
  • não altera arquivos diretamente. Pode corromper o arquivo em definitivo. E só dá problema. Ao iniciar o programa carregue os dados a partir dos arquivos no disco. Trabalhe com os dados na memória durante o programa. Na saída grave tudo de volta atualizado
  • não use conio.h isso tem 30 anos e essas funções de pouco servem desde os '90.
  • não use um menu durante os testes. Demora uma eternidade para testar o programa e ficar inventando dados. Use constantes e arquivos e termine o programa. Aí volta lá e escreve um menu, se possível uma função que já retorna a opção escolhida pelo usuário
  • crie seu programa em torno dos dados: Peça e Venda. Use vetores dessas estruturas.
  • Faça o programa aos poucos. Vários pequenos programas são muito mais fáceis e rápidos para testar e escrever e alterar. 

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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