Untitled
unknown
c_cpp
2 years ago
13 kB
8
Indexable
#include <iostream>
#include <iomanip>
#include <locale.h>
#include <cstdlib>
#include <ctime>
#include <chrono>
using namespace std;
int main()
{
// Configurar a semente para a função rand() usando o tempo atual
srand(static_cast<unsigned int>(time(nullptr)));
setlocale(LC_ALL, "Portuguese");
int totalProdutos = 0;
int linhas = 4, colunas = 3;
int tam = 4;
int choice = 0;
int qProd = 0; //Quantidade de Produtos a Inserir
string* vetor = new string[tam];
for (int i = 0; i < tam; i++)
{
vetor[i] = "ND";
}
//criar a matriz -- Com adição de vetor, Teste
double** mat = new double* [linhas];
for (int i = 0; i < linhas; i++)
{
mat[i] = new double[colunas];
}
for (int i = 0; i < linhas; i++)
{
mat[i][0] = -1;
}
/*Antes do while, fica aqui a adição de produtos default ao stock e outras variáveis globais que precisam
de ficar fora de certos cases*/
int nCliente = 0;
bool flagProd = false; //Flag para verificação de stock no final da compra em Case 4 - Fazer Compra;
bool flagCompra = false; //Flag para verificação de nome do produto em Case 4 - fazer Compra;
string nomeProdE; //String para verificar se o produto já existe em stock, antes de tentar adicionar como produto novo;
//Adição de produtos default
for (int i = 0; i < 1; i++)
{
if (vetor[i] == "ND")
{
vetor[i] = "Arroz"; //O Vetor guarda o nome dos produtos
//ID Produto
mat[i][0] = 0;
//Quantidade Produto
mat[i][1] = 5;
// Preço Custo Produto
mat[i][2] = 0.50;
totalProdutos++;
cout << endl;
break;
}
}
for (int i = 0; i < 2; i++)
{
if (vetor[i] == "ND")
{
vetor[i] = "Massa"; //O Vetor guarda o nome dos produtos
//ID Produto
mat[i][0] = 1;
//Quantidade Produto
mat[i][1] = 10;
// Preço Custo Produto
mat[i][2] = 1.20;
totalProdutos++;
cout << endl;
break;
}
}
for (int i = 0; i < 3; i++)
{
if (vetor[i] == "ND")
{
vetor[i] = "Sumo"; //O Vetor guarda o nome dos produtos
//ID Produto
mat[i][0] = 2;
//Quantidade Produto
mat[i][1] = 3;
// Preço Custo Produto
mat[i][2] = 0.90;
totalProdutos++;
cout << endl;
break;
}
}
while (choice != 5)
{
cout << "| |" << endl;
cout << "|Bem vindo a Loja #O Deus da Compra#|" << endl;
cout << "| |" << endl;
cout << " 1 - Verificar Stock" << endl;
cout << " 2 - Adicionar Stock" << endl;
cout << " 3 - Remover Produto do Stock" << endl;
cout << " 4 - Fazer Compra" << endl;
cout << " 5 - Sair da Loja" << endl;
cout << endl << endl << "Faca a sua Escolha --> ";
cin >> choice;
switch (choice)
{
case 1: //Verificar Stock
if (totalProdutos == 0)
{
cout << endl << "Sem produtos para mostrar. Por favor adicione produtos ao stock";
cout << endl;
cout << endl;
}
else
{
for (int i = 0; i < totalProdutos; i++)
{
for (int j = 0; j < 1; j++)
{
cout << vetor[i] << endl;
cout << "ID: " << mat[i][0] << endl;
cout << "Quantidade: " << mat[i][1] << endl;
cout << "PrecoCusto: " << setprecision(2) << fixed << mat[i][2] << " Euros" << endl;
}
cout << endl;
}
}
break;
case 2: //Adicionar Stock
int dec; // (valor decisão, 1 ou 2, 1 Adicionar stock, 2 Adicionar a stock existente)
cout << endl << "Adicionar produto novo (1) ou adicionar stock a produto existente (2)?: ";
cin >> dec;
if (dec == 1)
{
if (totalProdutos == 4)
{
cout << "Stock Cheio!! Por favor remova algum item para introduzir algum produto novo!";
break;
goto exitNull;
}
cout << endl << "Para verificacao de produtos em stock, introduza o nome do produto que deseja adicionar: ";
cin >> nomeProdE;
cout << endl << "A verificar... ";
for (int i = 0; i < linhas; i++)
{
if (nomeProdE == vetor[i])
{
cout << endl << "Produto ja existe em stock. Por favor tente novamente!" << endl << endl;
goto exitNull;
}
}
cout << endl << "Verificacao Completa, pode prosseguir com a adicao de produto! :D";
for (int i = 0; i < linhas; i++)
{
if (vetor[i] == "ND")
{
cout << endl << "Nome: ";
cin >> vetor[i]; //O Vetor guarda o nome dos produtos
cout << "ID: ";
cin >> mat[i][0];
cout << "Quantidade: ";
cin >> mat[i][1];
cout << "PrecoCusto: ";
cin >> mat[i][2];
totalProdutos++;
cout << endl;
break;
}
}
}
else if (dec == 2)
{
string addProd;
double addQuant;
bool flag = false;
cout << endl << "A que produto quer adicionar mais ao stock? (Aviso: Nome do produto tem de ser igual ";
cout << endl << "ao que esta introduzido no stock!): ";
cin >> addProd;
for (int i = 0; i < totalProdutos; i++)
{
if (vetor[i] == addProd)
{
cout << "Quantidade a adicionar: ";
cin >> addQuant;
mat[i][1] = mat[i][1] + addQuant;
flag = true;
break;
}
}
if (flag == false)
{
cout << endl << "Erro ao verificar nome do produto, tente novamente. " << endl << endl;
}
}
else
{
cout << endl << "Numero invalido! Por favor tente novamente.";
}
break;
case 3: //Remover Produto
if (totalProdutos == 0)
{
cout << endl << "Sem produtos para remover. Por favor adicione produtos ao stock";
cout << endl;
cout << endl;
}
else
{
cout << "O que pretende remover: ";
string remove;
cin >> remove;
for (int i = 0; i < totalProdutos; i++)
{
if (vetor[i] == remove)
{
vetor[i] = "ND"; //Nome do Produto
mat[i][0] = -1; //ID
mat[i][1] = -1; //Quantidade
mat[i][2] = -1; //Preco Custo
break;
}
}
for (int i = 0; i < totalProdutos - 1; i++)
{
////A seguir,é feita uma verificação para encontrar a posição que tem valores Default para depois receber os dados da posição posterior
if (vetor[i] == "ND")
{
vetor[i] = vetor[i + 1];
mat[i][0] = mat[i + 1][0];
mat[i][1] = mat[i + 1][1];
mat[i][2] = mat[i + 1][2];
vetor[i + 1] = "ND";
mat[i + 1][0] = -1;
mat[i + 1][1] = -1;
mat[i + 1][2] = -1;
}
}
totalProdutos--;
}
break;
case 4: //Fazer Compra
if (totalProdutos == 0)
{
cout << endl << "Sem produtos para fazer compra. Por favor adicione produtos ao stock";
cout << endl;
cout << endl;
}
else
{
string simNao, prod;
double quant;
double total = 0;
while (simNao != "N")
{
/*Verificação para ver se existe produto em stock e avisar caso que um produto desejado
não esteja em stock. Ex: "Introduza nome do produto: Arroz - (verificação) - não há quantidade em stock para
arroz*/
do {
cout << endl << "Introduza o nome do produto: ";
cin >> prod;
flagCompra = false;
for (int i = 0; i < totalProdutos; i++)
{
if (prod == vetor[i])
{
flagCompra = true;
}
}
if (flagCompra == false)
{
cout << endl << "Nome de produto incorreto, tente novamente!";
}
} while (flagCompra == false);
do {
cout << endl << "Quantidade Desejada: ";
cin >> quant;
flagCompra = false;
for (int i = 0; i < totalProdutos; i++)
{
if (prod == vetor[i] && mat[i][1] == 0) //Verifica se o nome do prod é igual e se a quantidade existente do produto pedido é 0(zero);
{
cout << endl << "Não existe stock do produto " << prod << ". Recomece a compra do inicio.";
goto exitNull;
}
}
break;
for (int i = 0; i < totalProdutos; i++)
{
if (prod == vetor[i] && quant > mat[i][1]) //Verifica se o nome do prod é igual e se a quantidade excede o que existe em stock;
{
cout << endl << "Quantidade pedida excede o stock do produto " << prod << ". Por favor introduza uma quantidade igual ou inferior existente em stock do produto";
flagCompra = true;
break;
}
else if (prod == vetor[i] && quant <= 0)
{
cout << endl << "Quantidade pedida e zero ou inferior " << prod << ". Por favor introduza uma quantidade igual ou inferior existente em stock do produto";
flagCompra = true;
}
}
} while (flagCompra == true);
//FALTA ACABAR AQUI VERIFICAÇÃO DE QUANTIDADE!!
for (int i = 0; i < totalProdutos; i++)
{
if (vetor[i] == prod && quant <= mat[i][1]) //
{
mat[i][1] = mat[i][1] - quant;
total = total + mat[i][2] * quant;
break;
}
}
cout << endl << "Quer adicionar mais produtos á compra? [(S)im ou (N)ao]";
cin >> simNao;
}
//Finalização de Compra
double pagar = 0;
do {
cout << endl << "O seu total: " << setprecision(2) << fixed << (total * 1.30) * 1.23;
cout << endl << "Introduza quantidade para pagamento: ";
cin >> pagar;
if (pagar < total) {
cout << endl << "Quantidade insuficiente. Introduza uma quantidade maior para pagamento:";
cout << endl;
}
} while (pagar < total);
time_t tempoAtual = std::time(nullptr);
tm* dataHora = localtime(&tempoAtual);
char buffer[80];
strftime(buffer, sizeof(buffer), "%d/%m/%Y %H:%M:%S", dataHora);
int numeroSecreto = 2;
int ran = (rand() % 10 + 1);
if (numeroSecreto == ran) {
cout << "Parabens n pagas" << endl;
int nFatura;
nFatura = (rand() % (10000 + 1000));
cout << endl << "Nº Fatura: " << nFatura << endl;
nCliente++;
cout << "Nº Cliente: " << nCliente << endl;
cout << "Produto: " << prod << endl;
cout << "Quantidade: " << quant << endl;
cout << "Preco Sem IVA: " << total << endl;
cout << "IVA: 23%";
total = (total * 1.30) * 1.23;
cout << endl;
cout << "total Com IVA: " << setprecision(2) << fixed << total << endl;
cout << "Valor dado para pagamento: " << "0" << endl;
cout << "Troco: " << "0" << endl << endl;
cout << "Data e hora atual: " << buffer << endl;
}
else {
time_t tempoAtual = std::time(nullptr);
tm* dataHora = localtime(&tempoAtual);
char buffer[80];
strftime(buffer, sizeof(buffer), "%d/%m/%Y %H:%M:%S", dataHora);
int nFatura;
nFatura = (rand() % (10000 + 1000));
cout << endl << "Nº Fatura: " << nFatura << endl;
nCliente++;
cout << "Nº Cliente: " << nCliente << endl;
cout << "Produto: " << prod << endl;
cout << "Quantidade: " << quant << endl;
cout << "Preco Sem IVA: " << total << endl;
cout << "IVA: 23%";
total = (total * 1.30) * 1.23;
cout << endl;
cout << "total Com IVA: " << setprecision(2) << fixed << total << endl;
cout << "Valor dado para pagamento: " << pagar << endl;
cout << "Troco: " << pagar - total << endl;
cout << "Data e hora atual: " << buffer << endl;
cout << endl;
}
cout << "Verificacao de stock..." << endl;
for (int i = 0; i < totalProdutos; i++) //Verificação de stock para ver se algumn produto têm quantidade 0(zero);
{
for (int j = 0; j < 1; j++)
{
//cout << vetor[i] << endl;
//cout << "ID: " << mat[i][0] << endl;
if (mat[i][1] == 0)
{
flagProd = true;
}
//cout << "Quantidade: " << mat[i][1] << endl;
//cout << "PrecoCusto: " << mat[i][2] << " Euros " << setprecision(2) << fixed << mat[i][2] << "" << endl;
}
}
}
if (flagProd == false)
{
cout << "Verificacao Completa - Ainda existe quantidades em stock." << endl << endl;
}
else
{
cout << "Verificacao Completa - AVISO! 1 ou mais produtos sem quantidade. Por favor adicione mais quantidade ao stock dos produtos em falta!" << endl << endl;
}
break;
exitNull:
break;
case 5:
cout << endl << "Nothing";
break;
default:
cout << "Opcao invalida" << endl;
break;
}
}
}Editor is loading...
Leave a Comment