Este é um sistema de gerenciamento de livraria que permite o cadastro de livros impressos e eletrônicos, realização de vendas, listagem de livros e vendas, além de registrar o estoque, preço e frete dos livros.
- Beatriz Azevedo: Classe Livro
- Filipe Sobreira: Classe Vendas
- Heloisa Felizardo Campos: Classes Impresso e Eletronico
- Vinicius Leão : Classe LivraviaVirtual
- Vitor Hugo: Classe LivrariaVirtual
- Lucas Cardeal: Classe LivrariaVirtual
- Cadastro de livros (Impressos e Eletrônicos)
- Realização de vendas de livros
- Listagem de livros disponíveis
- Listagem das vendas realizadas
- Java 20
- MySQL
- Clone este repositório para o seu sistema local:
- Navegue até o diretório do projeto:
- Compile e execute o projeto:
Este projeto consiste em implementar um sistema de gerenciamento de uma livraria virtual, explorando os conceitos de composição, herança e polimorfismo. O sistema deve seguir o diagrama de classes UML mostrado abaixo, onde os construtores e os métodos de acesso (getters e setters) foram omitidos:
O sistema deverá ser baseado em um menu, com entrada de dados via console, contendo as seguintes opções:
- Cadastrar livro: Esta opção permite ao usuário cadastrar um livro.
- Realizar uma venda: Esta opção permite ao usuário realizar a venda de um ou mais livros.
- Listar livros: O sistema deverá listar todos os livros cadastrados, sejam eles eletrônicos ou impressos.
- Listar vendas: O sistema deverá listar todas as vendas realizadas.
- Sair do programa: Encerra a execução do programa.
A seguir, são descritas as classes do sistema.
A classe abstrata Livro
possui 4 atributos:
titulo
: título do livro;autores
: nome do autor ou dos autores do livro;editora
: nome da editora do livro;preco
: preço do livro.
Os métodos de acesso (getters e setters) e o(s) construtor(es) desta classe e das demais classes foram omitidos e devem ser implementados, mesmo que você não os julgue necessário. O outro método obrigatório da classe Livro
é descrito a seguir:
String toString()
: devolve uma representação textual dos atributos de um livro.
A classe Impresso
representa um livro impresso e possui 2 atributos:
frete
: frete cobrado para entrega do livro;estoque
: número de exemplares do livro em estoque.
A seguir, são descritos os métodos da classe Impresso
:
void atualizarEstoque()
: este método deve subtrair 1 do valor do atributoestoque
;String toString()
: este método devolve uma representação textual de todos os atributos de um livro impresso.
A classe Eletronico
representa um livro eletrônico e possui 1 atributo:
tamanho
: representa o tamanho do arquivo eletrônico do livro em KB.
A seguir, é descrito mais um método obrigatório da classe Eletronico
:
String toString()
: este método devolve uma representação textual de todos os atributos de um livro eletrônico.
A classe Venda
possui 5 atributos:
livros
: um vetor de referências a objetos do tipoLivro
, representando os livros associados a uma venda;numVendas
: atributo estático que representa a quantidade de vendas realizadas. Deve ser incrementado de 1 sempre que uma nova venda for realizada;numero
: representa o número da venda, sendo um valor sequencial com início em 1, que é incrementado a cada venda. Utilize o valor do atributonumVendas
para definir o valor desse atributo;cliente
: nome do cliente que comprou o(s) livro(s);valor
: valor total da venda.
A seguir, são descritos os métodos da classe Venda
:
addLivro(l: Livro, index: int)
: adiciona o livrol
na posiçãoindex
do arraylivros
;listarLivros()
: lista todos os livros da venda.
A classe LivrariaVirtual
possui 9 atributos:
MAX_IMPRESSOS
: constante que representa o número máximo de livros impressos que podem ser cadastrados;MAX_ELETRONICOS
: constante que representa o número máximo de livros eletrônicos que podem ser cadastrados;MAX_VENDAS
: constante que representa o número máximo de vendas que podem ser cadastradas;impressos
: vetor de referências a objetos da classeImpresso
, representando os livros impressos cadastrados;eletronicos
: vetor de referências a objetos da classeEletronico
, representando os livros eletrônicos cadastrados;vendas
: vetor de referências a objetos da classeVenda
, representando as vendas realizadas;numImpressos
: número de livros impressos cadastrados;numEletronicos
: número de livros eletrônicos cadastrados;numVendas
: número de vendas realizadas.
A seguir, são descritos os métodos da classe LivrariaVirtual
:
cadastrarLivro()
: Este método é invocado quando a primeira opção do menu do sistema (Cadastrar livro) for selecionada. O usuário deve informar o tipo de livro que será cadastrado: impresso, eletrônico ou ambos. Depois, o sistema deve solicitar os dados do tipo de livro escolhido (ou de ambos). Se não houver mais espaço no vetor para cadastrar um novo livro, o sistema deve exibir uma mensagem.realizarVenda()
: Este método é invocado quando a segunda opção do menu do sistema (Realizar uma venda) é selecionada. O sistema deve solicitar o nome do cliente e a quantidade de livros que ele deseja comprar. Depois, para cada livro, o sistema deve solicitar seu tipo (impresso ou eletrônico), exibir a lista de livros do tipo escolhido e permitir que o usuário escolha um dos livros dessa lista. Utilize os métodoslistarLivrosImpressos()
elistarLivrosEletronicos()
descritos a seguir.listarLivrosImpressos()
: Exibe no vídeo, no formato de tabela, os dados de todos os livros impressos cadastrados. Utilize o métodotoString()
da classeImpresso
.listarLivrosEletronicos()
: Exibe no vídeo, no formato de tabela, os dados de todos os livros eletrônicos cadastrados. Utilize o métodotoString()
da classeEletronico
.listarLivros()
: Este método é invocado quando a terceira opção do menu do sistema (Listar livros) é selecionada. O método exibe no vídeo os dados de todos os livros impressos e eletrônicos cadastrados. Utilize os métodoslistarLivrosImpressos()
elistarLivrosEletronicos()
.listarVendas()
: Este método é invocado quando a quarta opção do menu do sistema (Listar vendas) é selecionada. O método exibe no vídeo os dados de todas as vendas realizadas.main(args: String[])
: Este método deve instanciar um objeto da classeLivrariaVirtual
, exibir repetidamente o menu de opções e invocar os métodos apropriados a partir da seleção do usuário.
- Os fontes da aplicação devem ser enviados para o GitHub até a data de entrega do projeto;
- Critérios de avaliação: Utilizar banco de dados para inserir os pedidos será um diferencial.
Corretude: 70%
Interface: 20%
Legibilidade: 10%