Untitled

mail@pastecode.io avatar
unknown
c_cpp
2 months ago
13 kB
3
Indexable
Never
#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;

		}

	}
}
Leave a Comment