#include <iostream>
#include "miniprojeto.h"
using namespace std;
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;
while(1)
{
cout << "-------------------------------------------------" << endl;
cout << "|\tPrograma de Gestao de Supermercados\t|"<< endl;
cout << "-------------------------------------------------" << endl << endl;
cout << "Autores: \n\tJoao Moitas 2018297016\n\tJose Silva 2018296125" << 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;
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;
break;
}
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);
break;
}
case 3:
{
unsigned int c3;
cout<<"Qual e o produto que quer eliminar:"<<endl;
a.mostraProdutos();
cout<<"Codigo:";
cin>>c3;
a.elimina(c3);
break;
}
break;
}
break;
}
case 2:
{
unsigned int cV;
cout<<"Insira um codigo para esta venda:";
cin>>cV;
b.novaVenda(cV,&a,&d);
break;
}
case 3:
{
int op3;
cout<<"1) Inventario Total\n";
cout<<"2) Inventario Parcial\n";
cout<<"Escolha:";
cin>>op3;
switch (op3)
{
case 1:
{
a.mostraProdutos();
break;
}
case 2:
{
char nome[51];
cout<<"Qual e o produto que quer procurar(nome):";
cin>>nome;
break;
//fazer funçao de pesquisa por nome
}
break;
}
break;
}
case 4:
{
b.mostraVendas();
}
case 5:
{
cout<<"\nGoodbye"<<endl;
return 0;
}
return 0;
}
}
}
#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 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);
};
class lista_produto
{
private:
no_produto* cabeca;
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,lista_produto* aux,lista_itens_vendas* aux1);
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,lista_produto* aux, lista_itens_vendas* aux1);
void mostraVenda(unsigned int codigoVenda);
void mostraVendas(void);
void mostraPrecoTotal(unsigned int codigoVenda);
};
#endif
#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,lista_produto* aux,lista_itens_vendas* aux1)
{
aux->mostraProdutos();
unsigned int codigo, quantidade;
cout<<"Escolha um produto(codigo):";
cin>>codigo;
cout<<"\nQuantos deste produto quer adicionar:";
cin>>quantidade;
if(quantidade==0) return;
aux1->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,lista_produto* aux, lista_itens_vendas* aux1)
{
no_vendas *novo=new no_vendas;
no_vendas *atual;
unsigned int n;
cout<<"Quantos tipos de produtos quer adicionar a venda:";
cin>>n;
for(int i=0;i<n;i++)
{
aux->escolheProduto(codigoVenda,aux,aux1);
}
novo->codigoVenda=codigoVenda;
novo->numeroItens=n;
novo->precoTotal=aux1->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;
lista_produto aux;
atual->codigoProduto=codigoProduto;
atual->quantidade=quantidade;
atual->codigoVendaI=codigoVendaI;
double preco=aux.devolvePreco(codigoProduto);
atual->custoTotal=preco*quantidade;
novo->proxim=NULL;
if(cabecaIV==NULL)
{
cabecaIV=novo;
}else
{
atual=cabecaIV;
while(atual->proxim!=NULL)
atual=atual->proxim;
atual->proxim=novo;
}
}