
Listín telefónico en C++
C/Visual C
Publicado el 4 de Junio del 2002 por Eduardo García Alegre (3 códigos)
9.670 visualizaciones desde el 4 de Junio del 2002
Interface de las clases que forman el Listín telefónico






(3)














// Interface de las clases que forman el Listín telefónico
// Nombre del archivo cAgenda.cpp
#include "iostream.h"#include "conio.h"#include "stdio.h"#include "string.h"#include "alloc.h"class cPersona
{char nombre[20];
char telefono[11];
int edad;
char notas[500];
public:cPersona(void);
void ver(void);
void modificar(void);
};cPersona::cPersona(void)
{strcpy(nombre,"");
strcpy(telefono,"");
edad=0;strcpy(notas,"");
}void cPersona::ver(void)
{cout << nombre << " " << telefono << " " << edad << " " << endl << notas
<< endl;
}void cPersona::modificar(void)
{char res='N';
while ((res=='N') || (res=='n'))
{clrscr();
cout << "Introduce nombre: ";
fflush(stdin);
gets(nombre);
cout << "Introduce telefono: ";
fflush(stdin);
gets(telefono);
cout << "Introduce edad: ";
cin >> edad;
cout << "Introduce notas: ";
fflush(stdin);
gets(notas);
cout << "Son correctos los datos?(S/N) ";
cin >> res;
}}class cListin
{struct lista
{cPersona p;
lista *sig,*ant;
};int contador;
lista *l,*actual;
public:cListin(void);
cListin(char[]);
~cListin(void);
void agregar(void);
void ver(void);
void modificar(void);
void listado(void);
void borrar(void);
void borrartodos (void);
void siguiente(void);
void anterior(void);
};cListin::cListin(void)
{l=actual=NULL;
contador=0;}cListin::~cListin(void)
{while (l!=NULL)
{ actual=l;l=l->sig;
free(actual);
} actual=l; contador=0;}void cListin::agregar(void)
{lista *aux=(lista *) malloc (sizeof(lista));
contador++;
aux->p.modificar();
aux->sig=aux->ant=NULL;
if (l==NULL)
l=actual=aux;
else
{aux->sig=actual->sig;
aux->ant=actual;
actual=actual->sig=aux;
}}void cListin::modificar(void)
{actual->p.modificar();
}void cListin::ver(void)
{if (actual==NULL)
cout << "No hay personas en el listin";
else
actual->p.ver();
}void cListin::listado(void)
{char i;
lista *aux=l;
clrscr();
cout << contador << " personas en la lista" << endl << endl;
while (aux!=NULL)
{aux->p.ver();
aux=aux->sig;
cout << endl << endl;
}getch();
}void cListin::borrar(void)
{lista *aux;char res;
contador--;
clrscr();
cout << "Borrar a esta persona?(S/N) ";
cin >> res;
if ((res=='S') || (res=='s'))
{if (actual==l)
{l=l->sig;
l->ant=NULL;
aux=actual; actual=l; }else
if (actual->sig==NULL)
{ aux=actual;actual=actual->ant;
actual->sig=NULL;
}else
{actual->sig->ant=actual->ant;
actual->ant->sig=actual->sig;
aux=actual;actual=actual->sig;
}free(aux);
}ver();
}void cListin::borrartodos(void)
{char res;
clrscr();
cout << "Borrar todas las personas?(S/N) ";
cin >> res;
if ((res=='S') || (res=='s'))
cListin::~cListin();
}void cListin::siguiente(void)
{if (actual!=NULL)
if (actual->sig!=NULL)
actual=actual->sig;
ver();
}void cListin::anterior(void)
{if (actual!=NULL)
if (actual->ant!=NULL)
actual=actual->ant;
ver();
}class cMenuAgenda
{cListin L1;
public:void ver(void);
int seleccionar(void);
};void cMenuAgenda::ver(void)
{clrscr();
cout << "Selecciona una opcion" << endl;
cout << "---------------------" << endl;
cout << "1.- Agregar persona" << endl;
cout << "2.- Modificar persona actual" << endl;
cout << "3.- Listado completo" << endl;
cout << "4.- Borrar persona actual" << endl;
cout << "5.- Borrar listin" << endl;
cout << "6.- Ver siguiente persona" << endl;
cout << "7.- Ver persona anterior" << endl;
cout << "Otro.- Salir" << endl;
}int cMenuAgenda::seleccionar(void)
{int op,salida=0;
cout << endl << "----------------------------------------------";
cout << endl << "Persona actual:" << endl << endl;
L1.ver();
cout << endl << "----------------------------------------------" << endl;
cout << endl << "Opcion? ";
cin >> op;
switch (op)
{ case 1:L1.agregar();
break;
case 2:L1.modificar();
break;
case 3:L1.listado();
break;
case 4:L1.borrar();
break;
case 5:L1.borrartodos();
break;
case 6:L1.siguiente();
break;
case 7:L1.anterior();
break;
default:salida=-1;
}return salida;
}//Programa principal
#include "cAgenda.hpp"void main (void)
{cMenuAgenda menu;
int salida;
do
{menu.ver();
salida=menu.seleccionar();
}while (salida==0);
}
Comentarios sobre la versión: Versión 1 (3)
Hay que mejorar esa aprte aunque eso imprica mucho trabajo extra!