• Jueves 14 de Noviembre de 2024, 23:03

Autor Tema:  Reto  (Leído 961 veces)

lydin

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Reto
« en: Viernes 16 de Enero de 2004, 19:30 »
0
por favor necesito ayuda para hacer el apartado 6 Lista de Morosos... Alguien tiene alguna idea de como comerlo?

lydin

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Reto
« Respuesta #1 en: Viernes 16 de Enero de 2004, 19:32 »
0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "listaLibros.h"
#include "fichero.h"


void FechaActual(char cad[])
{
   time_t t;     /* Tipo de dato para almacenar TIEMPO */
   struct tm *f; /* Estructura para datos de tipo FECHA y HORA */
   int d,m,a;
   
   time(&t);          /* Obtiene el día y hora actual en segundos */
   f = localtime( &t ); /* Convierte el tiempo (día y hora) en la estructura 'tm' */

   d=f->tm_mday;        /* 'tm_mday' es el día del mes (de 1 a 31) */
   m=f->tm_mon + 1;     /* 'tm_mom' va de 0 a 11 (0 = Enero) */
   a=f->tm_year + 1900; /* 'tm_year' es el año actual, menos 1900 */

   sprintf(cad,"%d/%d/%d",d,m,a);
}

void Cabecera(char *cad)
{
   system("cls");
   printf("-----------------------------\n");
   printf("GESTION DE LIBROS Y PRESTAMOS\n");
   printf("-----------------------------\n");
   printf("%s\n", cad);
   printf("-----------------------------\n\n");
}

