<div>Steven Buen dia.</div>
<div> </div>
<div>Soy un estudiante de ingenieria de sistemas de tercer semestre, nuestro tutor de programación nos planteo el siguiente programa para hacer,  usando archivos, structs y funciones, le escribo el enunciado:</div>
<div> </div>
<div>"Definir una estructura que permita capturar la información de un cliente que tiene una deuda con la compañia, con: cédula, nombre, dirección, teléfono, valor de la compra, fecha de la compra y un vector donde se guarda la información correspondiente a los ultimo seis pagos realizados( para cada uno se registra dia, mes, año y valor), todas las ventas son a credito y con 6 meses de plazo para cancerlas.
</div>
<div> </div>
<div>El tutor me pide hacer una serie de opciones como son: crear clientes,  incluir cliente, registrar venta, registrar pagos, mostrar informacion del cliente, listado de ingresos por pagos para cada cliente totalizando el valor que se recibe, listado de clientes con deuda, listado de pagos por mes y esta es la opcion de la que no he podido hacer y es la siguiente: "
<strong>cuentas de cobro: crear un archivo de texto, con cuentas de cobro dirigidas a los clientes que no han cancelado el pago en un mes especifico. Debe tenerse en cuenta que si el cliente ya cancelo toda su deuda, de manera que no se le genere cuenta de cobro.
</strong> "</div>
<div> </div>
<div>Ahora le anexo aca mismo el codigo de lo que llevo hasta el momento:</div>
<div> </div>
<div>
<p><strong><font color="#000099">#include<stdio.h><br>#include<conio.h><br>#include<string.h><br>#include<ctype.h></font></strong></p>
<p><strong><font color="#000099">struct fecha<br>{<br> int dia;<br> int mes;<br> int an;<br>};</font></strong></p>
<p><strong><font color="#000099">struct cliente<br>{<br> char nombre[30];<br> char direccion[30];<br> char cedula[20];<br> char telefono[10];<br> long int saldo;<br> long int compra;<br> long int pago;<br> fecha venta;<br>
 fecha abono;</font></strong></p>
<p><strong><font color="#000099">};<br>void crear()<br>{</font></strong></p>
<p><strong><font color="#000099"> cliente datos={"","","","",0,0,0,{0,0,0},{0,0,0}};<br> fflush(stdin);<br> printf("DIGITE EL NOMBRE: ");<br> gets(datos.nombre);<br> fflush(stdin);
<br> printf("DIGITE LA CEDULA: ");<br> scanf("%s",&datos.cedula);<br> fflush(stdin);<br> printf("DIGITE LA DIRECCION: ");<br> gets(datos.direccion);<br> printf("DIGITE EL TELEFONO: ");
<br> scanf("%s",&datos.telefono);<br> FILE *arch;<br> arch=fopen("c:\\cliente.txt","a");<br> if(arch!=NULL)<br> {<br>  fwrite(&datos,sizeof(datos),1,arch);<br> }<br> else<br>  printf("ERROR EN LA CREACION\n\r");
<br> fclose(arch);<br> printf("CLIENTE CREADO");<br>}</font></strong></p>
<p><strong><font color="#000099">void mostrar()<br>{<br> long sitio;<br> int band=0;<br> char cedula[30];<br> printf("DIGITE LA CEDULA A BUSCAR: ");<br> scanf("%s",&cedula);<br> clrscr();<br> cliente datos={"","","","",0,0,0,{0,0,0},{0,0,0}};
<br> FILE *arch;<br> arch=fopen("c:\\cliente.txt","r");<br> if(arch!= NULL)<br> {<br>  sitio=ftell(arch);<br>  fread(&datos,sizeof(datos),1,arch);</font></strong></p>
<p><strong><font color="#000099">   while(!feof(arch))<br>   {<br>     if(strcmp(cedula,datos.cedula)==0)<br>     {<br>      band=1;<br>      printf("NOMBRE:  %s\n",datos.nombre);<br>      printf("CEDULA:  %s\n",
datos.cedula);<br>      printf("DIRECCION:  %s\n",datos.direccion);<br>      printf("TELEFONO:  %s\n",datos.telefono);<br>      printf("VALOR DE LA VENTA: $ %ld\n",datos.compra);<br>      printf("FECHA DE LA VENTA: %d / %d / %d \n",
datos.venta.dia,datos.venta.mes,<a href="http://datos.venta.an">datos.venta.an</a>);<br>      printf("SALDO ACTUAL: $ %ld\n\n",datos.saldo);<br>      fseek(arch,sitio,SEEK_SET);<br>      fread(&datos,sizeof(datos),1,arch);
<br>     }<br>    sitio=ftell(arch);<br>    fread(&datos,sizeof(datos),1,arch);</font></strong></p>
<p><strong><font color="#000099">   }<br>   if(band==0)<br>   {<br>    printf("DATO NO ENCONTRADO");<br>   }</font></strong></p>
<p><br><strong><font color="#000099"> }<br> else</font></strong></p>
<p><strong><font color="#000099">  printf("REGISTRO NO ENCONTRADO");<br> fclose(arch);<br>}</font></strong></p>
<p><strong><font color="#000099">void venta()<br>{<br> long sitio=0;<br> int band=0;<br> char cedula[30];<br> cliente datos={"","","","",0,0,0,{0,0,0},{0,0,0}};<br> printf("DIGITE CEDULA CLIENTE: ");
<br> scanf("%s",&cedula);<br> clrscr();<br> FILE *arch;<br> arch=fopen("c:\\cliente.txt","r+");<br> if(arch!= NULL)<br> {<br>  sitio=ftell(arch);<br>  fread(&datos,sizeof(datos),1,arch);
<br>   while(!feof(arch))<br>   {<br>     if(strcmp(cedula,datos.cedula)==0)<br>     {<br>      band=1;<br>      printf("NOMBRE:  %s\n",datos.nombre);<br>      printf("CEDULA:  %s\n\n",datos.cedula);<br>
      printf("DIGITE EL VALOR DE LA VENTA: ");<br>      scanf("%ld",&datos.compra);<br>      printf("DIGITE LA FECHA DE LA VENTA (dd/mm/aaaa)\n ");<br>      printf("DIA: ");<br>
      scanf("%d",&datos.venta.dia);<br>      printf("MES: ");<br>      scanf("%d",&datos.venta.mes);<br>      printf("A¥O: ");<br>      scanf("%d",&datos.venta.an);
<br>      printf("\n");<br>      datos.saldo=datos.compra;<br>      fseek(arch,sitio,SEEK_SET);<br>      fwrite(&datos,sizeof(datos),1,arch);<br>     }<br>     sitio=ftell(arch);<br>     fread(&datos,sizeof(datos),1,arch);
<br>   }<br>   if(band==0)<br>   {<br>    printf("CLIENTE NO EXISTE, DEBE CREARLO");<br>   }</font></strong></p>
<p><br><strong><font color="#000099"> }<br> else<br>  printf("REGISTRO NO ENCONTRADO");<br> fclose(arch);<br>}</font></strong></p>
<p><strong><font color="#000099">void pago()<br>{<br> long sitio=0;<br> int band=0;<br> char cedula[30];</font></strong></p>
<p><br><strong><font color="#000099"> cliente datos={"","","","",0,0,0,{0,0,0},{0,0,0}};<br> printf("DIGITE CEDULA CLIENTE: ");<br> scanf("%s",&cedula);<br>
 clrscr();<br> FILE *arch;<br> arch=fopen("c:\\cliente.txt","r+");<br> if(arch!= NULL)<br> {<br>  sitio=ftell(arch);<br>  fread(&datos,sizeof(datos),1,arch);<br>   while(!feof(arch))<br>   {<br>     if(strcmp(cedula,
datos.cedula)==0)<br>     {<br>      band=1;<br>      printf("NOMBRE:  %s\n",datos.nombre);<br>      printf("CEDULA:  %s\n\n",datos.cedula);<br>      if(datos.saldo==0)<br>      {<br>       printf("USTED NO TIENE SALDO ACTUAL CON LA EMPRESA");
<br>      }<br>      else<br>      {<br>       fflush(stdin);<br>       printf("DIGITE EL VALOR DEL PAGO: $");<br>       scanf("%ld",&datos.pago);<br>       if(datos.pago>datos.saldo)<br>        printf("ABONO MAXIMO: $ %ld", 
datos.saldo);<br>       else<br>       {<br>        printf("DIGITE LA FECHA DEL ABONO (dd/mm/aaaa)\n ");<br>        printf("DIA: ");<br>        scanf("%d",&datos.abono.dia);<br>        printf("MES: ");
<br>        scanf("%d",&datos.abono.mes);<br>        printf("A¥O: ");<br>        scanf("%d",&datos.abono.an);<br>        datos.saldo=datos.saldo-datos.pago;<br>        clrscr();<br>       }
<br>      FILE *arch2;<br>      arch2=fopen("c:\\pagos.txt","a+");<br>      if(arch2!=NULL)<br>       fwrite(&datos,sizeof(datos),1,arch2);<br>      else<br>       printf("ERROR EN LA CREACION");
<br>      fclose(arch2);<br>      }<br>      printf("\n");<br>      fseek(arch,sitio,SEEK_SET);<br>      fwrite(&datos,sizeof(datos),1,arch);</font></strong></p>
<p><strong><font color="#000099">     }<br>     sitio=ftell(arch);<br>     fread(&datos,sizeof(datos),1,arch);<br>   }<br>   if(band==0)<br>   {<br>    printf("CLIENTE NO EXISTE, DEBE CREARLO");<br>   }<br>
 }<br> else<br>  printf("REGISTRO NO ENCONTRADO");<br> fclose(arch);</font></strong></p>
<p><strong><font color="#000099">}</font></strong></p>
<p><strong><font color="#000099">void lista5()<br>{<br> long sitio;<br> int band=0;<br> int m;<br> cliente datos={"","","","",0,0,0,{0,0,0},{0,0,0}};<br> printf("DIGITE EL MES A BUSCAR: ");
<br> scanf("%d",&m);<br> clrscr();<br> printf("\t\tLISTADO DE VENTAS POR MES\n\n");<br> FILE *arch;<br> arch=fopen("c:\\cliente.txt","r");<br> if(arch!= NULL)<br> {<br>  sitio=ftell(arch);
<br>  fread(&datos,sizeof(datos),1,arch);</font></strong></p>
<p><strong><font color="#000099">   while(!feof(arch))<br>   {<br>     if(datos.venta.mes==m)<br>     {<br>      band=1;<br>      printf("NOMBRE:  %s\n",datos.nombre);<br>      printf("CEDULA:  %s\n",
datos.cedula);<br>      printf("DIRECCION:  %s\n",datos.direccion);<br>      printf("TELEFONO:  %s\n",datos.telefono);<br>      printf("VALOR DE LA VENTA: $ %ld\n",datos.compra);<br>      printf("FECHA DE LA VENTA: %d / %d / %d \n\n\n",
datos.venta.dia,datos.venta.mes,<a href="http://datos.venta.an">datos.venta.an</a>);<br>      fseek(arch,sitio,SEEK_SET);<br>      fread(&datos,sizeof(datos),1,arch);<br>     }<br>    sitio=ftell(arch);<br>    fread(&datos,sizeof(datos),1,arch);
</font></strong></p>
<p><strong><font color="#000099">   }<br>   if(band==0)<br>   {<br>    printf("DATO NO ENCONTRADO");<br>   }</font></strong></p>
<p><br><strong><font color="#000099"> }<br> else<br>  printf("REGISTRO NO ENCONTRADO");<br> fclose(arch);<br>}</font></strong></p>
<p><strong><font color="#000099">void lista8()<br>{<br> long sitio;<br> int band=0;<br> int mes;</font></strong></p>
<p><strong><font color="#000099"> cliente datos={"","","","",0,0,0,{0,0,0},{0,0,0}};<br> fflush(stdin);<br> printf("DIGITE EL MES A BUSCAR: ");<br> scanf("%d",&mes);
<br> clrscr();<br> FILE *arch2;<br> arch2=fopen("c:\\pagos.txt","r");<br> if(arch2!= NULL)<br> {<br>  sitio=ftell(arch2);<br>  fread(&datos,sizeof(datos),1,arch2);</font></strong></p>
<p><strong><font color="#000099">   while(!feof(arch2))<br>   {<br>     if(datos.abono.mes==mes)<br>     {<br>      band=1;<br>      printf("NOMBRE:  %s\n",datos.nombre);<br>      printf("CEDULA:  %s\n",
datos.cedula);<br>      printf("VALOR DEL PAGO: $ %ld\n",datos.pago);<br>      printf("FECHA: %d / %d / %d \n\n\n",datos.abono.dia,datos.abono.mes,<a href="http://datos.abono.an">datos.abono.an</a>);<br>
      printf("\n\n");<br>      fseek(arch2,sitio,SEEK_SET);<br>      fread(&datos,sizeof(datos),1,arch2);<br>     }</font></strong></p>
<p><strong><font color="#000099">    sitio=ftell(arch2);<br>    fread(&datos,sizeof(datos),1,arch2);<br>   }</font></strong></p>
<p><strong><font color="#000099">   if(band==0)<br>   printf("DATO NO ENCONTRADO");</font></strong></p>
<p><br><strong><font color="#000099"> }<br> else<br>  printf("REGISTRO NO ENCONTRADO");<br> fclose(arch2);<br>}<br>void lista6()<br>{<br> long sitio;<br> int band=0;<br> char o[30];<br> long int suma=0;<br> cliente datos={"","","","",0,0,0,{0,0,0},{0,0,0}};
<br> printf("DIGITE LA CEDULA A BUSCAR: ");<br> scanf("%s",&o);<br> clrscr();<br> FILE *arch2;<br> arch2=fopen("c:\\pagos.txt","r");<br> if(arch2!= NULL)<br> {<br>  sitio=ftell(arch2);
<br>  fread(&datos,sizeof(datos),1,arch2);</font></strong></p>
<p><strong><font color="#000099">   while(!feof(arch2))<br>   {<br>     if(strcmp(datos.cedula,o)==0)<br>     {<br>      band=1;<br>      printf("NOMBRE:  %s\n",datos.nombre);<br>      printf("CEDULA:  %s\n",
datos.cedula);<br>      printf("VALOR DEL PAGO: $ %ld\n",datos.pago);<br>      printf("FECHA: %d / %d / %d \n\n\n",datos.abono.dia,datos.abono.mes,<a href="http://datos.abono.an">datos.abono.an</a>);<br>
      suma=suma+datos.pago;<br>      fseek(arch2,sitio,SEEK_SET);<br>      fread(&datos,sizeof(datos),1,arch2);<br>     }<br>    sitio=ftell(arch2);<br>    fread(&datos,sizeof(datos),1,arch2);<br>   }</font></strong>
</p>
<p><strong><font color="#000099">   if(band==0)<br>   printf("DATO NO ENCONTRADO");<br>   else<br>   printf("VALOR TOTAL: %ld ",suma);</font></strong></p>
<p><strong><font color="#000099"> }<br> else<br>  printf("REGISTRO NO ENCONTRADO");<br> fclose(arch2);<br>}</font></strong></p>
<p><strong><font color="#000099">void lista7()<br>{<br> long sitio;<br> int band=0;<br> clrscr();<br> printf("\t\tLISTADO DE CLIENTES CON DEUDA\n\n");<br> cliente datos={"","","","",0,0,0,{0,0,0},{0,0,0}};
<br> FILE *arch;<br> arch=fopen("c:\\cliente.txt","r");<br> if(arch!= NULL)<br> {<br>  sitio=ftell(arch);<br>  fread(&datos,sizeof(datos),1,arch);</font></strong></p>
<p><strong><font color="#000099">   while(!feof(arch))<br>   {<br>     if(datos.saldo!=0)<br>     {<br>      band=1;<br>      printf("NOMBRE:  %s\n",datos.nombre);<br>      printf("CEDULA:  %s\n",datos.cedula
);<br>      printf("TELEFONO:  %s\n",datos.telefono);<br>      printf("SALDO ACTUAL: $ %ld\n\n",datos.saldo);<br>      fseek(arch,sitio,SEEK_SET);<br>      fread(&datos,sizeof(datos),1,arch);<br>     }
</font></strong></p>
<p><strong><font color="#000099">    sitio=ftell(arch);<br>    fread(&datos,sizeof(datos),1,arch);</font></strong></p>
<p><strong><font color="#000099">   }<br>   if(band==0)<br>   {<br>    printf("FELICIDADES NO TIENE CARTERA PENDIENTE");<br>   }</font></strong></p>
<p><br><strong><font color="#000099"> }<br> else<br>  printf("REGISTRO NO ENCONTRADO");<br> fclose(arch);<br>}</font></strong></p>
<p><strong><font color="#000099"> void main()<br>{<br> int opc;<br> textcolor(WHITE);<br> textbackground(BLUE);<br> clrscr();<br> do<br> {<br>  printf("\tMUEBLES PALOMAR\n\n\n\r\r\r");<br>  printf("DIGITE LA OPCION DESEADA\n\n\r");
<br>  printf("1. INCLUIR NUEVO CLIENTE\n\r");<br>  printf("2. MOSTRAR INFORMACION DE UN CLIENTE\n\r");<br>  printf("3. REGISTRAR  VENTA \n\r");<br>  printf("4. REGISTRAR PAGO \n\r");
<br>  printf("5. LISTADO DE VENTAS\n\r");<br>  printf("6. LISTADO DE INGRESOS\n\r");<br>  printf("7.  LISTADO DE PERSONAS CON CUENTAS PENDIENTES\n\r");<br>  printf("8. LISTADO DE PAGOS DE CLIENTES POR MES\n\r");
<br>  printf("9. GENERAR CUENTA DE COBRO\n\r");<br>  printf("0. SALIR\n\n\r");<br>  printf("OPCION: ");<br>  scanf("%d",&opc);<br>  clrscr();<br>  switch(opc)<br>  {<br>   case 1: crear();
<br>       getch();<br>       clrscr();<br>       break;</font></strong></p>
<p><strong><font color="#000099">   case 2: mostrar();<br>       getch();<br>       clrscr();<br>       break;</font></strong></p>
<p><strong><font color="#000099">   case 3: venta();<br>       getch();<br>       clrscr();<br>       break;</font></strong></p>
<p><strong><font color="#000099">   case 4: pago();<br>       getch();<br>       clrscr();<br>       break;</font></strong></p>
<p><strong><font color="#000099">   case 5: lista5();<br>       getch();<br>       clrscr();<br>       break;<br>   case 6: lista6();<br>       getch();<br>       clrscr();<br>       break;<br>   case 7: lista7();<br>       getch();
<br>       clrscr();<br>       break;<br>   case 8: lista8();<br>       getch();<br>       clrscr();<br>       break;</font></strong></p>
<p><strong><font color="#000099"> </font></strong><strong><font color="#000099">  }<br> }while(opc!=0);<br> getch();<br>}</font></strong></p>
<p><font color="#000000">Las funciones que hago aca, y manejo de archivos estan con la libreria stdio.h.</font></p>
<p><font color="#000000">Hasta el momento el programa me hace todas las opciones correctamente, en la parte de los pagos, bueno yo abri el archivo clientes en modo de lectura, pide digitar la cedula, ahi me muestra el nombre y la cedula del cliente, valido si el cliente tiene saldo con al empresa, si si tiene saldo le pido los datos correspondientes al abono, cuando termino de ingresarlos esos datos me los guarda en otro archivo llamado pagos (el archivo de pagos lo abre en modo append), o sea tengo dos archivos, uno de pagos y otro de clientes.
</font></p>
<p>Hice un intento tratando de generar las cuentas de cobro (el cual no esta aca), pidiendo primero el mes a buscar,  luego valido del archivo clientes que clientes tenian deuda con la empresa, si algun cliente tenia deuda con la empresa, dentro de esa misma función  abria el archivo 2, de ahi trate de decirle que si el mes que yo ingrese arriba era diferente a la variable correspondiente al abono del mes (
datos.abono.mes), me generara la cuenta de cobro, y bueno y me guardara esa cuenta dentro del archivo 3.</p>
<p>el problema es por ejemplo: Un cliente de nombre 1, que tiene saldo con la empresa,  que tiene dos pagos uno en el mes 3 y otro en el mes 4, por decir algo, le ingreso que me busque el mes 5, y me esta generando dos cuentas de cobro.
</p>
<p>Quisera por favor que me de una orientación, primero si como llevo el codigo lo llevo bien, si depronto tengo que mejorarle algo, y por favor me de una orientación acerca de la mejor manera de hacer la opcion de generar cuentas de cobro.
</p>
<p>Le adjunto los archivos de clientes y pagos.</p>
<p> </p>
<p>Muchas gracias por su colaboración,</p>
<p> </p>
<p>SERGIO DIAZ RIBERO</p>
<p> </p>
<p> </p>
<p> </p>
<p><strong><font color="#000000"></font></strong> </p>
<p><br> </p></div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>