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
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
Código (c) [Seleccionar]
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;
}
//**************************************************************************************