Amanda Estella Posted June 29, 2020 at 10:19 PM Share Posted June 29, 2020 at 10:19 PM 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 tbm. 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 aonde foi feito e anexar de imagem oq é 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; FILE *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 peca"); printf("\n 2 - Consultar pecas"); printf("\n 3 - Alteracao de pecas"); printf("\n 4 - Vendas"); printf("\n 5 - Exclusao Logica"); printf("\n 6 - Exclusao Fisica"); printf("\n 7 - Ordenacao pelo nome"); printf("\n 8 - Busca Binaria"); printf("\n 9 - Sair "); printf("\n Opcao: "); opc=getche(); switch (opc) { case '1': cadastro(); break; case '2': consulta(); break; case '3': alteracao(); break; case '4': vendas(); break; case '5': exclusao_logica(); break; case '6': exclusao_fisica(); break; case '7': ordenacao(); break; case '8': busca_binaria(); break; case '9': printf("\n\nSaindo...\n"); break; default : printf("\n Opcao %c invalida", opc); getch(); break; } } while (opc!='9'); return 0; } /***********************************************************************/ void cadastro() { char op; if ((fptr=fopen("pecas.dados", "rb+"))==NULL) {if ((fptr=fopen("pecas.dados", "wb"))==NULL) { printf("\n Erro"); exit(1); } } do { printf("\n Entre com os dados para o cadastro de pecas \n"); printf("\n Nome: "); setbuf(stdin, NULL); scanf("%[^\n]",f.nome); printf("\n Codigo: "); scanf("%d",&f.codigo); printf("\n Valor: "); scanf("%f", &f.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"); exit(1); } printf("\n Consulta de todos as pecas \n"); while (fread(&f,sizeof(f),1,fptr)) { if (f.e==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); } /**************************************************************************************/ void alteracao() { char nome[40]; if ((fptr=fopen("pecas.dados", "rb+"))==NULL) { printf("\n Erro"); exit(1); } printf("\n Entre com o nome da pea a ser alterado o valor\n"); setbuf(stdin, NULL); scanf("%[^\n]",nome); while (fread(&f,sizeof(f),1,fptr)) { if (strcmp(f.nome,nome)==0) if (f.e==0) {fseek(fptr,ftell(fptr)-sizeof(f),0); // fseek(fptr,-sizeof(fptr),1); printf("\nNovo Valor "); scanf("%f",&f.valor); fwrite(&f,sizeof(f),1,fptr); fseek(fptr,0,2); } } fclose(fptr); } /******************************************************/ void vendas() { int codigovendas, quant; { if ((fptr=fopen("pecas.dados", "rb"))==NULL) { printf("\n Erro"); exit(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 seram 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[40]; if ((fptr=fopen("pecas.dados", "rb+"))==NULL) { printf("\n Erro"); exit(1); } printf("\n Entre com o nome da peca a ser excluida logicamente\n"); setbuf(stdin, NULL); scanf("%[^\n]",nome); while (fread(&f,sizeof(f),1,fptr)) { if (strcmp(f.nome,nome)==0) if (f.e==0) { fseek(fptr,ftell(fptr)-sizeof(f),0); f.e=1; fwrite(&f,sizeof(f),1,fptr); fseek(fptr,0,2); } } getch(); fclose(fptr); } /**************************************************************************************/ void exclusao_fisica() { } /**************************************************************************************/ void ordenacao() { } /**************************************************************************************/ void busca_binaria() { } Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.