Skip to content

Uma aplicação que gerencia o aluguel de veículos, aplicando os conceitos SOLID.

License

Notifications You must be signed in to change notification settings

elissatavares/LocateCar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

banner-locatecar

 

GitHub Repo size GitHub issues Build with Maven Java Version Open Source

LOCATECAR - JAVA APP ☕

O projeto LocateCar é uma aplicação em Java desenvolvida como parte de um sistema de gerenciamento de uma locadora de veículos. A aplicação tem como objetivo principal facilitar o processo de locação de veículos, proporcionando uma experiência rápida e conveniente para clientes e funcionários da locadora.

Indice

Introdução ☕

Ao longo do módulo de Programação Orientada o Objetos II, nos aprofundamos nos conceitos e aplicações de Interfaces, Generics e SOLID em Java. Aqui você vai encontrar a resolução do projeto final, onde desenvolvemos um sistema utilizando os novos conhecimentos adquiridos.

Conceitos do módulo ☕

Dentre os conceitos estudados: Generics, Interfaces, Collectins, Comparable, e SOLID, o que tivemos mais facilidade de aplicar no projeto foram Generics e Interfaces. A medida que o projeto crescia aumentava a complexidade e sentimos dificuldades em aplicar o Open/Closed Principle (Princípio Aberto/Fechado).

Arquitetura de Pastas do projeto ☕

locatecar-drawio-white

Figura: Organização de pastas do projeto na data de 17/03/24

A metodologia ☕

Screencastfrom17-03-2024193026-ezgif-com-added-text

Figura: Quadro de tarefas do projeto

Foi utilizada uma abordagem de resolução de problemas e desenvolvimento de software.

Algumas etapas do desenvolvimento foram:

1. Entendimento do problema: Procuramos entender os requisitos do negócio e os objetivos a serem alcançados.

2. Planejamento: Dividimos o problema em partes menores e mais gerenciáveis. Isso ajudou a abordar cada etapa de forma mais eficaz.

3. Escolha da metodologia de desenvolvimento: Metodologias ágeis, usamos um quadro Kanban do Github projects, para lidar com organização e autogerenciamento.

4. Implementação e Desenvolvimento: A escolha das ferramentas adequadas para implementar a solução foi a mesma utilizada nos módulos anteriores: IntelliJ, Maven e Java 21. Além disso, decidimos incluir mais um desafio como parte deste projeto para nosso aprendizados e experiência, que foi fazer implementações do Java Swing para criar um experiência mais agradável ao usuário.

5. Documentação: A documentação consiste na escrita deste README mantendo registros detalhados do processo de desenvolvimento, incluindo decisões, problemas encontrados e soluções implementadas e também este docuemento no Notion utilizado durante as reuniões de planning.

6. Comunicação: Fizemos dailys e reuniões regulares para assegurar que a solução proposta atendesse às expectativas do negócio.

🧰 Ferramentas úteis:

  • Controle de versão: Git. Também utilizamos Gitflow durante o desenvolvimento.
  • Ambientes de Desenvolvimento Integrado -(IDEs): Visual Studio Code e IntelliJ.
  • Plataformas de Gerenciamento de Projetos: - Github Projects.
  • outros: Miro, Draw.io.

(Voltar ao topo)

Demonstração da Aplicação ☕

Screencastfrom18-03-2024000338-ezgif-com-video-to-gif-converter

Figura: Demonstração da aplicação

Fluxo para alocar veículo ☕

Screencastfrom18-03-2024000338-ezgif-com-video-to-gif-converter-1

Figura: Fluxo para realizar uma locação

Ações ☕

Clientes

Ação Descrição Requer
Criar um novo cliente por tipo de id CREATE CNPJ ou CPF
Listar cliente por identificação READ CNPJ ou CPF
Atualizar as informações de um cliente UPDATE CNPJ eou CPF
Deletar o cliente por identificação DELETE CNPJ ou CPF

Veículos

Ação Descrição Requer Tipo de Veículo
Criar um novo veículo CREATE PEQUENO, MÉDIO E SUV
Listar todos os veículos READ PEQUENO, MÉDIO E SUV
Atualizar as informações de um veículo UPDATE PEQUENO, MÉDIO E SUV
Deletar um veículo DELETE PEQUENO, MÉDIO E SUV

Locação

Ação Descrição Requer
Criar uma nova locação CREATE CNPJ/CPF e PLACA
Listar uma locação READ CNPJ ou CPF e PLACA
Deletar uma locação DELETE CNPJ ou CPF e PLACA

(Voltar ao topo)

Regras de negócios

Regra de negócio Descrição
RN1: Os veículos não podem ser repetidos; Pode utilizar a placa como identificador de unicidade;
RN2: Tipos de veículos que serão considerados: PEQUENO, MEDIO e SUV;
RN3: Os aluguéis e devoluções terão o local, data e horário;
RN4: Considere aluguel em horas quebradas como uma diária completa. Exemplo: uma devolução de um veículo alugado no dia 25 de janeiro às 15h30 será cobrado uma (1) diária até dia 26 de janeiro às 15h30, a partir desse horário já serão cobradas duas (2) diárias e assim por diante.
RN5: Os veículos que estiverem alugados não poderão estar disponíveis;
RN6: Clientes não podem estar duplicados; Considerar CPF (Pessoa Física) e CNPJ (Pessoa Jurídica) como identificadores de unicidade;
RN7.1: Devolução: Caso o cliente pessoa física tenha ficado com o carro mais que 5 diárias terá direito a 5% de desconto.
RN7.2: Caso o cliente pessoa jurídica tenha ficado com o carro mais que 3 diárias terá direito a 10% de desconto.

Ações a Fazer ☕

  • O sistema deverá iniciar com um Administrador primordial (Adão).

Cliente pessoa física e jurídica

  • : Cadastrar cliente
  • : Listar cliente por identificador
  • : Atualização dados do cliente
  • : O Usuário não poderá cadastrar o cpf ou cnpj caso já estejam cadastrados.
  • : O Usuário poderá alterar email, senha, endereço, telefone, porém não o cpf ou cnpj.

Veículo

  • : Cadastrar um veículo por tipo
  • : Listar veículos por disponibilidade
  • : Listar veículo por atributo
  • : Atualizar dados de um veículo
  • : Deletar um veículo

Locação

  • : Cadastrar uma locação
  • : Listar locação por identificador de cliente e veículo
  • : Deletar uma locação
  • : Atualizar disponibilide de veículo devolvido

(Voltar ao topo)

Frontend: Java Swing ☕

Como já mencionado, utilizamos o Java Swing, que é uma biblioteca de componentes de interface gráfica (GUI) para Java. Utilizamos alguns componentes e fizemos alguns personalizados. Foi interessante ver a flexibilidade e o comportamento dos componentes Swing.

Telas

Algumas telas desenvolvidas:

Screencastfrom18-03-2024000338-ezgif-com-video-to-gif-converter-1

Pastas

Por padrão, estamos usando a pasta frontend para armazenar e manipularmos as interfaces e implementações referentes ao frontend.

💻 Ajustes e melhorias

O projeto ainda está em desenvolvimento e as próximas atualizações serão voltadas nas seguintes tarefas:

  • : Adicionar camada de segurança
  • : Buscar veículo por parte do nome
  • : Paginação de clientes
  • : Paginação de veículos
  • : Paginação de alocação
  • : Exportar arquivo
  • : Histórico de locações

🤝 Colaboradores


Fernanda Costa


Maria Elissa

😄 Seja um dos contribuidores!

Quer fazer parte desse projeto? Para contribuir, siga estas etapas:

  1. Bifurque este repositório.
  2. Crie um branch: git checkout -b <nome_branch>.
  3. Faça suas alterações e confirme-as: git commit -m '<mensagem_commit>'
  4. Envie para o branch original: git push origin <nome_do_projeto> / <local_>
  5. Crie a solicitação de pull.

Como alternativa, consulte a documentação do GitHub em como criar uma solicitação pull. Clique AQUI e leia como contribuir.

📝 Licença

Esse projeto está sob licença. Veja o arquivo LICENÇA para mais detalhes.

(Voltar ao topo)


Copyright © 2024 | LocateCar by Fernanda Costa e Maria Elissa

About

Uma aplicação que gerencia o aluguel de veículos, aplicando os conceitos SOLID.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages