Sistema de gestión de una biblioteca en Python con diccionarios y conjuntos
Danny Salguero
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.
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
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.
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.
Los socios se almacenan mediante un set. Esta estructura permite:
- Evitar registros duplicados.
- Verificar rápidamente si un socio ya existe.
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).
- Diccionarios (
dict) - Conjuntos (
set) - Clases (
Libro,Socio,Biblioteca) - Programación Orientada a Objetos
| 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) |
Proyecto/
│
├── main.py
├── utilidades.py
└── README.md
Contiene el menú principal del programa y permite acceder a todas las funcionalidades del sistema.
Contiene las clases:
- Libro
- Socio
- Biblioteca Además, implementa toda la lógica del sistema.
- Python 3.10 o superior.
Abrir una terminal dentro de la carpeta del proyecto y ejecutar:
python main.pySe 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.
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
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.