
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.524 visualizaciones desde el 4 de Junio del 2002
Interface de las clases que forman el Listín telefónico
// 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!