30/08/2010, 19:11
|
| | Fecha de Ingreso: agosto-2010
Mensajes: 10
Antigüedad: 14 años, 4 meses Puntos: 0 | |
Respuesta: Problema con un error de estructura Sigo por aqui: Gestion de clientes
Código:
#include <cstdlib>
#include <iostream>
#include <string>
#include <conio2.h>
#include "Libreria.h"
struct L_Clientes *cap,*aux,*f,*p;
using namespace std;
void Gestion_de_clientes(void)
{
int op;
struct Clientes cli;
do{
gotoxy(36,5); cout << " GESTION DE LOS CLIENTES " << endl;
gotoxy(33,6); cout << " -------------------------- " << endl;
gotoxy(33,7); cout << " 1-Introducir Clientes " << endl;
gotoxy(33,8); cout << " 2-Borrar Clientes " << endl;
gotoxy(33,9); cout << " 3-Visualizar Clientes " << endl;
gotoxy(33,10); cout << " 4-Volver al menu principal " << endl;
gotoxy(33,11); cout << " -------------------------- " << endl;
gotoxy(33,13); cout << " Que opcion desea elegir? ";
cin >> op;
switch(op){
case 1: poner_clientes();
break;
case 2: Borrar_clientes();
break;
case 3: Visualizar_clientes();
break;
case 4: system("PAUSE");
return;
exit(1);
}
}while(op!=4);
system("PAUSE");
}
void poner_clientes(void)
{
aux=(struct L_Clientes *)malloc(sizeof(struct L_Clientes));
clrscr( );
cout<< " Introduce el Codigo del Cliente: ";
cin>>aux->cod_clientes;
aux->seg=NULL;
if (cap==NULL)
cap=aux;
else if (cap->cod_clientes > aux->cod_clientes)
{
aux->seg=cap;
cap=aux;
}
else
{
p=f=cap;
while (p->cod_clientes < aux->cod_clientes && p->seg!=NULL)
{
if (p==cap) p=p->seg;
else
{
p=p->seg;
f=f->seg;
}
}
if(p->seg==NULL && p->cod_clientes<aux->cod_clientes)
{
aux->seg=p->seg;
p->seg=aux;
}
else
{
aux->seg=f->seg;
f->seg=aux;
}
}
cout<< " Introduce el Nombre del Cliente: ";
cin>>aux->nom_clientes;
aux->seg=NULL;
if (cap==NULL)
cap=aux;
else if (cap->nom_clientes > aux->nom_clientes)
{
aux->seg=cap;
cap=aux;
}
else
{
p=f=cap;
while (p->nom_clientes < aux->nom_clientes && p->seg!=NULL)
{
if (p==cap) p=p->seg;
else
{
p=p->seg;
f=f->seg;
}
}
if(p->seg==NULL && p->nom_clientes<aux->nom_clientes)
{
aux->seg=p->seg;
p->seg=aux;
}
else
{
aux->seg=f->seg;
f->seg=aux;
}
}
cout<< " Introduce el Apellido del cliente : ";
cin>>aux->apellidos_clientes;
aux->seg=NULL;
if (cap==NULL)
cap=aux;
else if (cap->apellidos_clientes > aux->apellidos_clientes)
{
aux->seg=cap;
cap=aux;
}
else
{
p=f=cap;
while (p->apellidos_clientes < aux->apellidos_clientes && p->seg!=NULL)
{
if (p==cap) p=p->seg;
else
{
p=p->seg;
f=f->seg;
}
}
if(p->seg==NULL && p->apellidos_clientes<aux->apellidos_clientes)
{
aux->seg=p->seg;
p->seg=aux;
}
else
{
aux->seg=f->seg;
f->seg=aux;
}
}
cout<< " Introduce la Direccion del Cliente: ";
cin>>aux->direccion;
aux->seg=NULL;
if (cap==NULL)
cap=aux;
else if (cap->direccion > aux->direccion)
{
aux->seg=cap;
cap=aux;
}
else
{
p=f=cap;
while (p->direccion < aux->direccion && p->seg!=NULL)
{
if (p==cap) p=p->seg;
else
{
p=p->seg;
f=f->seg;
}
}
if(p->seg==NULL && p->direccion<aux->direccion)
{
aux->seg=p->seg;
p->seg=aux;
}
else
{
aux->seg=f->seg;
f->seg=aux;
}
}
cout<< " Introduce el Telefono: ";
cin>>aux->telefono;
aux->seg=NULL;
if (cap==NULL)
cap=aux;
else if (cap->telefono > aux->telefono)
{
aux->seg=cap;
cap=aux;
}
else
{
p=f=cap;
while (p->telefono < aux->telefono&& p->seg!=NULL)
{
if (p==cap) p=p->seg;
else
{
p=p->seg;
f=f->seg;
}
}
if(p->seg==NULL && p->telefono<aux->telefono)
{
aux->seg=p->seg;
p->seg=aux;
}
else
{
aux->seg=f->seg;
f->seg=aux;
}
}
system("cls");
}
void Borrar_clientes(void)
{
int var;
if (cap==NULL) return;
clrscr( );
cout<<"Introduce el codigo del Cliente a eliminar: ";
cin>>var;
if (cap->cod_clientes==var)
{
p=cap;
cap=cap->seg;
free(p);
}
else
{
p=f=cap;
while (p->cod_clientes != var && p->seg!=NULL)
{
if (p==cap)p=p->seg;
else
{
p=p->seg;
f=f->seg;
}
}
if (p->seg==NULL && p->cod_clientes!=var)
{
cin.get();
cout<<"Este valor no esta en la lista";
cin.get();
cout<<endl;
return;
}
f->seg=p->seg;
free(p);
}
system("cls");
}
void Visualizar_clientes(void)
{
if (cap==NULL)
{
cout<<"La llista esta vacia";
cin.get();
return;
}
clrscr( );
aux=cap;
while (aux!=NULL)
{
cout<<aux->cod_clientes;
aux=aux->seg;
}
cin.get( );
system("cls");
}
void crear_lista_Clientes(void)
{
struct L_Clientes cli;
FILE *f1;
if((f1=fopen("Clientes.dat", "rb"))==NULL){
cout << "El archivo \"Clientes.dat\" no se puede leer." << endl;
cin.get();
exit(1);
}
fread(&cli, sizeof(cli),1,f1);
while(!feof(f1)){
aux=(struct L_Clientes *)malloc(sizeof(struct L_Clientes));
aux->cod_clientes=cli.cod_clientes;
strcpy(aux->nom_clientes,cli.nom_clientes) ;
strcpy(aux->apellidos_clientes,cli.apellidos_clientes);
strcpy(aux->direccion,cli.direccion);
aux->telefono=cli.telefono;
aux->seg=NULL;
if (cap==NULL)
cap=aux;
else if (cap->cod_clientes > aux->cod_clientes){
aux->seg=cap;
cap=aux;
}else{
p=f=cap;
while (p->cod_clientes < aux->cod_clientes && p->seg!=NULL){
if (p==cap) p=p->seg;
else{
p=p->seg;
f=f->seg;
}
}
if(p->seg==NULL && p->cod_clientes<aux->cod_clientes){
aux->seg=p->seg;
p->seg=aux;
}else{
aux->seg=f->seg;
f->seg=aux;
}
}
fread(&cli, sizeof(cli),1,f1);
}
fclose(f1);
}
void guardar_lista_Clientes(void)
{
struct L_Clientes cli;
FILE *f1;
if((f1=fopen("Clientes.dat", "wb"))==NULL){
cout << "El archivo \"Clientes.dat\" no se puede leer." << endl;
cin.get();
exit(1);
}
aux=cap;
while(!feof(f1)){
aux->cod_clientes=cli.cod_clientes;
strcpy(cli.nom_clientes,aux->nom_clientes);
strcpy(cli.apellidos_clientes,aux->apellidos_clientes);
strcpy(cli.direccion,aux->direccion);
aux->telefono=cli.telefono;
fwrite(&cli, sizeof (cli),1,f1);
aux->seg=NULL;
}
fclose(f1);
}
|