Skip to content

Repository files navigation

Sistema de Gerenciamento de Biblioteca Digital em Python

Este projeto implementa um sistema de linha de comando para organizar documentos digitais de uma biblioteca universitária. A proposta é reduzir o controle manual de arquivos, padronizando o armazenamento por tipo de documento e ano de publicação.

O sistema foi desenvolvido em Python e utiliza apenas recursos da biblioteca padrão, facilitando a execução em diferentes computadores sem instalação de dependências externas.

Objetivo

O objetivo do sistema é permitir o gerenciamento básico de documentos digitais pelo terminal. A aplicação trabalha com arquivos como artigos, teses, livros, relatórios e demais materiais acadêmicos em formatos como PDF, ePUB, TXT, Markdown, CSV e JSON.

As principais operações disponíveis são:

  • cadastrar documentos digitais na biblioteca;
  • listar documentos organizados por tipo e ano;
  • criar documentos textuais;
  • ler documentos textuais;
  • abrir documentos no aplicativo padrão do sistema operacional;
  • renomear documentos;
  • remover documentos;
  • criar, listar e remover diretórios internos.

Os arquivos são armazenados na pasta biblioteca/, seguindo a estrutura abaixo:

biblioteca/
├── pdf/
│   └── 2025/
│       └── artigo_operador_tecnico_ia_2025.pdf
├── epub/
│   └── 2023/
│       └── livro_digital.epub
└── txt/
    └── 2025/
        └── resumo_de_pesquisa.txt

Funcionalidades implementadas

Funcionalidade Situação Descrição
Listar documentos Implementada Lista os documentos agrupados por extensão e ano de publicação.
Adicionar documento Implementada Copia um arquivo externo para a biblioteca sem apagar o arquivo original.
Criar documento textual Implementada Cria arquivos .txt, .md, .csv ou .json.
Ler documento Implementada Exibe o conteúdo de arquivos textuais e mostra um resumo para arquivos binários.
Abrir documento Implementada Abre o arquivo no aplicativo padrão do sistema operacional.
Renomear documento Implementada Renomeia um documento mantendo-o no mesmo diretório.
Remover documento Implementada Remove documentos armazenados na biblioteca.
Criar diretório Implementada Cria diretórios internos na pasta da biblioteca.
Listar diretórios Implementada Lista os diretórios existentes na estrutura da biblioteca.
Remover diretório Implementada Remove diretórios vazios ou com conteúdo, mediante confirmação.
Validação de caminhos Implementada Impede acesso indevido a arquivos fora da pasta da biblioteca.
Testes automatizados Implementada Valida as principais operações usando unittest e diretórios temporários.

Tecnologias utilizadas

  • Python 3.10 ou superior
  • Biblioteca padrão do Python:
    • pathlib
    • shutil
    • webbrowser
    • dataclasses
    • unittest
    • tempfile

O projeto não depende de pacotes externos.

Como executar

No terminal, dentro da pasta do projeto, execute:

python app.py

O sistema exibirá o menu principal:

1  - Listar documentos por tipo e ano
2  - Adicionar documento existente
3  - Criar documento textual
4  - Ler documento
5  - Abrir documento
6  - Renomear documento
7  - Remover documento
8  - Criar diretório
9  - Listar diretórios
10 - Remover diretório
0  - Sair

Exemplos de uso

Criar documento textual

  1. Execute o sistema:
python app.py
  1. Escolha a opção 3.
  2. Informe os dados solicitados:
    • título do documento;
    • extensão;
    • ano de publicação;
    • conteúdo do documento.
  3. Digite FIM para encerrar a inserção do conteúdo.

Exemplo de resultado:

biblioteca/txt/2025/resumo_de_pesquisa.txt

Adicionar documento existente

  1. Execute o sistema:
python app.py
  1. Escolha a opção 2.
  2. Informe o caminho do arquivo de origem.
  3. Informe o ano de publicação.
  4. Informe um novo nome, caso queira salvar o arquivo com outro nome dentro da biblioteca.

Exemplo de origem:

exemplos/documentos_origem/artigo_operador_tecnico_ia_2025.pdf

Exemplo de destino criado pelo sistema:

biblioteca/pdf/2025/artigo_operador_tecnico_ia_2025.pdf

O arquivo original permanece na pasta de origem.

Como executar os testes

Para executar os testes automatizados, utilize:

python -m unittest discover -s tests -v

Resultado esperado:

Ran 10 tests

OK

Os testes usam diretórios temporários, por isso não alteram os documentos reais da pasta biblioteca/.

Organização do projeto

biblioteca_digital_python/
├── app.py
├── biblioteca_digital/
│   ├── __init__.py
│   ├── cli.py
│   └── library_manager.py
├── biblioteca/
│   └── .gitkeep
├── docs/
│   ├── MANUAL_USUARIO.md
│   ├── PLANO_GIT_GITHUB.md
│   └── RELATORIO_TESTES_FEEDBACK.md
├── exemplos/
│   └── documentos_origem/
├── tests/
│   └── test_library_manager.py
├── .github/
│   └── pull_request_template.md
├── .gitignore
├── CONTRIBUTING.md
└── README.md

Decisões técnicas

Separação entre regra de negócio e interface

Optei por separar a regra de negócio da interface de linha de comando. A classe DigitalLibrary, no arquivo library_manager.py, concentra as operações principais do sistema. O arquivo cli.py fica responsável apenas pela interação com o usuário.

Essa separação facilita a manutenção do projeto e permite testar as regras principais sem depender do menu interativo.

Uso de pathlib

A manipulação de caminhos foi feita com pathlib, pois esse recurso deixa o código mais legível e funciona bem em Windows, Linux e macOS.

Organização automática por tipo e ano

Ao adicionar ou criar documentos, o sistema organiza os arquivos no formato:

tipo/ano/nome_do_arquivo

Exemplo:

biblioteca/pdf/2025/artigo_operador_tecnico_ia_2025.pdf

Prevenção de acesso fora da biblioteca

Incluí uma validação para impedir que caminhos externos sejam manipulados pelo sistema. Com isso, entradas como ../arquivo.txt são bloqueadas, evitando alterações fora da pasta biblioteca/.

Uso da biblioteca padrão

A escolha por não usar pacotes externos foi feita para simplificar a execução do projeto e reduzir problemas de ambiente durante a avaliação.

Documentação complementar

Além deste README, o projeto contém os seguintes documentos:

  • docs/MANUAL_USUARIO.md: instruções de uso do sistema;
  • docs/RELATORIO_TESTES_FEEDBACK.md: registro dos testes e dos feedbacks considerados;
  • docs/PLANO_GIT_GITHUB.md: registro do uso de Git e GitHub no projeto;
  • CONTRIBUTING.md: orientações para commits, branches e pull requests.

Autor

Projeto acadêmico desenvolvido por Armando de Souza Stein para a atividade Hora da Prática 2 da disciplina Programação para Ciência de Dados.

About

Sistema de linha de comando em Python para gerenciamento de documentos digitais de uma biblioteca universitária.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages