Catálogo de Libros

  • 0 Respuestas
  • 2078 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Pa531no5

  • *
  • Underc0der
  • Mensajes: 225
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Catálogo de Libros

  • en: Marzo 16, 2010, 01:50:28 pm
Gestion de Catalogo de Libros, siendo 100 el número máximo de titulos.

CATALOGO DE LIBROS
------------------
1.-Añadir titulos al catalogo
2.-Consultar si existe un libro
3.-Consultar precios
4.-Modificar precios
5.-Visualizar el catalogo
6.-Finalizar el proceso
Teclee la opcion de proceso deseada

Código: C
  1. #include "stdio.h"
  2. #include "string.h"
  3.  
  4. #define ELEMENTOS 100
  5.  
  6. struct LIBRO
  7. {
  8.  long int codigo;
  9.  char titulo[20];
  10.  char autor[20];
  11.  int precio;
  12. };
  13.  
  14. int fopcion();
  15.  
  16. int finsertar_libros(int elementos, struct LIBRO *pvlibros);
  17. void fconsultar_libros(int elementos, struct LIBRO *pvlibros);
  18. void fconsultar_precios(int elementos, struct LIBRO *pvlibros);
  19. void fmodificar_precios(int elementos, struct LIBRO *pvlibros);
  20. void fvisualizar_libros(int elementos, struct LIBRO *pvlibros);
  21.  
  22. struct LIBRO fpedir_datos();
  23. long int fpedir_codigo();
  24. void fpedir_titulo(char*ptitulo);
  25. void fpedir_autor(char*pautor);
  26. int fpedir_precio();
  27.  
  28. void fvisualizar(int elementos,struct LIBRO*pvlibros);
  29. int fbusqueda_lineal_t(int elementos,char*ptitulo,char*pautor,struct LIBRO*pvlibros);
  30. int fbusqueda_lineal_c(int elementos,long int codigo,struct LIBRO*pvlibros);
  31. void fordenar_baraja(int elementos, struct LIBRO*pvlibros);
  32.  
  33. void main()
  34. {
  35.  int opcion;
  36.  int elementos=0;
  37.  struct LIBRO v_libros[ELEMENTOS];
  38.  
  39.  do
  40.  {
  41.   opcion=fopcion();
  42.   switch(opcion)
  43.   {
  44.    case 1: elementos = finsertar_libros (elementos,v_libros);
  45.      break;
  46.    case 2:fconsultar_libros(elementos,v_libros);
  47.      break;
  48.    case 3:fconsultar_precios(elementos,v_libros);  
  49.      break;
  50.    case 4:fmodificar_precios(elementos,v_libros);  
  51.      break;
  52.    case 5:fvisualizar_libros(elementos,v_libros);  
  53.      break;
  54.    case 6:puts("\nFinal de p1450303");
  55.      break;
  56.    default : puts("\nOpcion erronea");
  57.    }            
  58.   }while(opcion!=6);
  59.  }
  60.  
  61.  int fopcion()
  62.  
  63.  {
  64.   int opcion;
  65.   puts("\n C A T A L O G O    D E    L I B R O S"
  66.        "\n 1.-Añadir titulos al catalogo de libros"
  67.        "\n 2.-Consultar si existe un libro"
  68.        "\n 3.-Consultar precios"
  69.        "\n 4.-Modificar precios"
  70.        "\n 5.-Visualizar el catalogo"
  71.        "\n 6.-Finalizar el proceso"
  72.        "\n Teclee la opcion de proceso deseada");
  73.      scanf("%d",&opcion);
  74.      return(opcion);
  75.      
  76.    }
  77.    
  78.   int finsertar_libros(int elementos,struct LIBRO*pvlibros)
  79.   {
  80.    char res;
  81.    
  82.    do
  83.    {
  84.     if(elementos==ELEMENTOS)
  85.      {
  86.       puts("\nNo hay espacio para almacenar mas libros");
  87.       goto fin;
  88.       }
  89.      pvlibros[elementos]=fpedir_datos();
  90.      elementos++;
  91.      puts("\n¿Quieres añadir otro titulo al catalogo?");
  92.      fflush(stdin);
  93.      res=getchar();
  94.      }while(res=='s'||res=='S');
  95.      fin:puts("\nFinal de la opcion de proceso 1");
  96.      return(elementos);
  97.      }
  98.      
  99.   struct LIBRO fpedir_datos()
  100.   {
  101.    struct LIBRO libro;
  102.    
  103.    libro.codigo=fpedir_codigo();
  104.    fpedir_titulo(libro.titulo);
  105.    fpedir_autor(libro.autor);
  106.    libro.precio=fpedir_precio();
  107.    return(libro);
  108.    }
  109.    
  110.    long int fpedir_codigo()
  111.    {
  112.    long int codigo;
  113.    puts("\nTeclea codigo del libro");
  114.    scanf("%ld",&codigo);
  115.    return(codigo);
  116.    }
  117.    
  118.    void fpedir_titulo(char *ptitulo)
  119.    {
  120.     puts("\nTeclea titulo del libro");
  121.     fflush(stdin);
  122.     gets(ptitulo);
  123.    }
  124.    
  125.    void fpedir_autor(char*pautor)
  126.    {
  127.     puts("\nTeclea autor del libro");
  128.     fflush(stdin);
  129.     gets(pautor);
  130.    }
  131.    
  132.    int fpedir_precio()
  133.    {
  134.     int precio;
  135.     puts("\nTeclea precio del libro");
  136.     scanf("%d",&precio);
  137.     return(precio);
  138.    }
  139.    
  140.    void fconsultar_libros(int elementos,struct LIBRO * pvlibros)
  141.    {
  142.     int i;
  143.     char titulo[20];
  144.     char autor[30];
  145.     char res;
  146.    
  147.    
  148.     if(elementos==0)
  149.     {
  150.      puts("\nNo existen libros en el catalogo");
  151.      goto fin;
  152.     }
  153.    
  154.     do
  155.     {
  156.      fpedir_titulo(titulo);
  157.      fpedir_autor(autor);
  158.      
  159.      i=fbusqueda_lineal_t(elementos,titulo,autor,pvlibros);
  160.      
  161.      if(i!=-1)
  162.      printf("\nEl libro de titulo %s y autor %s tiene de codigo %ld y precio de %d pts",
  163.       (pvlibros+i)->titulo,(pvlibros+i)->autor,(pvlibros+i)->codigo,(pvlibros+i)->precio);
  164.       else
  165.        printf("\nEl libro de titulo %s y autor %s no existe",titulo,autor);
  166.        
  167.        puts("\n¿Quiere buscar otro libro?");
  168.        fflush(stdin);
  169.        res=getchar();
  170.      
  171.        }while(res=='s'||res=='S');
  172.         fin:puts("\nFinal de la opcion de proceso 2");
  173.         }
  174.        
  175.      int fbusqueda_lineal_t(int elementos,char *ptitulo,char*pautor,struct LIBRO*pvlibros)
  176.      {
  177.       int i;
  178.       i=0;
  179.       while(i<(elementos-1)&&(strcmp(pvlibros->titulo,ptitulo)!=0
  180.            ||strcmp(pvlibros->autor,pautor)!=0))
  181.            
  182.      {
  183.       i++;
  184.       pvlibros++;
  185.      }
  186.                    
  187.      if(strcmp(pvlibros[i].titulo,ptitulo)==0&&
  188.       strcmp(pvlibros[i].autor,pautor)==0)
  189.       return(i);
  190.       else
  191.        return(-1);
  192.       }
  193.      
  194.     void fconsultar_precios(int elementos,struct LIBRO*pvlibros)
  195.     {
  196.      int i;
  197.      long int codigo;
  198.      char res;
  199.       if(elementos==0)
  200.        {
  201.         puts("\nNo existen libros en el catalogo");
  202.         goto fin;
  203.         }
  204.        
  205.         do
  206.         {
  207.         codigo=fpedir_codigo();
  208.         i=fbusqueda_lineal_c(elementos,codigo,pvlibros);
  209.        
  210.         if(i!=-1)
  211.          printf("\nEl codigo %ld correspondiente al titulo %s y autor %s y su precio es %d pts",
  212.           (pvlibros+i)->codigo,(pvlibros+i)->titulo,(pvlibros+i)->autor,
  213.           (pvlibros+i)->precio);
  214.           else
  215.          printf("\nEl libro de codigo%ld no existe",codigo);
  216.          
  217.          puts("\n¿Quieres consultar otro precio?");
  218.          fflush(stdin);
  219.          res=getchar();
  220.          }while(res=='s'||res=='S');
  221.          
  222.          fin:puts("\nFinal de la opcion de proceso 3");
  223.          }
  224.          
  225.          
  226.          int fbusqueda_lineal_c(int elementos,long int codigo,struct LIBRO*pvlibros)
  227.          {
  228.           int i;
  229.           i=0;
  230.           while(i<(elementos-1)&& pvlibros->codigo!=codigo)
  231.           {
  232.           i++;
  233.           pvlibros++;
  234.           }
  235.          
  236.           if(pvlibros->codigo==codigo)
  237.           return(i);
  238.           else
  239.           return(-1);
  240.           }
  241.          
  242.           void fmodificar_precios(int elementos,struct LIBRO*pvlibros)
  243.           {
  244.           int i;
  245.           long int codigo;
  246.           int precio;
  247.           char res;
  248.          
  249.           if(elementos==0)
  250.           {
  251.            puts("\nNo existen libros en el catalogo");
  252.            goto fin;
  253.            }
  254.            
  255.            do
  256.            {
  257.             codigo=fpedir_codigo();
  258.             i=fbusqueda_lineal_c(elementos,codigo,pvlibros);
  259.            
  260.             if(i!=-1)
  261.             {
  262.              precio=fpedir_precio();
  263.              printf("\nEl codigo %ld correspondiente al titulo %s y autor%s que tiene precio %d pts pasa a costar %s pots",
  264.               (pvlibros+i)->codigo,(pvlibros+i)->titulo,(pvlibros+i)->autor,
  265.               (pvlibros+i)->precio,precio);
  266.               (pvlibros+i)->precio=precio;
  267.               }
  268.               else
  269.               printf("\nEl libro de codigo %ld no existe",codigo);
  270.              
  271.               puts("\n¿Quieres modificar el precio de otro libro?");
  272.               fflush(stdin);
  273.               res=getchar();
  274.              
  275.              
  276.             }while(res=='s'||res=='S');
  277.            
  278.             fin:puts("\nFinal de la opcion de proceso 3");
  279.            
  280.             }
  281.            
  282.            
  283.             void fvisualizar_libros(int elementos,struct LIBRO*pvlibros)
  284.             {
  285.              int i;
  286.              struct LIBRO wpvlibros[ELEMENTOS];
  287.              
  288.              if(elementos==0)
  289.              {
  290.               puts("\nNo existen libros en el catalogo");
  291.               goto fin;
  292.              }  
  293.            
  294.         for (i=0;i<elementos;i++)
  295.          wpvlibros[i] = *(pvlibros+i);
  296.          
  297.          fordenar_baraja(elementos,wpvlibros);
  298.          
  299.          fvisualizar(elementos,wpvlibros);
  300.          fin:puts("\nFinal de la opcion de proceso 5");
  301.          
  302.          }
  303.          
  304.       void fvisualizar(int elementos,struct LIBRO*pvlibros)
  305.       {
  306.        int i;
  307.        
  308.        puts("    CATALOGO DE LIBROS");
  309.        puts("    ------------------");
  310.        puts("  TITULO   AUTOR   PRECIO");
  311.        puts("  ------   -----   ------");
  312.        for (i=0;i<elementos;i++,pvlibros++)
  313.          printf("\n %s  %s  %d",pvlibros->titulo,pvlibros->autor,pvlibros->precio);
  314.            
  315.         }
  316.        
  317.         void fordenar_baraja(int elementos,struct LIBRO*pvlibros)
  318.         {
  319.          int i;
  320.          int j;
  321.          struct LIBRO aux;
  322.          struct LIBRO*pj;
  323.          
  324.          
  325.          for (i=1,pvlibros++;i<elementos;i++,pvlibros++)
  326.          {
  327.           aux=(*pvlibros);
  328.           j = i-1;
  329.           pj=pvlibros-1;
  330.           while(j > 0&& strcmp (pj -> titulo,aux.titulo)>0)
  331.           {
  332.            *(pj+1)=*(pj);
  333.            j--;
  334.            pj--;
  335.           }
  336.            if(strcmp(pj->titulo,aux.titulo)>0)
  337.            {
  338.             *(pj+1)=*(pj);
  339.             *(pj) = aux;
  340.            }
  341.             else
  342.             *(pj+1)=aux;
  343.          }
  344.       }      
« Última modificación: Febrero 08, 2014, 06:13:15 pm por Expermicid »