Ir ao conteúdo
  • Cadastre-se

C++ Programa para gerir loja(lista ligada(encadeada))


josilva00

Posts recomendados

Nos últimos dias, tenho estado a trabalhar num programa que gerencia uma mercearia usando listas ligadas.

header:

#ifndef _MINIPROJETO_H
#define _MINIPROJETO_H

#include <iostream>
#include <string>
using namespace std;



class no_produto
{
public:
    unsigned int codigo;
    char nome[51];
    char marca[51];
    char tipo[51];
    double preco;
    no_produto* prox; //referencia para o proximo no

};

class lista_produto
{
private:
    no_produto* cabeca;//1º

public:
    lista_produto()
    {
        cabeca=NULL;
    }

    ~lista_produto()
    {
            no_produto *atual, *prox;
            atual=cabeca;
            while(atual!=NULL)
            {
                prox=atual->prox;
                delete atual;
                atual=prox;
            }
    }
    void novoProduto(unsigned int codigo,char nome[],char marca[],char tipo[],double preco);
    void elimina(unsigned int codigo);
    void mostraProdutos(void);
    void mostraProduto(unsigned int codigo);
    void modificaPVP(unsigned int codigo);
    unsigned int contaProdutos(void);
    void escolheProduto(unsigned int codigoVenda);
    double devolvePreco(unsigned int codigo);

};




class no_vendas
{
public:
    unsigned int codigoVenda, dia, mes, ano, numeroItens;
    double precoTotal;


    no_vendas* proxi; //referencia para o proximo no

};
class lista_vendas
{
private:
    no_vendas* cabecaV;//1º

public:
    lista_vendas()
    {
        cabecaV=NULL;
    }

    ~lista_vendas()
    {
            no_vendas *atual, *proxi;
            atual=cabecaV;
            while(atual!=NULL)
            {
                proxi=atual->proxi;
                delete atual;
                atual=proxi;
            }
    }
    void novaVenda(unsigned int codigoVenda);
    void mostraVenda(unsigned int codigoVenda);
    void mostraVendas(void);
    void mostraPrecoTotal(unsigned int codigoVenda);

};




class no_itens_vendas
{
public:
    unsigned codigoVendaI,codigoProduto,quantidade;
    double custoTotal;


    no_itens_vendas* proxim; //referencia para o proximo no

};

class lista_itens_vendas
{
private:
    no_itens_vendas* cabecaIV;
public:
    lista_itens_vendas()
    {
        cabecaIV=NULL;
    }

    ~lista_itens_vendas()
    {
            no_itens_vendas *atual, *proxim;
            atual=cabecaIV;
            while(atual!=NULL)
            {
                proxim=atual->proxim;
                delete atual;
                atual=proxim;
            }
    }
    void novoItemVenda(unsigned int codigoProduto, unsigned int quantidade, unsigned int codigoVendaI);
    double devolveCustodaVenda(unsigned int codigoVenda);
    unsigned int contaItensVenda(unsigned int codigoVenda);

};

