Ayuda para resolver dos funciones

Iniciado por fupro, 8 Junio 2010, 15:36 PM

0 Miembros y 1 Visitante están viendo este tema.

fupro

muy buenas tardes... eespero q al leer este mensaje se encuentre muy bn .
lo sigueinte es q me mandaron a hacer un software para mi examen final el cual manejara toda la informacion de los clientes de una coorporacionde ahorros los cuales son crear dos archivos clientes y movimiento, reañizar aperturas de cuenta, modificar cleintes, eliminar clientes,realizar consignacion, reallizar retiros, listado general de clientes,consulta especifica de clientes y salir.
los registros q se guardan el el archivo clientes son numero de cuenta, nombre, cedula, tipo de cuenta,direccion del cliente telefonoy saldo.los registrso para el archivo movimiento son numero de cuenta, tipo de transaccion y monto. el numero de cuenta se maneja en los ados archivos movimiento y clientes. si se elimina una cuenta del archivo cleinte tambien debe borrarse en archivo movimeinto. si se realiza la consignacion esta debe guardarse en movimiento y actualizar en cliente. si retiro debe guardar en movimiento y actualizar en cleinte y no se puede retirar mas del saldo disponible.. lo unico q no eh dado para hacer  es el palnteamiento de consignar y retiro. necesit su asesoria exacta para plantearlos  gracias  

este es el programa q llevo hecho haste el momento

struct
{ char numcuenta[12];
 char numced [10];
 char nomcliente[50];
 char tcuenta[12];
 char direcliente[30];
 char telcliente[12];
 float saldo;
}datos;

struct
{ char numcuenta[12];
 char tipotran[12];
 float monto;
}movim;

//**************************************************************************

int id1,id2;

//****************************************************************************

void validar_crear1();
void crear1();
void validar_crear2();
void crear2();
void ingresar();
void modificar();
void modificar2(char auxc1[20],char auxc2[20]);
void eliminar();
void eliminar2(char auxc[20]);
void consignar();
void retirar();
void listar();
void consultar();
void menu();
int buscar(char datos[20]);

//**********************************************************************************

void main()
{ menu();
}

//*************************************************************************************

void menu()
{ int op;

do
{ clrscr();
gotoxy(23,5);printf("**<<<MENU PRINCIPAL>>>**");
gotoxy(23,7);printf("1. CREAR ARCHIVO CLIENTES");
gotoxy(23,8);printf("2. CREAR ARCHIVO MOVIMIENTOS");
gotoxy(23,9);printf("3. REALIZAR APERTURA DE CUENTAS");
gotoxy(23,11);printf("4. MODIFICAR DATOS DE CLIENTES");
gotoxy(23,12);printf("5. ELIMINAR DATOS DE CLIENTES");
gotoxy(23,13);printf("6. REALIZAR CONSIGNACIONES");
gotoxy(23,14);printf("7. REALIZAR RETIROS");
gotoxy(23,16);printf("8. LISTADO GENERAL DE CLIENTES");
gotoxy(23,17);printf("9. CONSULTA ESPECIFICA DE CLIENTES");
gotoxy(23,18);printf("10. SALIR DEL PROGRAMA");
gotoxy(23,19);printf(" SELECCIONE OPCION DE [1-10]...");
scanf("%d",&op);
switch (op)

{
 case 1:validar_crear1(); break;
 case 2:validar_crear2(); break;
 case 3:ingresar(); break;
 case 4:modificar(); break;
 case 5:eliminar(); break;
 case 6:consignar(); break;
 case 7:retirar(); break;
 case 8:listar(); break;
 case 9:consultar(); break;
 case 10: exit(0); break;
 default: gotoxy(22,22);
 gotoxy (25,17); printf("opcion incorrecta...<ENTER>...para continuar..");
 getch(); break;
 }
} while (op!=10);
}

//*****************************************************************************************
 void validar_crear1()
 { char ct;

   id1=_open("c:\\clientes.txt",O_RDONLY);

   if (id1!=-1)
   {gotoxy(25,18);printf("EL ARCHIVO CLIENTES YA EXISTE ");
   gotoxy(25,19);printf(" DESEA CREARLO NUEVAMENTE[S/N]... ");
   ct=toupper (getch());
   if (ct=='S')
   {crear1();
   }
  }
  else
  {crear1();
  }
 }

//********************************************************************************************************
 
