Ola, alguém 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 alguém puder me ajuda em ficaria muito agradecida.
/ ************************************************* ************************************* / 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);
Pergunta
AmandaEstella
Ola, alguém 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 alguém 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()
{
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.