[C con Clase] codigo de c++ calculo de mora

jose valladares jvictor.cl40 en gmail.com
Vie Jun 13 03:22:40 CEST 2014


no se como estructura el codigo del calculo de mora de un prestamo donde tengo que agarar la fecha de prestamo y la de entrega y no se como aser esa funcion me serbiria mucho su gran ayuda y gracias por su atencion...


 y agregarlo a este codigo

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include <iostream.h>
#include <dos.h>
#include <windows.h>

void AltEnter()
{
    keybd_event(VK_MENU,
                0x38,
                0,
                0);
    keybd_event(VK_RETURN,
                0x1c,
                0,
                0);
    keybd_event(VK_RETURN,
                0x1c,
                KEYEVENTF_KEYUP,
                0);
    keybd_event(VK_MENU,
                0x38,
                KEYEVENTF_KEYUP,
                0);
    return;
}




//DEFINICION DE LA ESTRUCTURA DE REGISTRO PARA UN LIBRO
typedef struct {
    char titulo[225];
    char barcode[7];
    char autor[240];
    char editorial[240];
    char edicion[100];
    int estado;
}Libro;

//DEFINICION DE LA ESTRUCTURA DE REGISTRO PARA UN USUARIO
typedef struct {
	 char dpi_completo[91];
    char dpi[14];
    char nombre[16];
    char apellido[16];
    char fecha_nac[7];
    char fecha_venc[7];
    char sexo[2];
    int estado;
}Persona;


//DEFINICION DE LA ESTRUCTURA DE REGISTRO PARA UN USUARIO
typedef struct {
	 char barcode[7];
    char dpi_completo[91];
    char fecha_prestamo[7];
    char fecha_devolucion[7];
    int estado;
}Prestamo;


/*Nombre del Archivo a guardar*/
char nombre_fichero_libro[] = "libro.dat";
char nombre_fichero[] = "persona.dat";
char nombre_fichero_prestamo[]="prestamo.dat";

//-----------------------------------INICIO OPERACIONES CON LIBROS------------
/*************************************************
Funcion que Carga el Archivo y regresa un apuntador con que se va ha manejar el Archivo
Recibe:     El nombre del Archivo , Y el método con que se va abrir el Archivo
        Un Apuntador tipo Archivo, 0 - Solo Lectura , 1 - Para crearlo de nuevo desde cero,
        2 - Anadir Informacion, 3 - para Lectura y Escritura.
 Regresa:    El apuntador de Tipo FILE, con el cual se abrio*/
FILE *abrir_fichero_b(char cadena[], int metodo){
    FILE *x;
    switch(metodo){
        case 0:
            x = fopen(cadena,"rb");
            break;
        case 1:
            x = fopen(cadena,"wb");
            break;
        case 2:
            x = fopen(cadena,"ab");
            break;
        case 3:
            x = fopen(cadena,"r+b");
            break;
    }
    return x;
}


// FUNCION PARA CREAR UN ARCHIVO
/*****************************************************************
Funcion que sirve para borrar todo el Contenido del Archivo Binario*/
void CrearLibro(){
   FILE *fp;

   fp = abrir_fichero_b(nombre_fichero_libro,0);
   if(fp)
   {
        printf("\n Error de apertura del archivo persona.dat\n");
        fclose(fp);
   }
}


/*Funcion que sirve para cargar menu de bienvenida*/
void loading (int n)
{
textcolor(BLUE);system("cls");gotoxy(35,11);cprintf("CARGANDO");
	for(int h=1;h<4;h++)
		{
      	for(int i=5; i<67;i++)
				{
            gotoxy(i,24);cout<<"Û²²±±°°";
            Sleep(n);
            }
     			for(int j=66;j>4;j--)
       			{
               gotoxy(j,24);cout<<"°°±±²²Û";
               Sleep(n);
               }
 	   }
   textcolor(RED);gotoxy(35,11);cprintf("  ENTER ");
   gotoxy(22,24);cprintf("***BIENVENIDO BIBLIOTECA VIRTUAL...\n");
   getch();
}


/********************************************************
Funcion que sirve para imprimir todos los  un registros del Archivo Binario*/
void ListarLibro(){
   FILE *fp;
   int i=1;
	Libro aux;

    fp = abrir_fichero_b(nombre_fichero_libro,0);
   if(!(fp))
       printf("\n Error de apertura del archivo persona.dat\n");
   else{
   	textcolor(LIGHTGREEN);
      cprintf("\n L I B R O S   R E G I S T R A D O S\n");
      normvideo();
      printf("---------------------------------------------------------------\n");
      while ((fread(&aux, sizeof(aux), 1, fp))!=0){
        textcolor(10);
        printf("=> Datos del Libro %d\n",i);
        printf("Codigo del Libro (Barcode): %s\n",aux.barcode);
        printf("Titulo: %s | Autor: %s | Editorial: %s | Edicion: %s | Estado: %d\n",aux.titulo,aux.autor,aux.editorial,aux.edicion,aux.estado);
        printf("---------------------------------------------------------------\n");
        i++;
      }
//      printf("---------------------------------------------------------------\n");
      fclose(fp);
   }
}


int BuscarLibro(char *codigo){
    FILE *fp;
	Libro aux;
    int n;
    int resultado;
//    char codigo[9];

    fp=abrir_fichero_b(nombre_fichero_libro,0);
    if(!(fp))
        printf("\n Error de apertura del archivo libro.dat\n");
    else
    {
        while ((n=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.barcode,codigo)!=0);
      		if (n==0)
      		{
         		//printf("No existe el Libro : %s ",cadena);
         		resultado = 0;
		      }
      		else
		      {
			      //printf("\n Libro encontrado....!!!\n");
					resultado = 1;
		      }
    }
    fclose(fp);
    return resultado;
}