void crear1()
{ id1=_creat("c:\\clientes.txt",0);
 clrscr();

 if(id1==-1)
 { gotoxy(28,18); printf(" IMPOSIBLE CREAR EL ARCHIVO CLIENTES...!");
   getch();
 }
 else
 { gotoxy(28,18); printf("EL ARCHIVO HA SIDO CREADO"); getch();
   _close(id1);
 }
}

//*********************************************************************************************


 void validar_crear2()
 { char rp;

   id2=_open("c:\\movimientos.txt",O_RDONLY);

   if (id2!=-1)
   {gotoxy(25,18);printf("EL ARCHIVO MOVIMIENTOS YA EXISTE ");
   gotoxy(25,19);printf(" DESEA CREARLO NUEVAMENTE[S/N]... ");
   rp=toupper (getch());
   if (rp=='S')
   {crearm();
   }
  }
  else
  {crear2();
  }
 }

//*****************************************************************************************************


void crear2()
{ id2=_creat("c:\\movimientos.txt",0);
  clrscr();

  if(id2==-1)
  { gotoxy(28,18); printf(" IMPOSIBLE CREAR EL ARCHIVO MOVIMIENTOS...!");
    getch();
  }
  else
  { gotoxy(28,18); printf("EL ARCHIVO HA SIDO CREADO"); getch();
   _close(id2);
  }
 }

 //*********************************************************************************************

 void ingresar()

 { char aux[20],sg='S';
   int c,bytes;

   clrscr();

   id1=_open("c:\\clientes.txt",O_RDWR);
   if(id1==-1)
   { gotoxy(28,18); printf("IMPOSIBLE ABRIR EL ARCHIVO CLIENTES...!");
   }
   else
   {while (sg=='S')
    { clrscr();
      gotoxy(29,5); printf("**INGRESAR CUENTAS**");
      gotoxy(22,11); printf("-------------------");
      gotoxy(22,10); printf("DIGITE EL NUMERO DE LA CUENTA...");
      fflush(stdin); gets(aux);
      c=buscar(aux);
      if(c!=0)
      {gotoxy(22,12); printf("EL NUMERO DE LA CUENTA YA EXISTE...!");
      }
      else
      { strcpy(datos.numcuenta,aux);
gotoxy(22,13); printf("----------------------");
gotoxy(22,12); printf(" DIGITE EL NUMERO DE LA CEDULA...");
gets(datos.numced);
gotoxy(22,15); printf("----------------------");
gotoxy(22,14); printf("DIGITE EL NOMBRE...");
gets(datos.nomcliente);
        gotoxy(22,17); printf("----------------------");
gotoxy(22,16); printf("DIGITE EL TIPO DE CUENTA...");
gets(datos.tcuenta);
gotoxy(22,19); printf("----------------------");
gotoxy(22,18); printf("DIGITE LA DIRECCION...");
        gets(datos.direcliente);
gotoxy(22,21); printf("----------------------");
gotoxy(22,20); printf("DIGITE EL TELEFONO...");
gets(datos.telcliente);
gotoxy(22,23); printf("----------------------");
gotoxy(22,22); printf("DIGITE EL SALDO...");
scanf("%f",&datos.saldo);
lseek (id1,0,SEEK_END);
bytes=_write(id1,&datos,sizeof(datos));
if(bytes==-1)
{ gotoxy(22,25); printf(" IMPOSIBLE GRABAR EL REGISTRO...!");
}
else
{ gotoxy(22,25); printf("REGISTROS ALMACENADOS");
}
}
gotoxy(22,26); printf("DESEA AGREGAR MAS DATOS [S/N]...");
sg=toupper(getch());
}
_close(id1);
}
      }    

   