metodos:

    #include <iostream>
    #include "miniprojeto.h"

    using namespace std;



    void lista_produto::novoProduto(unsigned int codigo,char nome[],char marca[],char tipo[],double preco)
    {
        no_produto *novo=new no_produto;
        no_produto *atual;
        int i;
        novo->codigo=codigo;
        for(i=0; nome[i] != '\0'; i++)
        {
            novo->nome[i] = nome[i];
        }
        for(i=0; marca[i] != '\0'; i++)
        {
            novo->marca[i] = marca[i];
        }
        for(i=0; tipo[i] != '\0'; i++)
        {
            novo->tipo[i] = tipo[i];
        }


        novo->preco=preco;
        novo->prox=NULL;

        if(cabeca==NULL)
        {
        cabeca=novo;
        }else
        {
            atual=cabeca;
            while(atual->prox!=NULL)
                atual=atual->prox;
            atual->prox=novo;
        }
    }
    void lista_produto::elimina(unsigned int codigo)
    {
        no_produto *atual=cabeca;//comeco pela cabeca
        no_produto *anterior;
        if(cabeca==NULL) return;
        else{
            anterior=NULL;
            while(atual!=NULL){
                if(atual->codigo==codigo){
                    if(anterior==NULL)
                        cabeca=atual->prox;
                    else
                        anterior->prox=atual->prox;
                    delete(atual);
                    return;
                }
                anterior=atual;
                atual=atual->prox;
            }
        }

    }

    void lista_produto::mostraProdutos()
    {
       no_produto *atual=cabeca;
       if(cabeca==NULL) cout << "Lista Vazia..." << endl;
       else
        {
            while(atual!=NULL)
            {
                cout << atual->codigo << ", "<< atual->nome << ", "<< atual->marca << ", "<< atual->tipo << ", "<< atual->preco << endl; // tarefa a fazer em cada nó
                atual = atual->prox;
            }

        }
    }
    void lista_produto::mostraProduto(unsigned int codigo)
    {
       no_produto *atual=cabeca;
       if(cabeca==NULL) cout << "Lista Vazia..." << endl;
       else
        {
            while(atual!=NULL)
            {
                if(atual->codigo==codigo)
                {
                    cout << atual->codigo << ", "<< atual->nome << ", "<< atual->marca << ", "<< atual->tipo << ", "<< atual->preco << endl;
                    return ;
                }
                atual = atual->prox;

            }
            cout << "Produto nao encontrado" << endl;

        }
    }


    void lista_produto::modificaPVP(unsigned int codigo)
    {
        no_produto *atual=cabeca;//comeco pela cabeca
        if(cabeca==NULL) return;
        else{
            while(atual!=NULL)
            {
                if(atual->codigo==codigo)
                {
                    double preco;
                    cout<<"Insira o novo preco:";
                    cin>>preco;
                    atual->preco=preco;
                    cout<<"\nSucesso\n";
                    return;
                }
                atual=atual->prox;
            }
            cout << "Produto nao encontrado" << endl;
        }
    }


    unsigned int lista_produto::contaProdutos()
    {
        no_produto* aux=cabeca;
        unsigned int count=0;
        while (aux != NULL)
        {
            count++;
            aux = aux->prox;
        }
        return count;

    }
    void lista_produto::escolheProduto(unsigned int codigoVenda)
    {
        mostraProdutos();
        unsigned int codigo, quantidade;
        cout<<"Escolha um produto(codigo):";
        cin>>codigo;
        cout<<"\nQuantos quer adicionar:";
        cin>>quantidade;
        if(quantidade==0) return;

        novoItemVenda(codigo,quantidade, codigoVenda);


    }
    double lista_produto::devolvePreco(unsigned int codigo)
    {
        no_produto *atual=cabeca;//comeco pela cabeca
        if(cabeca==NULL) return 0;
        else
        {
            while(atual!=NULL)
            {
                if(atual->codigo==codigo)
                {
                    return atual->preco;
                }
                atual=atual->prox;
            }
        }

    }



    void lista_vendas::novaVenda(unsigned int codigoVenda)
    {
        no_vendas *novo=new no_vendas;
        no_vendas *atual;
        unsigned int n;
        cout<<"Quantos produtos quer adicionar a venda:";
        cin>>n;
        for(int i=0;i<n;i++)
        {
            escolheProduto(codigoVenda);
        }

        novo->codigoVenda=codigoVenda;
        novo->numeroItens=n;
        novo->precoTotal=devolveCustodaVenda(codigoVenda);
        cout<<"Insira o dia:";
        cin>>novo->dia;
        cout<<"Insira o mes:";
        cin>>novo->mes;
        cout<<"Insira o ano:";
        cin>>novo->ano;


        novo->proxi=NULL;

        if(cabecaV==NULL)
        {
            cabecaV=novo;
        }
        else
        {
            atual=cabecaV;
            while(atual->proxi!=NULL)
            {
                atual=atual->proxi;
            }
            atual->proxi=novo;
        }
    }

    void lista_vendas::mostraVenda(unsigned int codigoVenda)
    {
        no_vendas *atual=cabecaV;
       if(cabecaV==NULL) cout << "Nao existe" << endl;
       else
        {
            while(atual!=NULL)
            {
                if(atual->codigoVenda==codigoVenda)
                {
                    cout << atual->codigoVenda << ", "<< atual->dia << "."<< atual->mes << "."<< atual->ano << ", "<< atual->numeroItens<< ", "<<atual->precoTotal<< endl;
                    return;
                }

                atual = atual->proxi;
            }
            cout<<"Venda nao encontrada";

        }
    }
    void lista_vendas::mostraVendas()
    {
        no_vendas *atual=cabecaV;
       if(cabecaV==NULL) cout << "Nao existem vendas" << endl;
       else
        {
            while(atual!=NULL)
            {
                cout << atual->codigoVenda << ", "<< atual->dia << "."<< atual->mes << "."<< atual->ano << ", "<< atual->numeroItens<< ", "<<atual->precoTotal<< endl;
            }

                atual = atual->proxi;
            }

    }
    void lista_vendas::mostraPrecoTotal(unsigned int codigoVenda)
    {
        no_vendas *atual=cabecaV;
       if(cabecaV==NULL) cout << "Nenhuma venda" << endl;
       else
        {
            while(atual!=NULL)
            {
                if(atual->codigoVenda==codigoVenda)
                {
                    cout<<atual->precoTotal;
                    break;
                }
                atual = atual->proxi;
            }


        }
    }



    double lista_itens_vendas::devolveCustodaVenda(unsigned int codigoVenda)
    {
        no_itens_vendas *atual=cabecaIV;
        double p=0;
       if(cabecaIV==NULL) cout << "Nao existe" << endl;
       else
        {

            while(atual!=NULL)
            {
                if(atual->codigoVendaI==codigoVenda)
                {
                    p=p+atual->custoTotal;
                }
                atual = atual->proxim;
            }
            return p;

        }
    }
    unsigned int lista_itens_vendas::contaItensVenda(unsigned int codigoVenda)
    {
        no_itens_vendas *atual=cabecaIV;
        unsigned int p=0;
       if(cabecaIV==NULL) cout << "Nao existe" << endl;
       else
        {

            while(atual!=NULL)
            {
                if(atual->codigoVendaI==codigoVenda)
                {
                    p=p+1;
                }
                atual = atual->proxim;
            }
            return p;

        }
    }

    void lista_itens_vendas::novoItemVenda(unsigned int codigoProduto, unsigned int quantidade, unsigned int codigoVendaI)
    {
        no_itens_vendas *novo=new no_itens_vendas;
        no_itens_vendas *atual;


        atual->codigoProduto=codigoProduto;
        atual->quantidade=quantidade;
        atual->codigoVendaI=codigoVendaI;
        atual->custoTotal=quantidade*(devolvePreco(codigoProduto));
        novo->proxim=NULL;

        if(cabecaIV==NULL)
        {
        cabecaIV=novo;
        }else
        {
            atual=cabecaIV;
            while(atual->proxim!=NULL)
                atual=atual->proxim;
            atual->proxim=novo;
        }
    }