/********************************************************
Funcion que sirve para agregar un registro dentro del Archivo Binario*/
void AgregarLibro(){
   FILE *fp;
  	Libro aux;

   printf("\n AGREGANDO UN LIBRO NUEVO AL ARCHIVO BINARIO LIBRO.DAT\n");
   fp=abrir_fichero_b(nombre_fichero_libro,2);
   if(!(fp))
        printf("\n Error de apertura del archivo libro.dat\n");
   else{
        /*Introduciendo los Datos del Libro*/
        printf("INGRESE EL CODIGO DE BARRAS PARA EL NUEVO LIBRO: ");
//        scanf("%s",&aux.dpi_completo);
        gets(aux.barcode);
//        strcpy(temporal,aux.dpi_completo);
//        aux.dpi[13]= '\0';
			if (BuscarLibro(aux.barcode)!=0)
         { printf("EL CODIGO DEL LIBRO YA EXISTE!!!!");
         }
         else
         {
		        //obtengo el titulo
              printf("INGRESE EL TITULO DEL LIBRO\n");
					gets(aux.titulo);
         	  //obtengo el autor
              printf("INGRESE EL AUTOR DEL LIBRO\n");
					gets(aux.autor);
         	  //obtengo el editorial
              printf("INGRESE LA EDITORIAL DEL LIBRO\n");
					gets(aux.editorial);
         	  //obtengo el edicion
              printf("INGRESE LA EDICION DEL LIBRO\n");
					gets(aux.edicion);
         	  //marco como activo el libro con estado = 1
              aux.estado = 1;
					//Escribir en el archivo
		        fwrite(&aux, sizeof(aux), 1, fp);

         }

        fclose(fp);
   }
}


/********************************************************
Funcion que sirve para Modificar un registro dentro del Archivo Binario*/
void ModificarLibro(){
   FILE *fp;
	Libro aux;
   int n;
   int estadot;
   char codigo[7];
   char temptitulo[225];
   char tempautor[250];
   char tempeditorial[240];
   char tempedicion[100];

    fp=abrir_fichero_b(nombre_fichero_libro,3);
   if(!(fp))
       printf("\n Error de apertura del archivo persona.dat\n");
   else{
        printf("INGRESE EL CODIGO DEL LIBRO A MODIFICAR: ");
        gets(codigo);

        //Buscando el libro dentro del Archivo
      while ((n=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.barcode,codigo)!=0);
      if (n==0)
         printf("NO EXISTE EL LIBRO CON CODIGO: %s ",codigo);
      else{
         printf("\n LIBRO ENCONTRADO...!!!\n");
         printf("Codigo del Libro: %s ",aux.barcode);
         printf("Titulo: %s ",aux.titulo);
         strcpy(temptitulo,aux.titulo);
         printf("Autor: %s ",aux.autor);
         strcpy(tempautor,aux.autor);
	      printf("Editorial: %s ",aux.editorial);
         strcpy(tempeditorial,aux.editorial);
         printf("Edicion: %s ",aux.edicion);
         strcpy(tempedicion,aux.edicion);
         printf("Estado (Activo = 1) (Inactivo=0): %d\n",aux.estado);

         printf("\n CAMBIANDO VALORES... \n");

        printf("Ingrese el nuevo titulo del libro: ");
        gets(aux.titulo);
			gets(temptitulo);
        if (strlen(temptitulo)!=0)
        {
         	strcpy(aux.titulo,temptitulo);
        }
        printf("Ingrese el nuevo autor del libro: ");
        gets(aux.autor);
        gets(tempautor);
        if (strlen(tempautor)!=0)
        {
         	strcpy(aux.autor,tempautor);
        }
        printf("Ingrese la nueva editorial del libro: ");
        gets(aux.editorial);
        gets(tempeditorial);
        if (strlen(tempeditorial)!=0)
        {
         	strcpy(aux.editorial,tempeditorial);
        }
        printf("Ingrese la nueva edicion del libro: ");
        gets(aux.edicion);
        gets(tempedicion);
        if (strlen(tempedicion)!=0)
        {
         	strcpy(aux.edicion,tempedicion);
        }
        printf("Ingrese el estado del libro (Activo = 1) (Inactivo=0): ");
        scanf("%d",&estadot);
			switch(estadot)
         {
         case 1:
         aux.estado=1;
         break;
         case 0:
          aux.estado=0;
         break;
         default:
         	aux.estado=1;
         break;
         }

         printf("\n GRABANDO... \n");
         fseek(fp,-1*sizeof(aux),SEEK_CUR);
         fwrite(&aux, sizeof(aux), 1, fp);
      }
      fclose(fp);   //Cerramos el archivo
   }
}

/********************************************************
Funcion que sirve para borrar un registro dentro del Archivo Binario*/
void Borrarlibro(){
   FILE *fp;
	Libro aux;
   int n;
   char respuesta;
   char codigo[7];

    fp=abrir_fichero_b(nombre_fichero_libro,3);
   if(!(fp))
       printf("\n Error de apertura del archivo libro.dat\n");
   else{
        printf("INGRESE EL CODIGO DEL LIBRO A ELIMINAR: ");
        gets(codigo);

        //Buscando el libro dentro del Archivo
      while ((n=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.barcode,codigo)!=0);
      if (n==0)
         printf("NO EXISTE EL LIBRO CON CODIGO: %s ",codigo);
      else{
         printf("\nLibro encontrado...!!!\n");
         printf("Codigo del Libro: %s ",aux.barcode);
         printf("Titulo: %s ",aux.titulo);
         printf("Autor: %s ",aux.autor);
	      printf("Editorial: %s ",aux.editorial);
         printf("Edicion: %s ",aux.edicion);
         printf("Estado (Activo = 1) (Inactivo=0): %d\n",aux.estado);

	      printf("DESEA ELIMINAR EL LIBRO IDENTIFICADO CON EL BARCODE %s???? ",codigo);
		   scanf("%c",&respuesta);
			switch(respuesta)
         {
         case 'S': case 's':
         	aux.estado=0;
            printf("\n LIBRO ELIMINADO!!!!!!... \n");
            break;
         default:
         	aux.estado=1;
         break;
         }

         fseek(fp,-1*sizeof(aux),SEEK_CUR);
         fwrite(&aux, sizeof(aux), 1, fp);
      }
      fclose(fp);   //Cerramos el archivo
   }
}

/******************************************
Funcion para Encontrar un Libro e imprimir sus datos*/
void Encontrarlibro()
{
    FILE *fp;
	Libro aux;
    int n;
    char cadena[91];

    printf("INTRODUCE EL BARCODE DEL LIBRO QUE BUSCAS: ");
    scanf("%s",&cadena);
    gets(cadena);

    printf("\n BUSCANDO A LA PERSONA  \n");
    fp=abrir_fichero_b(nombre_fichero_libro,0);
    if(!(fp))
        printf("\n ERROR DE APERTURA DEL ARCHIVO LIBRO.DAT\n");
    else{
        while ((n=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.barcode,cadena)!=0);
      if (n==0)
         printf("NO EXISTE EL LIBRO : %s ",cadena);
      else{
         printf("\n LIBRO ENCONTRADO....!!!\n");
        printf("BARCODE: %s\n",aux.barcode);
        printf("Titulo: %s | Autor: %s | Editorial: %s | Edicion: %s\n",aux.titulo,aux.autor,aux.editorial,aux.edicion);
        }
    }
}


/******************************************
Funcion que devuelve datos de un libro a buscar*/
/*char *ObtenerDatoslibro(char *barcode){
    FILE *fp;
	Libro aux;
    int n;
    char *dato;
    char valor[]="S/D";

//    printf("Introduce el barcode del libro que buscas: ");
//    scanf("%s",&codigo);
//    gets(cadena);

//    printf("\n Buscando a la persona  \n");
    fp=abrir_fichero_b(nombre_fichero_libro,0);
    if(!(fp))
        printf("\n Error de apertura del archivo libro.dat\n");
    else
    {
        while ((n=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.barcode,barcode)!=0);
      if (n==0)
			//printf("No existe el Libro : %s ",cadena);
         strcpy(dato,valor);
      else
      {
         //printf("\n Libro encontrado....!!!\n");
         strcpy(dato,aux.titulo);
//        printf("BARCODE: %s\n",aux.barcode);
//        printf("Titulo: %s | Autor: %s | Editorial: %s | Edicion: %s\n",aux.titulo,aux.autor,aux.editorial,aux.edicion);
      }
    }
    fclose(fp);
    return dato;
} */




//--------------------------------------FIN OPERACIONES CON LIBROS------------
//++++++++++++++++++++++++++++++++++++++INICIO DE OPERACIONES CON USUARIOS++++++

//FUNCION QUE DEVUELVE DIGITO VERIFICADOR PARA UN CODIGO UNICO DE IDENTIFICACION
//-----------------------------------------------------------------------------
char digitoverificador(char *cadena)
{ int i, suma, recorre, numero;
  char dato[] = "";

suma = 0;
recorre = 1;
for (i=0; i<9; i++)
{
	switch(*cadena)
   {case '1': numero = 1; break;
	 case '2': numero = 2; break;
	 case '3': numero = 3; break;
	 case '4': numero = 4; break;
	 case '5': numero = 5; break;
	 case '6': numero = 6; break;
	 case '7': numero = 7; break;
	 case '8': numero = 8; break;
	 case '9': numero = 9; break;
	 case '0': numero = 0; break;
   }
   cadena++;
	switch(recorre)
	{
   	case 1:
      	suma = suma + (numero*7);
      break;
      case 2:
      	suma = suma + (numero*3);
      break;
      case 3:
      	suma = suma + (numero*1);
      break;
	}
   recorre++;
   if (recorre == 4)
   { recorre = 1;
   }
}
itoa(suma, dato, 10);
   strrev(dato);
   return dato[0];
}

/********************************************************
Funcion que sirve para imprimir todos los  un registros del Archivo Binario*/
void ListarUsuarios(){
   FILE *fp;
   int i=1;
	Persona aux;
    fp = abrir_fichero_b(nombre_fichero,0);
   if(!(fp))
       printf("\n Error de apertura del archivo persona.dat\n");
   else{
	   textcolor(LIGHTGREEN);
      cprintf("\n P E R S O N A S   R E G I S T R A D A S\n");
      normvideo();
      printf("---------------------------------------------------------------\n");
      while ((fread(&aux, sizeof(aux), 1, fp))!=0){
        textcolor(10);
        printf("=> Datos de la Persona %d\n",i);
        printf("DPI: %s\n",aux.dpi);
        printf("Nombre: %s | Apellido: %s | Fecha Nacimiento: %s | Fecha Vencimiento DPI: %s | Sexo: %s\n",aux.nombre,aux.apellido,aux.fecha_nac,aux.fecha_venc,aux.sexo);
        printf("DPI completo: %s\n",aux.dpi_completo);
        printf("---------------------------------------------------------------\n");
        i++;
      }
//      printf("---------------------------------------------------------------\n");
      fclose(fp);
   }
}

//FUNCION QUE VERIFICA QUE EL USUARIO NO EXISTA....
int BuscarUsuario(char *dpicompleto){
    FILE *fp;
	 Persona aux;
    int n;
    int resultado;
//    char codigo[9];

    fp=abrir_fichero_b(nombre_fichero,0);
    if(!(fp))
        printf("\n Error de apertura del archivo persona.dat\n");
    else
    {
        while ((n=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.dpi_completo,dpicompleto)!=0);
      		if (n==0)
      		{
         		//printf("No existe el Usuario : %s ",cadena);
         		resultado = 0;
		      }
      		else
		      {
			      //printf("\n Usuario encontrado....!!!\n");
					resultado = 1;
		      }
    }
    fclose(fp);
    return resultado;
}



