Prévia do material em texto
PROJETO INTEGRADO GABARITO ARQUITETURA DE DADOS PROJETO INTEGRADO PROJETO INTEGRADO Prezado aluno, Seja bem-vindo a este semestre! A proposta de Projeto Integrado é possibilitar a aprendizagem interdisciplinar dos conteúdos desenvolvidos nas disciplinas desse semestre. ORIENTAÇÕES DO PROJETO INTEGRADO 1. O trabalho será realizado individualmente. 2. Importante: Você deverá postar o trabalho finalizado no AVA, o que deverá ser feito na pasta específica da disciplina Projeto Integrado obedecendo ao prazo limite de postagem, conforme disposto no AVA. Não existe prorrogação para a postagem da atividade. 3. Deve conter, depois de pronto, capa e folha de rosto padrão da Instituição, sendo organizado no que tange à sua apresentação visual (tipos e tamanhos de fontes, alinhamento do texto, espaçamentos, adentramento de parágrafos, apresentação correta de citações e referências, entre outros elementos importantes), conforme modelo disponível no AVA. 4. A produção textual é um trabalho original e, portanto, não poderá haver trabalhos idênticos aos de outros alunos ou com reprodução de materiais extraídos da internet. Os trabalhos plagiados serão invalidados, sendo os alunos reprovados na atividade. Lembre-se de que a prática do plágio constitui crime, com pena prevista em lei (Lei n.º 9.610), e deve ser evitada no âmbito acadêmico. 5. Importante: O trabalho deve ser enviado em formato Word. Não serão aceitos, sob nenhuma hipótese, trabalhos enviados em PDF. A seguir, apresentamos a você alguns dos critérios avaliativos que nortearão a análise do Tutor a Distância para atribuir o conceito à produção textual: • Normalização correta do trabalho, com atendimento ao número de páginas solicitadas. • Apresentação de estrutura condizente com a proposta apresentada (com introdução, desenvolvimento e conclusão). • Uso de linguagem acadêmica adequada, com clareza e correção, atendendo à norma padrão. • Atendimento à proposta, contemplando todos os itens solicitados, com objetividade, criatividade, originalidade e autenticidade. • Fundamentação teórica do trabalho, com as devidas referências dos autores eventualmente citados. Lembre-se de que seu Tutor a Distância está à disposição para lhe atender em suas dúvidas e, também, para repassar orientações sempre que você precisar. Aproveite esta oportunidade para realizar um trabalho com a qualidade acadêmica de nível universitário. http://www.planalto.gov.br/ccivil_03/leis/L9610.htm PROJETO INTEGRADO 2. Leitura proposta Para atingir os objetivos deste projeto integrado, você deverá seguir as instruções voltadas à elaboração do trabalho disponibilizadas ao longo do semestre, sob a orientação do Tutor a Distância. ATIVIDADES Olá! Você é um programador recém-formado e um usuário assíduo da biblioteca do seu bairro. Sendo assim, pensou em uma forma de digitalizar todo o sistema e ajudar a biblioteca a crescer e se organizar melhor! Portanto, após muitas conversas com os responsáveis pela biblioteca e todo o levantamento de requisitos necessários para iniciar o seu projeto, sua tarefa é: Desenvolver um sistema de gerenciamento de biblioteca que permita a catalogação, empréstimo e devolução de livros. Este sistema deve atender aos seguintes requisitos: • Cadastro de Livros: Permitir o cadastro de livros no sistema, incluindo informações como título, autor, ano de publicação, e número de cópias disponíveis. • Cadastro de Usuários: Possibilitar o cadastro de usuários da biblioteca, incluindo informações como nome, número de identificação, e contato. • Empréstimo de Livros: Permitir que um usuário solicite o empréstimo de um livro disponível na biblioteca. o Verificar a disponibilidade do livro antes de confirmar o empréstimo. o Atualizar o número de cópias disponíveis após o empréstimo. • Devolução de Livros: Permitir que um usuário devolva um livro previamente emprestado. o Atualizar o número de cópias disponíveis após a devolução. • Consulta de Livros: o Implementar uma funcionalidade que permita a consulta de livros por título, autor ou ano de publicação. • Relatórios: Gerar relatórios que exibam a lista de livros disponíveis, livros emprestados, usuários cadastrados, etc. Instruções: PROJETO INTEGRADO • Implementar as funcionalidades utilizando os princípios de programação orientada a objetos (POO) (quando aplicável). • Utilize Python como linguagem de programação. • Garantir tratamento de erros e exceções, como livros não encontrados, tentativas de empréstimo de livros indisponíveis etc. • Criar uma interface de usuário simples, como um menu de console, para interação com o sistema. • O código deve estar organizado e comentado. • Utilize boas práticas de programação. • Considere a modularização do código para facilitar a manutenção e futuras expansões do sistema. • Teste exaustivamente as funcionalidades do sistema para garantir seu correto funcionamento. GABARITO: Prezado(a) Tutor(a), O código abaixo apresenta uma sugestão de implementação de acordo com os requisitos da atividade. Para auxiliá-lo(a), segue um checklist com os componentes que deve observar na implementação do código pelo aluno: • Desenvolveu utilizando Classes. • Utilizou funções de “input” e funções “print”, isto é, funções de inclusão de valores e funções que exibem o resultado (Métodos de acesso Getters e Setters). • Criou um menu no console para escolha das funcionalidades. • Utilizou estruturas lógicas, condicionais e de repetição (if, else, for, etc). • Implementou as funcionalidades para empréstimo, devolução, consulta e relatório. Código de exemplo: class Livro: def __init__(self, titulo, autor, ano, copias_disponiveis): self.titulo = titulo self.autor = autor self.ano = ano PROJETO INTEGRADO self.copias_disponiveis = copias_disponiveis class Usuario: def __init__(self, nome, identificacao, contato): self.nome = nome self.identificacao = identificacao self.contato = contato class Biblioteca: def __init__(self): self.livros = [] self.usuarios = [] def cadastrar_livro(self, livro): self.livros.append(livro) def cadastrar_usuario(self, usuario): self.usuarios.append(usuario) def emprestar_livro(self, livro, usuario): if livro in self.livros and livro.copias_disponiveis > 0: livro.copias_disponiveis -= 1 print(f"{livro.titulo} emprestado para {usuario.nome}.") else: print("Livro não disponível para empréstimo.") def devolver_livro(self, livro, usuario): if livro in self.livros: livro.copias_disponiveis += 1 print(f"{livro.titulo} devolvido por {usuario.nome}.") else: print("Livro não encontrado.") PROJETO INTEGRADO def consultar_livros(self, parametro, valor): if parametro == "titulo": return [livro for livro in self.livros if livro.titulo.lower() == valor.lower()] elif parametro == "autor": return [livro for livro in self.livros if livro.autor.lower() == valor.lower()] elif parametro == "ano": return [livro for livro in self.livros if livro.ano == int(valor)] else: return [] def gerar_relatorio(self): print("\n--- Relatório ---") print("Livros Disponíveis:") for livro in self.livros: print(f"{livro.titulo} - {livro.copias_disponiveis} cópias disponíveis") print("\nLivros Emprestados:") for livro in self.livros: emprestados = livro.copias_disponiveis - livro.copias_disponiveis print(f"{livro.titulo}- {emprestados} cópias emprestadas") print("\nUsuários Cadastrados:") for usuario in self.usuarios: print(f"{usuario.nome} - ID: {usuario.identificacao}") # Função principal para interação com o usuário def menu(): biblioteca = Biblioteca() while True: print("\n--- Menu ---") PROJETO INTEGRADO print("1. Cadastrar Livro") print("2. Cadastrar Usuário") print("3. Emprestar Livro") print("4. Devolver Livro") print("5. Consultar Livros") print("6. Gerar Relatório") print("0. Sair") escolha = input("Escolha uma opção: ") if escolha == "1": titulo = input("Título do livro: ") autor = input("Autor do livro: ") ano = int(input("Ano de publicação: ")) copias = int(input("Número de cópias disponíveis: ")) livro = Livro(titulo, autor, ano, copias) biblioteca.cadastrar_livro(livro) elif escolha == "2": nome = input("Nome do usuário: ") identificacao = input("Número de identificação: ") contato = input("Contato do usuário: ") usuario = Usuario(nome, identificacao, contato) biblioteca.cadastrar_usuario(usuario) elif escolha == "3": titulo_emprestimo = input("Título do livro para empréstimo: ") usuario_emprestimo = input("Nome do usuário que está pegando emprestado: ") livro_emprestimo = biblioteca.consultar_livros("titulo", titulo_emprestimo) usuario_emprestimo = [usuario for usuario in biblioteca.usuarios if usuario.nome.lower() == usuario_emprestimo.lower()] PROJETO INTEGRADO if livro_emprestimo and usuario_emprestimo: biblioteca.emprestar_livro(livro_emprestimo[0], usuario_emprestimo[0]) else: print("Livro ou usuário não encontrado.") elif escolha == "4": titulo_devolucao = input("Título do livro para devolução: ") usuario_devolucao = input("Nome do usuário que está devolvendo: ") livro_devolucao = biblioteca.consultar_livros("titulo", titulo_devolucao) usuario_devolucao = [usuario for usuario in biblioteca.usuarios if usuario.nome.lower() == usuario_devolucao.lower()] if livro_devolucao and usuario_devolucao: biblioteca.devolver_livro(livro_devolucao[0], usuario_devolucao[0]) else: print("Livro ou usuário não encontrado.") elif escolha == "5": parametro_consulta = input("Parâmetro de consulta (titulo, autor, ano): ") valor_consulta = input("Valor da consulta: ") resultados = biblioteca.consultar_livros(parametro_consulta, valor_consulta) print("\nResultados da Consulta:") for livro in resultados: print(f"{livro.titulo} - {livro.autor}") elif escolha == "6": biblioteca.gerar_relatorio() elif escolha == "0": print("Saindo do programa.") break PROJETO INTEGRADO else: print("Opção inválida. Tente novamente.") if __name__ == "__main__": menu() Bons estudos!!! Docentes do curso