E por fim o main(ainda nao acabado):

#include <iostream>
#include "miniprojeto.h"

using namespace std;


void mainMenu()
{
        cout << "-------------------------------------------------" << endl;
        cout << "|\tPrograma de Gestao de Supermercados\t|"<< endl;
        cout << "-------------------------------------------------" << endl << endl;

        cout << "Comece por selecionar uma das seguintes opções" << endl << endl;
        cout << "1-> Produtos" << endl;
        cout << "2-> Venda" << endl;
        cout << "3-> Inventario" << endl;
        cout << "4-> Faturacao" << endl;
        cout << "5-> Sair" << endl << endl;
}

int main()
{
    int op;
    unsigned int c;
    char n[51];
    char m[51];
    char t[51];
    double p;
    lista_produto a;
    lista_vendas b;
    lista_itens_vendas d;

    mainMenu();

    cin >> op;

    switch (op)
    {
        case 1:
            {
                int op2;
                cout<< "o que pretende fazer?" << endl;
                cout << "1- Inserir produto." << endl;
                cout << "2- Modificar PVP." << endl;
                cout << "3- Apagar Produto." << endl;
                cin >> op2;

                switch (op2)
                {
                    case 1:
                        {
                            cout<<"insira um novo produto:\n";

                            cout<<"codigo:";
                            cin>>c;
                            cout<<endl;

                            cout<<"nome:";
                            cin>>n;
                            cout<<endl;

                            cout<<"marca:";
                            cin>>m;
                            cout<<endl;

                            cout<<"tipo:";
                            cin>>t;
                            cout<<endl;

                            cout<<"preco:";
                            cin>>p;
                            cout<<endl;

                            a.novoProduto(c,n,m,t,p);

                        cout<< "Adicionado com sucesso:";
                        a.mostraProduto(c);
                        cout<<endl;
                        }
                    case 2:
                        {
                            unsigned int c2;
                            cout<<"Qual e o produto que quer mudar:"<<endl;
                            a.mostraProdutos();
                            cout<<"Codigo:";
                            cin>>c2;
                            cout<<endl;

                            a.modificaPVP(c2);
                            a.mostraProduto(c2);
                        }
                    case 3:
                        {
                            unsigned int c3;
                            cout<<"Qual e o produto que quer eliminar:"<<endl;
                            a.mostraProdutos();
                            cout<<"Codigo:";
                            cin>>c3;
                            a.elimina(c3);
                        }
                }
            }
        case 2:
            {
                unsigned int cV;
                cout<<"Insira um codigo para esta venda:";
                cin>>cV;
                b.novaVenda(cV);

            }
        case 3:
            {
                int op3;
                cout<<"1) Inventario Total\n";
                cout<<"2) Inventario Parcial\n";
                cout<<"Escolha:";
                cin>>op3;
                switch (op3)
                {
                    case 1:
                    {
                        a.mostraProdutos();
                    }
                    case 2:
                    {
                        char nome[51];
                        cout<<"Qual e o produto que quer procurar(nome):";
                        cin>>nome;
                        //fazer funçao de pesquisa por nome
                    }
            }
        case 4:
            {

            }
        case 5:
            {
                return 0;
            }
    }
    return 0;
    }
}