/********************************************************
Funcion que sirve para agregar un registro dentro del Archivo Binario*/
void AgregarUsuario(){
   FILE *fp;
  	Persona aux;
   char temporal[91];
   char dpivalida[10];
   int j,cuenta_nombre,cuenta_apellido;

   printf("\n AGREGANDO UN USUARIO NUEVO AL ARCHIVO BINARIO PERSONA.DAT\n");
   fp=abrir_fichero_b(nombre_fichero,2);
   if(!(fp))
        printf("\n Error de apertura del archivo persona.dat\n");
   else //PRIMER ELSE PARA ABRIR EL ARCHIVO
   {
         /*Introduciendo los Datos del Usuario*/
         printf("PROPORCIONE LA LECTURA DEL DPI: ");
         scanf("%s",&aux.dpi_completo);
         strcpy(temporal,aux.dpi_completo);
       if (BuscarUsuario(aux.dpi_completo)!=0)
       { printf("EL USUARIO YA EXISTE!!!!");
       }
       else  //ELSE PARA CUANDO EL DPI REALMENTE NO EXISTE...
       {

		  			for (j = 5; j <= 18; j++)
        			{
        	 			if (j < 14) {
          				aux.dpi[j-5] = temporal[j];
          			}
          			if (j > 14) {
          				aux.dpi[j-6] = temporal[j];
          			}
        			}//FIN DEL FOR OBTIENE DPI
        			aux.dpi[13]= '\0';
        			for (j=0; j<=8; j++)
        			{	dpivalida[j]=aux.dpi[j];
        			} //FIN DEL FOR PARA VALIDAR EL DPI A TRAVES DEL DIGITO DE CONTROL
        			dpivalida[9]='\0';
					if (temporal[14]!=digitoverificador(dpivalida))
         		{ printf("DPI NO VALIDO!!!!");
         		}
         		else	//ELSE CUANDO EL DIGITO DE CONTROL ES VALIDO...
         		{
		        		//obtengo el nombre
			        int contador;
			        contador = 0;
                 cuenta_nombre = 0;
		  		      cuenta_apellido = 0;
		  		      for (int j = 60; j <= 89; j++)
      				  {
							  if ((temporal[j] != '<' ) && (contador < 1)) {
					          	aux.apellido[j-60] = temporal[j];
					            cuenta_apellido++;
				           }
				           if (temporal[j] == '<' ){
					          		contador++;
					        }
				          if ((temporal[j] != '<') && (contador > 1)) {
					          aux.nombre[j-(cuenta_apellido+62)] = temporal[j];
				             cuenta_nombre++;
				          }
		   		       if (contador > 3) {
				          	break;
				          }
			        } //FIN DEL ELSE
			        aux.apellido[cuenta_apellido]='\0';
			        aux.nombre[cuenta_nombre]='\0';
			        //obtengo la fecha de nacimiento
	  		        for (int j = 30; j <= 35; j++)
			        {
			          aux.fecha_nac[j-30] = temporal[j];
			        }
				     aux.fecha_nac[6]= '\0';
			        //obtengo la fecha de vencimiento
			        for (int j = 38; j <= 44; j++)
			        {
    		  		    aux.fecha_venc[j-38] = temporal[j];
		 	        }
			        aux.fecha_venc[6]= '\0';
				     aux.sexo[0] = temporal[37];
			        aux.sexo[1]= '\0';
					  aux.estado = 1;

			        fwrite(&aux, sizeof(aux), 1, fp);

         		}// FIN DEL ELSE CUANDO EL DPI PASA EL DIGITO DE CONTROL

      	} //ELSE COMO EL USUARIO NO EXISTE... SE PROCEDE A INGRESAR EL USUARIO

 		fclose(fp);
   } // FIN DEL PRIMER ELSE DE APERTURA DEL ARCHIVO
}


/******************************************
Funcion para Encontrar un Usuario e imprimir sus datos*/
void EncontrarUsuario(){
    FILE *fp;
	 Persona aux;
    int n;
    char cadena[91];

    printf("INTRODUCE EL DPI QUE BUSCAS: ");
    scanf("%s",&cadena);
    gets(cadena);

    printf("\n BUSCANDO A LA PERSONA...  \n");
    fp=abrir_fichero_b(nombre_fichero,0);
    if(!(fp))
        printf("\n Error de apertura del archivo persona.dat\n");
    else{
        while ((n=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.dpi_completo,cadena)!=0);
      if (n==0)
         printf("NO EXISTE EL DPI: %s ",cadena);
      else{
         printf("\n PERSONA ENCONTRADA....!!!\n");
/*         printf("Nombre: %s | Edad: %d | Telefono: %s\n",aux.nom,aux.edad,aux.tel);
         printf("Direccion: %s\n",aux.dir);*/
        printf("DPI: %s\n",aux.dpi);
        printf("NOMBRE: %s| APELLIDO: %s | FECHA NACIMIENTO: %s | FECHA VENCIMIENTO DPI: %s | Sexo: %s\n",aux.nombre,aux.apellido,aux.fecha_nac,aux.fecha_venc,aux.sexo);
        printf("DPI completo: %s\n",aux.dpi_completo);

        /* getch();*/

        }
    }


}




//++++++++++++++++++++++++++++++++++++++++FIN DE OPERACIONES CON USUARIOS++++++


//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\INICIO OPERACIONES DEL PRESTAMO\\\\\\


// PROCEDIMIENTO PARA BORRAR TODO EL CONTENIDO DEL ARCHIVO DE PRESTAMO
/*****************************************************************
Funcion que sirve para borrar todo el Contenido del Archivo Binario*/
void CrearPrestamo(){
   FILE *fp;

   fp = abrir_fichero_b(nombre_fichero_prestamo,0);
   if(fp)
   {
        printf("\n Error de apertura del archivo prestamo.dat\n");
        fclose(fp);
   }
}

/******************************************
Funcion para Encontrar si el libro con codigo esta prestado */
int LibroPrestado(char *bcode){
    FILE *fp;
	 Prestamo aux;
    int n;
    int encontrado = 0;

    fp=abrir_fichero_b(nombre_fichero_prestamo,0);
    if(!(fp))
        printf("\n Error de apertura del archivo prestamo.dat\n");
    else
    {
      while ((n=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.barcode,bcode)!=0);
      if (n==0)
         encontrado = 0;
      else
      {
      	if (aux.estado!=0)
         {
		  		encontrado = 1;
         }
      }
    }
    fclose(fp);
    return encontrado;

}





/********************************************************
Funcion que sirve para agregar un prestamo dentro del Archivo Binario*/
void AgregarUnPrestamo(){
   FILE *fp;
  	Prestamo aux;
/*   char dato[] = "";
   char d[] = "";
   char a[]="";
   char m[]=""; */


   printf("\n AGREGANDO UN PRESTAMO AL ARCHIVO BINARIO PRESTAMO.DAT\n");
   fp=abrir_fichero_b(nombre_fichero_prestamo,2);
   if(!(fp))
        printf("\n Error de apertura del archivo prestamo.dat\n");
   else{
        /*Introduciendo los Datos del Libro*/
	      printf("INGRESE EL CODIGO DE BARRAS DEL LIBRO QUE PRESTARA: ");
        	gets(aux.barcode);
        /*Introduciendo los Datos del Usuario*/
			printf("INGRESE EL DPI DEL USUARIO QUE REALIZA EL PRESTAMO: ");
        	scanf("%s",&aux.dpi_completo);

			if (BuscarLibro(aux.barcode)==0)
         { printf("EL CODIGO DEL LIBRO NO EXISTE!!!!");
         }
         else if (BuscarUsuario(aux.dpi_completo)==0)
         {
				printf("EL DPI DEL USUARIO NO ESTA REGISTRADO!!!!");
         }
         else if (LibroPrestado(aux.barcode)==1)
         {	printf("EL LIBRO YA SE ENCUENTRA PRESTADO!!!!");
         }
         else
         {
         		//ingreso la fecha del prestamo
/*               itoa(dia, d, 10);
               itoa(mes, m, 10);
               itoa(anio, a, 10);
               strcat(dato,d);
               strcat(dato,m);
               strcat(dato,a); */
         	  strcpy(aux.fecha_prestamo,"260414");
          		//ingreso la fecha del devolucion
           	  strcpy(aux.fecha_devolucion,"020514");
              aux.estado = 1;
					//Escribir en el archivo
		        fwrite(&aux, sizeof(aux), 1, fp);

         }

        fclose(fp);
   }
}

/********************************************************
Funcion que sirve para imprimir todos los  un registros del Archivo Binario*/
void ListarPrestamos(){
   FILE *fp;
   int i=1;
	Prestamo aux;
   char *datoslibro;
    fp = abrir_fichero_b(nombre_fichero_prestamo,0);
   if(!(fp))
       printf("\n Error de apertura del archivo prestamo.dat\n");
   else
   {  textcolor(LIGHTGREEN);
      cprintf("\n P R E S T A M O S  R E G I S T R A D O S\n");
      normvideo();
      printf("---------------------------------------------------------------\n");
      while ((fread(&aux, sizeof(aux), 1, fp))!=0){
        textcolor(10);

        printf("=> DATOS DEL PRESTAMO %d\n",i);
        printf("DPI: %s\n",aux.dpi_completo);
        //datoslibro = ObtenerDatoslibro(aux.barcode);
        printf("CODIGO DE LIBRO PRESTADO: %s\n",aux.barcode);
        printf("FECHA PRESTAMO: %s\n",aux.fecha_prestamo);
        printf("FECHA PRESTAMO: %s\n",aux.fecha_devolucion);
        printf("ESTADO DEL PRESTAMO: %d\n",aux.estado);
        printf("---------------------------------------------------------------\n");
        i++;
      }
      printf("---------------------------------------------------------------\n");
      fclose(fp);
   }
}

/******************************************
Funcion para Encontrar prestamos por medio de codigo de libro e imprimir sus datos*/
void EncontrarPrestamoXcodigoDeLibro(){
    FILE *fp;
	 Prestamo aux;
    int encontrado = 0;
    char codigolibro[7];

    printf("INTRODUCE EL CODIGO DE LIBRO QUE DESEA BUSCAR: ");
    scanf("%s",&codigolibro);

    printf("\n BUSCANDO PRESTAMO POR MEDIO DEL CODIGO DE LIBRO...  \n");
    fp=abrir_fichero_b(nombre_fichero_prestamo,0);
    if(!(fp))
        printf("\n Error de apertura del archivo prestamo.dat\n");
    else
    {
      while (fread(&aux, sizeof(aux), 1, fp)!=0)
      {

      	if ((stricmp(aux.barcode,codigolibro)==0) &&(aux.estado!=0))
         {  encontrado = 1;
		  		printf("=> DATOS DEL PRESTAMO \n");
        		printf("DPI: %s\n",aux.dpi_completo);
        		printf("CODIGO DE LIBRO PRESTADO: %s\n",aux.barcode);
        		printf("FECHA PRESTAMO: %s\n",aux.fecha_prestamo);
        		printf("FECHA PRESTAMO: %s\n",aux.fecha_devolucion);
        		printf("ESTADO DEL PRESTAMO: %d\n",aux.estado);
         }
      }
    }
    fclose(fp);
    if (encontrado == 0)
    	printf("EL LIBRO NO SE ENCUENTRA PRESTADO!!!!\n");

}




/******************************************
Funcion para Encontrar prestamos por medio DPI e imprimir sus datos*/
void EncontrarPrestamoXdpi(){
    FILE *fp;
	 Prestamo aux;
    int n;
    char codigodpi[91];

    printf("INTRODUCE EL DPI QUE DESEA BUSCAR: ");
    scanf("%s",&codigodpi);

    printf("\n BUSCANDO PRESTAMOS POR MEDIO DEL DPI...  \n");
    fp=abrir_fichero_b(nombre_fichero_prestamo,0);
    if(!(fp))
        printf("\n Error de apertura del archivo prestamo.dat\n");
    else
    {
      while (fread(&aux, sizeof(aux), 1, fp)!=0)
      {
        	if (stricmp(aux.dpi_completo,codigodpi)==0)
        	{
         	if (aux.estado!=0)
         	{
		  			printf("=> DATOS DEL PRESTAMO \n");
        			printf("DPI: %s\n",aux.dpi_completo);
        			printf("CODIGO DE LIBRO PRESTADO: %s\n",aux.barcode);
        			printf("FECHA PRESTAMO: %s\n",aux.fecha_prestamo);
        			printf("FECHA PRESTAMO: %s\n",aux.fecha_devolucion);
        			printf("ESTADO DEL PRESTAMO: %d\n",aux.estado);
		         printf("---------------------------------------------------------------\n");
         	}
        	}
      }//fin del while
    }
    fclose(fp);
}

/********************************************************
Procedimiento que sirve para registrar una devolucion de un libro logicamente dentro del Archivo Binario*/
void RegistrarDevolucion(){
   FILE *fp;
	Prestamo aux;
   char respuesta;
   char codigo[7];
   int encontrado = 0;

    fp=abrir_fichero_b(nombre_fichero_prestamo,3);
   if(!(fp))
   {
       textcolor(LIGHTRED);
       cprintf("\n ERROR DE APERTURA DEL ARCHIVO PRESTAMO.DAT\n");
       normvideo();
   }
   else{
        printf("INGRESE EL CODIGO DEL LIBRO A DEVOLVER: ");
        gets(codigo);

        //Buscando el libro para aplicar la devolución logica dentro del Archivo
      while (fread(&aux, sizeof(aux), 1, fp)!=0)
      {

        if ((stricmp(aux.barcode,codigo)==0) && (aux.estado==1))
        {
            encontrado = 1;
	      	printf("DESEA DEVOLVER EL LIBRO IDENTIFICADO CON EL CODIGO %s ???? PRESIONE LA TECLA S PARA CONFIRMAR; CANCELAR PRESIONE LA TECLA C ",codigo);
		   	scanf("%c",&respuesta);
				switch(respuesta)
         	{
	         	case 'S': case 's':
         			aux.estado=0;
            		printf("\n EL LIBRO HA SIDO DEVUELTO!!!!!!... \n");
            	break;
	         	default:
   	      		aux.estado=1;
     		   	break;
         	}

         	fseek(fp,-1*sizeof(aux),SEEK_CUR);
         	fwrite(&aux, sizeof(aux), 1, fp);
            rewind(fp);
         } // fin del if de encontrado y activo...
      }
      fclose(fp);   //Cerramos el archivo
      if (encontrado== 0)
      	printf("EL LIBRO NO SE ENCUENTRA PRESTADO!!!");
   }
}






//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\FIN OPERACIONES DEL PRESTAMO\\\\\\


// Variables globales:
//---------------------------------------------------------------------------


	char pass[10], a;
   char usuario[15];

void LeerContrasenia()
{
	 void min_a_mayus(char *string);

   				clrscr();
         gotoxy(20,12);
               printf("USUARIO|");
               gets(usuario);
					min_a_mayus(usuario);
         gotoxy(20,13);
         		printf("PASSWORD|");
               for(int j=0;j<4;j++)
               {
               a=getch();
						if (a!= char(13))
               	{
               	pass[j]=a;
               	cprintf("*");
               	}
                  else break;
               }
               printf("\nvalidando. ");

       for(int i = 0;i < 9; i++)
        {
        	printf(".");
         Sleep(100);
        }

                min_a_mayus(pass);

                   if ((strcmp(usuario,"jose") == 0) && (strcmp(pass,"1992") == 0))
               {
               clrscr();
               gotoxy(20,12);
               printf("BIENVENIDO");
               }
               	else
                  {
                  clrscr();
               gotoxy(20,12);
               printf("ACCESO DENEGADO");
                  }
}

void min_a_mayus( char *string )
{
for( ;*string!='\0';string++ )
if( *string >='a' && *string <='z')
*string -= (char)32;
}

void centraTexto(int fila, char cadena[])
{
int valorx;

valorx=40-(strlen(cadena)/2);
gotoxy(valorx,fila);
textcolor(LIGHTGREEN);
cprintf("%s",cadena);
normvideo();
}

void MostrarFecha()
{
struct tm *tiempo;
	int dia;
	int mes;
	int anio;

	time_t fecha_sistema;
	time(&fecha_sistema);
	tiempo=localtime(&fecha_sistema);

	anio=tiempo->tm_year + 1900;
	mes=tiempo->tm_mon + 1;
	dia=tiempo->tm_mday;
   gotoxy(2,23);
	textcolor(LIGHTGREEN);
   cprintf("FECHA: %d-%d-%d", dia,mes,anio);
   normvideo();
}

void ConvierteMayusculas()
{
	char c[15],d[15]; //variables de char en vectores
	int a,y; //variables int para cliclos
		printf("introduce cadena");
		gets (c); //obtiene cadena completa
		a = strlen(c); //cuenta cuantas letras metieron
		for(y=0;y<a;y++){
			d[y]=tolower(c[y]); //convierte a minusculas las introducidas
		}
		printf("\ncadena convertida a minusculas es:\n ");
		for(y=0;y<a;y++){
			printf("%c",d[y]); //imprime el arreglo convertido
		}
}




void PantallaPrincipal()
{

int i, d;
	clrscr;
   for (i=2; i<80; i++)
   {
   	gotoxy(i,1);
		printf("%c",177);

      gotoxy(i,24);
      printf("%c",177);
   }
   for (d=2; d<24; d++)
   {
   	gotoxy(1,d);
		printf("%c",177);

      gotoxy(80,d);
      printf("%c",177);
   }

   gotoxy(1,1);
   printf("%c",02);
   gotoxy(80,1);
   printf("%c",02);
   gotoxy(1,24);
   printf("%c",01);
   gotoxy(80,24);
   printf("%c",01);
   gotoxy(2,2);
   centraTexto(3,"BIENVENIDOS A CONTROL DE PRESTAMOS");
 	centraTexto(4,"PROYECTO DE ESTUDIANTES DE 3 CICLO");
  	centraTexto(5,"UNIVERSIDAD MARIANO GALVEZ");
   MostrarFecha();
   gotoxy(20,12);
   LeerContrasenia();
}

void PantallaMantenimientos()
{

int i, d;
	clrscr;
   for (i=2; i<80; i++)
   {
   	gotoxy(i,1);
		printf("%c",177);

      gotoxy(i,24);
      printf("%c",177);
   }
   for (d=2; d<24; d++)
   {
   	gotoxy(1,d);
		printf("%c",177);

      gotoxy(80,d);
      printf("%c",177);
   }

   gotoxy(1,1);
   printf("%c",02);
   gotoxy(80,1);
   printf("%c",02);
   gotoxy(1,24);
   printf("%c",01);
   gotoxy(80,24);
   printf("%c",01);
   gotoxy(2,2);
   centraTexto(3,"MANTENIMIENTOS CONTROL DE PRESTAMOS");
 	centraTexto(4,"PROYECTO DE ESTUDIANTES DE 3 CICLO");
  	centraTexto(5,"UNIVERSIDAD MARIANO GALVEZ");
   MostrarFecha();
   gotoxy(20,12);
	puts("1. Mantenimiento de usuarios.");
   gotoxy(20,13);
	puts("2. Mantenimiento de Libros.");
   gotoxy(20,14);
	puts("3. Prestamos.");
   gotoxy(20,15);
	puts("4. Devolucion.");
   gotoxy(20,16);
	puts("5. Salir.");
}