void main()
{
   TListaLibros lista;
   TNodoLibro *nodo;
   int i,j;

   char cad[100];
   char aux[100];

   Inicializar(&lista);
   if(!LeerFichero(&lista))
   {
      printf("ERROR: No se puede leer el fichero 'biblioteca.txt'\n\n");
      return; /* el programa termina */
   }

   while(1)
   {
      Cabecera(" * * * Menu  Principal * * * ");

      printf("1- Alta de nuevo libro\n");
      printf("2- Baja de un libro\n");
      printf("3- Prestamo de libros\n");
      printf("4- Devolucion de libros\n");
      printf("5- Listado de libros\n");
      printf("6- Listado de morosos\n");
      printf("7- Guardar fichero\n");
      printf("8- Salir\n\n");
      printf("Seleccione opcion: ");

      gets(cad);
      if(cad[1]!='\0')
         cad[0]='*';

      switch(cad[0])
      {
         /************************
          *CASO 1: ALTA DE LIBROS*
          ************************/

         case '1':
            Cabecera(" * * Alta de Nuevo Libro * * ");
            if((nodo=malloc(sizeof(TNodoLibro))) == NULL)
            {
               printf("ERROR: No queda memoria para mas libros\n");
               printf("(Pulse [INTRO]) ");
               gets(cad);
               break; /* Esto sale del 'case' y del 'switch' */
            }

            printf("     Titulo: ");
            gets(nodo->titulo);
            printf("      Autor: ");
            gets(nodo->autor);
            printf("  Editorial: ");
            gets(nodo->editorial);
            printf("Año Edicion: ");
            gets(cad);
            nodo->anyoEdicion=atoi(cad);
            printf("       Tema: ");
            gets(nodo->tema);

            printf("\nEsta todo Correcto?\n");
            printf("(Pulse 's'+[INTRO] para guardar libro, cualquier otro para cancelar) ");
            gets(cad);
            if(cad[0]=='s' && cad[1]=='\0')
            {
               strcpy(nodo->prestadoA,"[nadie]");
               strcpy(nodo->fechaPrestamo,"00/00/0000");
               Insertar(&lista,0,nodo);
            }
            else
               free(nodo); /* Si el libro no se guarda liberamos la memoria */
         break;

         /************************
          *CASO 2: BAJA DE LIBROS*
          ************************/
         case '2':
            Cabecera(" * * * Baja  de  Libro * * * ");
            printf("Introduzca el numero del libro a eliminar: ");
            gets(cad);
            i=atoi(cad);
            if((nodo=Consultar(&lista,i)) == NULL)
            {
               printf("El libro introducido no existe, no se puede eliminar\n");
               printf("(Pulse [INTRO] para continuar) ");
               gets(cad);
            }
            else
            {
               printf("El libro seleccionado es este:\n\n");
               printf("     Titulo: %s\n",nodo->titulo);
               printf("      Autor: %s\n",nodo->autor);
               printf("  Editorial: %s\n",nodo->editorial);
               printf("Año Edicion: %d\n",nodo->anyoEdicion);
               printf("       Tema: %s\n",nodo->tema);
               printf(" Prestado a: %s\n",nodo->prestadoA);
               printf("F. Prestamo: %s\n\n",nodo->fechaPrestamo);

               printf("Desea elemininar este libro?\n");
               printf("(Pulse 's'+[INTRO] para eliminar, cualquier otro para continuar)");
               gets(cad);
               if(cad[0]=='s' && cad[1]=='\0')
                  Eliminar(&lista,i);
            }
         break;
         /****************************
          *CASO 3: PRESTAMO DE LIBROS*
          ****************************/
         case '3':
            Cabecera(" * * * Prestamo Libros * * * ");
            printf("Introduzca el numero del libro a prestar: ");
            gets(cad);
            i=atoi(cad);
            if((nodo=Consultar(&lista,i)) == NULL)
            {
               printf("El libro introducido no existe, no se puede prestar\n");
               printf("(Pulse [INTRO] para continuar) ");
               gets(cad);
            }
            else if(strcmp(nodo->prestadoA,"[nadie]")!=0)
            {
               printf("El libro introducido '%s' ya esta prestado\n\n",nodo->titulo);
               printf("Prestado a: %s\n",nodo->prestadoA);
               printf("F.Prestamo: %s\n\n",nodo->fechaPrestamo);
               printf("(Pulse [INTRO] para continuar) ");
               gets(cad);
            }
            else
            {
               printf("Datos del libro:\n\n");
               printf("   Titulo: %s\n",nodo->titulo);
               printf("    Autor: %s\n",nodo->autor);
               printf("Editorial: %s\n\n",nodo->editorial);
               printf("Introduzca la siguiente informacion:\n");
               printf("Prestado a: ");
               gets(nodo->prestadoA);
               FechaActual(aux);
               printf("F.Prestamo: %s\n\n",aux);

               printf("Desea formalizar este prestamo?\n");
               printf("(Pulse 's'+[INTRO] para prestar, cualquier otro para continuar)");
               gets(cad);
               if(cad[0]=='s' && cad[1]=='\0')
                  strcpy(nodo->fechaPrestamo,aux);
               else
                  strcpy(nodo->prestadoA,"[nadie]");
            }
         break;
         /******************************
          *CASO 4: DEVOLUCION DE LIBROS*
          ******************************/
         case '4':
            Cabecera(" * * Devolucion   Libros * * ");
            printf("Introduzca el numero del libro a devolver: ");
            gets(cad);
            i=atoi(cad);
            if((nodo=Consultar(&lista,i)) == NULL)
            {
               printf("El libro introducido no existe\n");
               printf("(Pulse [INTRO] para continuar) ");
               gets(cad);
            }
            else if(strcmp(nodo->prestadoA,"[nadie]")==0)
            {
               printf("El libro introducido '%s' no esta prestado\n\n",nodo->titulo);
               printf("(Pulse [INTRO] para continuar) ");
               gets(cad);
            }
            else
            {
               printf("Datos del libro:\n\n");
               printf("    Titulo: %s\n",nodo->titulo);
               printf("     Autor: %s\n",nodo->autor);
               printf(" Editorial: %s\n",nodo->editorial);
               printf("Prestado a: %s\n",nodo->prestadoA);
               printf("F.Prestamo: %s\n\n",nodo->fechaPrestamo);

               printf("Desea formalizar esta devolucion?\n");
               printf("(Pulse 's'+[INTRO] para devolver, cualquier otro para continuar)");
               gets(cad);
               if(cad[0]=='s' && cad[1]=='\0')
               {
                  strcpy(nodo->fechaPrestamo,"00/00/0000");
                  strcpy(nodo->prestadoA,"[nadie]");
               }
            }
         break;
         /***************************
          *CASO 5: LISTADO DE LIBROS*
          ***************************/
         case '5':
            i=0;
            while(i<Longitud(&lista))
            {
               Cabecera(" * * Listado  de  Libros * * ");
               
               for( j=0 ; j<5 && i<Longitud(&lista) ; j++ )
               {
                  nodo=Consultar(&lista,i);
                  if(strcmp(nodo->prestadoA,"[nadie]")==0)
                     strcpy(aux,"   ");
                  else
                     strcpy(aux,"[P]");
                  printf("%3d - %s %s\n",i,aux,nodo->titulo);
                  printf("          %s\n\n",nodo->autor);
                  i++;
               }
               if(i<Longitud(&lista))
               {
                  printf("[P]: Prestado\n");
                  printf("* Pulse 'm'+[INTRO] para volver al menu, cualquier otro para seguir. ");
                  gets(cad);
                  if(cad[0]=='m' && cad[1]=='\0')
                     i=Longitud(&lista);
               }
               else
               {
                  printf("[P]: Prestado\n");
                  printf("Fin Listado - Pulse [INTRO] para volver al menu: ");
                  gets(cad);
               }
            }
         break;
         /****************************
          *CASO 6: LISTADO DE MOROSOS*
          ****************************/
         case '6':
            Cabecera(" * * * Listado Morosos * * * ");
            printf("Esta parte queda como ejercicio\n");
            printf("Pulse [INTRO] para volver al menu: ");
            gets(cad);

         break;

         /***************************
          *CASO 7: GUARDAR LOS DATOS*
          ***************************/
         case '7':
            Cabecera(" * * * Guardar Fichero * * * ");
            if(!GuardarFichero(&lista))
               printf("\n*** ERROR ***\nNO SE HA PODIDO GUARDAR LA INFORMACIÓN\n\n");
            else
               printf("\nDATOS GUARDADOS\n\n");
            printf("Pulse [INTRO] para volver al menu: ");
            gets(cad);
         break;
         /************************
          *CASO 8:     SALIR     *
          ************************/
         case '8':
            if(!GuardarFichero(&lista))
               printf("*** ERROR***\nNO SE HA PODIDO GUARDAR LA INFORMACIÓN\n\n");
            else
               printf("\n\nDATOS GUARDADOS\n\nAdios\n\n\n");
            Vaciar(&lista);
            return; /* el programa termina */
         break;
         default:
            putchar(7);
         break;
      }

   }
}
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

lydin

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Reto
« Respuesta #2 en: Viernes 16 de Enero de 2004, 19:33 »
0
wueno aki tan las 2 librerias sin terminar por cierto... Gracias
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.