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.
O desenvolvimento foi realizado em Pair Programming por:
Escrever um programa para criar as seguintes estruturas que simularão arquivos sequenciais para uma aplicação de Biblioteca:
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ção1. [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.
📁 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 CMakeEste 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 noCMakeLists.txtou nas configurações da IDE para garantir a compatibilidade em sistemas Windows ou Linux.
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.
