Ir ao conteúdo

Problema de Programação


En.mil

Posts recomendados

Postado

Galera, recebi esse trabalho de Struct aqui para resolver:

O programa deverá constar de:

1.  Strutc com as seguintes informações:

• Código do produto
• Descrição
• Quantidade
• Preço de custo
• Percentual de venda
• Preço de venda (calculado)
• Data de validade
• Desconto máximo
• Habilitado (campo que poderá desabilitar um remédio que parou de ser fabricado)

2.  Arquivo binário

3.  Menu

• Incluir novo produto (realloc)
• Listar
• Pesquisa - Busca
       o Pelo código
       o Pela descrição
• Edição de produto
• Valor de Estoque (quantidade e valor)
• Venda
• Entrada de produto
• Relação dos produtos com quant. Abaixo de 5 produtos
• Venda do dia
• Salvar tabela temporariamente
• Fechamento do dia

4.  Montar uma tabela com a quantidade de produtos que estão no arquivo binário

5.  O produto só poderá ser desabilitado com o programa em desenvolvimento

6.  Ao término do dia fechar programa e gravar todos os produtos habilitados.

7.  Descartar os produtos desabilitados do estoque enão constar do valor total de estoque

8.  Após cada venda informar ao usuário valor da compra

Será que alguém pode me ajudar?

Postado

Então, esse foi o programa que eu consegui desenvolver até agora.. Mas tem algumas coisas que estou em dúvida e precisando de ajuda..

 

