hola amigos tengo un problema, en la u estamos empezando a ver el tema de archivos, y la verdad hasta ahora no he entendido mucho, antes de esto hicimos vimos el tema de estructuras, y ahora el profesor nos pidio que pasamos esos ejercicios de estructuras a archivos y queria saber si aqui en el foro podrian ayudarme a hacer, al menos uno de ellos para yo tener una idea y seguir con los otros. Si quieren lo revisan yo tengo una partesita adelantada, y me comentan sus sugerencia, lo voy a subir por que el codigo es un poquito largo y no quiero que el post quede tan alargado.
Este ejemplo recoge una informacion, luego pide un deposito o un retiro, y al introducir el numero de cuenta pide el monto y se lo suma o lo resta a la saldo total de la persona
Ok aqui va el codigo
_______________________________________________________________________
#include<conio.h>
#include <stdio.h>
#include <string.h>
struct direccion
{
char calle[30];
char barrio[30];
char ciudad[30];
char postal[30];
char telefono[30];
};
struct cliente
{
long int cuenta;
char nombre[30];
struct direccion y;
float saldo;
};
void cuenta(void)
{
clrscr();
struct cliente a;
FILE *ap;
ap=fopen("registrobanco.txt","a");
printf("\nIngrese numero de cuenta: ");
scanf("%ld", &a.cuenta);
fflush(stdin);
printf("\nIngrese el nombre: ");
gets(a.nombre);
printf("\n\nDomicilio");
printf("\nIngrese la calle: ");
gets(a.y.calle);
printf("\nIngrese el codigo postal: ");
gets(a.y.postal);
printf("\nIngrese la colonia: ");
gets(a.y.barrio);
printf("\nIngrese ciudad: ");
gets(a.y.ciudad);
printf("\nIngrese el telefono: ");
gets(a.y.telefono);
printf("\n\nIngrese el saldo para su cuenta: ");
scanf("%f", &a.saldo);
fwrite(&a,sizeof(cliente),1,ap);
fclose(ap);
clrscr();
}
void deposito(void)
{
long int comp;
int i, cont;
float dep;
struct cliente a;
FILE *ap;
ap=fopen("registrode_banco.dat","r+");
fread(&a,sizeof(cliente),1,ap);
printf("Digite su numero de cuenta: ");
scanf("%ld", &comp);
for(i=0;i<100;i++)
{
if(comp==a
.cuenta)
{
printf("\nIngrese el monto a depositar: ");
scanf("%f", &dep);
a.saldo=a.saldo+dep;
cont=1;
}
}
clrscr();
if(cont==1)
{
printf("Operacion realizada con exito");
getch();
}
else
{
printf("Su numero de cuenta es incorrecto");
getch();
}
clrscr();
}
void retiro(struct cliente a)
{
long int comp;
int i, cont=0;
float ret;
printf("Digite su numero de cuenta: ");
scanf("%ld", &comp);
for(i=0;i<100;i++)
{
if(comp==a.cuenta)
{
printf("\nIngrese el monto a retirar: ");
scanf("%f", &ret);
if(ret>a.saldo)
{
cont=2;
}
if(ret<=a.saldo)
{
a.saldo=a.saldo-ret;
cont=1;
}
}
}
clrscr();
if(cont==1)
{
printf("Operacion realizada con exito");
getch();
}
if(cont==2)
{
printf("\nSu saldo es insuficiente");
getch();
}
if(cont==0)
{
printf("Su numero de cuenta es incorrecto");
getch();
}
clrscr();
}
void consulta_saldo(void)
{
long int comp;
int cont=0;
FILE *ap;
struct cliente a;
ap=fopen("registrobanco.txt","r");
printf("Digite su numero de cuenta: ");
scanf("%ld", &comp);
while(!feof(ap))
{
fread(&a,sizeof(cliente),1,ap);
if(comp==a.cuenta)
{
printf("\n\nsu saldo actual es: %f", a.saldo);
cont=1;
getch();
}
}
clrscr();
if(cont==0)
{
printf("numero de cuenta incorrecto");
getch();
}
fclose(ap);
clrscr();
}
void main(void)
{
int opc;
do
{
printf("\n1- Crear cuenta");
printf("\n2- Realizar deposito");
printf("\n3- Realizar retiro");
printf("\n4- Consultar estado del saldo");
printf("\n5- Salir");
printf("\nIngrese una opcion: ");
scanf("%d", &opc);
clrscr();
if(opc==1)
{
cuenta();
}
if(opc==2)
{
deposito(a);
}
if(opc==3)
{
retiro(a);
}
if(opc==4)
{
consulta_saldo();
}
}while(opc!=5);
}