Skip to content

thiagoausechi/biblioteca-digital-aed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 Biblioteca Digital

Este repositório contém o projeto desenvolvido para a disciplina Algoritmos e Estruturas de Dados II do curso de Bacharelado em Ciência da Computação, ministrada pelo professor Luiz Ricardo Begosso.

👥 Autores

O desenvolvimento foi realizado em Pair Programming por:

📋 Requisitos do Trabalho

Escrever um programa para criar as seguintes estruturas que simularão arquivos sequenciais para uma aplicação de Biblioteca:

Estruturas (arquivos/tabelas)

1. [x] Cidades:     código (PK), descrição, UF
2. [x] Pessoas:     codigo (PK), nome, CPF, endereço, codigo_cidade (FK)
3. [x] Editoras:    codigo (PK), nome, codigo_cidade (FK)
4. [x] Autores:     codigo (PK), nome
5. [x] Gêneros:     codigo (PK), descrição
6. [x] Livros:      codigo (PK), nome, codigo_editora (FK), codigo_autor (FK), codigo_genero (FK), disponível_s_n
7. [x] Empréstimos: codigo (PK), codigo_pessoa (FK), codigo_livro (FK), data_empréstimo, data_prevista_devolução, data_efetiva_devolução

Requisitos

1. [x] Escreva funções específicas para a leitura dos dados das estruturas.
2. [x] Escreva uma função para permitir a inclusão de novos registros na tabela de pessoas.
   1. [x] Quando o usuário digitar o CPF, o programa deverá realizar a validação do CPF.
   2. [x] Quando o usuário digitar o código da cidade, o programa deverá buscar este código na tabela de cidades e exibir a descrição e UF da cidade.

3. [x] Escreva uma função para permitir a inclusão de novos registros na tabela de livros.
   1. [x] Quando o usuário digitar o código da editora, o programa deverá buscar este código na tabela de editoras e exibir o nome da editora.
   2. [x] Quando o usuário digitar o código do autor, o programa deverá buscar este código na tabela de autores e exibir o nome do autor.
   3. [x] Quando o usuário digitar o código do gênero, o programa deverá buscar este código na tabela de gêneros e exibir a descrição.

4. [x] Escreva uma função para permitir que uma pessoa realize o empréstimo de um livro, cujas informações serão gravadas na tabela Empréstimos.
   1. [x] O código do empréstimo (PK) deverá ser gerado automaticamente e sequencialmente a partir do último registro cadastrado.
   2. [x] O usuário deverá informar o código da pessoa que está emprestando o livro e o programa deverá buscar este código na tabela de pessoas e exibir o nome da pessoa e o nome da sua cidade.
   3. [x] O usuário deverá informar o código do livro a ser emprestado e o programa deverá buscar este código na tabela de livros e exibir o nome do livro.
   4. [x] O programa deverá exibir o nome da editora e o nome do autor do livro.
   5. [x] O programa deverá verificar na tabela de livros se o livro está disponível para empréstimo (disponivel_s_n = "S").
      1. [x] SE o livro estiver disponível para empréstimo, o programa deverá:
         1. [x] Gravar a data_empréstimo como a data do dia atual.
         2. [x] Gravar a data_prevista_devolução como sendo a data atual mais sete dias.
         3. [x] Gravar a informação da tabela de Livros disponivel_s_n = "N"
   6. [x] Se o livro não estiver disponível para empréstimo, então uma mensagem deverá ser mostrado ao usuário e o empréstimo não será realizado.

5. [x] Escreva uma função para permitir que uma pessoa realize a devolução de um livro.
   1. [x] O usuário deverá informar o código do empréstimo do livro a ser devolvido e o programa deverá buscar este código na tabela de Empréstimos e exibir:
      1. [x] O nome da pessoa e o nome do livro.
      2. [x] O nome da editora e o nome do autor do livro.
      3. [x] A data do empréstimo e a data da efetiva devolução (que deverá ser a data do dia atual).
   2. [x] Se a data da efetiva devolução estiver em branco, então o livro ainda não foi devolvido e poderá ser devolvido neste momento.
      1. [x] Para confirmar a devolução, o programa deverá atualizar a data da efetiva devolução com a data atual e atualizar o atributo da tabela de Livros disponivel_s_n = "S".

6. [x] Escreva uma função para mostrar todos os livros que estejam emprestados, verificando a tabela de Livros: disponível_s_n = "N".
   1. [x] O programa deverá exibir: código do livro, nome do livro.
   2. [x] Ao final dessa função, mostrar a quantidade de livros emprestados e a quantidade de livros disponíveis para empréstimo.

7. [x] Escreva uma função para mostrar os dados dos livros e das pessoas que estejam com a devolução em atraso (data_prevista_devolução < data atual).
   1. [x] O programa deverá exibir: código do livro, nome do livro, nome da editora, nome do autor, data prevista da devolução, quantidade de dias em atraso.

8. [x] Todas as funções descritas acima deverão ser chamadas através de um menu de opções que será chamado a partir da função main().

Obs: não utilizar variáveis globais.

📝 Nota: Os itens dos requisitos podem ser localizados no código por meio da busca por "Requisito x.x.x" (ex.: Requisito 4.5.1.2), utilizando a concatenação dos identificadores dos itens aninhados.

📁 Estrutura do Projeto

Estrutura de Diretórios

📁 biblioteca-digital-aed/
├── 📁 include/        # Arquivos de cabeçalho (.h / .hpp)
├── 📁 src/            # Implementação do projeto (.cpp)
├── 📁 data/           # Arquivos/banco de dados
└── 📄 CMakeLists.txt  # Configuração do CMake

Diagrama de Relacionamentos

Diagrama de Relacionamentos

💻 Ambiente de Desenvolvimento e Execução

Este projeto foi desenvolvido em C++ utilizando a IDE CLion da JetBrains, que oferece integração nativa com CMake. A execução do projeto pode ser feita diretamente pela própria IDE, sem necessidade de executar comandos manuais de build.

⚠️ Atenção: Como o projeto foi criado e testado em um ambiente macOS, pode ser necessário ajustar configurações específicas no CMakeLists.txt ou nas configurações da IDE para garantir a compatibilidade em sistemas Windows ou Linux.

📄 Licença

Este projeto é parte de uma atividade acadêmica e não possui fins comerciais. Uso exclusivo para fins educacionais na FEMA - Fundação Educacional do Município de Assis.

About

Projeto Acadêmico - Software de gestão para bibliotecas com gerenciamento de empréstimos de livros

Topics

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages