/* **********************Libro.h******************** */
#ifndef Libro_H
#define Libro_H
#include <iostream>
using namespace std;
const int TAM_ISBN = 11;
const int TAM_AUTOR = 40;
const int TAM_LIBRERIA = 20;
const int TAM_TITULO = 105;
class Typeisbn{
public:
Typeisbn(const char* isbn);
Typeisbn();
~Typeisbn();
bool operator == (const Typeisbn isbn);
friend istream &operator >>(istream &is, Typeisbn isbn);
friend ostream &operator <<(ostream &os,const Typeisbn &isbn);
friend class Libro;
private:
char ISBN [TAM_ISBN];
};
class Libro{
public:
Libro *next;
Libro();
~Libro();
bool Es_Vacia(Libro l);
void Insertarlibro (Libro l);
Libro EliminarLibro(Libro l,Typeisbn busc);
friend istream &operator >>(istream &is, Libro &r);
friend ostream &operator <<(ostream &os,const Libro &r);
friend void Listar (Libro l);
friend Libro* Buscar (Libro l, Typeisbn busc);
void Listar (Libro l);
private:
char Titulo [TAM_TITULO];
char Libreria [TAM_LIBRERIA];
char Autor [TAM_AUTOR];
Typeisbn isbn;
unsigned fechaedicion;
};
#endif
/* *******************Libro.C**************** */
#include "Libro.h"
Libro::Libro(){
}
Libro::~Libro(){
}
bool Libro::Es_Vacia(Libro l){
if (!l.Titulo)
return true;
else
return false;
}
void Libro::Insertarlibro (Libro l){
if (!Es_Vacia (l))
*this->next = l;
l = *this;
}
Libro EliminarLibro (Libro l,Typeisbn busc){
Libro *aux,*ant;
aux = Buscar(l,busc);
*ant = l;
do
ant = ant->next;
while (ant->next != aux);
ant->next = aux->next;
delete aux;
}
Libro* Buscar (Libro l, Typeisbn busc){
Libro *aux,aux2;
*aux = l;
aux2 = *aux;
bool salida = false;
do{
if(aux2.isbn == busc)
break;
if (aux -> next != NULL){
aux = aux ->next;
aux2 = *aux;
};
if ((aux -> next == NULL) && !(aux2.isbn == busc))
salida = true;
}while (!salida);
return aux;
}
void Libro::Listar (Libro l){
Libro *aux;
*aux = l;
bool salida = false;
do{
cout << aux;
if (aux -> next == NULL)
salida = true;
else
aux = aux -> next;
}while (!salida);
}
istream &operator >>(istream &is, Libro& r){
cout << "Escribe el titulo del libro ";
is >> r.Titulo;
cout <<endl<< "Dime el autor del libro ";
is >> r.Autor;
cout <<endl<< "Libreria ";
is >> r.Libreria;
cout <<endl<< "Fecha de edicion ";
is >> r.fechaedicion;
cout <<endl<< "Escribe el isbn del libro ";
is >> r.isbn;
}
ostream &operator <<(ostream &os,const Libro &r){
os << "Libreria: " << r.Libreria <<endl;
os << "Titulo: " << r.Titulo <<endl;
os << "Autor: " << r.Autor <<endl;
os << "Fecha de edicion" << r.fechaedicion << endl;
os << "ISBN: " << r.isbn << endl;
return os;
}
bool operator == (const Typeisbn isbn1,const Typeisbn isbn2){
if (isbn1 == isbn2)
return true;
else
return false;
}
istream &operator >>(istream &is, Typeisbn isbn){
is >> isbn.ISBN;
return is;
}
ostream &operator <<(ostream &os,const Typeisbn &isbn){
os << isbn.ISBN;
return os;
}
Typeisbn::Typeisbn(const char* isbn){
ISBN = *isbn;
}
Typeisbn::Typeisbn(){
}
Typeisbn::~Typeisbn(){
}
/* *****************Prac4.C (main)**************** */
#include "Libro.h"
void Menu (bool s,Libro Lista){
cout << "Elija la accion a realizar"<< endl;
cout << "0:Salir 1:Insertar libro 2: Borrar libro" << endl;
cout << "3:Buscar libro 4:Listado de libros" << endl;
int opt;
cin >> opt;
switch (opt){
case 0:{
s = true;
break;
};
case 1:{
Libro Lib;
cin >>Lib;
Lib.Insertarlibro (Lista);
break;
};
case 2:{
cout << "Escribe el ISBN del libro que quieres eliminar" <<endl;
Typeisbn busc;
cin >> busc;
Lista = EliminarLibro(Lista,busc);
break;
};
case 3:{
cout << "Escribe el ISBN del libro que quieres buscar" <<endl;
Typeisbn busc;
cin >> busc;
Libro* Lib = Buscar (Lista,busc);
cout <<"El libro buscado es: "<< Lib;
break;
};
case 4:{
Listar (Lista);
break;
};
};
}
int Main (){
bool salida = false;
Libro List;
do
Menu (salida,List);
while (!salida);
return (0);
}