void menu()
{ clrscr();
   gotoxy(2,2);
   centraTexto(3,"BIENVENIDOS A CONTROL DE PRESTAMOS");
 	centraTexto(4,"PROYECTO DE ESTUDIANTES DE TERCER CICLO");
  	centraTexto(5,"UNIVERSIDAD MARIANO GALVEZ");
   textcolor(LIGHTGREEN);
	gotoxy(20,12); cprintf("          MENU PRINCIPAL");
   normvideo();
	gotoxy(20,13); printf(" 1. MANTENIMIENTO DE USUARIOS.");
	gotoxy(20,14); printf(" 2. MANTENIMIENTO DE LIBROS.");
	gotoxy(20,15); printf(" 3. PRESTAMOS Y DEVOLUCIONES.");
   textcolor(LIGHTRED);
	gotoxy(20,18); cprintf(" 0. SALIR");
   normvideo();
}


void menu_usr()
{ //clrscr();
	system("cls");
   gotoxy(2,2);
   centraTexto(3,"BIENVENIDOS A CONTROL DE PRESTAMOS");
 	centraTexto(4,"PROYECTO DE ESTUDIANTES DE TERCER CICLO");
  	centraTexto(5,"UNIVERSIDAD MARIANO GALVEZ");
	textcolor(LIGHTGREEN);
	gotoxy(20,12); cprintf("     MENU MANTENIMIENTO DE USUARIOS");
   normvideo();
	gotoxy(20,13); printf(" 1. INGRESAR NUEVO USUARIO");
	gotoxy(20,14); printf(" 2. BUSCAR USUARIO");
	gotoxy(20,15); printf(" 3. REPORTE USUARIOS REGISTRADOS");
      textcolor(LIGHTRED);
	gotoxy(20,18); cprintf(" 0. Regresar al menu principal...");
   normvideo();
}

void menu_libro()
{ //clrscr();
	system("cls");
	gotoxy(2,2);
   centraTexto(3,"BIENVENIDOS A CONTROL DE PRESTAMOS");
 	centraTexto(4,"PROYECTO DE ESTUDIANTES DE TERCER CICLO");
  	centraTexto(5,"UNIVERSIDAD MARIANO GALVEZ");
  	textcolor(LIGHTGREEN);
	gotoxy(20,12); cprintf(" MENU MANTENIMIENTO DE LIBROS:");
   normvideo();
	gotoxy(20,13); printf(" 1. INGRESAR NUEVO LIBRO");
	gotoxy(20,14); printf(" 2. BUSCAR LIBRO");
	gotoxy(20,15); printf(" 3. MODIFICAR LIBRO");
	gotoxy(20,16); printf(" 4. ELIMINAR LIBRO");
	gotoxy(20,17); printf(" 5. REPORTE DE LIBROS REGISTRADOS");
         textcolor(LIGHTRED);
	gotoxy(20,18); cprintf(" 0. REGRESO AL MENU PRINCIPAL...");
      normvideo();
}

void menu_prestamo()
{ //clrscr();
	system("cls");
	gotoxy(2,2);
   centraTexto(3,"BIENVENIDOS A CONTROL DE PRESTAMOS");
 	centraTexto(4,"PROYECTO DE ESTUDIANTES DE TERCER CICLO");
  	centraTexto(5,"UNIVERSIDAD MARIANO GALVEZ");
   textcolor(LIGHTGREEN);
	gotoxy(20,12); cprintf("    MENU PRESTAMO DEVOLUCION LIBROS");
   normvideo();
	gotoxy(20,13); printf(" 1. REGISTRO DE PRESTAMO");
	gotoxy(20,14); printf(" 2. BUSCAR PRESTAMO POR MEDIO DE CODIGO DE LIBRO");
  	gotoxy(20,15); printf(" 3. BUSCAR PRESTAMO POR MEDIO DE DPI");
	gotoxy(20,16); printf(" 4. REPORTE DE PRESTAMOS VIGENTES");
	gotoxy(20,17); printf(" 5. DEVOLUCION DE LIBRO");
            textcolor(LIGHTRED);
	gotoxy(20,18); cprintf(" 0. REGRESAR AL MENU PRINCIPAL...");
   normvideo();
}



