Advertisement
pcsiasop

Ejercicio 1 V3, libro y autor

Sep 6th, 2018
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.13 KB | None | 0 0
  1. Gestionando la lista de libros con un vector de direcciones de objetos.
  2. Autor.h
  3. #pragma once
  4. #include <string>
  5. #include<iostream>
  6.  
  7. using namespace System;
  8. using namespace std;
  9.  
  10. class Autor {
  11. private:
  12.     string      nombre;
  13.     string      apellido;
  14.     string      pais;
  15. public:
  16.     Autor() {}
  17.     Autor(string _nombre, string _apellido, string _pais) { nombre = _nombre; apellido = _apellido; pais = _pais; }
  18.     ~Autor() {}
  19.     //Seter
  20.     void    setNombre(string _nombre) { nombre = _nombre; }
  21.     void    setApellido(string _apellido) { apellido = _apellido; }
  22.     void    setPais(string _pais) { pais = _pais; }
  23.     //Geter
  24.     string      getNombre() { return nombre; }
  25.     string      getApellido() { return apellido; }
  26.     string      getPais() { return pais; }
  27.  
  28.  
  29. };
  30.  
  31. Libro.h
  32.  
  33. #pragma once
  34. #include<string>
  35. #include "Autor.h"
  36. class Libro {
  37. private:
  38.     string titulo;
  39.     Autor *autor;
  40. public:
  41.     Libro() {
  42.         autor = new Autor();
  43.     }
  44.     Libro(string titulo, Autor *autor)
  45.     {
  46.         this->titulo = titulo;
  47.         this->autor = autor;
  48.     }
  49.     //Seters y Geters
  50.     void setTitulo(string _titulo) { titulo = _titulo; }
  51.     string getTitulo() { return titulo; }
  52.     void setAutor(Autor *_autor) { autor = _autor; }
  53.     void setAutor(string nombre, string apellido, string pais) { //En caso de que lo queramos agregar primero atributos
  54.         autor->setNombre(nombre);
  55.         autor->setApellido(apellido);
  56.         autor->setPais(pais);
  57.     }
  58.     Autor *getAutor() { return autor; } //Leermos el objeto
  59.     //Comportamientos
  60.     string concatenaAtributos()
  61.     {
  62.         return "Titulo libro: " + titulo + "  \nNombre autor: " + autor->getNombre() +
  63.             " \nApellido de autor : " + autor->getApellido() +
  64.             " \nPais de procedencia: " + autor->getPais();
  65.     }
  66.  
  67. };
  68. Catalogo.h
  69.  
  70.  
  71. #include<iostream>
  72. #include "Libro.h"
  73.  
  74. using namespace std;
  75. class Catalogo { //linea
  76. private:
  77.     Libro **listaLibro; //Vector de direcciones
  78.     int *tamanio;
  79. public:
  80.     Catalogo() {
  81.         listaLibro = NULL;
  82.         tamanio = new int();
  83.         *tamanio = 0;
  84.     }
  85.     ~Catalogo() {
  86.         //Liberamos el vector de direcciones
  87.         for (int i = 0; i < *tamanio; ++i) {
  88.             delete listaLibro[i];
  89.         }
  90.     }
  91.  
  92.     void agregaLibro(Libro *libro) {
  93.         Libro **temporalLibro = new Libro*[*tamanio + 1];
  94.         for (int i = 0; i < *tamanio; i++)
  95.         {
  96.             temporalLibro[i] = listaLibro[i];
  97.         }
  98.         temporalLibro[*tamanio] = libro;
  99.         *tamanio = *tamanio + 1;
  100.         if (listaLibro != NULL)
  101.         {
  102.             delete[] listaLibro;
  103.         }
  104.         listaLibro = temporalLibro;
  105.     }
  106.     void optAgregaLibro()
  107.     {
  108.         string titulo, nombre, apellido, pais;
  109.         //Autor autor; //acceso con punto
  110.         Autor *autor = new Autor(); //Acceso con flecha
  111.         Libro *nodoLibro = new Libro();
  112.  
  113.         cin.clear();
  114.         cin.ignore();
  115.         cout << "Titulo :";
  116.         getline(cin, titulo);
  117.         nodoLibro->setTitulo(titulo);//seteamos titulo del libro
  118.  
  119.         cout << "Nombre de autor: ";//seteamos datos al objeto autor   
  120.         getline(cin, nombre);
  121.         autor->setNombre(nombre);
  122.  
  123.         cout << "Apellido de autor: ";
  124.         getline(cin, apellido);
  125.         autor->setApellido(apellido);
  126.  
  127.         cout << "Pais de procedencia: ";
  128.         getline(cin, pais);
  129.         autor->setPais(pais);
  130.  
  131.         nodoLibro->setAutor(autor);  //seteamos el objeto autor
  132.  
  133.         agregaLibro(nodoLibro);
  134.     }
  135.  
  136.     void muestraListaLibro()
  137.     {
  138.         cout << endl << endl;
  139.         for (int i = 0; i < *tamanio; i++)
  140.         {
  141.             cout << listaLibro[i]->concatenaAtributos() << endl;
  142.         }
  143.     }
  144.     void quitaLibro(int pos) {
  145.  
  146.     }
  147.  
  148.     Libro* getLibro(int i) { //retorna la dieccion de un objeto libro que esta en la lista
  149.         return listaLibro[i];
  150.     }
  151. };
  152. Principal.cpp
  153.  
  154. #include<conio.h>
  155. #include<iostream>
  156. #include"Catalogo.h"
  157. using namespace std;
  158. void menu()
  159. {
  160.     cout << "MENU PRINCIPAL" << endl;
  161.     cout << "------------------------------------" << endl;
  162.     cout << "1) Ingresar datos de un libro " << endl;
  163.     cout << "2) Listar los datos de cada libro " << endl;
  164.     cout << "6) Salir " << endl;
  165.  
  166. }
  167.  
  168. void main()
  169. {
  170.     int opcion;
  171.     Catalogo *objCatalogo = new Catalogo();
  172.     do
  173.     {
  174.         menu();
  175.         cin >> opcion;
  176.         switch (opcion)
  177.         {
  178.         case 1:
  179.             objCatalogo->optAgregaLibro();
  180.             break;
  181.         case 2:
  182.             cout << "LISTA DE LIBROS" << endl;
  183.             objCatalogo->muestraListaLibro();
  184.             break;
  185.         case 7:
  186.         default:
  187.             opcion = 7;
  188.             break;
  189.         }
  190.  
  191.     } while (opcion != 7);
  192.  
  193.     system("pause");
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement