Вы находитесь на странице: 1из 7

1

/*************** clase Nodo ************** */ class cNodo { void *Dato; cNodo *Sig; cNodo *Ant; public: cNodo() { Dato= NULL; Sig= NULL; Ant=NULL; } void setSig(cNodo* nSig) { Sig=nSig; } ; cNodo *getSig() { return Sig; }; void setAnt(cNodo* nAnt) { Ant=nAnt; } ; cNodo *getAnt() { return Ant; }; void setDato(void* nDato) { Dato=nDato; } void *getDato() { return Dato; } ~cNodo(){} }; /************* clase lista **************/ class cLista { private: cNodo *Inicio; cNodo *Ultimo; cNodo *pos; int count; public: cLista() { count=0; Inicio=NULL; Ultimo=NULL; pos = NULL; } void setCont(int ncont) { count=ncont; } int getCont() { return count; } int ingresar(void *ptrDato); void *Buscar(int (*COND)(void*)); void ParaTodos(void (*ACC)(void*)); int InsAntPos(void *ptrDato); int InsEnPos(void *ptrDato); int InsDesPos(void *ptrDato); void *EliAntPos(void); void *EliEnPos(void); void *EliDesPos(void); ~cLista(); }; cLista::~cLista() { cNodo *auxNodo; auxNodo=Inicio; pos=Inicio; while(auxNodo!=NULL) { pos=pos->getSig(); delete auxNodo; auxNodo=pos; } } /*********** insertar elementos ********** */ int cLista::ingresar(void *ptrDato) { int res=1; cNodo *ptrNew= new cNodo; if (ptrNew!=NULL) //si hay memoria se crea { ptrNew->setDato(ptrDato); if (count==0) // si la Lista esta vacia Inicio=ptrNew; else { Ultimo->setSig(ptrNew); ptrNew->setAnt(Ultimo); } Ultimo= ptrNew; count++; res=0; } return res; } /********** buscar elementos **********/ void * cLista::Buscar(int (*COND)(void*)) { void *res=NULL; pos=Inicio; while ((res==NULL)&&(pos!=NULL)) { if (COND(pos->getDato())==0) res=pos->getDato(); else pos=pos->getSig(); } return res; } /************funcion para todos ****************/ void cLista::ParaTodos(void (*ACC)(void*)) { pos=Inicio; while(pos!=NULL) { ACC(pos->getDato()); pos=pos->getSig(); } } /***********insertar antes de la posicion********** */ int cLista::InsAntPos(void *ptrDato) { int res=1; cNodo *ptrNew= new cNodo; if (ptrNew!=NULL) { ptrNew-> setDato(ptrDato); if (pos!=NULL) { cNodo *aux2=pos->getAnt(); if (aux2!=NULL) { aux2->setSig(ptrNew); ptrNew->setAnt(aux2); } else {ptrNew->setAnt(NULL); Inicio=ptrNew; } ptrNew->setSig(pos); pos->setAnt(ptrNew); count=count+1; res=0; } } return res; }; /***********insertar en la posicion***********/ int cLista::InsEnPos(void *ptrDato) { int res=1; cNodo *ptrNew= new cNodo; if (ptrNew!=NULL) { ptrNew-> setDato(ptrDato); if (pos!=NULL) { cNodo *aux2=pos->getAnt(); if (aux2!=NULL) { aux2->setSig(ptrNew); ptrNew->setAnt(aux2); } else {ptrNew->setAnt(NULL); Inicio=ptrNew; } ptrNew->setSig(pos->getSig()); pos=ptrNew;

2
res=0; } } return res; }; /***********insertar despues de pos***********/ int cLista::InsDesPos(void *ptrDato) { int res=1; cNodo *ptrNew= new cNodo; if (ptrNew!=NULL) { ptrNew-> setDato(ptrDato); if (pos!=NULL) { cNodo *aux2=pos->getSig(); if (aux2!=NULL) { aux2->setAnt(ptrNew); ptrNew->setSig(aux2); } else {ptrNew->setSig(NULL); Ultimo=ptrNew; } ptrNew->setAnt(pos); pos->setSig(ptrNew); count=count+1; res=0; } } return res; }; /***********eliminar antes de pos***********/ void *cLista::EliAntPos() { void *res=NULL; if (pos!=NULL) { if(pos!=Inicio) { cNodo *aux=pos->getAnt(); res=aux->getDato(); cNodo *aux2=aux->getAnt(); if (aux2!=NULL) aux2->setSig(pos); else Inicio=pos; pos->setAnt(aux2); aux->setSig(NULL); aux->setAnt(NULL); delete aux; count=count-1; } else cout<<"No hay anterior"<<endl; } return res; } /***********eliminar en la posicion***********/ void *cLista::EliEnPos() { void *res=NULL; if (pos!=NULL) { res=pos->getDato(); cNodo *aux2=pos->getAnt(); cNodo *aux3=pos->getSig(); if (aux2==NULL) Inicio=aux3; //El sig a pos se convierte en Inicio else aux2->setSig(aux3); if (aux3==NULL) //Si pos esta en Ultimo Ultimo=aux2; //El ant se convierte en Ultimo else aux3->setAnt(aux2); pos->setSig(NULL); pos->setAnt(NULL); delete pos; count=count-1; } return res; } /***********eliminar despues de la posicion***********/ void *cLista::EliDesPos() { void *res=NULL; if (pos!=NULL) { cNodo *aux=pos->getSig(); if(aux!=NULL) //Si pos no esta en Ultimo existe un Despues { res=aux->getDato(); cNodo *aux2=aux->getSig(); if (aux2!=NULL) aux2->setAnt(pos); else Ultimo=pos; pos->setSig(aux2); aux->setSig(NULL); aux->setAnt(NULL); delete aux; count=count-1; } } /* ***************** CLASE ESTUDIANTE ************** */ class cEstudiante { private: char Nombre[10]; char Apellido[10]; char CI[12]; int Codigo; int NA; public: cEstudiante() { NA=0; Codigo=0; }; void setNombre(char *nNombre) { strcpy(Nombre,nNombre) ;} char *getNombre() { return Nombre; } void setApellido(char *nApellido) { strcpy(Apellido,nApellido) ;} char *getApellido() { return Apellido; } void setCI(char *nCI) { strcpy(CI,nCI) ;} char *getCI() { return CI; } void setCodigo(int nCodigo) { Codigo=nCodigo; } int getCodigo() { return Codigo; } void setNA(int nNA) { NA=nNA; } int getNA() { return NA; } void leer(void); void mostrar(void ); ~cEstudiante() { } }; /*********** ingresar datos del estudiante********** */ void cEstudiante::leer( ) { cout<<"Ingrese el Nombre: "; cin>>Nombre; cout<<"Ingrese el Apellido: "; cin>>Apellido; else cout<<"No hay un despues a pos"<<endl; } return res;

3
cout<<"Ingrese el cedula: "; cin>>CI; cout<<"Ingrese el codigo: "; cin>>Codigo; cout<<"Ingrese el acumulado: "; cin>>NA; } /*********** mostrar datos del estudiante********** */ void cEstudiante::mostrar( ) {cout<<endl; cout<<"El Nombre es: "<<Nombre<<endl; cout<<"El Apellido es: "<<Apellido<<endl; cout<<"la cedula es: "<<CI<<endl; cout<<"El Codigo es: "<<Codigo<<endl; cout<<"La Nota Acumulada es: "<<NA<<endl; } int Codi; //Es un variable global no va en ninguna clase /***********para todos los estudiantes********** */ void Acc(void *ptrDato) { cEstudiante *ptrEst=(cEstudiante *)ptrDato; ptrEst->mostrar(); cout<<endl; } /**********comparacion de codigos**************/ int CompCod(void *pDato) { int resul=1; if ( pDato != NULL ) { cEstudiante *nptrEst=(cEstudiante *)pDato; if( nptrEst->getCodigo()< Codi) resul=0; } return resul; } /******comparacion de igualdad de codigos***********/ int IgualCod(void *pDato) { int resul=1; if ( pDato != NULL) { cEstudiante *nptrEst=(cEstudiante *)pDato; if( nptrEst->getCodigo() == Codi) resul=0; } return resul; } char getParalelo() { return Paralelo; } int acumNA; int contadorEstud; /***********funcion para exoneradso********** */ void AccEX(void *ptrDato) { cEstudiante *ptrEst=(cEstudiante *)ptrDato; if((ptrEst->getNA()>=25)) ptrEst->mostrar(); cout<<endl; } void setSemestre(int nSemestre) { Semestre=nSemestre; } int getSemestre() { return Semestre; } cCurso(){} ~cCurso(){} void leerPS(void); void *borrarEstudiante(); void mostrarPS(void); void agregarEstu(cEstudiante *ptrE); }; void cCurso::leerPS(void) { cout<<"Ingrese el paralelo: "; cin>>Paralelo; cout<<"Ingrese el semestre: "; cin>>Semestre; } /*********** mostrar datos del curso********** */ void cCurso::mostrarPS() {cout<<endl; cout<<"El Paralelo es: "<<Paralelo<<endl; cout<<"El Semestre es: "<<Semestre<<endl; cout<<"LISTA DE TODOS LOS ESTUDIANTEs DEL CURSO"<<endl<<endl; ParaTodos(Acc); } /***********agreagr estudiantes a un curso***********/ void cCurso::agregarEstu(cEstudiante *ptrE) { void *ptrEstBus = Buscar(IgualCod) ; if(ptrEstBus==NULL) { void *ptrEstBus = Buscar(CompCod) ; if (ptrEstBus!=NULL) InsAntPos(ptrE); else ingresar(ptrE); } else cout<<endl<<"ERROR CODIGO REPETIDO"<<endl; } /***********borrar estudiantes de un curso***********/ void *cCurso::borrarEstudiante() { void* resul=NULL; if(Buscar(IgualCod)!=NULL)

/***********funcion de examen principal********** */ void AccEP(void *ptrDato) { cEstudiante *ptrEst=(cEstudiante *)ptrDato; if((ptrEst->getNA()>=4)&&(ptrEst>getNA()<25)) ptrEst->mostrar(); cout<<endl; } /***********funcion de reprobados********** */ void AccRE(void *ptrDato) { cEstudiante *ptrEst=(cEstudiante *)ptrDato; if((ptrEst->getNA()<4)) ptrEst->mostrar(); cout<<endl; } /***************Accion Promedio********/ void AccPR(void *ptrDato) { cEstudiante *ptrEst=(cEstudiante *)ptrDato; acumNA+=ptrEst->getNA(); contadorEstud++; } /* ***************** clase curso ************** */ class cCurso: public cLista { private: char Paralelo; int Semestre; public: void setParalelo(int nParalelo) { Paralelo=nParalelo ;}

4
resul=EliEnPos(); else cout<<"No se encuentra el estudiante a eliminar"<<endl; return resul; } /********clase estudiantes******/ class cEstudiantes: public cLista { public: cEstudiantes(){}; ~cEstudiantes(){}; int agregarEst(void); void menuEstudiantes(void); void eliminarEst(void); }; /**********agregar estudiante**************/ int cEstudiantes::agregarEst() { int res=1; cEstudiante *ptrEst=new cEstudiante; if(ptrEst!=NULL) { ptrEst->leer(); Codi=ptrEst->getCodigo(); void *ptrEstBus = Buscar(IgualCod) ; if(ptrEstBus==NULL) { void *ptrEstBus = Buscar(CompCod) ; if (ptrEstBus!=NULL) InsAntPos(ptrEst); else ingresar(ptrEst); res=0 ; } else { delete ptrEst; cout<<endl<<"ERROR CODIGO REPETIDO"<<endl; } } return res; } /**********eliminar estudiante**************/ void cEstudiantes::eliminarEst(void) { cout<<"Ingrese el Codigo del estudiante "<<endl; cin>>Codi; void *ptrD=Buscar(IgualCod); if (ptrD!=NULL) { void *res=EliEnPos(); cEstudiante *ptrE=(cEstudiante *)res; ptrE->mostrar(); } else cout<<"EL ESTUDIANTE NO SE ENCUENTRA EN LA LISTA"<<endl; } /*******opciones de estudiantes*************/ void cEstudiantes::menuEstudiantes () { int op,residuo; do { clrscr(); cout<<endl; cout<<endl; cout<<endl; cout<<" opciones de estudiantes"<<endl; cout<<" 1: Ingresar Estudiantes a la Lista "<<endl; cout<<" 2: Mostrar Lista de Estudiantes "<<endl; cout<<" 3: Mostrar Lista de Estudiantes Exonerados "<<endl; cout<<" 4: Mostrar Lista de Estudiantes para Examen Principal "<<endl; cout<<" 5: Mostrar Lista de Estudiantes Reprobados "<<endl; cout<<" 8: Eliminar un Estudiante "<<endl; cout<<" 0: Salir "<<endl; scanf("%d",&op); residuo=1; switch (op) { case 1: { clrscr(); int p; cout<<" Ingrese el numero de Estudiante:"<<endl; cin>>p; for(int i=0; i<p ; i++) { cout<<"INGRESE DATOS DEL "<<(i+1)<<" ESTUDIANTE:"<<endl; agregarEst(); cout<<endl; } getch(); break; } case 2: { clrscr(); cout<<"LISTA DE TODOS LOS ESTUDIANTE"<<endl<<endl; ParaTodos(Acc); getch(); break; } case 3: { clrscr(); cout<<"LISTA DE ESTUDIANTE EXONERADOS"<<endl<<endl; ParaTodos(AccEX); getch(); break; } case 4: { clrscr(); cout<<"LISTA DE ESTUDIANTE PARA EXAMEN PRINCIPAL"<<endl<<endl; ParaTodos(AccEP); getch(); break; } case 5: { clrscr(); cout<<"LISTA DE ESTUDIANTE REPROBADOS"<<endl<<endl; ParaTodos(AccRE); getch(); break; } case 8: { clrscr(); eliminarEst(); getch(); break; } case 0: { clrscr(); residuo=0; break; } break; } // fin del switch } // fin del do while(residuo==1); } /***************clase cursos****************/

5
void *ptrCurBus = Buscar(IgualPS); if(ptrCurBus==NULL) { void *ptrCurBus = Buscar(CompPS) ; if(ptrCurBus!=NULL) InsAntPos(ptrCurso); else ingresar(ptrCurso); } else { delete ptrCurso; cout<<endl<<"ERROR CURSO REPETIDO "<<endl; } } return res; } /**********Eeliminar curso**************/ void cCursos::borrarCurso() { cout<<"Ingrese el paralelo a buscar: ";cin>>parale; cout<<"Ingrese el semestre a buscar: ";cin>>semes; void *ptrD=Buscar(IgualPS); if (ptrD!=NULL) { cCurso *ptrC=(cCurso*)EliEnPos(); ptrC->mostrarPS(); } else cout<<"CURSO NO ENCONTRADO"<<endl; } /*******menu de cursos*************/ void cCursos::menuCursos () { int op,residuo; do { clrscr(); cout<<endl<<" ESPOCH"<<endl; cout<<" CARGAR LISTA DE CURSOS"<<endl; cout<<endl; cout<<endl; cout<<endl; cout<<" opciones de cursos"<<endl; cout<<" 1: Ingresar Cursos a la Lista de cursos "<<endl; cout<<" 2: Mostrar Lista de Cursos "<<endl; cout<<" 3: Borrar un Curso de la lista cursos "<<endl; cout<<" 0: Salir "<<endl; cout<<endl; scanf("%d",&op); residuo=1; switch (op) { case 1: { clrscr(); int p; cout<<" Ingrese el numero de Cursos:"<<endl; cin>>p; for(int i=0; i<p ; i++) { cout<<"INGRESE DATOS DEL "<<(i+1)<<" CURSO:"<<endl; agregarCurso(); cout<<endl; } getch(); break; } case 2: { clrscr(); cout<<"LISTA DE TODOS LOS CURSOS"<<endl<<endl; ParaTodos(AccC); getch(); break; } case 3: { clrscr(); borrarCurso(); getch(); break; } case 0: { clrscr(); residuo=0; break; } break; } // fin del switch } // fin del do while(residuo==1); }

class cCursos: public cLista { public: int agregarCurso(void); void borrarCurso(void); void menuCursos(void); cCursos(){}; ~cCursos(){}; }; int semes; char parale; /**********comparar igualdad de Cursos **************/ int IgualPS(void *pDato) { int resul=1; if ( pDato != NULL) { cCurso *nptrCur=(cCurso *)pDato; if((nptrCur->getSemestre()== semes)&&(nptrCur->getParalelo()== parale)) resul=0; } return resul; } /**********comparar Cursos mayores**************/ int CompPS(void *pDato) { int resul=1; if ( pDato != NULL ) { cCurso *nptrCur=(cCurso *)pDato; if((nptrCur->getParalelo()> parale)&&(nptrCur->getSemestre()>semes)) resul=0; } return resul; } /***********para todos********** */ void AccC(void *ptrDato) { cCurso *ptrCr=(cCurso*)ptrDato; ptrCr->mostrarPS(); cout<<endl; } /**********agregar curso**************/ int cCursos::agregarCurso() { int res=1; cCurso *ptrCurso=new cCurso; if(ptrCurso!=NULL) { ptrCurso->leerPS(); parale=ptrCurso->getParalelo(); semes=ptrCurso->getSemestre();

/********clase de multilistas******/ class cSA { cEstudiantes oEstudiantes;

6
cCursos oCursos; public: void cargar(void); void ingresarEst(void); void pasarEstudiante(void); void mostrarListEx(void); void mostrarListExamPrinc(void); void mostrarListReprobados(void); void mostrarPromedio(void); void menuSA(void); }; void cSA::cargar() { clrscr(); oEstudiantes.menuEstudiantes(); getch; oCursos.menuCursos(); } /*********** ingresar estudiante a un curso**********/ void cSA::ingresarEst(void) { cout<<"Ingrese el codigo del estudiante a buscar:"<<endl; cin>>Codi; cEstudiante *ptrEst=(cEstudiante*)oEstudiantes.Buscar(Igual Cod); if (ptrEst!=NULL) { cout<<"Ingrese el paralelo a buscar: ";cin>>parale; cout<<"Ingrese el semestre a buscar: ";cin>>semes; cCurso *ptrCur=(cCurso*)oCursos.Buscar(IgualPS); if(ptrCur!=NULL) { ptrCur->agregarEstu(ptrEst); cout<<"Estudiante ingresado correctamente!"<<endl; } else cout<<"el Curso no se a encontrado"<<endl; } else cout<<"el estudiante no se a encontrado"<<endl; } void cSA::pasarEstudiante(void) { cout<<"Ingrese el semsestre de origen : ";cin>>semes; cout<<"Ingrese el paralelo de origen : "; cin>>parale; cCurso *pCurOrg=(cCurso*)oCursos.Buscar(IgualPS); if(pCurOrg!=NULL) { pCurOrg->mostrarPS(); cout<<"Ingrese el codigo del Estudiante a pasar : ";cin>>Codi; cEstudiante *ptrEs=(cEstudiante *)pCurOrg>Buscar(IgualCod); if(ptrEs!=NULL) {ptrEs->mostrar(); cout<<"Ingrese el semsestre de destino : ";cin>>semes; cout<<"Ingrese el paralelo de destino : "; cin>>parale; cCurso *pCurDes=(cCurso*)oCursos.Buscar(IgualPS); if(pCurDes!=NULL) { pCurDes->mostrarPS(); cEstudiante *ptrEss=(cEstudiante *)pCurDes>Buscar(IgualCod); if(ptrEss==NULL) { pCurDes->agregarEstu(ptrEs); pCurOrg->EliEnPos(); cout<<"Cambio de Curso Exitoso!"<<endl; pCurDes->mostrarPS(); } else cout<<"El Estudiante ya existe"<<endl; } else cout<<"El Curso de destino no existe"<<endl; } else cout<<"El Estudiante no existe"<<endl; } else cout<<"El Curso de origen no existe"<<endl ; } /********mostrar lista exonerados**********/ void cSA::mostrarListEx() { cout<<"Ingrese el semestre : ";cin>>semes; cout<<"Ingrese el paralelo : "; cin>>parale; cCurso *pCur=(cCurso*)oCursos.Buscar(IgualPS); if(pCur!=NULL) { cout<<"LISTA DE ESTUDIANTE EXONERADOS"<<endl<<endl; pCur>ParaTodos(AccEX); } else { clrscr(); cout<<"No existe el curso deseado."; getch(); } } /********mostrar lista examen principal**********/ void cSA::mostrarListExamPrinc() { cout<<"Ingrese el semestre : ";cin>>semes; cout<<"Ingrese el paralelo : "; cin>>parale; cCurso *pCur=(cCurso*)oCursos.Buscar(IgualPS); if(pCur!=NULL) { cout<<"LISTA DE ESTUDIANTE a EXAMEN PRINCIPAL"<<endl<<endl; pCur>ParaTodos(AccEP); } else { clrscr(); cout<<"No existe el curso deseado."; getch(); } } /********mostrar lista reprobados**********/ void cSA::mostrarListReprobados() { cout<<"Ingrese el semestre : ";cin>>semes; cout<<"Ingrese el paralelo : "; cin>>parale; cCurso *pCur=(cCurso*)oCursos.Buscar(IgualPS); if(pCur!=NULL) { cout<<"LISTA DE ESTUDIANTE REPROBADOS"<<endl<<endl; pCur>ParaTodos(AccRE); } else { clrscr(); cout<<"No existe el curso deseado."; getch();

7
} } /**********mostrar promedio de cursos************/ void cSA::mostrarPromedio() { cout<<"Ingrese el semestre : ";cin>>semes; cout<<"Ingrese el paralelo : "; cin>>parale; cCurso *pCur=(cCurso*)oCursos.Buscar(IgualPS); if(pCur!=NULL) { acumNA=0; contadorEstud=0; cout<<"PROMEDIO DE CURSO"<<endl<<endl; pCur>ParaTodos(AccPR); cout<<"No. Estudiantes: "<<contadorEstud<<endl; cout<<"Promedio Final: "<<acumNA/contadorEstud<<endl; } else { clrscr(); cout<<"No existe el curso deseado."; getch(); } } /*******opciones de la secretaria academica*************/ void cSA::menuSA () { int op,residuo; do { clrscr(); cout<<endl; cout<<"SECRETARIA ACADEMICA"<<endl<<endl; cout<<" 1: Llenar Estudiantes y Cursos SA "<<endl; cout<<" 2: Ingresar Estudiantes a un Curso "<<endl; cout<<" 3: Pasar un Estudiante a otro curso "<<endl; cout<<" 4: Listar Estudiantes Exonerados de un curso "<<endl; cout<<" 5: Listar Estudiantes para Examen Principal de un curso "<<endl; cout<<" 6: Listar Estudiantes Reprobados de un curso "<<endl; cout<<" 7: Mostrar nota promedio de un curso "<<endl; cout<<" 8: Borrar un Curso de la lista cursos "<<endl; cout<<" 9: Borrar un Estudiante de un Curso "<<endl; cout<<" 10: Borrar un Estudiante del sistema Academico "<<endl; cout<<" 0: Salir "<<endl; scanf("%d",&op); residuo=1; switch (op) { case 1: { clrscr(); cargar(); getch(); break; } case 2: { ingresarEst(); getch(); clrscr(); break; } case 3: { clrscr(); pasarEstudiante(); getch(); break; } case 4: { clrscr(); mostrarListEx(); getch(); break; } case 5: { clrscr(); mostrarListExamPrinc(); getch(); break; } case 6: { clrscr(); mostrarListReprobados(); getch(); break; }

clrscr();

case 7: { clrscr(); mostrarPromedio(); getch(); break; } case 8: { clrscr(); cout<<"Ingrese el Paralelo a eliminar: ";cin>>parale; cout<<"Ingrese el Semestre a eliminar: ";cin>>semes;cout<<endl; cout<<"LISTA DE TODOS LOS CURSOS"<<endl<<endl; oCursos.ParaTodos(AccC); cCurso *ptrC=(cCurso*)oCursos.Buscar(IgualPS); if (ptrC!=NULL) { oCursos.EliEnPos(); cout<<"LISTA DE TODOS LOS CURSOS"<<endl<<endl; oCursos.ParaTodos(AccC); } else cout<<"CURSO NO ENCONTRADO"<<endl; getch(); break; } case 0: { clrscr(); residuo=0; break; } break; } } while(residuo==1); } void main () { clrscr(); cSA ob; ob.menuSA(); cout<<endl<<endl<<endl<<endl<<endl; cout<<"Realizado Por: Lucia Nunez"<<endl; cout<<"Codigo: 5135"<<endl; getch(); }

Вам также может понравиться