void main ()
{
	FILE *fp;
   int opcion,opcion_usr,opcion_libro,opcion_prestamo;
	int exit = 0;
   int exitusr = 0;
	int exitlibro = 0;
   int exitprestamo = 0;
   LeerContrasenia();
   loading(10);
   AltEnter();

    fp = abrir_fichero_b(nombre_fichero_libro,0);
    if( fp )
    {
        fclose(fp);
    }
    else
    {
		  textcolor(LIGHTGREEN);
	     cprintf( "Inicializando Archivo 1...\n" );
        cprintf("Presiona cualquier tecla para continuar.... y Crear el Archivo");
        normvideo();
        fp = abrir_fichero_b(nombre_fichero_libro,1);
        fclose(fp);
        getch();    }

	fp = abrir_fichero_b(nombre_fichero,0);
    if( fp )
    {
        fclose(fp);
    }
    else
    {   textcolor(LIGHTGREEN);
        cprintf( "Inicializando Archivo 2...\n" );
        cprintf("Presiona cualquier tecla para continuar.... y Crear el Archivo");
        normvideo();
        fp = abrir_fichero_b(nombre_fichero,1);
        fclose(fp);
        getch();    }

	fp = abrir_fichero_b(nombre_fichero_prestamo,0);
    if( fp )
    {
        fclose(fp);
    }
    else
    {
	    textcolor(LIGHTGREEN);
        cprintf( "Inicializando Archivo 3...\n" );
        cprintf("Presiona cualquier tecla para continuar.... y Crear el Archivo");
        normvideo();
        fp = abrir_fichero_b(nombre_fichero_prestamo,1);
        fclose(fp);
        getch();    }





	while (!exit)
	{ menu();
     MostrarFecha();
		gotoxy(25,19);printf("Opcion: ");
		scanf("%d", &opcion);
		switch(opcion)
		{ 	case 1:  //opcion que muestra el menu de mantenimiento de usuarios.
      				while (!exitusr)
						{ menu_usr();
					     MostrarFecha();
					     gotoxy(25,19);printf("Opcion: ");
				        scanf("%d", &opcion_usr);
				 			switch(opcion_usr)
							{ 	case 1:  //ingresar usuario nuevo con dpi
                                 system("cls");
                        			gotoxy(2,2);
                     				AgregarUsuario();
                                 textcolor(LIGHTGREEN);
                                 cprintf("\n\n Presiona Cualquier Tecla para Regresar al Menu ...");
                                 normvideo();
                                 getch();
								break;
					         case 2: // buscar usuario a traves del dpi
                        			system("cls");
                        			gotoxy(2,2);
                                 EncontrarUsuario();
                                 textcolor(LIGHTGREEN);
                                 cprintf("\n\n Presiona Cualquier Tecla para Regresar al Menu ...");
                                 normvideo();
                                 getch();
		                  break;
							   case 3: // reporte de usuarios ingresados
                                 system("cls");
                        			gotoxy(2,2);
                                 ListarUsuarios();
											textcolor(LIGHTGREEN);
                                 cprintf("\n\n Presiona Cualquier Tecla para Regresar al Menu ...");
                                 normvideo();
                                 getch();
		                  break;
							   case 4: //
		                  break;
							   case 5: //
		                  break;
					    		case 0: exitusr = 1; break;
								default: system("cls"); gotoxy(25,20); printf("Opcion no valida"); getch();
					     	}
                  }
                  exitusr = 0;
						break;
         case 2: //opcion que muestra el menu de mantenimiento de libros.
         			while (!exitlibro)
						{ menu_libro();
					     MostrarFecha();
					     gotoxy(25,19);printf("Opcion: ");
				        scanf("%d", &opcion_libro);
				 			switch(opcion_libro)
							{ 	case 1:  //ingresar usuario nuevo con dpi
				                     system("cls");
                        			gotoxy(2,2);
                     				AgregarLibro();
											textcolor(LIGHTGREEN);
                                 cprintf("\n\n Presiona Cualquier Tecla para Regresar al Menu ...");
                                 normvideo();
                                 getch();
								break;
					         case 2: // buscar libro a traves del barcode
			                        system("cls");
                        			gotoxy(2,2);
                        			Encontrarlibro();
											textcolor(LIGHTGREEN);
                                 cprintf("\n\n Presiona Cualquier Tecla para Regresar al Menu ...");
                                 normvideo();
                                 getch();
		                  break;
							   case 3: // modificar los datos de un libro
											system("cls");
                        			gotoxy(2,2);
                        			ModificarLibro();
											textcolor(LIGHTGREEN);
                                 cprintf("\n\n Presiona Cualquier Tecla para Regresar al Menu ...");
                                 normvideo();
                                 getch();
		                  break;
							   case 4: // eliminar logicamente un libro
                        			system("cls");
                        			gotoxy(2,2);
			                        Borrarlibro();
											textcolor(LIGHTGREEN);
                                 cprintf("\n\n Presiona Cualquier Tecla para Regresar al Menu ...");
                                 normvideo();
                                 getch();
		                  break;
							   case 5: // listar los libros registrados
                                 system("cls");
                        			gotoxy(2,2);
                        			ListarLibro();
											textcolor(LIGHTGREEN);
                                 cprintf("\n\n Presiona Cualquier Tecla para Regresar al Menu ...");
                                 normvideo();
                                 getch();

		                  break;
					    		case 0: exitlibro = 1; break;
								default: system("cls"); gotoxy(25,20); printf("Opcion no valida"); getch();
					     	}
                  }
                  exitlibro = 0;
                  break;
		   case 3: //opcion que muestra el menu de prestamo de libros.
         			while (!exitprestamo)
						{ menu_prestamo();
					     MostrarFecha();
					     gotoxy(25,19);printf("Opcion: ");
				        scanf("%d", &opcion_prestamo);
				 			switch(opcion_prestamo)
							{ 	case 1:  //ingresar nuevo prestamo de libro con dpi
				                     system("cls");
                        			gotoxy(2,2);
                                 AgregarUnPrestamo();
											textcolor(LIGHTGREEN);
                                 cprintf("\n\n Presiona Cualquier Tecla para Regresar al Menu ...");
                                 normvideo();
                                 getch();
								break;
					         case 2: // buscar libro a traves del barcode
			                        system("cls");
                        			gotoxy(2,2);
                        			EncontrarPrestamoXcodigoDeLibro();
											textcolor(LIGHTGREEN);
                                 cprintf("\n\n Presiona Cualquier Tecla para Regresar al Menu ...");
                                 normvideo();
                                 getch();
		                  break;
							   case 3: // buscar prestamo por medio de DPI
											system("cls");
                        			gotoxy(2,2);
                                 EncontrarPrestamoXdpi();
                                 puts("\n\nPresiona Cualquier Tecla para Regresar al Menu");
                                 getch();
		                  break;
							   case 4: // reporte de prestamos
                        			system("cls");
                        			gotoxy(2,2);
			                        ListarPrestamos();
											textcolor(LIGHTGREEN);
                                 cprintf("\n\n Presiona Cualquier Tecla para Regresar al Menu ...");
                                 normvideo();
                                 getch();
		                  break;
							   case 5: // devoluciones de libros
                        			system("cls");
                        			gotoxy(2,2);
			                        RegistrarDevolucion();
											textcolor(LIGHTGREEN);
                                 cprintf("\n\n Presiona Cualquier Tecla para Regresar al Menu ...");
                                 normvideo();
                                 getch();
		                  break;

					    		case 0: exitprestamo = 1; break;
								default: system("cls"); gotoxy(25,20); printf("Opcion no valida"); getch();
					     	}
                  }
                  exitprestamo = 0;
                  break;
    		case 0: exit = 1; break;
			default: system("cls"); gotoxy(25,20); printf("Opcion no valida"); getch();
		}// fin del switch
	}// fin del while


}


Más información sobre la lista de distribución Cconclase