//*******************************************************************************************************

 

      void modificar()
      { char aux1[20], aux2[20],sg='S';
int c,bytes,op1;

id1=_open("c:\\clientes.txt",O_RDWR);
if(id1==-1)
{gotoxy(20,10);printf(" IMPOSIBLE ABRIR EL ARCHIVO CLIENTES...!");
}
else
{while(sg=='S')
 {clrscr();
  gotoxy(10,4);printf(" DIGITE EL NUMERO DE LA CUENTA A MODIFICAR...");
  fflush(stdin);gets(aux1);
  c=buscar(aux1);
  if(c==0)
  {gotoxy(10,6);printf("EL NUMERO DE LA CUENTA A MODIFICAR NO EXISTE...!");
  }
  else
  {gotoxy(10,7);printf("NUMERO DE CUENTA DEL CLIENTE...%s",datos.numcuenta);
   gotoxy(10,7);printf("NOMBRE DEL CLIENTE...%s",datos.nomcliente);
   gotoxy(10,8);printf("TIPO DE CUENTA...%s",datos.tcuenta);
   gotoxy(10,9);printf("DIRECCION DEL CLIENTE...%s",datos.direcliente);
   gotoxy(10,10);printf("TELEFONO DEL CLIENTE...%s",datos.telcliente);
   gotoxy(10,11);printf("-----------------");
           gotoxy(10,12);printf("1.NUMERO DE CUENTA DEL CLIENTE...");
   gotoxy(10,13);printf("2.NOMBRE DEL CLIENTE...");
   gotoxy(10,14);printf("3.TIPO DE CUENTA...");
   gotoxy(10,15);printf("4.DIRECCION DEL CLIENTE...");
   gotoxy(10,16);printf("5.TELEFONO DEL CLIENTE...");
           gotoxy(10,17);printf("6.SALDO DEL CLIENTE...");
   gotoxy(10,18);printf(" SELECCIONE LA OPCION A MODIFICAR DE [1-6]...");
   scanf("%d",&op1);
   switch(op1)
   {case 1:gotoxy(10,15);printf("DIGITE EL NUMERO DE CUENTA ACTUAL:%s",datos.numcuenta);
   gotoxy(10,16);printf(" DIGITE EL NUEVO NUMERO DE CUENTA...");
   fflush(stdin);gets(aux2);
   c=buscar(aux2);
   if(c!=0)
   {gotoxy(10,17);printf("EL NUMERO DE CUENTA YA EXISTE...!");
   }
   else
   {c=buscar(aux1);
    strcpy(datos.numcuenta,aux2);
   }
                   modificarm(aux1,aux2);
   break;
     case 2: gotoxy(10,15);printf("NOMBRE DEL CLIENTE...%s",datos.nomcliente);
  gotoxy(10,16);printf(" DIGITE EL NUEVO NOMBRE...");
  fflush(stdin); gets(datos.nomcliente);
  break;

     case 3:gotoxy(10,15);printf("TIPO DE CUENTA...%s",datos.tcuenta);
  gotoxy(10,16);printf("DIDITE SU NUEVO TIPO DE CUENTA...");
  fflush(stdin); gets(datos.tcuenta);
  break;


             case 4:gotoxy(10,15);printf("DIRECCION DEL CLIENTE...%s",datos.direcliente);
         gotoxy(10,16);printf(" DIGITE SU NUEVA DIRECCION...");
   fflush(stdin); gets(datos.direcliente);

     case 5:gotoxy(10,15);printf("TELEFONO DEL CLIENTE...%s",datos.telcliente);
          gotoxy(10,16);printf(" DIGITE SU NUEVO NUMERO DE TELEFONO...");
    fflush(stdin); gets(datos.telcliente);

     case 6:gotoxy(10,15);printf("SALDO DEL CLIENTE...%s",datos.saldo);
                    gotoxy(10,16);printf(" DIGITE EL NUEVO SALDO...");
    fflush(stdin);printf("%f",datos.saldo);
                    break;

             default: gotoxy(10,15);printf("OPCION ERRADA...!");
    op1=0;
    break;
   }

   if(op1!=0)
   {bytes=_write(id1,&datos,sizeof(datos));
             if(bytes==-1)
    {gotoxy(10,19);printf("IMPOSIBLE MODIFICAR EL ARCHIVO...!");
    }
    else
             {gotoxy(10,19);printf("DATOS MODIFICADOS...!");
     }
    }
   }
  gotoxy(10,20);printf("DESEA MODIFICAR MAS DATOS[S/N]...");
  sg=toupper(getch());
  }
 }
 _close(id1);
 }



  //*******************************************************************************************************

    void modificar2(char auxc1[20], char auxc2[20])
    {
int bytes1,bytes2;

id2=_open("c:\\movimientos.txt",O_RDWR);

if(id2==-1)
{ gotoxy(20,10);printf("IMPOSIBLE ABRIR EL ARCHIVO MOVIMIENTOS...!");
}
else
{ while (!eof(id2))
 { bytes1=_read(id2,&movim,sizeof(movim));
           if(bytes1==-1)
   { gotoxy(10,9);printf("IMPOSIBLE LEER EL ARCHIVO MOVIMIENTOS...!");
     exit(1);
   }
   else
           { if(strcmp(auxc1,movim.numcuenta)==0)
     { strcpy(movim.numcuenta,auxc2);
       bytes2=_write(id2,&movim,sizeof(movim));
       if(bytes2==-1)
       { gotoxy(10,19);printf("IMPOSIBLE MODIFICAR EL ARCHIVO MOVIMIENTOS...!");
       }
     }
   }
         }
      }
_close(id2);
     }
    //***********************************************************************************************


    void eliminar()
    { char aux[20],sg='S';
      int x,bytes1,bytes2,id3;
     
      while (sg=='S')
      { clrscr();
id1=_open("c:\\clientes.txt",O_RDWR);
if(id1==-1)
{gotoxy(20,10);printf(" IMPOSIBLE ABRIR EL ARCHIVO CLIENTES...!");
}
       
else
{gotoxy(10,10);printf(" DIGITE EL NUMERO DE LA CUENTA A ELIMINAR...");
 fflush(stdin);gets(aux);
 x=buscar(aux);
 if(x==0)
 {gotoxy(10,11);printf("EL NUMERO DE LA CUENTA A ELIMINAR NO EXISTE...!");
 }
 else
 {gotoxy(10,11);printf("NUMERO DE LA CEDULA...%s",datos.numced);
  gotoxy(10,12);printf("NOMBRE DEL CLIENTE...%s",datos.nomcliente);
  gotoxy(10,13);printf("TIPO DE CUENTA...%s",datos.tcuenta);
  gotoxy(10,14);printf("DIRECCION DEL CLIENTE...%s",datos.direcliente);
  gotoxy(10,15);printf("TELEFONO DEL CLIENTE...%s",datos.telcliente);
  gotoxy(10,16);printf("SALDO DEL CLIENTE...%f",datos.saldo);
   id3=_creat("c:\\auxi.txt",0);
   if(id3==-1)
   {clrscr();
    gotoxy(10,11);printf(" IMPOSIBLE ABRIR EL ARCHIVO AUXILIAR CLIENTES...!");
    getch();
    }
    else
    {_close(id3);
    }

    id3=_open("c:\\auxi.txt",O_RDWR);
    lseek(id1,0,SEEK_SET);
    while(!eof(id1))
    { bytes1=_read(id1,&datos,sizeof(datos));
             if(bytes1==-1)
            {gotoxy(10,9);printf(" IMPOSIBLE LEER EL ARCHIVO CLIENTES..!");
     exit(1);
     }
     else
     {if(strcmp(datos.numcuenta,aux)!=0)
      { bytes2=_write(id3,&datos,sizeof(datos));
        if(bytes2==-1)
{ gotoxy(10,11);printf("IMPOSIBLE GRABAR EL ARCHIVO CLIENTES");
        }
           }
          }
 }
 _close(id3);
 _close(id1);
 unlink("c:\\clientes.txt");
 rename("c:\\auxi.txt","c:\\clientes.txt");
 }
}
gotoxy(10,15);printf("DESEA ELIMINAR MAS DATOS[S/N]...");
sg=toupper(getch());
}
}
    //***************************************************************************************

    void eliminar2(char auxc[20])
    {
      int x,bytes1,bytes2,id4;
     
      id2=_open("c:\\movimientos.txt",O_RDWR);
if(id2==-1)
{ gotoxy(20,10);printf(" IMPOSIBLE ABRIR EL ARCHIVO MOVIMIENTOS...!");
}
        else
{ id4=_creat("c:\\auxi2.txt",0);
  if(id4==-1)
  { clrscr();
    gotoxy(10,11);printf(" IMPOSIBLE ABRIR EL ARCHIVO AUXILIAR MOVIMIENTOS...!");
    getch();
  }
  else
  { _close(id4);
  }

  id4=_open("c:\\auxi2.txt",O_RDWR);
  lseek(id2,0,SEEK_SET);
  while(!eof(id2))
  { bytes1=_read(id2,&movim,sizeof(movim));
            if(bytes1==-1)
            { gotoxy(10,9);printf(" IMPOSIBLE LEER EL ARCHIVO MOVIMIENTOS..!");
      exit(1);
    }
    else
    { if(strcmp(movim.numcuenta,auxc)!=0)
      { bytes2=_write(id4,&movim,sizeof(movim));
        if(bytes2==-1)
{ gotoxy(10,11);printf("IMPOSIBLE GRABAR EL ARCHIVO CLIENTES");
        }
              }
            }
  }
  _close(id4);
  _close(id2);
  unlink("c:\\movimientos.txt");
  rename("c:\\auxi2.txt","c:\\movimientos.txt");
}
    }
   



    //*************************************************************************************************

      void consignar()
      {
     }

     





    //******************************************************************************************

      void retirar()

      {
      }





    //*****************************************************************************************


    void listar()

    { int fila,bytes;

      clrscr();
      gotoxy(28,3);printf("**<<LISTADO DE CLIENTES>>**");
      gotoxy(10,5);printf("NUMERO DE LA CUENTA");
      gotoxy(20,5);printf("NUMERO DE LA CEDULA");
      gotoxy(30,5);printf("NOMBRE DEL CLIENTE");
      gotoxy(40,5);printf("TIPO DE CUENTA");
      gotoxy(50,5);printf("DIRECCION DEL CLIENTE");
      gotoxy(60,5);printf("TELEFONO DEL CLIENTE");
      gotoxy(70,5);printf("SALDO DEL CLIENTE");

      id1=_open("c:\\clientes.txt",O_RDONLY);
      if(id1==-1)
      {gotoxy(20,10);printf("IMPOSIBLE ABRIR EL ARCHIVO CLIENTES...!");
       getch();
      }
      else
      {lseek(id1,0,SEEK_SET);
       fila=6;
      while(!eof(id1))
     { bytes=_read(id1,&datos,sizeof(datos));
      if (bytes==-1)
      {gotoxy(10,9);printf("IMPOSIBLE LEER EL ARCHIVO CLIENTES...!");
      }
      else
      { gotoxy(10,fila); printf("%s",datos.numcuenta);
gotoxy(20,fila); printf("%s",datos.numced);
gotoxy(30,fila); printf("%s",datos.nomcliente);
gotoxy(40,fila); printf("%s",datos.tcuenta);
gotoxy(50,fila); printf("%s",datos.direcliente);
gotoxy(60,fila); printf("%s",datos.telcliente);
gotoxy(70,fila); printf("%f",datos.saldo);
fila++;
}
}
      }
      _close(id1);
      printf("\n\nPRESIONE<ENTER>PARA CONTINUAR...!");
      getch();
      }

     //***************************************************************************************************

     void consultar()

     { char aux[20],sg='S';
int x;

clrscr();
id1=_open("c:\\clientes.txt",O_RDWR);
if(id1==-1)
{ gotoxy(20,10);printf("IMPOSIBLE ABRIR EL ARCHIVO CLIENTES...!");
}
else
{while(sg=='S')
 {clrscr();
 gotoxy(10,11);printf(" DIGITE EL NUMERO DE CUENTA A CONSULTAR...!");
 fflush(stdin);gets(aux);
 x=buscar(aux);
 if(x==0)
 {gotoxy(10,11);printf("EL NUMERO DE CUENTA NO EXISTE...!");
 }
 else
 {gotoxy(10,11);printf("NUMERO DE LA CEDULA...%s",datos.numced);
  gotoxy(10,12);printf("NOMBRE DEL CLIENTE...%s",datos.nomcliente);
  gotoxy(10,13);printf("TIPO DE CUENTA...%s",datos.tcuenta);
  gotoxy(10,14);printf("DIRECCION DEL CLIENTE...%s",datos.direcliente);
  gotoxy(10,15);printf("TELEFONO DEL CLIENTE...%s",datos.telcliente);
  gotoxy(10,16);printf("SALDO...%f",datos.saldo);
  }
  gotoxy(10,18);printf("DESEA CONSULTAR MAS DATOS[S/N]...");
  sg=toupper(getch());
  }
 }
 _close(id1);
}

//***********************************************************************************************************
 int buscar(char dato[20])
 {int bytes,sw=0,inc=0;

 lseek(id1,0,SEEK_SET);
 while (!eof(id1))
 {bytes=_read(id1,&datos,sizeof(datos));
          if(bytes==-1)
 {gotoxy(10,9);printf("IMPOSIBLE LEER EL ARCHIVO CLIENTES...!");
  exit(1);
  }
  else
  { inc++;
  if(strcmp(datos.numcuenta,dato)==0)
  {sw=1;
   break;
   }
  }
 }
 lseek(id1,(long)((inc-1)*(sizeof(datos))),SEEK_SET);
 return sw;
 }
    //**************************************************************************************

[D4N93R]

Podrías usar tags code si quieres.

[code=cpp]tu código aki[/code]

nicolas_cof

#2
Por favor trata de no hacer doble post, utiliza el boton modificar

http://foro.elhacker.net/programacion_cc/este_es_l_sotfware-t296004.0.html;msg1466231#msg1466231

Recomendacion: leer el siguiente tema creado por Littlehorse

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Salu10.