Skip to content

Commit

Permalink
Finalização lab04
Browse files Browse the repository at this point in the history
  • Loading branch information
IgorEBatista committed May 16, 2023
1 parent 9b1d397 commit 0b466f0
Show file tree
Hide file tree
Showing 12 changed files with 189 additions and 22 deletions.
Binary file modified lab04/bin/AppMain.class
Binary file not shown.
Binary file modified lab04/bin/ClientePF.class
Binary file not shown.
Binary file modified lab04/bin/ClientePJ.class
Binary file not shown.
Binary file modified lab04/bin/Seguradora.class
Binary file not shown.
Binary file modified lab04/bin/Sinistro.class
Binary file not shown.
Binary file modified lab04/bin/Validacao.class
Binary file not shown.
163 changes: 150 additions & 13 deletions lab04/src/AppMain.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,13 @@ public static void main(String[] args) throws ParseException {
Date data_acidente = formato.parse("21/04/2023");

//Verificando CPF e CNPJ

System.out.println("Validando o CPF: 833.719.110-47");
System.out.println(Validacao.validarCPF("83371911047"));
System.out.println("Validando o CNPJ: 86.113.575/0001-36");
System.out.println(Validacao.validarCNPJ("86113575000136"));

//Criando 2 Clientes.
ClientePJ cliente_J1 = new ClientePJ("Lab's Corp", "Rua Roxo Moreira, nº42", "86113575000136", data_fundacao);
ClientePJ cliente_J1 = new ClientePJ("Lab's Corp", "Rua Roxo Moreira, nº42", "86113575000136", data_fundacao, 10);
ClientePF cliente_F1 = new ClientePF("Joana","Rua Roxo Moreira, nº3000","613.292.220-24", "Feminino",
data_carteira1, "Superior Completo", data_nasc1, "Alta");

Expand Down Expand Up @@ -330,6 +331,14 @@ private static void menuCad() {
data_ok = false;
}
} while(!data_ok);
//Obtendo o número de funcionários
System.out.println("Digite o número de funcionários da empresa:");
do{
infos.set(3, leitor.nextLine());
if (Integer.parseInt(infos.get(3)) <= 0) {
System.out.println("Por favor, digite um número válido de funcionários: (Inteiro e positivo)");
}
}while (Integer.parseInt(infos.get(3)) <= 0);
} else {
System.out.println("O CPF/CNPJ não é válido! Por favor, verifique o número digitado:");
}
Expand All @@ -339,7 +348,7 @@ private static void menuCad() {
if (pf) {
novo_Cli = new ClientePF(infos.get(1),infos.get(2),infos.get(0),infos.get(3),dias.get(0),infos.get(4),dias.get(1),infos.get(5));
} else {
novo_Cli = new ClientePJ(infos.get(1), infos.get(2), infos.get(0), dias.get(0));
novo_Cli = new ClientePJ(infos.get(1), infos.get(2), infos.get(0), dias.get(0), Integer.parseInt(infos.get(3)));
}
//Descobrindo a seguradora na qual o cliente será cadastrado.
System.out.println("Digite o nome da Seguradora na qual o cliente será cadastrado:");
Expand All @@ -358,7 +367,6 @@ private static void menuCad() {
seg.cadastrarCliente(novo_Cli);
System.out.println("Foi adicionado à seguradora " + seg.getNome() + " o seguinte cliente:\n" + novo_Cli.toString());
}

else if (escolha == MenuOperacoesCad.VEICULO.getOperacao()){
Boolean achou = false;
Cliente cli = null;
Expand Down Expand Up @@ -396,7 +404,35 @@ else if (escolha == MenuOperacoesCad.VEICULO.getOperacao()){
System.out.println("O veículo de placa: " + vei.getplaca() + " foi adicionado ao cliente " + cli.getNome() + " com sucesso!");
}
else if (escolha == MenuOperacoesCad.SEGURADORA.getOperacao()){

Boolean nome_ok, num_ok;
Seguradora nova_seg;
ArrayList<String> infos = new ArrayList<String>();
//Obtendo o nome da nova Seguradora
System.out.println("Digite o nome da Seguradora a ser cadastrada:");
do {
infos.set(0, leitor.nextLine());
nome_ok = Validacao.validaNome(infos.get(1));
if (!nome_ok) {
System.out.println("Por favor, digite um nome válido: (Apenas letras são suportadas)");
}
} while (!nome_ok);
//Obtendo o telefone da nova Seguradora
System.out.println("Digite o número de telefone da nova seguradora:");
do {
infos.set(1, leitor.nextLine().replaceAll("\\D", ""));
num_ok = Validacao.validaNome(infos.get(1));
if (!num_ok) {
System.out.println("Por favor, digite um número válido: (Telefones devem possuir no mínimo 8 dígitos numéricos)");
}
} while (!num_ok);
//Obtendo os outros dados
System.out.println("Digite o email da nova seguradora");
infos.set(2, leitor.nextLine());
System.out.println("Digite o endereço da nova seguradora");
infos.set(3, leitor.nextLine());
//Instanciando e relacionando a seguradora
nova_seg = new Seguradora(infos.get(0), infos.get(1), infos.get(2), infos.get(3));
empresas.add(nova_seg);
}
else if (escolha != MenuOperacoesCad.VOLTAR.getOperacao()){
System.out.println("Por favor, as opções válidas são apenas números de 0 a 3 (inclusos).");
Expand All @@ -410,19 +446,50 @@ private static void menuList() {
escolha = leitor.nextInt();
// Determina operação
if (escolha == MenuOperacoesList.CLI_SEG.getOperacao()){

for (Seguradora atual : empresas) {
System.out.println("Listando os Clientes da Seguradora " + atual.getNome());
System.out.println("Clientes do tipo \"Pessoa Física\" :");
atual.listarClientes("ClientePF");
System.out.println("Clientes do tipo \"Pessoa Jurídica\" :");
atual.listarClientes("ClientePJ");
System.out.println("");
}
}
else if (escolha == MenuOperacoesList.SIN_SEG.getOperacao()){

for (Seguradora seg_atual : empresas) {
System.out.println("Listando os Sinistros da Seguradora " + seg_atual.getNome());
for (Sinistro sin_atual : seg_atual.getListaSinistros()) {
System.out.println(sin_atual.toString());
}
}
}
else if (escolha == MenuOperacoesList.SIN_CLI.getOperacao()){

for (Seguradora seg_atual : empresas) {
for (Cliente cli_atual : seg_atual.getListaClientes()) {
System.out.println("Listando os Sinistros relacionados ao Cliente " + cli_atual.getNome());
seg_atual.visualizarSinistro(cli_atual.getNome());
}
}
}
else if (escolha == MenuOperacoesList.VEI_SEG.getOperacao()){

for (Seguradora seg_atual : empresas) {
System.out.println("Listando os Veiculos relacionados a Seguradora " + seg_atual.getNome());
for (Cliente cli_atual : seg_atual.getListaClientes()) {
for (Veiculo vei_atual : cli_atual.getLista_Veiculos()){
System.out.println(vei_atual.toString());
}
}
}
}
else if (escolha == MenuOperacoesList.VEI_CLI.getOperacao()){

for (Seguradora seg_atual : empresas) {
for (Cliente cli_atual : seg_atual.getListaClientes()) {
System.out.println("Listando os Veiculos relacionados ao Cliente " + cli_atual.getNome());
for (Veiculo vei_atual : cli_atual.getLista_Veiculos()){
System.out.println(vei_atual.toString());
}
}
}
}
else if (escolha != MenuOperacoesList.VOLTAR.getOperacao()){
System.out.println("Por favor, as opções válidas são apenas números de 0 a 5 (inclusos).");
Expand All @@ -436,13 +503,83 @@ private static void menuExcl() {
escolha = leitor.nextInt();
// Determina operação
if (escolha == MenuOperacoesExcl.CLIENTE.getOperacao()){
;
Cliente cli = null;
Seguradora seg = null;
Boolean achou = false;
//Encontra o cliente que será excluído
System.out.println("Digite o CPF/CNPJ do Cliente que será excluído");
do{
leitura = leitor.nextLine();
Iterator<Seguradora> segur = empresas.iterator();
while (segur.hasNext() && !achou) {
Seguradora atual = (Seguradora)segur.next();
cli = atual.identClient(Long.parseLong(leitura.replaceAll("\\D", "")));
if(cli != null){
achou = true;
seg = atual;
}
}
if (!achou) {
System.out.println("Nenhuma Seguradora possui esse cliente cadastrado, por favor, verifique os dados");
}
}while(!achou);
seg.removerCliente(cli.getNome());
System.out.println("O cliente foi removido com sucesso!");
}
else if (escolha == MenuOperacoesExcl.VEICULO.getOperacao()){
;
Veiculo vei = null;
Cliente cli = null;
Boolean achou = false;
//Encontra o cliente que será excluído
System.out.println("Digite a Placa do Veículo que será excluído");
do{
leitura = leitor.nextLine();
Iterator<Seguradora> segur = empresas.iterator();
while (segur.hasNext() && !achou) {
Seguradora seg_atual = (Seguradora)segur.next();
Iterator<Cliente> clientes = seg_atual.getListaClientes().iterator();
while (clientes.hasNext() && !achou) {
Cliente cli_atual = (Cliente)clientes.next();
vei = cli_atual.ident_Veiculo(leitura);
if(vei != null){
achou = true;
cli = cli_atual;
}
}
}
if (!achou) {
System.out.println("Veículo não encontrado, por favor, verifique os dados");
}
}while(!achou);
cli.remVeiculo(vei);
System.out.println("O veículo foi removido com sucesso!");
}
else if (escolha == MenuOperacoesExcl.SINISTRO.getOperacao()){
;
Seguradora seg = null;
Sinistro sin = null;
Boolean achou = false;
//Encontra o Sinistro que será excluído
System.out.println("Digite o ID do Sinistro que será excluído");
do{
leitura = leitor.nextLine();
Iterator<Seguradora> segur = empresas.iterator();
while (segur.hasNext() && !achou) {
Seguradora seg_atual = (Seguradora)segur.next();
Iterator<Sinistro> sinist = seg_atual.getListaSinistros().iterator();
while (sinist.hasNext() && !achou) {
Sinistro sin_atual = (Sinistro)sinist.next();
if(sin_atual.getid() == Integer.parseInt(leitura)){
achou = true;
sin = sin_atual;
seg = seg_atual;
}
}
}
if (!achou) {
System.out.println("Sinistro não encontrado, por favor, verifique os dados");
}
}while(!achou);
seg.removerSinistro(sin);
}
else if (escolha != MenuOperacoesExcl.VOLTAR.getOperacao()){
System.out.println("Por favor, as opções válidas são apenas números de 0 a 3 (inclusos).");
Expand Down
18 changes: 15 additions & 3 deletions lab04/src/ClientePF.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,22 @@ public String toString() {
"\nData da Licenca: " + dataLicenca +
"\nNível de Educacao: " + educacao +
"\nData de Nascimento: " + dataNascimento +
"\nClasse Economica: " + classeEconomica +"\n");
"\nClasse Economica: " + classeEconomica);
}

public double calculaScore() { //TERMINAR
return 1.0;
public double calculaScore(){
Date agora = new Date();
int idade = agora.getYear() - dataNascimento.getYear();
double fator;

if (18 <= idade && idade < 30) {
fator = CalcSeguro.FATOR_18_30.getOperacao();
} else if (30 <= idade && idade <= 60) {
fator = CalcSeguro.FATOR_30_60.getOperacao();
} else {
fator = CalcSeguro.FATOR_60_90.getOperacao();
}

return CalcSeguro.VALOR_BASE.getOperacao() * fator * this.getLista_Veiculos().size();
}
}
19 changes: 15 additions & 4 deletions lab04/src/ClientePJ.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
public class ClientePJ extends Cliente {
private final String CNPJ;
private Date dataFundacao;
private int num_funcionarios;

public ClientePJ(String nome, String endereco, String CNPJ, Date dataFundacao) {
public ClientePJ(String nome, String endereco, String CNPJ, Date dataFundacao, int num_funcionarios) {
super(nome, endereco);
this.CNPJ = CNPJ.replaceAll("\\D", "");
this.dataFundacao = dataFundacao;
this.num_funcionarios = num_funcionarios;
}
//Getters e Setters

Expand All @@ -20,17 +22,26 @@ public Date getDataFundacao() {
public void setDataFundacao(Date dataFundacao) {
this.dataFundacao = dataFundacao;
}
public int getNum_funcionarios() {
return num_funcionarios;
}

public void setNum_funcionarios(int num_funcionarios) {
this.num_funcionarios = num_funcionarios;
}


//Outros métodos

public double calculaScore() { //TERMINAR
return 1.0;
public double calculaScore() {
return CalcSeguro.VALOR_BASE.getOperacao() * (1 + (num_funcionarios/100) * getLista_Veiculos().size());
}

public String toString() {
return (super.toString() +
"\nCNPJ: " + CNPJ +
"\nData de Fundacao: " + dataFundacao + "\n");
"\nData de Fundacao: " + dataFundacao +
"\nNúmero de Funcionários: " + num_funcionarios);
}

}
6 changes: 5 additions & 1 deletion lab04/src/Seguradora.java
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ public void listarClientes(String tipoCliente){
// Lista determinados clientes
Iterator<Cliente> elem = this.listaClientes.iterator();
int tipo = 0;
if(tipoCliente == "ClientePJ"){ tipo = 1;}
if(tipoCliente.equals("ClientePJ")){ tipo = 1;}
while (elem.hasNext()) {
Cliente atual = (Cliente)elem.next();
if ((tipo == 0 && atual instanceof ClientePF) || (tipo == 1 && atual instanceof ClientePJ)) {
Expand Down Expand Up @@ -151,6 +151,10 @@ public ArrayList<Sinistro> listarSinistros(Cliente cliente) {
return lista_nova;
}

public boolean removerSinistro(Sinistro sinistro) {
return this.listaSinistros.remove(sinistro);
}

public double calcularPrecoSeguroCliente(Cliente cliente){
return (cliente.calculaScore() * (1 + listarSinistros(cliente).size()));
}
Expand Down
2 changes: 1 addition & 1 deletion lab04/src/Sinistro.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,6 @@ public String toString(){
"\nEndereço: " + getendereco() +
"\nSeguradora: " + getSeguradora() +
"\nVeículo: " + getVeiculo() +
"\nCliente: " + getCliente().getNome() + "\n");
"\nCliente: " + getCliente().getNome());
}
}
3 changes: 3 additions & 0 deletions lab04/src/Validacao.java
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,7 @@ public static boolean validarCPF(String cpf){
public static boolean validaNome(String nome) {
return nome.matches("[A-Z][a-z]{1,}");
}
public static boolean validaTelef(String tlf) {
return tlf.length() >= 8;
}
}

0 comments on commit 0b466f0

Please sign in to comment.