Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*//////////////////////////////////////////////////////////////////////////////////
- *
- * | | | |
- * |--- , ' |--- , | ' ,---. |--- ,---. ,---. ,---.
- * | | | | | | | | | | |---' | ,---|
- * `---' ' `---' `---' ' `---' `---' `---' `---' `---^
- *
- * { Kr3L / Developer}
- * {Agradecimiento a rollth por su aporte}
- * {Algoritmo y Estructura en C}
- * {16/03/2016}
- *///////////////////////////////////////////////////////////////////////////////////
- #include<stdlib.h>
- #include<stdio.h>
- #include<string.h>//Libreria de cadenas de caracteres
- /*Construción de las estrectura de los Nodos*/
- struct nodo //Declaración de "nodo" como una estructura de datos
- {
- char titulo[50];//Variable de 50 carácteres
- char autor [20];//Variable de 20 carácteres
- int fecha;//Variable tipo entero
- int codigo;//Variable tipo entero
- nodo *ant, *sig;//Declaración de "sig" de tipo nodo
- };
- /*Declaraciones de Listas y Prototipos de las Funciones*/
- typedef nodo lista; //Declaracion de "lista" como tipo nodo
- lista *primero,*ultimo; //Declaración de punteros "primero" y "ultimo" de tipo lista
- void menu();//Prototipo de función
- void agregar();//Prototipo de función
- void mostrar();//Prototipo de función
- void buscartitulo();//Prototipo de función
- void buscarautor();//Prototipo de función
- void buscarfecha();//Prototipo de función
- void buscarcodigo();//Prototipo de función
- void eliminar();//Prototipo de función
- /*Función agregar*/
- void agregar()
- {
- system("cls");
- lista *nuevo;//Se declara como puntero * nuevo en el nodo lista
- nuevo=new(nodo);//Se crea un nuevo nodo para la lista enlazada
- system("cls");//Borrador de pantalla
- printf("\n\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n\n");
- printf("\t--- Agregar Libros a la Biblioteca ---\n\n");
- for (int i=0;i<1;i++)//Bucle de registro
- {
- printf("Titulo del Libro: ");//Muestra texto
- fflush(stdin);//Limpiar buffer de entrada de datos
- gets(nuevo->titulo);//Almacenar el titulo en el nuevo nodo
- printf("Autor del Libro: ");
- fflush(stdin);
- gets(nuevo->autor);
- printf("Fecha de Lanzamiento: ");//Muestra numero
- fflush(stdin);//Limpiar buffer de entrada de datos
- scanf ("%i",&nuevo->fecha);//Registro de variable tipo entero "%i"
- printf("Codigo de Registro: ");
- scanf ("%i",&nuevo->codigo);
- }
- nuevo->sig=NULL;//El nuevo nodo de la lista no apunta a ningún lado ya que es también el último nodo
- nuevo->ant=NULL;//El nuevo nodo de la lista no tiene un nodo anterior
- if(primero==NULL)//Si el registro es el primero a ingresar
- {
- primero=nuevo; //Entonces el nuevo nodo es tanto el primero
- ultimo=nuevo;//Como el último
- }
- else//De no ser así
- {
- ultimo->sig=nuevo;//Entonces el nodo anterior ahora apunta al nuevo
- nuevo->ant=ultimo;// El nodo anterio es el ultimo
- ultimo=nuevo;//Y el nuevo ahora es el último nodo de la lista
- }
- menu();//backmenu
- }
- /*Función mostrar*/
- void mostrar()
- {
- system("cls");//clear screen
- printf("\n\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n\n");
- printf("\t--- Libros almacenados ---\n\n");
- lista *i=ultimo;//Declaracion de puntero i y asignación del valor del primer nodo
- while(i !=NULL)//Mientras que i(nodo) no esté vacio
- {
- printf("Titulo del Libro: %s\n",i->titulo);//Muestra el título (nodo)
- printf("Autor del Libro: %s\n", i->autor);//Muestra el autor (nodo)
- printf("Fecha de Lanzamiento: %i\n", i->fecha);//Muestra la fecha de lanzamiento (nodo)
- printf("Codigo de Registro: %i\n", i->codigo);//Muestra el codigo de registro (nodo)
- printf("\n----o----o----\n");
- i=i->ant;//Pasa al siguiente nodo (Los que estan registrados en los nodos gracias al bucle)
- }
- system("pause>>null");//Detiene la operacion
- menu();//backmenu
- }
- /*Función buscar por Título*/
- void buscartitulo()
- {
- system ("cls");//Clear Screen
- lista *i=primero;//Declaracion de puntero i y asignación del valor del primer nodo
- char titulo2 [50];//Variable de 50 carácteres
- bool encontrado = false; //Encontrado se declara como variable de función logica (Verdero o Falso)
- printf("\n\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n\n");
- printf ("Titulo del Libro: ");//Muestra el texto
- fflush(stdin);//Limpiar buffer de entrada
- gets (titulo2);//Almacenar título en la nueva variable titulo2
- while (i!=NULL)//Mientras que i(nodo) no esté vacio
- {
- if (strcmp (titulo2, i->titulo)==0) //La nueva variable se compara con la almacenada y si son iguales rock&roll
- {
- printf("Titulo del Libro: %s\n",i->titulo);//Muestra el título (nodo)
- printf("Autor del Libro: %s\n", i->autor);//Muestra el autor (nodo)
- printf("Fecha de Lanzamiento: %i\n", i->fecha);//Muestra el fecha (nodo)
- printf("Codigo de Reistro: %i\n", i->codigo);//Muestra el código(nodo)
- printf("\n----o----o----\n");
- i=i->sig;//Pasar al siguiente nodo
- encontrado = true; //Verdadero
- }
- else//De no ser asi
- {
- i=i->sig;//Pasar al siguiente nodo
- }
- }
- if (encontrado == false)//Falso
- {
- printf("\n Error - No se encuentra en la Data Base");
- }
- system("pause>>null");
- menu();//backmenu
- }
- /*Función buscar por Autor*/
- void buscarautor()
- {
- system ("cls");
- lista *i=primero;//Declaracion de puntero i y asignación del valor del primer nodo
- char autor2 [20];//Variable de 20 caráteres
- bool encontrado = false;//Encontrado se declara como variable de función logica (Verdero o Falso)
- printf("\n\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n\n");
- printf ("Autor del Libro: ");
- fflush(stdin);
- gets (autor2);//Se almacena una nueva variable de autor en autor2
- while (i!=NULL)//Mientras que i(nodo) no esté vacio
- {
- 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
- {
- printf("Titulo del Libro: %s\n",i->titulo);//Muestra el título (nodo)
- printf("Autor del Libro: %s\n", i->autor);//Muestra el autor (nodo)
- printf("Fecha de Lanzamiento: %i\n", i->fecha);//Muestra la fecha de lanzamiento (nodo)
- printf("Codigo de Registro: %i\n", i->codigo);//Muestra el cdigo de registro (nodo)
- printf("\n----o----o----\n");
- i=i->sig;//pasa al siguiente nodo
- encontrado = true;//la variable de funcion logica es verdadera dentro de la condicion de comparacion
- }
- else // de no ser asi
- {
- i=i->sig;// pasa la siguiente lista
- }
- }
- if (encontrado == false) //Se crea una condicion con la variable logica en su estado false
- {
- printf("\n Error - No se encuentra en la Data Base");//Muestra el mensaje
- }
- system("pause>>null");// Stopped
- menu();//backmenu
- }
- /*Función buscar por Fecha*/
- void buscarfecha()
- {
- system ("cls");//Clear
- lista *i=primero;//Declaracion de puntero i y asignación del valor del primer nodo
- printf("\n\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n\n");
- printf ("Fecha de Lanzamiento: ");//Show text..
- int fecha2=0;//Variable de tipo completo para fecha2
- bool encontrado = false;// Se declara encontrado como variable de funsión lógica, verdadero o falso para las condiciones al buscar
- scanf ("%i",&fecha2);//Se ingresa la variable de tipo completo en fecha2
- while (i !=NULL)//Mientras que i(nodo) no esté vacio
- {
- if (fecha2==i->fecha)//Inicia la condicion con los datos ingresados, entonces se compara fecha2 y el nodo ya almacenado, si son iguales:
- {
- printf("Titulo del Libro: %s\n",i->titulo);//Muestra el titulo (nodo)
- printf("Autor del Libro: %s\n", i->autor);//Muestra el autor(nodo)
- printf("Fecha de Lanzamiento: %i\n", i->fecha);//Muestra la fecha de lanzamiento (nodo)
- printf("Codigo de Registro: %i\n", i->codigo);//Muestra el codigo de registro (nodo)
- printf("\n----o----o----\n");
- encontrado = true;//Variable de funcion logica verdadero
- i=i->sig;//Pasa a la siguiente lista
- }
- else //De no ser asi
- {
- i=i->sig;//Pasa a la siguiente lista
- }
- }
- if (encontrado == false)// Se crea una condicion con la variable si es igual a su estado contrario, es decir falso
- {
- printf("\n Error - No se encuentra en la Data Base");//Muestra el texto
- }
- system("pause>>null");//Stoppedddd
- menu();//backmenu
- }
- /*Función buscar por Código de Registro*/
- void buscarcodigo()
- {
- system ("cls");//Clear
- lista *i=primero;//Declaracion de puntero i y asignación del valor del primer nodo
- int codigo2;//Variable tipo completo para codigo2
- bool encontrado = false;//Se declara encontrado como funcion logica tipo verdadero o falto para las condiciones
- printf("\n\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n\n");
- printf ("Codigo de Registro: ");
- scanf ("%i",&codigo2);//Ingresar variables de tipo completo en codigo2
- while (i !=NULL)//Mientras que i(nodo) no esté vacio
- {
- if (codigo2== i->codigo) //Se inicia la condicion de que si codigo2 y codigo son iguales la funcion genera:
- {
- printf("Titulo del Libro: %s\n",i->titulo);//Muestra el título (nodo)
- printf("Autor del Libro: %s\n", i->autor);//Muestra el autor (nodo)
- printf("Fecha de Lanzamiento: %i\n", i->fecha);//Muestra el fecha de lanzamiento (nodo)
- printf("Codigo de Registro: %i\n", i->codigo);//Muestra el codigo de registro (nodo)
- printf("\n----o----o----\n");
- i=i->sig; //Pasa a la siguiente lista
- encontrado = true;//Variable de funcion logica verdadero dentro de la condicion
- }
- else//De no ser asi
- {
- i=i->sig;//Pasa a la siguiente lista
- }
- }
- if (encontrado == false)//Se crea una nueva condicion con la variable de funcion logica verdadero o falso, si es igual a su estado falso
- {
- printf("\n Error - No se encuentra en la Data Base");//Se muestra el texto
- }
- system("pause>>null");//stopped
- menu();//backmenu
- }
- /*Función de Eliminar*/
- void eliminar()
- {
- system ("cls");//Clear
- lista *i=primero, ultimo;//Declaracion de puntero i y asignación del valor del primer nodo
- int codigo2;//Variable tipo entero para codigo2
- int confirmar;//Variable de tipo entero para confirmar dentro de la funcion
- printf("\n\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n\n");
- printf("\n--- Eliminar Libro de la Data Base ---\n\n");
- printf ("Codigo de Registro:\n");
- scanf ("%d",&codigo2);//Ingresar variable de tipo entero en codigo2
- while (i!=NULL)//Mientras que i(nodo) no esté vacio
- {
- 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
- {
- printf("Titulo del Libro: %s\n",i->titulo);//Muestra titulo (nodo)
- printf("Autor del Libro: %s\n", i->autor);//Muestra libro (nodo)
- printf("Fecha de Lanzamiento: %i\n", i->fecha);//Muestra fecha de lanzamiento (nodo)
- printf("Codigo de Registro: %i\n", i->codigo);//Muestra codigo de registro (nodo)
- printf("\n----o----o----\n");
- printf ("Confirmar registrando 1: ");//Muestra texto para ingresar la opcion de confirmar
- scanf ("%i", &confirmar);//Ingresar variable de tipo completo
- i=i->sig;//Pasa a la siguiente lista
- }
- else //De no ser asi
- {
- i=i->sig;//Pasa a la siguiente lista
- }
- }
- if (confirmar==1)//si la variable confirmar es igual al dato ingresado se ejecuta la condicon
- {
- delete i; //Se elimina el nodo
- printf("\n --- El libro ha sido eliminado ---");
- }
- system("pause>>null");//Stopped
- menu();//backmenu
- }
- /* Función del Menu utilizando Swich*/
- void menu()
- {
- system("cls");//clear
- int op;//Varia de tipo entero
- printf("\n\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------- Base de Datos de la Biblioteca ---------------|\n");
- printf("\t|-------------------------------------------------------------|\n");
- printf("\t|-------------------------------------------------------------|\n\n");
- printf("\t1.-Ingresar libro\n");
- printf("\t----------------------------------------\n");
- printf("\t2.-Mostrar todos los libros\n");
- printf("\t----------------------------------------\n");
- printf("\t3.-Buscar libro por codigo\n");
- printf("\t----------------------------------------\n");
- printf("\t4.-Buscar libro por autor\n");
- printf("\t----------------------------------------\n");
- printf("\t5.-buscar libro por titulo\n");
- printf("\t----------------------------------------\n");
- printf("\t6.-Buscar libro por fecha de publicacion\n");
- printf("\t----------------------------------------\n");
- printf("\t7.-Eliminar libro\n");
- printf("\t----------------------------------------\n");
- printf("\t8.-Salir del sistema\n");
- printf("\t----------------------------------------\n");
- printf("\tOpcion: ");// muestra el mensaje que se encuentra en comillas
- scanf("%i",&op);//Ingresar datos tipo de variable entero
- switch(op)//El swich busca las opciones por variables entera OP
- {
- case 1: //opcion 1
- agregar(); // Te envia a la funcion agregar
- break; //cierra el caso
- case 2: // Opcion 2
- mostrar(); // Te envia a la funcion mostrar
- break;//cierra el caso
- case 3: //opcion 3
- buscarcodigo();// Te envia a la funcion buscarcodigo
- break;//cierra el caso
- case 4: //opcion 4
- buscarautor(); // Te envia a la funcion buscarautor
- break;//cierra el caso
- case 5: //opcion5
- buscartitulo();// Te envia a la funcion buscartitulo
- break;//cierra el caso
- case 6://opcion6
- buscarfecha ();// Te envia a la funcion buscarfecha
- break;//cierra el caso
- case 7: //opcion 7
- eliminar ();// Te envia a la funcion eliminar
- break;//cierra el caso
- case 8: //opcion 8
- exit(0);//Cierra la consola
- break;//cierra el caso
- default://De ser todo lo contrario por defecto se genera el siguiente caso
- printf("\tError - No se encuentra en la Data Base\n\n");//Muestra texto
- printf("\tOpcion: ");//Pide ingresar datos de las opciones o caso del menu generado por el swich
- system("pause>null");//se detiene la consola
- menu();//envia a la funcion menu
- }
- }
- /* Función Principal */
- int main()
- {
- system("title Biblioteca de Libros");//Muestra titulo en la barra de desplazamiento del programa o ventana
- system("color 70");//Da color a la consola
- menu();//Envia a la funcion menu desde la funcion principal
- system("pause>null");//Se detiene la consola
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement