Advertisement
Kr3L

Script de C / Biblioteca / {Estructura}

Jun 22nd, 2016
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 16.84 KB | None | 0 0
  1. /*//////////////////////////////////////////////////////////////////////////////////
  2. *
  3. * |        |      |             |
  4. * |--- , ' |--- , |     ' ,---. |---  ,---. ,---. ,---.
  5. * |    | | |    | |     | |   | |     |---' |     ,---|
  6. * `---'  '  `---' `---' ' `---' `---' `---' `---' `---^
  7. *
  8. * { Kr3L / Developer}
  9. * {Agradecimiento a rollth por su aporte}
  10. * {Algoritmo y Estructura en C}
  11. * {16/03/2016}
  12. *///////////////////////////////////////////////////////////////////////////////////
  13.  
  14. #include<stdlib.h>
  15. #include<stdio.h>
  16. #include<string.h>//Libreria de cadenas de caracteres
  17.  
  18. /*Construción de las estrectura de los Nodos*/
  19. struct nodo //Declaración de "nodo" como una estructura de datos
  20. {
  21.  char titulo[50];//Variable de 50 carácteres
  22.  char autor [20];//Variable de 20 carácteres
  23.  int fecha;//Variable tipo entero
  24.  int codigo;//Variable tipo entero
  25.  nodo *ant, *sig;//Declaración de "sig" de tipo nodo
  26.  
  27. };
  28.  
  29. /*Declaraciones de Listas y Prototipos de las Funciones*/
  30. typedef nodo lista; //Declaracion de "lista" como tipo nodo
  31. lista *primero,*ultimo; //Declaración de punteros "primero" y "ultimo" de tipo lista
  32. void menu();//Prototipo de función
  33. void agregar();//Prototipo de función
  34. void mostrar();//Prototipo de función
  35. void buscartitulo();//Prototipo de función
  36. void buscarautor();//Prototipo de función
  37. void buscarfecha();//Prototipo de función
  38. void buscarcodigo();//Prototipo de función
  39. void eliminar();//Prototipo de función
  40.  
  41. /*Función agregar*/
  42. void agregar()
  43. {
  44.     system("cls");
  45.     lista *nuevo;//Se declara como puntero * nuevo en el nodo lista
  46.  
  47.     nuevo=new(nodo);//Se crea un nuevo nodo para la lista enlazada
  48.     system("cls");//Borrador de pantalla
  49.     printf("\n\t|-------------------------------------------------------------|\n");
  50.     printf("\t|-------------------------------------------------------------|\n");
  51.     printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
  52.     printf("\t|-------------------------------------------------------------|\n");
  53.     printf("\t|-------------------------------------------------------------|\n\n");
  54.     printf("\t--- Agregar Libros a la Biblioteca ---\n\n");
  55.        
  56.     for (int i=0;i<1;i++)//Bucle de registro
  57.     {
  58.     printf("Titulo del Libro: ");//Muestra texto
  59.     fflush(stdin);//Limpiar buffer de entrada de datos
  60.     gets(nuevo->titulo);//Almacenar el titulo en el nuevo nodo
  61.  
  62.     printf("Autor del Libro: ");
  63.     fflush(stdin);
  64.     gets(nuevo->autor);
  65.  
  66.     printf("Fecha de Lanzamiento: ");//Muestra numero
  67.     fflush(stdin);//Limpiar buffer de entrada de datos
  68.     scanf ("%i",&nuevo->fecha);//Registro de variable tipo entero "%i"
  69.  
  70.     printf("Codigo de Registro: ");
  71.     scanf ("%i",&nuevo->codigo);
  72.      }
  73.  
  74.     nuevo->sig=NULL;//El nuevo nodo de la lista no apunta a ningún lado ya que es también el último nodo
  75.     nuevo->ant=NULL;//El nuevo nodo de la lista no tiene un nodo anterior
  76.  
  77.         if(primero==NULL)//Si el registro es el primero a ingresar
  78.     {
  79.         primero=nuevo; //Entonces el nuevo nodo es tanto el primero
  80.         ultimo=nuevo;//Como el último
  81.     }
  82.  else//De no ser así
  83.     {
  84.         ultimo->sig=nuevo;//Entonces el nodo anterior ahora apunta al nuevo
  85.         nuevo->ant=ultimo;// El nodo anterio es el ultimo
  86.         ultimo=nuevo;//Y el nuevo ahora es el último nodo de la lista
  87.     }
  88.     menu();//backmenu
  89. }
  90.  
  91. /*Función mostrar*/
  92. void mostrar()
  93. {
  94.     system("cls");//clear screen
  95.     printf("\n\t|-------------------------------------------------------------|\n");
  96.     printf("\t|-------------------------------------------------------------|\n");
  97.     printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
  98.     printf("\t|-------------------------------------------------------------|\n");
  99.     printf("\t|-------------------------------------------------------------|\n\n");
  100.     printf("\t--- Libros almacenados ---\n\n");
  101.     lista *i=ultimo;//Declaracion de puntero i y asignación del valor del primer nodo
  102.     while(i !=NULL)//Mientras que i(nodo) no esté vacio
  103.     {
  104.         printf("Titulo del Libro: %s\n",i->titulo);//Muestra el título (nodo)
  105.         printf("Autor del Libro: %s\n", i->autor);//Muestra el autor (nodo)
  106.         printf("Fecha de Lanzamiento: %i\n", i->fecha);//Muestra la fecha de lanzamiento (nodo)
  107.         printf("Codigo de Registro: %i\n", i->codigo);//Muestra el codigo de registro (nodo)
  108.         printf("\n----o----o----\n");
  109.         i=i->ant;//Pasa al siguiente nodo (Los que estan registrados en los nodos gracias al bucle)
  110.     }
  111.     system("pause>>null");//Detiene la operacion
  112.     menu();//backmenu
  113. }
  114.  
  115. /*Función buscar por Título*/
  116. void buscartitulo()
  117. {
  118.     system ("cls");//Clear Screen
  119.     lista *i=primero;//Declaracion de puntero i y asignación del valor del primer nodo
  120.     char titulo2 [50];//Variable de 50 carácteres
  121.     bool encontrado = false; //Encontrado se declara como variable de función logica (Verdero o Falso)
  122.     printf("\n\t|-------------------------------------------------------------|\n");
  123.     printf("\t|-------------------------------------------------------------|\n");
  124.     printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
  125.     printf("\t|-------------------------------------------------------------|\n");
  126.     printf("\t|-------------------------------------------------------------|\n\n");
  127.     printf ("Titulo del Libro: ");//Muestra el texto
  128.     fflush(stdin);//Limpiar buffer de entrada
  129.     gets (titulo2);//Almacenar título en la nueva variable titulo2
  130.     while (i!=NULL)//Mientras que i(nodo) no esté vacio
  131.     {
  132.         if (strcmp (titulo2, i->titulo)==0) //La nueva variable se compara con la almacenada y si son iguales rock&roll
  133.         {
  134.             printf("Titulo del Libro: %s\n",i->titulo);//Muestra el título (nodo)
  135.             printf("Autor del Libro: %s\n", i->autor);//Muestra el autor (nodo)
  136.             printf("Fecha de Lanzamiento: %i\n", i->fecha);//Muestra el fecha (nodo)
  137.             printf("Codigo de Reistro: %i\n", i->codigo);//Muestra el código(nodo)
  138.             printf("\n----o----o----\n");
  139.             i=i->sig;//Pasar al siguiente nodo
  140.             encontrado = true; //Verdadero
  141.         }
  142.         else//De no ser asi
  143.         {
  144.             i=i->sig;//Pasar al siguiente nodo
  145.         }
  146.  
  147.     }
  148.  
  149.     if (encontrado == false)//Falso
  150.     {
  151.         printf("\n Error - No se encuentra en la Data Base");
  152.     }
  153.     system("pause>>null");
  154.     menu();//backmenu
  155. }
  156.  
  157. /*Función buscar por Autor*/
  158. void buscarautor()
  159. {
  160.     system ("cls");
  161.     lista *i=primero;//Declaracion de puntero i y asignación del valor del primer nodo
  162.     char autor2 [20];//Variable de 20 caráteres
  163.     bool encontrado = false;//Encontrado se declara como variable de función logica (Verdero o Falso)
  164.     printf("\n\t|-------------------------------------------------------------|\n");
  165.     printf("\t|-------------------------------------------------------------|\n");
  166.     printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
  167.     printf("\t|-------------------------------------------------------------|\n");
  168.     printf("\t|-------------------------------------------------------------|\n\n");
  169.     printf ("Autor del Libro: ");
  170.     fflush(stdin);
  171.     gets (autor2);//Se almacena una nueva variable de autor en autor2
  172.     while (i!=NULL)//Mientras que i(nodo) no esté vacio
  173.     {
  174.         if (strcmp (autor2, i->autor)==0)//Hace una comparacion de de ambas variables, si la variable nueva ingresada coincide con el nodo ya almacenado inicia la condicion
  175.         {
  176.             printf("Titulo del Libro: %s\n",i->titulo);//Muestra el título (nodo)
  177.             printf("Autor del Libro: %s\n", i->autor);//Muestra el autor (nodo)
  178.             printf("Fecha de Lanzamiento: %i\n", i->fecha);//Muestra la fecha de lanzamiento (nodo)
  179.             printf("Codigo de Registro: %i\n", i->codigo);//Muestra el cdigo de registro (nodo)
  180.             printf("\n----o----o----\n");
  181.             i=i->sig;//pasa al siguiente nodo
  182.             encontrado = true;//la variable de funcion logica es verdadera dentro de la condicion de comparacion
  183.         }
  184.         else // de no ser asi
  185.         {
  186.             i=i->sig;// pasa la siguiente lista
  187.         }
  188.     }
  189.  
  190.     if (encontrado == false) //Se crea una condicion con la variable logica en su estado false
  191.     {
  192.         printf("\n Error - No se encuentra en la Data Base");//Muestra el mensaje
  193.     }
  194.  
  195.     system("pause>>null");// Stopped
  196.     menu();//backmenu
  197. }
  198.  
  199. /*Función buscar por Fecha*/
  200. void buscarfecha()
  201. {
  202.     system ("cls");//Clear
  203.     lista *i=primero;//Declaracion de puntero i y asignación del valor del primer nodo
  204.     printf("\n\t|-------------------------------------------------------------|\n");
  205.     printf("\t|-------------------------------------------------------------|\n");
  206.     printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
  207.     printf("\t|-------------------------------------------------------------|\n");
  208.     printf("\t|-------------------------------------------------------------|\n\n");
  209.     printf ("Fecha de Lanzamiento: ");//Show text..
  210.     int fecha2=0;//Variable de tipo completo para fecha2
  211.     bool encontrado = false;// Se declara encontrado como variable de funsión lógica, verdadero o falso para las condiciones al buscar
  212.     scanf ("%i",&fecha2);//Se ingresa la variable de tipo completo en fecha2
  213.     while (i !=NULL)//Mientras que i(nodo) no esté vacio
  214.     {
  215.         if (fecha2==i->fecha)//Inicia la condicion con los datos ingresados, entonces se compara fecha2 y el nodo ya almacenado, si son iguales:
  216.         {
  217.             printf("Titulo del Libro: %s\n",i->titulo);//Muestra el titulo (nodo)
  218.             printf("Autor del Libro: %s\n", i->autor);//Muestra el autor(nodo)
  219.             printf("Fecha de Lanzamiento: %i\n", i->fecha);//Muestra la fecha de lanzamiento (nodo)
  220.             printf("Codigo de Registro: %i\n", i->codigo);//Muestra el codigo de registro (nodo)
  221.             printf("\n----o----o----\n");
  222.             encontrado = true;//Variable de funcion logica verdadero
  223.             i=i->sig;//Pasa a la siguiente lista
  224.         }
  225.         else //De no ser asi
  226.         {
  227.             i=i->sig;//Pasa a la siguiente lista
  228.         }
  229.     }
  230.     if (encontrado == false)// Se crea una condicion con la variable si es igual a su estado contrario, es decir falso
  231.     {
  232.         printf("\n Error - No se encuentra en la Data Base");//Muestra el texto
  233.     }
  234.     system("pause>>null");//Stoppedddd
  235.     menu();//backmenu
  236. }
  237.  
  238. /*Función buscar por Código de Registro*/
  239. void buscarcodigo()
  240. {
  241.     system ("cls");//Clear
  242.     lista *i=primero;//Declaracion de puntero i y asignación del valor del primer nodo
  243.     int codigo2;//Variable tipo completo para codigo2
  244.     bool encontrado = false;//Se declara encontrado como funcion logica tipo verdadero o falto para las condiciones
  245.     printf("\n\t|-------------------------------------------------------------|\n");
  246.     printf("\t|-------------------------------------------------------------|\n");
  247.     printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
  248.     printf("\t|-------------------------------------------------------------|\n");
  249.     printf("\t|-------------------------------------------------------------|\n\n");
  250.     printf ("Codigo de Registro: ");
  251.     scanf ("%i",&codigo2);//Ingresar variables de tipo completo en codigo2
  252.     while (i !=NULL)//Mientras que i(nodo) no esté vacio
  253.     {
  254.         if (codigo2== i->codigo) //Se inicia la condicion de que si codigo2 y codigo son iguales la funcion genera:
  255.         {
  256.             printf("Titulo del Libro: %s\n",i->titulo);//Muestra el título (nodo)
  257.             printf("Autor del Libro: %s\n", i->autor);//Muestra el autor (nodo)
  258.             printf("Fecha de Lanzamiento: %i\n", i->fecha);//Muestra el fecha de lanzamiento (nodo)
  259.             printf("Codigo de Registro: %i\n", i->codigo);//Muestra el codigo de registro (nodo)
  260.             printf("\n----o----o----\n");
  261.             i=i->sig; //Pasa a la siguiente lista
  262.             encontrado = true;//Variable de funcion logica verdadero dentro de la condicion
  263.         }
  264.         else//De no ser asi
  265.         {
  266.             i=i->sig;//Pasa a la siguiente lista
  267.         }
  268.     }
  269.  
  270.         if (encontrado == false)//Se crea una nueva condicion con la variable de funcion logica verdadero o falso, si es igual a su estado falso
  271.     {
  272.         printf("\n Error - No se encuentra en la Data Base");//Se muestra el texto
  273.     }
  274.     system("pause>>null");//stopped
  275.     menu();//backmenu
  276. }
  277.  
  278. /*Función de Eliminar*/
  279. void eliminar()
  280. {
  281.     system ("cls");//Clear
  282.     lista *i=primero, ultimo;//Declaracion de puntero i y asignación del valor del primer nodo
  283.     int codigo2;//Variable tipo entero para codigo2
  284.     int confirmar;//Variable de tipo entero para confirmar dentro de la funcion
  285.     printf("\n\t|-------------------------------------------------------------|\n");
  286.     printf("\t|-------------------------------------------------------------|\n");
  287.     printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
  288.     printf("\t|-------------------------------------------------------------|\n");
  289.     printf("\t|-------------------------------------------------------------|\n\n");
  290.     printf("\n--- Eliminar Libro de la Data Base ---\n\n");
  291.     printf ("Codigo de Registro:\n");
  292.     scanf ("%d",&codigo2);//Ingresar variable de tipo entero en codigo2
  293.     while (i!=NULL)//Mientras que i(nodo) no esté vacio
  294.     {
  295.         if (codigo2==i->codigo)//Se crea la condicion de que si codigo2 es igual a codigo dentro con su datos ya almacenados en el nodo
  296.         {
  297.                 printf("Titulo del Libro: %s\n",i->titulo);//Muestra titulo (nodo)
  298.                 printf("Autor del Libro: %s\n", i->autor);//Muestra libro (nodo)
  299.                 printf("Fecha de Lanzamiento: %i\n", i->fecha);//Muestra fecha de lanzamiento (nodo)
  300.                 printf("Codigo de Registro: %i\n", i->codigo);//Muestra codigo de registro (nodo)
  301.                 printf("\n----o----o----\n");
  302.                 printf ("Confirmar registrando 1: ");//Muestra texto para ingresar la opcion de confirmar
  303.                 scanf ("%i", &confirmar);//Ingresar variable de tipo completo
  304.                 i=i->sig;//Pasa a la siguiente lista
  305.         }
  306.         else //De no ser asi
  307.         {
  308.             i=i->sig;//Pasa a la siguiente lista
  309.         }
  310.     }
  311.         if (confirmar==1)//si la variable confirmar es igual al dato ingresado se ejecuta la condicon
  312.     {
  313.         delete i; //Se elimina el nodo
  314.         printf("\n --- El libro ha sido eliminado ---");
  315.     }
  316.     system("pause>>null");//Stopped
  317.     menu();//backmenu
  318. }
  319.  
  320.  
  321.  
  322. /* Función del Menu utilizando Swich*/
  323. void menu()
  324. {
  325.     system("cls");//clear
  326.     int op;//Varia de tipo entero
  327.     printf("\n\t|-------------------------------------------------------------|\n");
  328.     printf("\t|-------------------------------------------------------------|\n");
  329.     printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
  330.     printf("\t|-------------------------------------------------------------|\n");
  331.     printf("\t|-------------------------------------------------------------|\n\n");
  332.     printf("\t1.-Ingresar libro\n");
  333.     printf("\t----------------------------------------\n");
  334.     printf("\t2.-Mostrar todos los libros\n");
  335.     printf("\t----------------------------------------\n");
  336.     printf("\t3.-Buscar libro por codigo\n");
  337.     printf("\t----------------------------------------\n");
  338.     printf("\t4.-Buscar libro por autor\n");
  339.     printf("\t----------------------------------------\n");
  340.     printf("\t5.-buscar libro por titulo\n");
  341.     printf("\t----------------------------------------\n");
  342.     printf("\t6.-Buscar libro por fecha de publicacion\n");
  343.     printf("\t----------------------------------------\n");
  344.     printf("\t7.-Eliminar libro\n");
  345.     printf("\t----------------------------------------\n");
  346.     printf("\t8.-Salir del sistema\n");
  347.     printf("\t----------------------------------------\n");
  348.     printf("\tOpcion: ");// muestra el mensaje  que se encuentra en comillas
  349.     scanf("%i",&op);//Ingresar datos tipo de variable entero
  350.         switch(op)//El swich busca las opciones por variables entera OP
  351.     {
  352.     case 1: //opcion 1
  353.         agregar(); // Te envia a la funcion agregar
  354.         break; //cierra el caso
  355.     case 2: // Opcion 2
  356.         mostrar(); // Te envia a la funcion mostrar
  357.         break;//cierra el caso
  358.     case 3: //opcion 3
  359.         buscarcodigo();// Te envia a la funcion buscarcodigo
  360.         break;//cierra el caso
  361.     case 4: //opcion 4
  362.         buscarautor(); // Te envia a la funcion buscarautor
  363.         break;//cierra el caso
  364.     case 5: //opcion5
  365.         buscartitulo();// Te envia a la funcion buscartitulo
  366.         break;//cierra el caso
  367.     case 6://opcion6
  368.         buscarfecha ();// Te envia a la funcion buscarfecha
  369.         break;//cierra el caso
  370.     case 7: //opcion 7
  371.         eliminar ();// Te envia a la funcion eliminar
  372.         break;//cierra el caso
  373.     case 8: //opcion 8
  374.         exit(0);//Cierra la consola
  375.         break;//cierra el caso
  376.     default://De ser todo lo contrario por defecto se genera el siguiente caso
  377.         printf("\tError - No se encuentra en la Data Base\n\n");//Muestra texto
  378.         printf("\tOpcion: ");//Pide ingresar datos de las opciones o caso del menu generado por el swich
  379.         system("pause>null");//se detiene la consola
  380.         menu();//envia a la funcion menu
  381.     }
  382. }
  383.  
  384. /* Función Principal */
  385. int main()
  386. {
  387.     system("title Biblioteca de Libros");//Muestra titulo en la barra de desplazamiento del programa o ventana
  388.     system("color 70");//Da color a la consola
  389.     menu();//Envia a la funcion menu desde la funcion principal
  390.     system("pause>null");//Se detiene la consola
  391. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement