Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

https-github.com-usuario-Salguero_Danny_AlgEstDatos_U2.

Sistema de gestión de una biblioteca en Python con diccionarios y conjuntos

Sistema de Gestión de Biblioteca

Autor

Danny Salguero

Descripción

Este proyecto consiste en el desarrollo de un sistema de gestión de una biblioteca utilizando las estructuras de datos nativas de Python diccionarios (dict) y conjuntos (set).

El programa funciona mediante un menú de consola que permite registrar y consultar libros, administrar socios y realizar operaciones entre conjuntos para analizar préstamos de libros.

Objetivo

Aplicar las estructuras de datos estudiadas en la Unidad 2 mediante un caso práctico que permita comprender el uso de:

  • Diccionarios (HashMap)
  • Conjuntos (Set)
  • Ordenamiento mediante sorted()
  • Operaciones entre conjuntos

Requerimientos implementados

R1. Catálogo de libros (Diccionario / HashMap)

Se utiliza un diccionario donde:

  • Clave: Código del libro.
  • Valor: Objeto de tipo Libro. Permite:
  • Registrar libros.
  • Buscar libros por código.
  • Eliminar libros. El acceso mediante la clave permite búsquedas muy rápidas.

R2. Catálogo ordenado (TreeMap)

Python no dispone de una estructura TreeMap de forma nativa, por lo que el catálogo se presenta ordenado utilizando la función:

sorted(self.catalogo)

Esta función ordena las claves del diccionario antes de mostrarlas.

R3. Socios registrados (Conjunto)

Los socios se almacenan mediante un set. Esta estructura permite:

  • Evitar registros duplicados.
  • Verificar rápidamente si un socio ya existe.

R4. Operaciones entre conjuntos

Se utilizan dos conjuntos de socios:

  • Socios con préstamos de novela.
  • Socios con préstamos de ciencia. El programa realiza las siguientes operaciones:
  • Intersección (socios que leen ambos géneros).
  • Diferencia (socios que solo leen novela).
  • Unión (todos los socios con préstamos).

Estructuras utilizadas

  • Diccionarios (dict)
  • Conjuntos (set)
  • Clases (Libro, Socio, Biblioteca)
  • Programación Orientada a Objetos

Complejidades de las operaciones

Requerimiento Método Estructura Complejidad
Registrar libro registrar_libro() Diccionario O(1)
Buscar libro buscar_libro() Diccionario O(1)
Eliminar libro eliminar_libro() Diccionario O(1)
Mostrar catálogo ordenado mostrar_catalogo() Diccionario + sorted() O(n log n)
Registrar socio registrar_socio() Conjunto O(1)
Buscar socio buscar_socio() Conjunto O(1)
Mostrar socios mostrar_socios() Conjunto + sorted() O(n log n)
Intersección operaciones_conjuntos() Conjuntos O(n)
Diferencia operaciones_conjuntos() Conjuntos O(n)
Unión operaciones_conjuntos() Conjuntos O(n)

Archivos del proyecto

Proyecto/
│
├── main.py
├── utilidades.py
└── README.md

main.py

Contiene el menú principal del programa y permite acceder a todas las funcionalidades del sistema.

utilidades.py

Contiene las clases:

  • Libro
  • Socio
  • Biblioteca Además, implementa toda la lógica del sistema.

Cómo ejecutar el programa

Requisitos

  • Python 3.10 o superior.

Ejecución

Abrir una terminal dentro de la carpeta del proyecto y ejecutar:

python main.py

Se mostrará el siguiente menú:

==========================================
        SISTEMA DE BIBLIOTECA
==========================================
1. Registrar libro
2. Buscar libro
3. Mostrar catálogo ordenado
4. Eliminar libro
------------------------------------------
5. Registrar socio
6. Buscar socio
7. Mostrar socios
------------------------------------------
8. Operaciones entre conjuntos
------------------------------------------
0. Salir
==========================================

Seleccione la opción deseada y siga las instrucciones que aparecen en pantalla.


Datos de prueba

El sistema incluye inicialmente los siguientes libros:

Código Título Autor
L001 Python Básico Miguel Quiroz
L002 Algoritmos Thomas Cormen
L003 Estructuras de Datos Mark Allen Weiss

También incluye tres socios registrados:

  • S001
  • S002
  • S003

Conclusión

Este proyecto demuestra la aplicación práctica de los diccionarios y conjuntos en Python para resolver un problema de gestión de biblioteca.

El uso de diccionarios permite realizar búsquedas eficientes por clave, mientras que los conjuntos facilitan el manejo de elementos únicos y la realización de operaciones matemáticas como unión, intersección y diferencia.

Asimismo, el uso de sorted() permite presentar la información ordenada cuando es necesario, simulando el comportamiento de una estructura de un TreeMap.

About

Sistema de gestión de una biblioteca en Python con diccionarios y conjuntos

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors