Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Gestionando la lista de libros con un vector de direcciones de objetos.
- Autor.h
- #pragma once
- #include <string>
- #include<iostream>
- using namespace System;
- using namespace std;
- class Autor {
- private:
- string nombre;
- string apellido;
- string pais;
- public:
- Autor() {}
- Autor(string _nombre, string _apellido, string _pais) { nombre = _nombre; apellido = _apellido; pais = _pais; }
- ~Autor() {}
- //Seter
- void setNombre(string _nombre) { nombre = _nombre; }
- void setApellido(string _apellido) { apellido = _apellido; }
- void setPais(string _pais) { pais = _pais; }
- //Geter
- string getNombre() { return nombre; }
- string getApellido() { return apellido; }
- string getPais() { return pais; }
- };
- Libro.h
- #pragma once
- #include<string>
- #include "Autor.h"
- class Libro {
- private:
- string titulo;
- Autor *autor;
- public:
- Libro() {
- autor = new Autor();
- }
- Libro(string titulo, Autor *autor)
- {
- this->titulo = titulo;
- this->autor = autor;
- }
- //Seters y Geters
- void setTitulo(string _titulo) { titulo = _titulo; }
- string getTitulo() { return titulo; }
- void setAutor(Autor *_autor) { autor = _autor; }
- void setAutor(string nombre, string apellido, string pais) { //En caso de que lo queramos agregar primero atributos
- autor->setNombre(nombre);
- autor->setApellido(apellido);
- autor->setPais(pais);
- }
- Autor *getAutor() { return autor; } //Leermos el objeto
- //Comportamientos
- string concatenaAtributos()
- {
- return "Titulo libro: " + titulo + " \nNombre autor: " + autor->getNombre() +
- " \nApellido de autor : " + autor->getApellido() +
- " \nPais de procedencia: " + autor->getPais();
- }
- };
- Catalogo.h
- #include<iostream>
- #include "Libro.h"
- using namespace std;
- class Catalogo { //linea
- private:
- Libro **listaLibro; //Vector de direcciones
- int *tamanio;
- public:
- Catalogo() {
- listaLibro = NULL;
- tamanio = new int();
- *tamanio = 0;
- }
- ~Catalogo() {
- //Liberamos el vector de direcciones
- for (int i = 0; i < *tamanio; ++i) {
- delete listaLibro[i];
- }
- }
- void agregaLibro(Libro *libro) {
- Libro **temporalLibro = new Libro*[*tamanio + 1];
- for (int i = 0; i < *tamanio; i++)
- {
- temporalLibro[i] = listaLibro[i];
- }
- temporalLibro[*tamanio] = libro;
- *tamanio = *tamanio + 1;
- if (listaLibro != NULL)
- {
- delete[] listaLibro;
- }
- listaLibro = temporalLibro;
- }
- void optAgregaLibro()
- {
- string titulo, nombre, apellido, pais;
- //Autor autor; //acceso con punto
- Autor *autor = new Autor(); //Acceso con flecha
- Libro *nodoLibro = new Libro();
- cin.clear();
- cin.ignore();
- cout << "Titulo :";
- getline(cin, titulo);
- nodoLibro->setTitulo(titulo);//seteamos titulo del libro
- cout << "Nombre de autor: ";//seteamos datos al objeto autor
- getline(cin, nombre);
- autor->setNombre(nombre);
- cout << "Apellido de autor: ";
- getline(cin, apellido);
- autor->setApellido(apellido);
- cout << "Pais de procedencia: ";
- getline(cin, pais);
- autor->setPais(pais);
- nodoLibro->setAutor(autor); //seteamos el objeto autor
- agregaLibro(nodoLibro);
- }
- void muestraListaLibro()
- {
- cout << endl << endl;
- for (int i = 0; i < *tamanio; i++)
- {
- cout << listaLibro[i]->concatenaAtributos() << endl;
- }
- }
- void quitaLibro(int pos) {
- }
- Libro* getLibro(int i) { //retorna la dieccion de un objeto libro que esta en la lista
- return listaLibro[i];
- }
- };
- Principal.cpp
- #include<conio.h>
- #include<iostream>
- #include"Catalogo.h"
- using namespace std;
- void menu()
- {
- cout << "MENU PRINCIPAL" << endl;
- cout << "------------------------------------" << endl;
- cout << "1) Ingresar datos de un libro " << endl;
- cout << "2) Listar los datos de cada libro " << endl;
- cout << "6) Salir " << endl;
- }
- void main()
- {
- int opcion;
- Catalogo *objCatalogo = new Catalogo();
- do
- {
- menu();
- cin >> opcion;
- switch (opcion)
- {
- case 1:
- objCatalogo->optAgregaLibro();
- break;
- case 2:
- cout << "LISTA DE LIBROS" << endl;
- objCatalogo->muestraListaLibro();
- break;
- case 7:
- default:
- opcion = 7;
- break;
- }
- } while (opcion != 7);
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement