From 117290d4271012df8a128fc7d7636e93f18d35b8 Mon Sep 17 00:00:00 2001 From: Muriki <mgy20@inf.ufpr.br> Date: Fri, 6 Dec 2024 17:23:25 -0300 Subject: [PATCH] =?UTF-8?q?Adicionado=20implementa=C3=A7=C3=A3o=20da=20cla?= =?UTF-8?q?sse=20Biblioteca?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 36 +++++++++++++++------------------ sources/Biblioteca.cpp | 13 ++++++++++++ sources/Biblioteca.hpp | 11 ++++++++++ sources/ControladorUsuarios.cpp | 34 ++++++++++++++++++++++++++++++- sources/ControladorUsuarios.hpp | 2 +- sources/Usuario.cpp | 8 ++++---- 6 files changed, 78 insertions(+), 26 deletions(-) diff --git a/main.cpp b/main.cpp index 0eefe5f..7d830a6 100644 --- a/main.cpp +++ b/main.cpp @@ -1,8 +1,7 @@ +#include <cstdlib> #include <iostream> -#include "./sources/ControladorUsuarios.hpp" -#include "./sources/ControladorObras.hpp" -#include "./sources/DescricaoObra.hpp" +#include "./sources/Biblioteca.hpp" using namespace std; @@ -25,32 +24,23 @@ int show_options () { cout << "3 - Pagar Multa" << endl; cout << "4 - Finalizar" << endl; cout << "> "; - cin >> option; + return option; } int main(){ + system("clear"); + + // Cria Biblioteca + cout << "> Instanciando Biblioteca" << endl; + Biblioteca bib; + // Cria Usuarios - cout << "> Instanciando Controlador de Usuarios" << endl; - ControladorUsuarios contUsuarios; + ControladorUsuarios contUsuarios = bib.getContUsuarios(); cout << "> Criando Usuarios" << endl; - //string nome, CPF, endereco, telefone, email; - //for (int i=0; i<3 ;i++){ - // cout << "Entre com o nome: "; cin >> nome; - // cout << "Entre com o CPF: "; cin >> CPF; - // cout << "Entre com o endereco: "; cin >> endereco; - // cout << "Entre com o telefone: "; cin >> telefone; - // cout << "Entre com o email: "; cin >> email; - - // if (contUsuarios.adicionarUsuario(nome, CPF, endereco, telefone, email)) - // cout << "> Usuario " << nome << " adicionado com sucesso" << endl; - // else - // cout << "> Falha ao adicionar o usuario " << nome << endl; - //} - contUsuarios.adicionarUsuario("Muriki", "12345", "Casa", "9999", "murikigy@gmail.com"); contUsuarios.adicionarUsuario("Nico", "54321", "Apartamento", "8888", "nico@gmail.com"); contUsuarios.adicionarUsuario("Marcus", "12345", "Casa", "9988", "marcus@gmail.com"); @@ -72,6 +62,8 @@ int main(){ if (valor > 0) { cout << "\nUsuario: " << userCPF << endl; cout << "Valor a pagar: " << valor << endl; + } else { + cout << "Aviso: Usuario não possui multas" << endl; } break; @@ -84,6 +76,10 @@ int main(){ case FINISH: cout << "> Finalizando programa!" << endl; return 0; + + default: + cout << "Comando não reconhecido!" << endl; + break; } } diff --git a/sources/Biblioteca.cpp b/sources/Biblioteca.cpp index 2e5e0dc..6b63227 100644 --- a/sources/Biblioteca.cpp +++ b/sources/Biblioteca.cpp @@ -1 +1,14 @@ #include "./Biblioteca.hpp" + +// Constructor +Biblioteca::Biblioteca() {} + + +// Methods +ControladorObras Biblioteca::getContObras(){ + return this->contObras; +} + +ControladorUsuarios Biblioteca::getContUsuarios(){ + return this->contUsuarios; +} diff --git a/sources/Biblioteca.hpp b/sources/Biblioteca.hpp index 091ed8a..ebe965f 100644 --- a/sources/Biblioteca.hpp +++ b/sources/Biblioteca.hpp @@ -1,12 +1,23 @@ #ifndef __BIBLIOTECA__ #define __BIBLIOTECA__ +#include "./ControladorUsuarios.hpp" +#include "./ControladorObras.hpp" + +using namespace std; + class Biblioteca { private: + ControladorUsuarios contUsuarios; + ControladorObras contObras; public: // Construtor + Biblioteca(); + // Methods + ControladorObras getContObras(); + ControladorUsuarios getContUsuarios(); }; diff --git a/sources/ControladorUsuarios.cpp b/sources/ControladorUsuarios.cpp index 36b48ec..82da897 100644 --- a/sources/ControladorUsuarios.cpp +++ b/sources/ControladorUsuarios.cpp @@ -38,13 +38,45 @@ bool ControladorUsuarios::adicionarUsuario(string nome, string CPF, string ender } -void ControladorUsuarios::registrarEmprestimo(string CPF, DescricaoObra descricao){ +int ControladorUsuarios::registrarEmprestimo(string CPF, DescricaoObra descricao){ + // Search for user + auto it = find_if(usuarios.begin(), usuarios.end(), [CPF](Usuario& u) { + return u.getCPF() == CPF; + }); + + if (it == usuarios.end()) { + cout << "> Erro: Usuario não encontrado" << endl; + return -1; + } + + if (!it->emprestar(descricao)){ + cout << "> Erro: Falha ao realizar um emprestimo" << endl; + return -1; + } + + // Calcula data e retorna + return 0; } int ControladorUsuarios::retornarEmprestimo(string CPF, DescricaoObra descricao){ + // Search for user + auto it = find_if(usuarios.begin(), usuarios.end(), [CPF](Usuario& u) { + return u.getCPF() == CPF; + }); + + if (it == usuarios.end()) { + cout << "> Erro: Usuario não encontrado" << endl; + return -1; + } + + if (!it->devolver(descricao)){ + cout << "> Erro: Falha ao realizar a devolução" << endl; + return -1; + } + return 0; } diff --git a/sources/ControladorUsuarios.hpp b/sources/ControladorUsuarios.hpp index 9d7b728..72f064b 100644 --- a/sources/ControladorUsuarios.hpp +++ b/sources/ControladorUsuarios.hpp @@ -20,7 +20,7 @@ class ControladorUsuarios { // Methods bool adicionarUsuario(string nome, string CPF, string endereco, string telefone, string email); - void registrarEmprestimo(string CPF, DescricaoObra descricao); + int registrarEmprestimo(string CPF, DescricaoObra descricao); int retornarEmprestimo(string CPF, DescricaoObra descricao); int recuperarMultas(string CPF); bool registrarMultaPaga(string CPF, int valor); diff --git a/sources/Usuario.cpp b/sources/Usuario.cpp index 1b32371..f536127 100644 --- a/sources/Usuario.cpp +++ b/sources/Usuario.cpp @@ -34,8 +34,8 @@ bool Usuario::devolver(DescricaoObra descricao){ // Increase fees int Usuario::atualizarMulta(int valor){ - - return 0; + this->multas += valor; + return this->multas; } string Usuario::getCPF(){ @@ -49,13 +49,13 @@ int Usuario::getMulta(){ bool Usuario::pagarMulta(int valor){ // Check if the user has fees if (this->multas <= 0) { - cout << "> Aviso: Usuario não possui multas!" << endl; + cout << "> Aviso: Usuario não possui multas! Ignorando operação" << endl; return false; } // Check if the value is suficient if (this->multas > valor) { - cout << "> Error: Valor insuficiente para pagar as multas!" << endl; + cout << "> Erro: Valor insuficiente para pagar as multas!" << endl; return false; } -- GitLab