Eu tenho estes erros:

 

1578406236_CapturadeEcr(33).thumb.png.ac46f2b83ec993bf9e70f5e0ddc18e0f.png

Agradecia se alguém me conseguisse ajudar, obrigado.

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

  • Moderador

@josilva00 Prezado,  seja bem vindo no Clube do Hardware.

Não há problema algum em postar seus códigos aqui. É até melhor que poste.  Não é todos que podem acessar o link.

 

Não se esqueça de usar o botão CODE <>  contido no editor, que é usado para postar códigos.

Link para o comentário
Compartilhar em outros sites

ta faltando fechar o int main no main com }

tambem está faltando o prototipo das funcoes no header poderia ser assim:

#ifndef _MINIPROJETO_H
#define _MINIPROJETO_H
#include <iostream>
#include <string>
using namespace std;
void novoItemVenda(unsigned int codigoProduto, unsigned int quantidade, unsigned int codigoVendaI);
double devolveCustodaVenda(unsigned int codigoVenda);

 

Link para o comentário
Compartilhar em outros sites

@herbertbahia ja mudei isso  lista_itens_vendas c;

quando meto class lista_vendas: public lista_itens_vendas, public lista_produto em vez de so class lista_vendas

da 2*erro:expected class-name before','token

adicionado 3 minutos depois

@herbertbahia também atualizei o codigo no post, se quiser ver

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

 

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!