From f6e9b6a449c6f5e87b80feb2067b6b7f570df2f6 Mon Sep 17 00:00:00 2001 From: Muriki <mgy20@inf.ufpr.br> Date: Sat, 7 Dec 2024 00:22:28 -0300 Subject: [PATCH] Ajustado interface com usuario --- biblioteca.cpp | 103 ++++++++++++++++++++++++++++---------- sources/DescricaoObra.hpp | 2 +- 2 files changed, 77 insertions(+), 28 deletions(-) diff --git a/biblioteca.cpp b/biblioteca.cpp index 7c28576..a9bd62a 100644 --- a/biblioteca.cpp +++ b/biblioteca.cpp @@ -1,12 +1,12 @@ -#include <cstdio> -#include <cstdlib> #include <iostream> +#include <string> #include <limits> #include "./sources/Biblioteca.hpp" #include "./sources/Livro.hpp" #include "./sources/Periodico.hpp" + using namespace std; @@ -92,37 +92,32 @@ int main(){ contObras.mostrarDetalhes(); - //cout << ": Criando Obras" << endl; - //ControladorObras contObras = bib.getContObras(); - //string titulo, autor, editora; int ano; - //for (int i=0; i<2 ;i++) { - // cin >> titulo; cin >> ano; cin >> autor; cin >> editora; - // Livro liv(titulo, ano, autor, editora); - // contObras.adicionarObra(liv); - //} - //contObras.mostrarDetalhes(); - // Interation Loop int option = START; while (option != FINISH) { option = show_options(); + + // Variaveis para usuario string nome, userCPF, endereco, telefone, email; - string tipoObra; int valor; + // Variaveis para obras + string tipoObra, tipoBusca; + string titulo, autor, editora; + int ano, volume, mes; + switch (option) { case ADDUSER: - cout << "Entre com o nome: "; cin >> nome; - cout << "Entre com o CPF: "; cin >> userCPF; + cout << "Entre com o nome: "; cin >> nome; + cout << "Entre com o CPF: "; cin >> userCPF; cout << "Entre com o endereco: "; cin >> endereco; 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, userCPF, endereco, telefone, email)) cout << "> Usuario adicionado com sucesso!" << endl; break; - case LISTUSERS: - contUsuarios.mostrarDetalhes(); + case LISTUSERS: contUsuarios.mostrarDetalhes(); break; case QUERYFEES: @@ -132,7 +127,7 @@ int main(){ cout << "\nUsuario: " << userCPF << endl; cout << "Valor a pagar: " << valor << endl; } else { - cout << "Aviso: Usuario não possui multas" << endl; + cout << "> Aviso: Usuario não possui multas" << endl; } break; @@ -143,29 +138,83 @@ int main(){ break; case ADDWORK: - //contObras.adicionarObra(DescricaoObra &descricao); + cout << "Entre com o tipo da obra (periodico|livro): "; cin >> tipoObra; cin.ignore(); + if (tipoObra == "periodico") { + cout << "Entre com o titulo: "; getline(cin, titulo); + cout << "Entre com o ano: "; cin >> ano; + cout << "Entre com o volume: "; cin >> volume; + cout << "Entre com o mês: "; cin >> mes; + Periodico per(titulo, ano, volume, mes); + contObras.adicionarObra(per); + } else if (tipoObra == "livro") { + cout << "Entre com o titulo: "; getline(cin, titulo); + cout << "Entre com o ano: "; cin >> ano; cin.ignore(); + cout << "Entre com o autor: "; getline(cin, autor); + cout << "Entre com o editora: "; getline(cin, editora); + Livro liv(titulo, ano, autor, editora); + contObras.adicionarObra(liv); + } else { + cout << "Erro: Tipo não recinhecido! Ignorando operação" << endl; + } break; - case LISTWORKS: - contObras.mostrarDetalhes(); + case LISTWORKS: contObras.mostrarDetalhes(); break; case QUERYWORK: - cout << "Entre com o tipo da obra: "; cin >> tipoObra; + cout << "Entre com o tipo da obra (periodico|livro): "; cin >> tipoObra; cin.ignore(); if (tipoObra == "periodico") { - cout << "Alguma coisa"; + cout << "Método de busca (titulo|tituloano): "; + cin >> tipoBusca; } else if (tipoObra == "livro") { - cout << "Alguma coisa"; + cout << "Método de busca (titulo|autor): "; + cin >> tipoBusca; + } else { + cout << "Erro: Tipo não reconhecido! Ignorando operação" << endl; } //contObras.pesquisarObra(DescricaoObra &descricao); break; case BORROWWORK: - //contObras.solicitarEmprestimo(DescricaoObra &descricao); + cout << "Entre com o tipo da obra (periodico|livro): "; cin >> tipoObra; cin.ignore(); + if (tipoObra == "periodico") { + cout << "Entre com o titulo: "; getline(cin, titulo); + cout << "Entre com o ano: "; cin >> ano; + cout << "Entre com o volume: "; cin >> volume; + cout << "Entre com o mês: "; cin >> mes; + Periodico per(titulo, ano, volume, mes); + contObras.solicitarEmprestimo(per); + } else if (tipoObra == "livro") { + cout << "Entre com o titulo: "; getline(cin, titulo); + cout << "Entre com o ano: "; cin >> ano; cin.ignore(); + cout << "Entre com o autor: "; getline(cin, autor); + cout << "Entre com o editora: "; getline(cin, editora); + Livro liv(titulo, ano, autor, editora); + contObras.solicitarEmprestimo(liv); + } else { + cout << "Erro: Tipo não reconhecido! Ignorando operação" << endl; + } break; case RETURNWORK: - //contObras.devolverEmprestimo(DescricaoObra &descricao); + cout << "Entre com o tipo da obra (periodico|livro): "; cin >> tipoObra; cin.ignore(); + if (tipoObra == "periodico") { + cout << "Entre com o titulo: "; getline(cin, titulo); + cout << "Entre com o ano: "; cin >> ano; + cout << "Entre com o volume: "; cin >> volume; + cout << "Entre com o mês: "; cin >> mes; + Periodico per(titulo, ano, volume, mes); + contObras.devolverEmprestimo(per); + } else if (tipoObra == "livro") { + cout << "Entre com o titulo: "; getline(cin, titulo); + cout << "Entre com o ano: "; cin >> ano; cin.ignore(); + cout << "Entre com o autor: "; getline(cin, autor); + cout << "Entre com o editora: "; getline(cin, editora); + Livro liv(titulo, ano, autor, editora); + contObras.devolverEmprestimo(liv); + } else { + cout << "Erro: Tipo não reconhecido! Ignorando operação" << endl; + } break; case FINISH: diff --git a/sources/DescricaoObra.hpp b/sources/DescricaoObra.hpp index a58d412..7e839f0 100644 --- a/sources/DescricaoObra.hpp +++ b/sources/DescricaoObra.hpp @@ -17,7 +17,7 @@ class DescricaoObra { // Contructor DescricaoObra() {}; DescricaoObra(const string& tipo, const string& titulo, int ano); - virtual void mostrarDetalhes() const = 0; + virtual void mostrarDetalhes() const; // Methods string getTitulo() const ; -- GitLab