- Adicionar Livros: Insere novos livros na biblioteca organizados por uma árvore AVL para buscas rápidas.
- Buscar Livros: Localiza livros pelo título, garantindo eficiência na pesquisa.
- Emprestar Livros: Registra a retirada de livros utilizando uma fila circular para controlar reservas.
- Devolver Livros: Processa a devolução de livros à biblioteca.
- Desfazer Última Ação: Reverte a última operação realizada (empréstimo ou devolução).
- Listar Livros: Exibe todos os livros em ordem alfabética pelo título.
- Clone este repositório:
git clone https://github.com/kaychenderson/Python_Library.git
- Acesse o diretório do projeto:
cd Python_Library
- Execute o sistema:
Basta rodar o arquivo principal para iniciar o programa:
python library.py
- Adicionar Livros: Use o método add_book(codigo, titulo, autor) para cadastrar livros na biblioteca.
Exemplo:
library.add_book(1, "Dom Casmurro", "Machado de Assis")
- Buscar Livros: Use o método search_book(titulo) para localizar um livro pelo título.
Exemplo:
library.search_book("Dom Casmurro")
- Empréstimo de Livros: Utilize borrow_book(titulo) para emprestar um livro.
Exemplo:
library.borrow_book("Dom Casmurro")
- Devolução de Livros: Use return_book() para devolver um livro da fila de reservas.
Exemplo:
library.return_book("Dom Casmurro")
- Desfazer Ações: Utilize undo_last_action() para reverter a última operação de empréstimo ou devolução.
O sistema usa diferentes estruturas para oferecer eficiência e organização:
- Árvore AVL: Armazena e organiza livros por título, garantindo buscas rápidas e ordenação automática.
- Fila Circular: Gerencia a fila de reservas de livros.
- Pilha: Armazena o histórico de ações (empréstimos e devoluções), permitindo desfazer operações.
O sistema é dividido em classes principais:
- Classe NodeAVL:
Representa cada nó da árvore AVL, armazenando os dados do livro e os ponteiros para os filhos.
- Classe AVLTree:
Implementa a árvore AVL, incluindo métodos para rotação, cálculo de balanceamento e inserção de nós.
- Classe CircularQueue:
Implementa uma fila circular para gerenciar a ordem de reservas.
- Classe Stack:
Fornece uma pilha para armazenar o histórico de ações realizadas.
- Classe Book:
Representa os atributos básicos de um livro, como código, título e autor.
- Classe Library:
Controla a lógica principal, incluindo gestão de livros, empréstimos, devoluções e histórico.
Exemplo:
# Inicializa a biblioteca
library = Library()
# Adiciona livros
library.add_book(1, "Dom Casmurro", "Machado de Assis")
library.add_book(2, "O Pequeno Príncipe", "Antoine de Saint-Exupéry")
# Lista os livros em ordem alfabética
library.display_books()
# Busca um livro pelo título
library.search_book("Dom Casmurro")
# Realiza um empréstimo
library.borrow_book("O Pequeno Príncipe")
# Devolve um livro
library.return_book()
# Desfaz a última ação
library.undo_last_action()