From 5881db1fa0de0c7611ee3a2a8655b77c0ae811ee Mon Sep 17 00:00:00 2001 From: Larissa Gomes Silva <97994511+larigs@users.noreply.github.com> Date: Mon, 17 Jul 2023 01:01:00 -0300 Subject: [PATCH] =?UTF-8?q?#4=20Implementando=20o=20m=C3=A9todo=20por=20TD?= =?UTF-8?q?D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AluguelCarros/src/Sistema/BancoDados.java | 124 ++++++-- AluguelCarros/src/Sistema/BancoDadosTest.java | 272 ++++++++++++++++++ 2 files changed, 376 insertions(+), 20 deletions(-) create mode 100644 AluguelCarros/src/Sistema/BancoDadosTest.java diff --git a/AluguelCarros/src/Sistema/BancoDados.java b/AluguelCarros/src/Sistema/BancoDados.java index bcb2f35..8cdc669 100644 --- a/AluguelCarros/src/Sistema/BancoDados.java +++ b/AluguelCarros/src/Sistema/BancoDados.java @@ -13,7 +13,7 @@ public class BancoDados { // Valor inteiro para definir o maximo de cadastros - public static int MAX = 1000; + public static int MAX = 6; // Chave para poder cadastrar um Adm public static String CHAVEADM = "X2iU7Ghl0@vbT"; @@ -34,11 +34,11 @@ public class BancoDados { // Caso ele seja um Admin public static boolean Administrador = false; - // Posição do no Array do Usuario/Admin logado + // Posi��o do no Array do Usuario/Admin logado public static int pos; /** - * Cria um array com todas as agencias que o carro está vinculado + * Cria um array com todas as agencias que o carro est� vinculado * * @param car Objeto carro * @return Retorna um array com todas as agencias com o carro vinculado @@ -60,9 +60,9 @@ public static Agencia[] ImprimirAgencias(Carro car) { } /** - * Procura espaço vazio no array de cadastrar usuário + * Procura espa�o vazio no array de cadastrar usu�rio * - * @return Retorna a posição vazia + * @return Retorna a posi��o vazia */ public static int CadastrarUsu() { @@ -74,9 +74,9 @@ public static int CadastrarUsu() { } /** - * Procura espaço vazio no array de cadastrar admin + * Procura espa�o vazio no array de cadastrar admin * - * @return Retorna a posição vazia + * @return Retorna a posi��o vazia */ public static int CadastrarAdmin() { @@ -88,9 +88,9 @@ public static int CadastrarAdmin() { } /** - * Procura espaço vazio no array de cadastrar carro + * Procura espa�o vazio no array de cadastrar carro * - * @return Retorna a posição vazia + * @return Retorna a posi��o vazia */ public static int CadastrarCarro() { @@ -102,9 +102,9 @@ public static int CadastrarCarro() { } /** - * Procura espaço vazio no array de cadastrar classe + * Procura espa�o vazio no array de cadastrar classe * - * @return Retorna a posição vazia + * @return Retorna a posi��o vazia */ public static int CadastrarClasse() { for (int a = 0; a < MAX; a++) @@ -115,9 +115,9 @@ public static int CadastrarClasse() { } /** - * Procura espaço vazio no array de cadastrar agencia + * Procura espa�o vazio no array de cadastrar agencia * - * @return Retorna a posição vazia + * @return Retorna a posi��o vazia */ public static int CadastrarAgencia() { for (int a = 0; a < MAX; a++) @@ -128,9 +128,9 @@ public static int CadastrarAgencia() { } /** - * Procura espaço vazio no array de cadastrar aluguel + * Procura espa�o vazio no array de cadastrar aluguel * - * @return Retorna a posição vazia + * @return Retorna a posicao vazia */ public static int CadastrarAluguel() { @@ -142,9 +142,9 @@ public static int CadastrarAluguel() { } /** - * Procura espaço vazio no array de cadastrar seguro + * Procura espaço vazio no array de cadastrar seguro * - * @return Retorna a posição vazia + * @return Retorna a posicao vazia */ public static int CadastrarSeguro() { @@ -155,6 +155,90 @@ public static int CadastrarSeguro() { return -1; } + public static Carro[] ordenarCarros(String categoria) { + int valor = 0; + int valorCmp = 0; + Carro aux; + + for(int i = cadastrarCarro.length-1; i > 0; i--) { + if(cadastrarCarro[i] == null) continue; + + int[] response = retornaValor(categoria, i, i-1); + + valor = response[0]; + valorCmp = response[1]; + + if(valor < valorCmp) { + aux = cadastrarCarro[i-1]; + cadastrarCarro[i-1] = cadastrarCarro[i]; + cadastrarCarro[i] = aux; + } + } + + for (int i = 2; i <= cadastrarCarro.length-1; i++){ + if(cadastrarCarro[i] == null) continue; + Carro chave; + int j; + + chave = cadastrarCarro[i]; + j = i; + + int[] response = retornaValor(categoria, i, j-1); + + valor = response[0]; + valorCmp = response[1]; + + while (valor < valorCmp){ + if(cadastrarCarro[j] == null) continue; + + cadastrarCarro[j] = cadastrarCarro[j-1]; + j--; + + valorCmp = retornaValor(categoria, 0, j-1)[1]; + + } + cadastrarCarro[j] = chave; + } + + return cadastrarCarro; + } + + private static int[] retornaValor(String categoria, int i, int j) { + int[] retorno = {0, 0}; + switch(categoria) { + case "preco": + retorno[0] = cadastrarCarro[i].getClasse().getValorDia(); + retorno[1] = cadastrarCarro[j].getClasse().getValorDia(); + break; + case "km": + retorno[0] = cadastrarCarro[i].getKm(); + retorno[1] = cadastrarCarro[j].getKm(); + break; + case "assentos": + retorno[0] = cadastrarCarro[i].getAssentos(); + retorno[1] = cadastrarCarro[j].getAssentos(); + break; + case "carga": + retorno[0] = cadastrarCarro[i].getCarga(); + retorno[1] = cadastrarCarro[j].getCarga(); + break; + case "ano": + retorno[0] = cadastrarCarro[i].getAno(); + retorno[1] = cadastrarCarro[j].getAno(); + break; + } + + return retorno; + } + + +// System.out.println("---- " + categoria); +// for(int i = 0; i <= cadastrarCarro.length-1; i++) { +// if(cadastrarCarro[i] == null) continue; +// System.out.println(i + " - " + cadastrarCarro[i].getKm() + " - " + cadastrarCarro[i].getModelo()); +// } +// System.out.println("\n"); + /** * Preenche todos os arrays com dados pre cadastrados */ @@ -169,7 +253,7 @@ public static void DadosPreCadastrados() { "Rua 3", "35", "Bairro principal", "Cidade de Deus", "Estado do bem", "Melhor Pais"); cadastrarUsuario[1] = new Usuario("Maria Luiza", "64626578047", "malu@gmail.com", "Brasileira", "Feminino", "(61) 99650-2450", "malu1212", "malu2809", "Rua 4", "70", "Bairro da capital", "Cidade do amanha", - "Estado do mal", "País dos deuses"); + "Estado do mal", "Pa�s dos deuses"); // ================================== ADMINISTRADORES // ================================== @@ -247,9 +331,9 @@ public static void DadosPreCadastrados() { // ================================== // -------------------------------------------------------------------------------- - cadastrarAgencia[0] = new Agencia("AG001", "Rua 3", "35", "Bairro principal", "São Paulo", "Estado do bem", + cadastrarAgencia[0] = new Agencia("AG001", "Rua 3", "35", "Bairro principal", "S�o Paulo", "Estado do bem", "Melhor Pais"); - cadastrarAgencia[1] = new Agencia("AG002", "Rua 3", "35", "Bairro principal", "Brasília", "Estado do bem", + cadastrarAgencia[1] = new Agencia("AG002", "Rua 3", "35", "Bairro principal", "Bras�lia", "Estado do bem", "Melhor Pais"); cadastrarAgencia[2] = new Agencia("AG003", "Rua 3", "35", "Bairro principal", "Manaus", "Estado do bem", "Melhor Pais"); diff --git a/AluguelCarros/src/Sistema/BancoDadosTest.java b/AluguelCarros/src/Sistema/BancoDadosTest.java new file mode 100644 index 0000000..d739465 --- /dev/null +++ b/AluguelCarros/src/Sistema/BancoDadosTest.java @@ -0,0 +1,272 @@ +package Sistema; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.Arrays; + +import org.junit.Before; +import org.junit.jupiter.api.Test; + +import veiculo.Classe; +import veiculo.Carro; + +class BancoDadosTest { + + @Before + public void setData() { + //Dados carregados no banco de dados + BancoDados.cadastrarClasse[0] = new Classe("SEDA", 90); + BancoDados.cadastrarClasse[1] = new Classe("PICAPE", 150); + BancoDados.cadastrarClasse[2] = new Classe("SUV", 180); + + BancoDados.cadastrarCarro[0] = new Carro(BancoDados.cadastrarClasse[2], "ford", "fiesta", "preto", 3000, "MAD-2809", false, 5, false, + 1, 1, false, 2, 0, 1, 2012); + + BancoDados.cadastrarCarro[1] = new Carro(BancoDados.cadastrarClasse[2], "fiat", "uno", "verde", 500, "GHA-5675", true, 5, false, 1, 1, + false, 2, 2, 1, 2020); + + BancoDados.cadastrarCarro[2] = new Carro(BancoDados.cadastrarClasse[1], "fiat", "strada", "azul", 300, "OTH-8368", true, 2, true, 0, + 1, true, 2, 700, 1, 2018); + + BancoDados.cadastrarCarro[3] = new Carro(BancoDados.cadastrarClasse[1], "volkswagen", "saveiro", "prata", 6000, "KJS-2375", true, 2, + true, 0, 1, true, 2, 700, 1, 2018); + + BancoDados.cadastrarCarro[4] = new Carro(BancoDados.cadastrarClasse[0], "ford", "ecosport", "azul", 1000, "JFO-3885", true, 5, true, + 4, 2, true, 1, 0, 2, 2018); + + BancoDados.cadastrarCarro[5] = new Carro(BancoDados.cadastrarClasse[0], "renault", "duster", "prata", 5000, "TGH-3256", true, 5, + true, 4, 2, true, 1, 0, 2, 2010); + } + + public void setDataEqual() { + //Dados carregados no banco de dados + BancoDados.cadastrarClasse[0] = new Classe("SEDA", 150); + BancoDados.cadastrarClasse[1] = new Classe("PICAPE", 150); + BancoDados.cadastrarClasse[2] = new Classe("SUV", 150); + + BancoDados.cadastrarCarro[0] = new Carro(BancoDados.cadastrarClasse[2], "ford", "fiesta", "preto", 2500, "MAD-2809", false, 5, false, + 1, 1, false, 2, 0, 1, 2018); + + BancoDados.cadastrarCarro[1] = new Carro(BancoDados.cadastrarClasse[2], "fiat", "uno", "verde", 2500, "GHA-5675", true, 5, false, 1, 1, + false, 2, 2, 1, 2018); + + BancoDados.cadastrarCarro[2] = new Carro(BancoDados.cadastrarClasse[1], "fiat", "strada", "azul", 2500, "OTH-8368", true, 5, true, 0, + 1, true, 2, 700, 1, 2018); + + BancoDados.cadastrarCarro[3] = new Carro(BancoDados.cadastrarClasse[1], "volkswagen", "saveiro", "prata", 2500, "KJS-2375", true, 5, + true, 0, 1, true, 2, 700, 1, 2018); + + BancoDados.cadastrarCarro[4] = new Carro(BancoDados.cadastrarClasse[0], "ford", "ecosport", "azul", 2500, "JFO-3885", true, 5, true, + 4, 2, true, 1, 0, 2, 2018); + + BancoDados.cadastrarCarro[5] = new Carro(BancoDados.cadastrarClasse[0], "renault", "duster", "prata", 2500, "TGH-3256", true, 5, + true, 4, 2, true, 1, 0, 2, 2018); + } + + public void setDataNull() { + //Dados carregados no banco de dados + BancoDados.cadastrarClasse[0] = new Classe("SEDA", 150); + BancoDados.cadastrarClasse[1] = new Classe("PICAPE", 150); + BancoDados.cadastrarClasse[2] = new Classe("SUV", 150); + + BancoDados.cadastrarCarro[0] = null; + + BancoDados.cadastrarCarro[1] = null; + + BancoDados.cadastrarCarro[2] = null; + + BancoDados.cadastrarCarro[3] = null; + + BancoDados.cadastrarCarro[4] = null; + + BancoDados.cadastrarCarro[5] = null; + } + + public void setDataSortedReverse() { + //Dados carregados no banco de dados + BancoDados.cadastrarClasse[0] = new Classe("SEDA", 90); + BancoDados.cadastrarClasse[1] = new Classe("PICAPE", 150); + BancoDados.cadastrarClasse[2] = new Classe("SUV", 180); + + BancoDados.cadastrarCarro[0] = new Carro(BancoDados.cadastrarClasse[2], "ford", "fiesta", "preto", 3000, "MAD-2809", false, 5, false, + 1, 1, false, 2, 0, 1, 2012); + + BancoDados.cadastrarCarro[1] = new Carro(BancoDados.cadastrarClasse[2], "fiat", "uno", "verde", 500, "GHA-5675", true, 5, false, 1, 1, + false, 2, 2, 1, 2020); + + BancoDados.cadastrarCarro[2] = new Carro(BancoDados.cadastrarClasse[1], "fiat", "strada", "azul", 300, "OTH-8368", true, 2, true, 0, + 1, true, 2, 700, 1, 2018); + + BancoDados.cadastrarCarro[3] = new Carro(BancoDados.cadastrarClasse[1], "volkswagen", "saveiro", "prata", 6000, "KJS-2375", true, 2, + true, 0, 1, true, 2, 700, 1, 2018); + + BancoDados.cadastrarCarro[4] = new Carro(BancoDados.cadastrarClasse[0], "ford", "ecosport", "azul", 1000, "JFO-3885", true, 5, true, + 4, 2, true, 1, 0, 2, 2018); + + BancoDados.cadastrarCarro[5] = new Carro(BancoDados.cadastrarClasse[0], "renault", "duster", "prata", 5000, "TGH-3256", true, 5, + true, 4, 2, true, 1, 0, 2, 2010); + + BancoDados.cadastrarCarro = new Carro[] {BancoDados.cadastrarCarro[5], BancoDados.cadastrarCarro[4], BancoDados.cadastrarCarro[1], BancoDados.cadastrarCarro[0], + BancoDados.cadastrarCarro[3], BancoDados.cadastrarCarro[2]}; + } + + public void setDataSorted(){ + //Dados carregados no banco de dados + BancoDados.cadastrarClasse[0] = new Classe("SEDA", 90); + BancoDados.cadastrarClasse[1] = new Classe("PICAPE", 150); + BancoDados.cadastrarClasse[2] = new Classe("SUV", 180); + + BancoDados.cadastrarCarro[0] = new Carro(BancoDados.cadastrarClasse[2], "ford", "fiesta", "preto", 3000, "MAD-2809", false, 5, false, + 1, 1, false, 2, 0, 1, 2012); + + BancoDados.cadastrarCarro[1] = new Carro(BancoDados.cadastrarClasse[2], "fiat", "uno", "verde", 500, "GHA-5675", true, 5, false, 1, 1, + false, 2, 2, 1, 2020); + + BancoDados.cadastrarCarro[2] = new Carro(BancoDados.cadastrarClasse[1], "fiat", "strada", "azul", 300, "OTH-8368", true, 2, true, 0, + 1, true, 2, 700, 1, 2018); + + BancoDados.cadastrarCarro[3] = new Carro(BancoDados.cadastrarClasse[1], "volkswagen", "saveiro", "prata", 6000, "KJS-2375", true, 2, + true, 0, 1, true, 2, 700, 1, 2018); + + BancoDados.cadastrarCarro[4] = new Carro(BancoDados.cadastrarClasse[0], "ford", "ecosport", "azul", 1000, "JFO-3885", true, 5, true, + 4, 2, true, 1, 0, 2, 2018); + + BancoDados.cadastrarCarro[5] = new Carro(BancoDados.cadastrarClasse[0], "renault", "duster", "prata", 5000, "TGH-3256", true, 5, + true, 4, 2, true, 1, 0, 2, 2010); + + BancoDados.cadastrarCarro = new Carro[] {BancoDados.cadastrarCarro[5], BancoDados.cadastrarCarro[0], BancoDados.cadastrarCarro[2], BancoDados.cadastrarCarro[4], + BancoDados.cadastrarCarro[3], BancoDados.cadastrarCarro[1]}; + } + + @Test + public void ordenacaoCarros_Ciclo1() { + setData(); + Carro[] auxiliar; + + // ordenar colocando o menor preço em primeiro na lista + auxiliar = new Carro[] {BancoDados.cadastrarCarro[4]}; + + assertEquals(auxiliar[0], BancoDados.ordenarCarros("preco")[0]); + + // ordenar colocando o menor km em primeiro na lista + + auxiliar = new Carro[] {BancoDados.cadastrarCarro[2]}; + + assertEquals(auxiliar[0], BancoDados.ordenarCarros("km")[0]); + } + + @Test + public void ordenacaoCarros_Ciclo2() { + setData(); + Carro[] auxiliar; + + // ordenar colocando a menor quantidade de assentos em primeiro na lista + auxiliar = new Carro[] {BancoDados.cadastrarCarro[2]}; + + assertEquals(auxiliar[0],BancoDados.ordenarCarros("assentos")[0]); + + // ordenar colocando a menor carga em primeiro na lista + + auxiliar = new Carro[] {BancoDados.cadastrarCarro[2]}; + + assertEquals(auxiliar[0],BancoDados.ordenarCarros("carga")[0]); + + // ordenar colocando o menor ano em primeiro na lista + + auxiliar = new Carro[] {BancoDados.cadastrarCarro[2]}; + + assertEquals(auxiliar[0],BancoDados.ordenarCarros("ano")[0]); + } + + @Test + public void ordenacaoCarroS_Ciclo3() { + setData(); + Carro[] auxiliar; + + // ordenar a lista completa de preços em ordem crescente + auxiliar = new Carro[] {BancoDados.cadastrarCarro[4], BancoDados.cadastrarCarro[5], BancoDados.cadastrarCarro[2], BancoDados.cadastrarCarro[3], + BancoDados.cadastrarCarro[0], BancoDados.cadastrarCarro[1]}; + + assert(Arrays.equals(auxiliar, BancoDados.ordenarCarros("preco"))); + + // ordenar a lista completa de km em ordem crescente + + auxiliar = new Carro[] {BancoDados.cadastrarCarro[2], BancoDados.cadastrarCarro[5], BancoDados.cadastrarCarro[0], BancoDados.cadastrarCarro[4], + BancoDados.cadastrarCarro[1], BancoDados.cadastrarCarro[3]}; + + assert(Arrays.equals(auxiliar,BancoDados.ordenarCarros("km"))); + + + } + + @Test + public void ordenacaoCarroS_Ciclo4() { + setData(); + Carro[] auxiliar; + + // ordenar a lista completa de assentos em ordem crescente + + auxiliar = new Carro[] {BancoDados.cadastrarCarro[2], BancoDados.cadastrarCarro[3], BancoDados.cadastrarCarro[0], BancoDados.cadastrarCarro[1], + BancoDados.cadastrarCarro[4], BancoDados.cadastrarCarro[5]}; + + assert(Arrays.equals(auxiliar, BancoDados.ordenarCarros("assentos"))); + + // ordenar a lista completa de carga em ordem crescente + + auxiliar = new Carro[] {BancoDados.cadastrarCarro[2], BancoDados.cadastrarCarro[4], BancoDados.cadastrarCarro[5], BancoDados.cadastrarCarro[3], + BancoDados.cadastrarCarro[0], BancoDados.cadastrarCarro[1]}; + + assert(Arrays.equals(auxiliar,BancoDados.ordenarCarros("carga"))); + + // ordenar a lista completa de ano em ordem crescente + + auxiliar = new Carro[] {BancoDados.cadastrarCarro[2], BancoDados.cadastrarCarro[0], BancoDados.cadastrarCarro[1], BancoDados.cadastrarCarro[4], + BancoDados.cadastrarCarro[5], BancoDados.cadastrarCarro[3]}; + + assert(Arrays.equals(auxiliar,BancoDados.ordenarCarros("ano"))); + + } + + @Test + public void ordenacaoCarroS_Ciclo5() { + + Carro[] auxiliar; + + // seta os dados do vetor com todos os dados iguais + setDataEqual(); + + // ordenar a lista completa de preços em ordem crescente quando todos os vaores sao iguais + auxiliar = new Carro[] {BancoDados.cadastrarCarro[0], BancoDados.cadastrarCarro[1], BancoDados.cadastrarCarro[2], BancoDados.cadastrarCarro[3], + BancoDados.cadastrarCarro[4], BancoDados.cadastrarCarro[5]}; + + assert(Arrays.equals(auxiliar, BancoDados.ordenarCarros("preco"))); + + // seta os dados do vetor com todos os dados nulos + setDataNull(); + + // ordenar a lista completa de km em ordem crescente quando todos os dados são nulos + Carro[] auxiliar_ = {null, null, null, null, null, null}; + + assert(Arrays.equals(auxiliar_, BancoDados.ordenarCarros("km"))); + + // seta os dados de maneira decrescente de acordo com os assentos + setDataSortedReverse(); + + // ordenar a lista completa de assentos em ordem crescente + auxiliar = new Carro[] {BancoDados.cadastrarCarro[4], BancoDados.cadastrarCarro[5], BancoDados.cadastrarCarro[0], BancoDados.cadastrarCarro[1], + BancoDados.cadastrarCarro[2], BancoDados.cadastrarCarro[3]}; + + assert(Arrays.equals(auxiliar, BancoDados.ordenarCarros("assentos"))); + + // Seta os dados de maneira ordenada de acordo com o ano + setDataSorted(); + + // ordenar a lista completa de ano em ordem crescente + auxiliar = new Carro[] {BancoDados.cadastrarCarro[0], BancoDados.cadastrarCarro[1], BancoDados.cadastrarCarro[2], BancoDados.cadastrarCarro[3], + BancoDados.cadastrarCarro[4], BancoDados.cadastrarCarro[5]}; + + assert(Arrays.equals(auxiliar,BancoDados.ordenarCarros("ano"))); + + } + +} \ No newline at end of file