Conheça o projeto
Nesse projeto você vai desenvolver sistema simples de gerenciamento de biblioteca pessoal em linha de comando (CLI), permitindo cadastrar livros, autores, buscar por diferentes critérios e gerar estatísticas básicas.
Instruções
Estrutura, regras e requisitos do projeto
Objetivo
Sistema de gerenciamento de biblioteca pessoal em linha de comando (CLI) desenvolvido como exercício prático para treinamento de Ruby. O projeto permite cadastrar livros e autores, realizar buscas por diferentes critérios e gerar estatísticas sobre a coleção.
Propósito Didático
Aplicar conceitos fundamentais de Ruby:
- Procs, Lambdas e Métodos: Implementação de filtros customizáveis e callbacks
- Orientação a Objetos: Classes, herança, composição e encapsulamento
- Gems: Utilização de bibliotecas externas para interface e formatação
- Interação com Arquivos: Persistência de dados em formato JSON
Funcionalidades Principais
- Cadastro completo de livros com informações detalhadas
- Sistema de busca e filtragem avançada
- Controle de status de leitura e avaliações
- Geração de estatísticas e relatórios
- Persistência de dados
Especificações
1. Gestão de Livros
1.1 Cadastro de Livros
Campos obrigatórios:
- Título
- Autor
Campos opcionais:
- Ano de publicação
- ISBN
- Categoria/Gênero
- Observações
Campos com valores predefinidos:
- Status de leitura: "Não lido" (padrão), "Lendo", "Lido"
- Avaliação: 1 a 5 estrelas (opcional, apenas para livros lidos)
1.2 Listagem de Livros
- Exibição em formato tabular
- Informações básicas visíveis
- Indicação visual do status de leitura
- Suporte para listagem completa da biblioteca
1.3 Sistema de Busca
Filtros simples disponíveis:
- Título (busca parcial/substring)
- Autor (busca parcial/substring)
- Ano de publicação (exato)
- Categoria (exato)
- Status de leitura (exato)
- Avaliação (exato ou por faixa)
Filtros avançados:
- Combinação de múltiplos critérios usando lambdas
- Exemplos de uso:
- "Livros de ficção científica não lidos"
- "Livros com 5 estrelas do autor X"
- Criação de filtros customizados via procs/lambdas
1.4 Edição de Livros
- Permitir alteração de qualquer campo
- Atualização de status de leitura
- Modificação de avaliação
- Edição de observações
1.5 Remoção de Livros
- Exclusão permanente do registro
- Solicitação de confirmação obrigatória antes da remoção
2. Estatísticas e Relatórios
2.1 Resumo Geral
- Total de livros cadastrados
- Distribuição por status (não lido, lendo, lido)
- Distribuição por categoria
- Média de avaliação dos livros lidos
2.2 Análise por Autor
- Contagem de livros por autor
- Ordenação por quantidade (decrescente)
2.3 Análise Temporal
- Agrupamento de livros por década
- Visualização da distribuição temporal da coleção
2.4 Top Livros
- Ranking de livros com melhor avaliação
- Filtro: apenas livros já lidos e avaliados
- Ordenação por avaliação (decrescente)
3. Persistência de Dados
- Armazenamento em formato JSON
- Leitura e escrita de arquivos
- Manutenção do estado entre execuções
Objetivo
Sistema de gerenciamento de biblioteca pessoal em linha de comando (CLI) desenvolvido como exercício prático para treinamento de Ruby. O projeto permite cadastrar livros e autores, realizar buscas por diferentes critérios e gerar estatísticas sobre a coleção.
Propósito Didático
Aplicar conceitos fundamentais de Ruby:
- Procs, Lambdas e Métodos: Implementação de filtros customizáveis e callbacks
- Orientação a Objetos: Classes, herança, composição e encapsulamento
- Gems: Utilização de bibliotecas externas para interface e formatação
- Interação com Arquivos: Persistência de dados em formato JSON
Funcionalidades Principais
- Cadastro completo de livros com informações detalhadas
- Sistema de busca e filtragem avançada
- Controle de status de leitura e avaliações
- Geração de estatísticas e relatórios
- Persistência de dados
Especificações
1. Gestão de Livros
1.1 Cadastro de Livros
Campos obrigatórios:
- Título
- Autor
Campos opcionais:
- Ano de publicação
- ISBN
- Categoria/Gênero
- Observações
Campos com valores predefinidos:
- Status de leitura: "Não lido" (padrão), "Lendo", "Lido"
- Avaliação: 1 a 5 estrelas (opcional, apenas para livros lidos)
1.2 Listagem de Livros
- Exibição em formato tabular
- Informações básicas visíveis
- Indicação visual do status de leitura
- Suporte para listagem completa da biblioteca
1.3 Sistema de Busca
Filtros simples disponíveis:
- Título (busca parcial/substring)
- Autor (busca parcial/substring)
- Ano de publicação (exato)
- Categoria (exato)
- Status de leitura (exato)
- Avaliação (exato ou por faixa)
Filtros avançados:
- Combinação de múltiplos critérios usando lambdas
- Exemplos de uso:
- "Livros de ficção científica não lidos"
- "Livros com 5 estrelas do autor X"
- Criação de filtros customizados via procs/lambdas
1.4 Edição de Livros
- Permitir alteração de qualquer campo
- Atualização de status de leitura
- Modificação de avaliação
- Edição de observações
1.5 Remoção de Livros
- Exclusão permanente do registro
- Solicitação de confirmação obrigatória antes da remoção
2. Estatísticas e Relatórios
2.1 Resumo Geral
- Total de livros cadastrados
- Distribuição por status (não lido, lendo, lido)
- Distribuição por categoria
- Média de avaliação dos livros lidos
2.2 Análise por Autor
- Contagem de livros por autor
- Ordenação por quantidade (decrescente)
2.3 Análise Temporal
- Agrupamento de livros por década
- Visualização da distribuição temporal da coleção
2.4 Top Livros
- Ranking de livros com melhor avaliação
- Filtro: apenas livros já lidos e avaliados
- Ordenação por avaliação (decrescente)
3. Persistência de Dados
- Armazenamento em formato JSON
- Leitura e escrita de arquivos
- Manutenção do estado entre execuções
Tarefas
Use este checklist para ajudar a organizar a sua entrega