Untitled

mail@pastecode.io avatar
unknown
c_cpp
2 months ago
9.6 kB
4
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 = 100, colunas = 3;
	int tam = 100;
	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;
	//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

			//criar a matriz -- Com adição de vetor, Teste
			//Introdução de dados na matriz
			/*
			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)
			{
			faz o código já feito pra adicionar stock;
			}
			else if (dec == 2)
			{
			  string prod;
			  double quant;
			  cout << endl << "Produto a acrescentar: ";
			  cin >> prod;
			  cout << endl << "Quantidade a acrescentar: ";
			  cin >> quant;
			   for (int i = 0; i < linhas; i++)
			   {
					if (vetor[i] == prod)
					{
					  mat[i][1] = mat[i][1] + quant;
					  break;
					}
			}
			else
			{
			  cout << endl << "Numero errado, Try again";
			}
			*/

			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;
				}

			}


			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

						//A seguir, a posição atual recebe os dados da posição posterior

						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];

						//Por fim, a posição posterior recebe dados Default

						vetor[i + 1] = "ND";

						mat[i + 1][0] = -1;

						mat[i + 1][1] = -1;

						mat[i + 1][2] = -1;
						totalProdutos--;
						break;
					}

				}
			}
			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")
				{
					cout << endl << "Introduza o nome do produto: ";
					cin >> prod;
					cout << endl << "Quantidade desejada: ";
					cin >> quant;

					for (int i = 0; i < totalProdutos; i++)
					{
						if (vetor[i] == prod && quant <= mat[i][1]) //Talvez ao finalizar a compra, if statement pra verificar quantidade em stock
						{
							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;
				}
				/*Randomizer para verificar se uma variável que se  guarda um numero inteiro escondido do utilizador, é igual
				ao numero gerado pelo randomizer. O num secreto é verificado
				através de um If Statement para comparar se é igual ao num gerado pelo randomizer.
				Se for igual, a compra é grátis e Talvez se dê Skip ao resto do código*/
				double pagar = 0;
				//FALTA ADICIONAR AQUI AO TOTAL O IVA (E OS 30% ANTES DO IVA, quant * 0.30)
				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 << endl;
					cout << "Data e hora atual: " << buffer << endl;
				}

				// Falta aqui a data no final





				cout << "Verificacao de stock..." << endl;


				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;
			}

			break;

		case 5:
			cout << endl << "Nothing";
			break;


		default:
			cout << "Opcao invalida" << endl;
			break;

		}

	}
}
Leave a Comment