#include "stdio.h"#include "stdlib.h"#include "string.h"struct dados{    int cod;    char desc[100];    int quant;    float pcusto;    float perc;    float pvenda;    char data[100];    float desc;    int hab;};typedef struct dados cad;int menu(){    int x;    printf ("\n\t======== MENU ========");    printf ("\n\t(1) - Inserir um novo produto");    printf ("\n\t(2) - Listar produtos");    printf ("\n\t(3) - Busca por código");    printf ("\n\t(4) - Busca pela descricão");    printf ("\n\t(5) - Edicao de produto");    printf ("\n\t(6) - Valor do estoque");    printf ("\n\t(7) - Venda");    printf ("\n\t(8) - Entrada de produto");    printf ("\n\t(9) - Produtos com quantidade abaixo de 5 produtos");    printf ("\n\t(10) - Venda do dia");    printf ("\n\t(11) - Salvar tabela temporariamente");    printf ("\n\t(12) - Fechamento do dia");    printf ("\n\t(0) - Sair");    printf ("\n\n\tEscolha uma opcao: ");    scanf("%d",&x);    return x;}void leitura(cad func[], int qtd){    int i;    for(i=0;i<qtd;i++){        printf ("\n\tInsira o codigo: ");        scanf ("%d",&func[i].codigo);        getchar();        printf ("\n\tInsira a descricao: ");        gets (func[i].desc)        printf ("\n\tInsira a quantidade: ");        scanf ("%d",&func[i].quant);        printf ("\n\tInsira o preco de custo: ");        scanf ("%d",&func[i].pcusto);        printf ("\n\tInsira o percentual de venda: ");        scanf ("%d",&func[i].perc);        func[i].pvenda=(func[i].pcusto*func[i].perc);        getchar();        printf ("\n\tInsira a data de validade: ");        gets(func[i].data);        printf ("\n\tInsira o desconto maximo: ");        scanf ("%f",&func[i].desc);        printf ("\n\tHabilitado? (1) Sim (2) Nao: ");        scanf ("%d",&func[i].hab);    }}///o "cad func[] pode ser utilizado para todos os termos da struct func?void listar(cad func[], int qtd){    int i;    for(i=0;i<qtd;i++){        printf ("\n\tCodigo: %d",func[i].codigo);        printf ("\n\tDescricao: %s",func[i].desc);        printf ("\n\tQuantidade: %d",func[i].quant);        printf ("\n\tPreco de custo: %d",func[i].pcusto);        printf ("\n\tPercentual de venda: %d",func[i].perc);        printf ("\n\tPreco de Venda: %d",func[i].pvenda);        printf ("\n\tData de validade: %d",func[i].data);        printf ("\n\tDesconto maximo: %d",func[i].desc);        if(func[i].hab==1)            printf ("\n\tHabilitado!");        if(func[i].hab==2)            printf("\n\tNao Habilitado!");    }}void buscacod(cad func[].cod, int num,int qtd){    int i;    for(i=0;i<qtd;i++){        if(num==func[i].cod){            printf ("\n\tCodigo: %d",func[i].codigo);            printf ("\n\tDescricao: %s",func[i].desc);            printf ("\n\tQuantidade: %d",func[i].quant);            printf ("\n\tPreco de custo: %d",func[i].pcusto);            printf ("\n\tPercentual de venda: %d",func[i].perc);            printf ("\n\tPreco de Venda: %d",func[i].pvenda);            printf ("\n\tData de validade: %d",func[i].data);            printf ("\n\tDesconto maximo: %d",func[i].desc);            if(func[i].hab==1)                printf ("\n\tHabilitado!");            if(func[i].hab==2)                printf("\n\tNao Habilitado!");        }    }}/// Não tenho certeza se a busca de descrição ficou legal..void buscadesc(cad func[].desc, char busca[100], int qtd){    int i;    for(i=0;i<qtd;i++){        if(busca==func[i].cod){            printf ("\n\tCodigo: %d",func[i].codigo);            printf ("\n\tDescricao: %s",func[i].desc);            printf ("\n\tQuantidade: %d",func[i].quant);            printf ("\n\tPreco de custo: %d",func[i].pcusto);            printf ("\n\tPercentual de venda: %d",func[i].perc);            printf ("\n\tPreco de Venda: %d",func[i].pvenda);            printf ("\n\tData de validade: %d",func[i].data);            printf ("\n\tDesconto maximo: %d",func[i].desc);            if(func[i].hab==1)                printf ("\n\tHabilitado!");            if(func[i].hab==2)                printf("\n\tNao Habilitado!");        }    }}void editar(cad func[], int num, int qtd){    int i;    for(i=0;i<qtd;i++){        if(num==func[i].cod){            printf ("\n\tInsira o codigo: ");            scanf ("%d",&func[i].codigo);            getchar();            printf ("\n\tInsira a descricao: ");            gets (func[i].desc)            printf ("\n\tInsira a quantidade: ");            scanf ("%d",&func[i].quant);            printf ("\n\tInsira o preco de custo: ");            scanf ("%d",&func[i].pcusto);            printf ("\n\tInsira o percentual de venda: ");            scanf ("%d",&func[i].perc);            func[i].pvenda=(func[i].pcusto*func[i].perc);            getchar();            printf ("\n\tInsira a data de validade: ");            gets(func[i].data);            printf ("\n\tInsira o desconto maximo: ");            scanf ("%f",&func[i].desc);            printf ("\n\tHabilitado? (1) Sim (2) Nao: ");            scanf ("%d",&func[i].hab);        }        else            printf("\n\nCodigo não encontrado!");    }}float valorest(cad func[].pcusto, int qtd){    int i;    float soma=0;    for(i=0;i<qtd;i++){        soma+=func[i].pcusto;    }}///Não sei como adicionar nessa função venda, para depois aparecer na venda do dia..void venda(cad func[].cod, int num,int qtd, int v){    int i,v;    for(i=0;i<qtd;i++){        if(num==func[i].cod){            printf("\n\nProduto vendido:");            printf ("\n\tCodigo: %d",func[i].codigo);            printf ("\n\tDescricao: %s",func[i].desc);            printf ("\n\tQuantidade: %d",v;            printf ("\n\tPreco de Venda: %d",func[i].pvenda);            printf ("\n\tData de validade: %d",func[i].data);            printf ("\n\tDesconto maximo: %d",func[i].desc);            ///Não sei se é assim que vou adicionar o novo valor da quantidade..            func[i].quant=func[i].quant-v;        }        else            printf("\n\nCodigo não encontrado!");    }}/// Fiquei em dúvida se usaria uma função entrada ou se poderia usar simplesmente um for no switchint entrada(cad func[].cod, int num,int qtd){    int i;    for(i=0;i<qtd;i++){        if(func[i].cod==num){            func[i].quant=func[i].quant+v;        }        else            printf("\n\nCodigo não encontrado!");    }int main(){    cad*func;    FILE*a;    int x=1,y,i;    while(x!=0){        menu();        /// Não sei se deveria abrir o arquivo aqui ou em cada case do switch                printf("\n\n")        a=fopen("dados.bin","rb");        fread(qtd,sizeof(int),1,a);        fread(func,sizeof(struct dados),qtd,a);        a=fopen("dados.bin","wb");        switch(x){        case 1:            y=qtd+2;            func:(struct dados*)realloc(func,(y)*sizeof(struct dados);            for(i=qtd;i<y;i++){                printf("\n\nCodigo do novo produto = ");                scanf("%d",&func[i].cod);                getchar();                printf("\n\nDescricao = ");                gets(func[i].desc);                printf("\n\nQuantidade = ");                scanf("%f",&func[i].quant);                printf("\n\nPreco de custo = ");                scanf("%f",&func[i].pcusto);                printf("\n\nPercentual de venda = ");                scanf("%f",&func[i].perc);                printf("\n\nPreco de venda = ");                scanf("%f",&func[i].pvenda);                printf("\n\nData de validade = ");                scanf("%d",&func[i].data);                printf("\n\nDesconto Maximo = ");                scanf("%f",&func[i].desc);                printf("\n\nHabilitado? (1) Sim (2) Nao")                scanf("%d",&func[i].hab);            }                        break;        case 2:            /// Listar é: listar(func,qtd) ou listar(cad func[].cod,qtd)?                listar(func,qtd);            break;        case 3:            printf("\n\nDigite o codigo para busca = ");            scanf("%d",&num);            buscacod(func,num,qtd);            break;        case 4:            getchar();            printf("\n\nDigite a descricao para busca = ");            gets(desc);            buscadesc(func,num,qtd);            break;        case 5:            printf("\n\nDigite o codigo do produto para edicao = ");            scanf("%d",&num);            editar(func,num,qtd);            break;        case 6:            valorest(func,qtd);            fclose(a);            break;        case 7:            printf("\n\nDigite o codigo do produto vendido = ");            scanf("%d",&num);            printf("\n\nDigite a quantidade de produto vendido = ");            scanf("%d",&v);            venda(func,num,qtd,v);            break;        case 8:            printf("\n\nDigite o codigo do produto = ");            scanf("%d",&num);            printf("\n\nDigite a quantidade de produto = ");            scanf("%d",&v);            for(i=0;i<qtd;i++){                if(num==func[i].cod){                   func[i].quant=func[i].quant+v;                }            }            break;        case 9:            for(i=0;i<qtd;i++){                if(func[i].quant<5){                    printf("\n\nProdutos com quantidades menores que 5:");                    printf ("\n\tCodigo: %d",func[i].codigo);                    printf ("\n\tQuantidade: %d",func[i].quant);                }            }            break;        case 10:            ///        case 11:                        fwrite(*y,sizeof(struct dados),1,a);            fwrite(func,sizeof(struct dados),y,a);            fclose(a);        case 12:                        ///        }    }}

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!