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()
{
}