[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