Skip to content
Snippets Groups Projects
Commit 00408d02 authored by Nico's avatar Nico
Browse files

Merge branch 'main' of gitlab.c3sl.ufpr.br:mgy20/Design-biblioteca

parents 8b1e47b2 83d8f781
No related branches found
No related tags found
No related merge requests found
...@@ -9,10 +9,27 @@ using namespace std; ...@@ -9,10 +9,27 @@ using namespace std;
typedef enum { typedef enum {
START, START,
LISTUSERS,
QUERYFEES,
PAYFEES,
FINISH FINISH
} states; } states;
int show_options () {
int option;
cout << endl;
cout << "> Entre com um comando:" << endl;
cout << "1 - Listar usuarios" << endl;
cout << "2 - Consultar Multas" << endl;
cout << "3 - Pagar Multa" << endl;
cout << "4 - Finalizar" << endl;
cout << "> ";
cin >> option;
return option;
}
int main(){ int main(){
// Cria Usuarios // Cria Usuarios
...@@ -20,38 +37,78 @@ int main(){ ...@@ -20,38 +37,78 @@ int main(){
ControladorUsuarios contUsuarios; ControladorUsuarios contUsuarios;
cout << "> Criando Usuarios" << endl; cout << "> Criando Usuarios" << endl;
string nome, CPF, endereco, telefone, email; //string nome, CPF, endereco, telefone, email;
for (int i=0; i<3 ;i++){ //for (int i=0; i<3 ;i++){
cout << "Entre com o nome: "; cin >> nome; // cout << "Entre com o nome: "; cin >> nome;
cout << "Entre com o CPF: "; cin >> CPF; // cout << "Entre com o CPF: "; cin >> CPF;
cout << "Entre com o endereco: "; cin >> endereco; // cout << "Entre com o endereco: "; cin >> endereco;
cout << "Entre com o telefone: "; cin >> telefone; // cout << "Entre com o telefone: "; cin >> telefone;
cout << "Entre com o email: "; cin >> email; // cout << "Entre com o email: "; cin >> email;
if (contUsuarios.adicionarUsuario(nome, CPF, endereco, telefone, email)) // if (contUsuarios.adicionarUsuario(nome, CPF, endereco, telefone, email))
cout << "> Usuario " << nome << " adicionado com sucesso" << endl; // cout << "> Usuario " << nome << " adicionado com sucesso" << endl;
else // else
cout << "Falha ao adicionar o usuario " << nome << endl; // 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");
// Interation Loop
int option = START;
while (option != FINISH) {
option = show_options();
string userCPF; int valor;
switch (option) {
case LISTUSERS:
contUsuarios.mostrarDetalhes(); contUsuarios.mostrarDetalhes();
break;
case QUERYFEES:
cout << "Entre com o CPF do usuário: "; cin >> userCPF;
valor = contUsuarios.recuperarMultas(userCPF);
if (valor > 0) {
cout << "\nUsuario: " << userCPF << endl;
cout << "Valor a pagar: " << valor << endl;
}
break;
// Cria Obras case PAYFEES:
cout << "> Instanciando Controlador de Obras" << endl; cout << "Entre com o CPF do usuário: "; cin >> userCPF;
ControladorObras contObras; cout << "Entre com o valor a pagar: "; cin >> valor;
contUsuarios.registrarMultaPaga(userCPF, valor);
cout << "> Criando Obras" << endl; break;
string titulo, tipo; int ano, qtDisp, total;
for (int i=0; i<3 ;i++){ case FINISH:
cout << "Entre com o titulo da obra: "; cin >> titulo; cout << "> Finalizando programa!" << endl;
cout << "Entre com o ano da obra: "; cin >> ano; return 0;
cout << "Entre com o tipo da obra: "; cin >> tipo; }
cout << "Entre com a quantidade Disponivel: "; cin >> qtDisp;
cout << "Entre com a quantidade Total: "; cin >> total;
DescricaoObra descricao(titulo, ano);
contObras.adicionarObra(tipo, descricao);
} }
return 0;
}
//// Cria Obras
//cout << "> Instanciando Controlador de Obras" << endl;
//ControladorObras contObras;
//cout << "> Criando Obras" << endl;
//string titulo, tipo; int ano, qtDisp, total;
//for (int i=0; i<3 ;i++){
// cout << "Entre com o titulo da obra: "; cin >> titulo;
// cout << "Entre com o ano da obra: "; cin >> ano;
// cout << "Entre com o tipo da obra: "; cin >> tipo;
// cout << "Entre com a quantidade Disponivel: "; cin >> qtDisp;
// cout << "Entre com a quantidade Total: "; cin >> total;
//
// DescricaoObra descricao(titulo, ano);
// contObras.adicionarObra(tipo, descricao);
//}
//cout << "==> Instanciando uma Descricao de Obra: " << endl; //cout << "==> Instanciando uma Descricao de Obra: " << endl;
//DescricaoObra desc("Mochileiro das galáxias", 1999); //DescricaoObra desc("Mochileiro das galáxias", 1999);
//desc.mostrarDetalhes(); //desc.mostrarDetalhes();
...@@ -76,5 +133,3 @@ int main(){ ...@@ -76,5 +133,3 @@ int main(){
//cout << "==> Instanciando o Controlador de Obras: " << endl; //cout << "==> Instanciando o Controlador de Obras: " << endl;
//ControladorObras obras; //ControladorObras obras;
return 0;
}
#include <iostream> #include <iostream>
#include <algorithm>
#include "./ControladorUsuarios.hpp" #include "./ControladorUsuarios.hpp"
#include "Usuario.hpp"
using namespace std; using namespace std;
...@@ -20,12 +22,14 @@ void ControladorUsuarios::mostrarDetalhes() const { ...@@ -20,12 +22,14 @@ void ControladorUsuarios::mostrarDetalhes() const {
bool ControladorUsuarios::adicionarUsuario(string nome, string CPF, string endereco, bool ControladorUsuarios::adicionarUsuario(string nome, string CPF, string endereco,
string telefone, string email){ string telefone, string email){
// Check if the user does not exist // Check if the user does not exist
for (auto& usuario: this->usuarios) { auto it = find_if(this->usuarios.begin(), this->usuarios.end(), [CPF](Usuario& u) {
if (usuario.getCPF() == CPF){ return u.getCPF() == CPF;
cout << "Erro: Usuario com esse CPF já existe, ignorando inserção" << endl; });
if (it != this->usuarios.end()){
cout << "> Erro: Usuario com esse CPF já existe, ignorando inserção" << endl;
return false; return false;
} }
}
// Create and add a new user // Create and add a new user
Usuario u(nome, CPF, endereco, telefone, email); Usuario u(nome, CPF, endereco, telefone, email);
...@@ -47,12 +51,31 @@ int ControladorUsuarios::retornarEmprestimo(string CPF, DescricaoObra descricao) ...@@ -47,12 +51,31 @@ int ControladorUsuarios::retornarEmprestimo(string CPF, DescricaoObra descricao)
int ControladorUsuarios::recuperarMultas(string CPF){ int ControladorUsuarios::recuperarMultas(string CPF){
// Search for user
auto it = find_if(usuarios.begin(), usuarios.end(), [CPF](Usuario& u) {
return u.getCPF() == CPF;
});
return 0; if (it == usuarios.end()) {
cout << "> Erro: Usuario não encontrado" << endl;
return -1;
}
return it->getMulta();
} }
bool ControladorUsuarios::registrarMultaPaga(string CPF, int valor){ bool ControladorUsuarios::registrarMultaPaga(string CPF, int valor){
return true; // 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 false;
}
return it->pagarMulta(valor);
} }
...@@ -8,7 +8,7 @@ using namespace std; ...@@ -8,7 +8,7 @@ using namespace std;
Usuario::Usuario(const string& nome, const string& cpf, const string& end, Usuario::Usuario(const string& nome, const string& cpf, const string& end,
const string& tel, const string&email) const string& tel, const string&email)
: nome(nome), CPF(cpf), endereco(end), telefone(tel), email(email) { : nome(nome), CPF(cpf), endereco(end), telefone(tel), email(email) {
this->multas = 0; this->multas = 10;
} }
void Usuario::mostrarDetalhes() const { void Usuario::mostrarDetalhes() const {
...@@ -32,6 +32,7 @@ bool Usuario::devolver(DescricaoObra descricao){ ...@@ -32,6 +32,7 @@ bool Usuario::devolver(DescricaoObra descricao){
return 0; return 0;
} }
// Increase fees
int Usuario::atualizarMulta(int valor){ int Usuario::atualizarMulta(int valor){
return 0; return 0;
...@@ -42,12 +43,26 @@ string Usuario::getCPF(){ ...@@ -42,12 +43,26 @@ string Usuario::getCPF(){
} }
int Usuario::getMulta(){ int Usuario::getMulta(){
return this->multas;
return 0;
} }
bool Usuario::pagarMulta(int valor){ bool Usuario::pagarMulta(int valor){
// Check if the user has fees
if (this->multas <= 0) {
cout << "> Aviso: Usuario não possui multas!" << endl;
return false;
}
return 0; // Check if the value is suficient
if (this->multas > valor) {
cout << "> Error: Valor insuficiente para pagar as multas!" << endl;
return false;
}
cout << "> Pagamento de multas realizado!" << endl;
cout << "Troco: " << (valor - this->multas) << " R$" << endl;
this->multas = 0;
return true;
} }
...@@ -27,7 +27,7 @@ class Usuario { ...@@ -27,7 +27,7 @@ class Usuario {
// Methods // Methods
bool emprestar(DescricaoObra descricao); bool emprestar(DescricaoObra descricao);
bool devolver(DescricaoObra descricao); bool devolver(DescricaoObra descricao);
int atualizarMulta(int valor); int atualizarMulta(int valor); // Increase fee
string getCPF(); string getCPF();
int getMulta(); int getMulta();
bool pagarMulta(int valor); bool pagarMulta(int valor);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment