Ver Mensaje Individual
  #6 (permalink)  
Antiguo 30/08/2010, 19:11
Delber
 
Fecha de Ingreso: agosto-2010
Mensajes: 10
Antigüedad: 13 años, 7 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);
}