Codigo multilistas en c++
Enviado por oscarmurillo • 6 de Octubre de 2017 • Tarea • 1.971 Palabras (8 Páginas) • 972 Visitas
#include <iostream>
#include <string>
#include <cstdlib>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
/*
Oscar Murillo Vasquez 625741
*/
using namespace std;
class Libro{
public:
Libro();//
string nombre;
int id;
Libro *sig;
};
class Categoria{
public:
Categoria();
string nombre;
int id;
int cantidadLibros;
Categoria *sig;
Libro *cabLibro;
Libro *ultimoLibro;
void agregarLibro(Libro *nuevo,string nombre, int id);//
Libro *existeLibro(int id);//
void eliminarLibroDeUnaCategoria(int id);
};
class Sede{
public:
Sede();//
string nombre;
int id;
int cantidadCategorias;
Categoria *cabCategoria;
Categoria *ultimaCategoria;
Sede *sigSede;
void agregarCategoria(Categoria *nuevo,string nombre,int id);//
Categoria *existeCategoria(int id);//
void mostrarCategoriasDeUnaSede();//
void mostrarCategoriasYLibrosDeUnaSede();//
void eliminarUnaCategoria(int id);//
};
class Lista{
public:
Lista();//
Sede *cab;
Sede *ultimo;
void crearSede(Sede *nuevo,string nombre,int id);//
void mostrarTodo();//
void mostrarSedes();//
Sede *existeSede(int id);//
void eliminarSede(int id);//
void sedeConMayorCategoriasYEjemplares();
};
void menu(Lista *lista);
void cstdlib(Lista *lista);
void setColor(int i);
HANDLE hCon;
Sede::Sede(){
cabCategoria=NULL;
ultimaCategoria=NULL;
sigSede=NULL;
cantidadCategorias=0;
}
Lista::Lista(){
cab=NULL;
ultimo=NULL;
}
Libro::Libro(){
sig=NULL;
}
Categoria::Categoria(){
cantidadLibros=0;
sig=NULL;
cabLibro=NULL;
ultimoLibro=NULL;
}
Sede *Lista::existeSede(int id){
Sede *aux = cab;
if(aux == NULL){
return NULL;
}
while(aux != NULL){
if(aux->id == id){
return aux;
}else{
aux=aux->sigSede;
}
}
return NULL;
}
Categoria *Sede::existeCategoria(int id){
Categoria *aux = cabCategoria;
if(aux == NULL){
return NULL;
}
while(aux != NULL){
if(aux->id == id){
return aux;
}else{
aux=aux->sig;
}
}
return NULL;
}
Libro *Categoria::existeLibro(int id){
Libro *aux = cabLibro;
if(aux == NULL){
return NULL;
}
while(aux != NULL){
if(aux->id == id){
return aux;
}else{
aux=aux->sig;
}
}
return NULL;
}
void Lista::crearSede(Sede *nuevo,string nombre,int id){
if(cab == NULL){
cab=nuevo;
nuevo->nombre=nombre;
nuevo->id=id;
nuevo->sigSede=NULL;
ultimo=nuevo;
}else{
ultimo->sigSede=nuevo;
nuevo->nombre=nombre;
nuevo->id=id;
nuevo->sigSede=NULL;
ultimo=nuevo;
}
}
void Lista::mostrarSedes(){
system("cls");
Sede *aux = cab;
bool bandera = true;
if(aux == NULL){
setColor(4);
cout<<"Lista vacia "<<endl<<endl;
bandera=false;
}
if(bandera==true){
cout<<"---------------------------------------------------------------"<<endl<<endl;
while(aux != NULL){
setColor(10);
cout<<"nombre: "<<aux->nombre<<" "<<"id: "<<aux->id<<" "<<endl;
aux=aux->sigSede;
}
cout<<"\n-------------------------------------------------------------"<<endl<<endl;
}
}
void Lista::mostrarTodo(){
system("cls");
int x=3;
int y=3;
Sede *aux = cab;
Categoria *aux1 = NULL;
Libro *aux2=NULL;
bool bandera=true;
if(cab == NULL){
setColor(4);
cout<<"lista vacia "<<endl<<endl;
bandera=false;
}
if(bandera==true){
while(aux != NULL){
aux1=aux->cabCategoria;
setColor(12);
cout<<"\n-----------------------------------------------------------------------------------------------------"<<endl;
cout<<" nombre de la sede: "<<aux->nombre<<endl<<endl;
while(aux1 != NULL){
aux2=aux1->cabLibro;
setColor(14);
cout<<" Categoria: "<<aux1->nombre<<endl<<endl;
while(aux2 != NULL){
setColor(9);
cout<<" nombre del libro: "<<aux2->nombre<<" ID: "<<aux2->id<<endl;
aux2=aux2->sig;
}
aux1=aux1->sig;
cout<<endl;
}
aux=aux->sigSede;
}
}
}
void Lista::eliminarSede(int id){
Sede *aux=cab;
Sede *anterior=NULL;
Categoria *opc=NULL;
string nombre;
if(aux->id == id && aux->sigSede == NULL){
nombre=aux->nombre;
if(aux->cabCategoria != NULL){
opc=aux->cabCategoria;
while(opc->sig != NULL){
opc=opc->sig;
}
delete opc;
}
cab=NULL;
setColor(12);
cout<<"\nse elimino la sede "<<nombre<<endl<<endl;
}else if(aux->id == id && aux->sigSede != NULL){
cab=aux->sigSede;
nombre=aux->nombre;
if(aux->cabCategoria != NULL){
opc=aux->cabCategoria;
while(opc->sig
...