Este projeto foi desenvolvido para a disciplina de Linguagem de Programação II, como meio de avaliar os conhecimentos adquiridos pelo aluno ao longo da disciplina.
Esta etapa consiste de entrega final do projeto, na qual foi aperfeiçoado o programa, implementados todos os pré-requisitos da avaliação e desenvolvida uma interface gráfica para o mesmo.
Os requisitos da avaliação (3ª Unidade) eram desenvolver uma aplicação em JAVA na qual fosse possível aplicar os conceitos abaixo:
- Classes e Objetos;
- Herança;
- Classes Abstratas;
- Interfaces;
- Composição;
- Polimorfismo;
- Tratamento de Exceção;
- Coleções;
- Interface Gráfica
Para nosso projeto, criamos um sistema de informações para concessionárias de automóveis, no qual será possível administrar os departamentos de:
-
Recursos Humanos;
-
Clientes;
-
Estoques;
-
Abastecimento e Vendas.
Tais departamentos serão dispostos em forma de menus para o usuário do sistema, em que cada menu possuirá sub-menus para realizar operações específicas para cada área, como cadastrar clientes, cadastrar funcionários, abastecer estoque, realizar vendas, entre outras.
Para compilar o programa Java na linha de comando, siga as etapas abaixo:
-
Certifique-se de ter o Java Development Kit (JDK) instalado no seu sistema. Você pode verificar isso digitando
java -version
no prompt de comando. Se o JDK estiver instalado corretamente, você verá a versão do Java sendo exibida. Certifique-se também que o make está instalado no seu sistema. Você pode verificar isso digitandomake -v
no prompt de comando. Se o make estiver instalado corretamente, você verá a versão do make sendo exibida. Caso o JDK ou o make não estejam instalados, você pode instalá-los através dos links abaixo: -
Baixe os arquivos deste repositório para uma pasta local de sua preferência.
-
Abra um prompt de comando ou terminal no seu sistema operacional.
-
Navegue até o diretório raiz do projeto, onde se encontra o arquivo Makefile, e execute o seguinte comando:
make all
O comando acima irá compilar os arquivos .java e gerar os arquivos .class. OBS: Caso o comando acima não funcione, tente executar o seguinte comando:javac -d bin -cp "lib/*" src/*.java
Após isto, se tudo correr bem, seu programa estará compilado e pronto para execução.
Os arquivos serão compilados na estrutura padrão de diretórios de um projeto Java:
Para executar o programa, a partir do diretório raiz do projeto LP2-Trabalho-U3_V2-GUI/
digite no terminal:
-
do WINDOWS:
make run
-
do LINUX:
make runlinux
OBS: Caso o comando acima não funcione, tente executar o seguinte comando:
-
no Windows:
java -cp "bin;lib/*" AppGUI
-
no Linux:
java -cp "bin:lib/*" AppGUI
O seguinte menu será exibido:
A partir do menu acima, o usuário iniciará sua jornada pelo SYSCAR - Sistema de Informações para Concessionárias de Automóveis. Aqui temos informações relativas à Loja e os botões dos menus que o usuário poderá acessar.
Ao inicializar o programa, um arquivo JSON com os dados da loja, preenchidos em um acesso anterior, será carregado. Os dados nele contidos serão utilizados para instanciar um objeto Loja, que será utilizado para gerenciar os departamentos da loja. Caso o arquivo JSON não exista, um novo objeto Loja será instanciado de forma genérica e o programa continuará normalmente.
Ao sair do sistema, o objeto Loja será convertido para formato JSON e salvo em um arquivo, para que os dados sejam preservados para acessos futuros.
Ao clicar no botão Nova Loja
, o usuário poderá "setar" uma nova instância de Loja, apagando todos os dados correntes e inicializando um novo projeto.
Ao entrar em recursos humanos, o usuário terá acesso às seguintes operações:
Aqui o usuário poderá:
-
Cadastrar Funcionário: As informações do funcionário serão passadas pelo usuário ao programa e, em seguida, serão colocadas em um objeto funcionário, para então serem inseridas em uma lista no objeto loja.
-
Demitir Funcionário: A instância de funcionário cuja matrícula for fornecida pelo usuário será excluído da lista funcionários em loja.
-
Consultar Funcionário: A instância de funcionário cuja matrícula for fornecida pelo usuário será exibida na tela. Caso não exista um funcionário com a matrícula fornecida, o programa exibirá uma mensagem de erro.
-
Listar Funcionários: Todos os funcionários cadastrados serão exibidos na tela. Caso não exista nenhum funcionário cadastrado, o programa exibirá uma mensagem de erro.
Ao entrar em clientes, o usuário terá acesso às seguintes operações:
-
Cadastrar Cliente: Aqui, o sistema irá solicitar ao usuário a matrícula do funcionário que está cadastrando o cliente, para que seja possível realizar a operação. O programa irá verificar a lista de funcionários da loja e, caso a matrícula fornecida não exista, o programa exibirá uma mensagem de erro. Caso a matrícula exista, o programa irá solicitar as informações do cliente e, em seguida, irá colocá-las em um objeto cliente, para então serem inseridas em uma lista no objeto loja.
-
Consultar Cliente: A instância de cliente cujo cadastro for fornecido pelo usuário será exibida na tela. Caso não exista um cliente com o CPF fornecido, o programa exibirá uma mensagem de erro.
-
Listar Clientes: Todos os clientes cadastrados serão exibidos na tela. Caso não exista nenhum cliente cadastrado, o programa exibirá uma mensagem de erro.
-
Listar Clientes VIP: Todos os clientes cadastrados que possuírem 1 ou mais automóveis serão exibidos na tela. Caso não exista nenhum cliente cadastrado, o programa exibirá uma mensagem de alerta.
Ao entrar em abastecimento e vendas, o usuário terá acesso às seguintes operações:
-
Abastecer Estoque: O usuário poderá abastecer o estoque da loja com novos automóveis. As informações do automóvel serão passadas pelo usuário ao programa e, em seguida, serão colocadas em um objeto carro, para então serem inseridas em uma lista no objeto loja.
-
Vender Automóvel: O usuário poderá vender um automóvel para um cliente. O programa irá solicitar a matrícula do cliente e o chassi do automóvel. Caso o cliente não exista, o programa exibirá uma mensagem de erro. Caso o automóvel não exista, o programa exibirá uma mensagem de erro. Por fim, o programa irá exibir uma mensagem de sucesso e o automóvel será removido da lista de automóveis da loja e adicionado à lista de automóveis do cliente.
-
Comprar Carro (do Cliente): O usuário poderá comprar um automóvel de um cliente. O programa irá solicitar a matrícula do cliente e o chassi do automóvel. Caso o cliente não exista, o programa exibirá uma mensagem de alerta. Caso o automóvel não exista, o programa exibirá uma mensagem de alerta. Por fim, o programa irá exibir uma mensagem de sucesso e o automóvel será removido da lista de automóveis do cliente e adicionado à lista de automóveis da loja.
Ao entrar em estoque, o usuário terá acesso às seguintes operações:
-
Consultar Automóvel: O usuário poderá consultar um automóvel pelo seu modelo. Caso o automóvel não exista, o programa exibirá uma mensagem de erro. Caso o automóvel exista, o programa exibirá as informações do automóvel.
-
Listar Automóveis: Todos os automóveis cadastrados serão exibidos na tela. Caso não exista nenhum automóvel cadastrado, o programa exibirá uma mensagem de erro.
-
Zerar Estoque: Todos os automóveis cadastrados serão removidos da lista de automóveis da loja. Caso não exista nenhum automóvel cadastrado, o programa exibirá uma mensagem de alerta.
O projeto possui a seguinte estrutura de classes:
-
Pessoa: Pessoa é uma classe abstrata com atributos e métodos genéricos de uma pessoa física;
-
Cliente, Funcionários: são classes herdeiras de Pessoa, com especializações próprias. Cliente possui uma coleção do tipo List<> para armazenar seus automóveis. Já funcionário, além de seus atributos especializados, possui também métodos próprios para fazer transações ordinárias da loja;
-
Carro: classe que será utilizada para instanciar os automóveis da loja e dos clientes.;
-
Loja: classe que possui os atributos e métodos necessários para gerenciar os departamentos da loja. Aqui se encontram as coleções de funcionários, clientes e automóveis da loja;
-
AppGUI: Classe que contem o main, no qual será executado o programa.
Maps foi implementado na criação da coleção ClientesVIP, que contém todos os clientes da loja que possuam pelo menos um carro comprado. A indexação dos clientes foi feita o número de CPF, que é único para cada pessoa. Veja trechos deste código abaixo:
A implementação da interface gráfica foi feita utilizando a biblioteca Swing. Veja trechos do código abaixo:
Para desenvolver o sistema foi utilizada a linguagem de programação Java e o editor de código VS Code.
Para compilar o programa, foi utilizado o compilador javac e o make.
Para realizar as conversões de arquivo JSON-Objeto e Objeto-JSON, foi utilizada a biblioteca GSON.
Para desenvolver a interface gráfica, foi utilizada a biblioteca Swing.
O projeto foi desenvolvido com sucesso, atendendo aos requisitos da avaliação. O sistema possui uma interface gráfica simples e intuitiva, que permite ao usuário navegar facilmente entre os menus e realizar as operações desejadas.