Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gustavo.abarroso

Problema com Atributo ArrayList em uma Lista Genérica de clientes

Recommended Posts

Estou tentando criar uma lista genérica de clientes, onde posso adicionar pessoasFisicas e pessoasJuridicas.

 

Dentro da classe clientes possuo os atributos nome, lista de endereços e limite de crédito.
A classe pessoaFisica herda de cliente os atributos acima citados além de possuir o atributo cpf.
A classe pessoaJuridica herda de cliente seus atributos e possui também, nomeFantasia e cnpj.

 

O problema que está acontecendo é o seguinte: na hora que cadastro mais de uma pessoa física por exemplo e puxar o relatório, me vem a lista de endereços inteira (conforme foto em anexo) ao invés de vim a lista da pessoa de cada posição do ArrayList de clientes. Como resolvo isso?

 

		public void cadastrar() {
		int op, resp;
		System.out.println("\n==[Cadastro de clientes]==");
		System.out.println("Digite 1 para cadastrar pessoa fisica.");
		System.out.println("Digite 2 para cadastrar pessoa juridica.");
		System.out.print("=> ");
		op = input.nextInt();
		switch (op) {
		case 1:
			System.out.println("\n==[Pessoa fisica]==");
			System.out.print("Informe o nome: ");
			nome = inputs.nextLine();
			do {
				listaEndFisica.add(retornaUmEndereco());
				System.out.println("Continuar cadastrando endereços? 1-Sim/0-Não");
				resp = input.nextInt();
			} while (resp != 0);
			System.out.print("Informe o limite de crédito: ");
			limiteCredito = input.nextDouble();
			System.out.print("informe o cpf: ");
			cpf = inputs.nextLine();
			PessoaFisica pessoaFisica = new PessoaFisica(nome, listaEndFisica, limiteCredito, cpf);
			listaCliente.add(pessoaFisica);
			System.out.println("\nPessoa fisica adicionado com sucesso! ");
			break;
		case 2:
			System.out.println("\n==[Pessoa Juridica]==");
			System.out.print("Informe o nome: ");
			nome = inputs.nextLine();
			do {
				listaEndJuridica.add(retornaUmEndereco());
				System.out.println("Continuar cadastrando endereços? 1-Sim/0-Não");
				resp = input.nextInt();
			} while (resp != 0);
			System.out.print("Informe o limite de crédito: ");
			limiteCredito = input.nextDouble();
			System.out.print("Informe o nome fantasia: ");
			nomeFantasia = inputs.nextLine();
			System.out.print("Informe o cnpj: ");
			cnpj = inputs.nextLine();
			PessoaJuridica pessoaJuridica = new PessoaJuridica(nome, listaEndJuridica, limiteCredito, nomeFantasia, cnpj);
			listaCliente.add(pessoaJuridica);
			System.out.println("\nPessoa juridica adicionado com sucesso! ");
			break;
		default:
			System.out.println("opção inválida! ");
		}
	}

		public void relatorio() {
		if (listaCliente.isEmpty()) {
			System.out.println("Não existem clientes cadastrados! ");
		} else {
			for (Cliente c : listaCliente) {
				if (c instanceof PessoaFisica) {
					System.out.println("\n-=[Pessoas Fisicas]=-");
					System.out.println("Nome: " + c.getNome());
					System.out.println("-=[Endereço(s) Associado(s)]<-");
					for (Endereco end : listaEndFisica) {
						System.out.println("Logradouro: " + end.getLogradouro());
					}
					System.out.println("Limite de crédito: " + c.getLimiteDeCredito());
					System.out.println("Cpf: " + ((PessoaFisica) c).getCpf());
				} else if (c instanceof PessoaJuridica) {
					System.out.println("\n-=[Pessoas Juridicas]=-");
					System.out.println("Nome: " + c.getNome());
					System.out.println("-=[Endereço(s) Associado(s)]<-");
					for (Endereco end : listaEndJuridica) {
						end.getLogradouro();
						System.out.println("Logradouro: " + end.getLogradouro());
					}
					System.out.println("Limite de crédito: " + c.getLimiteDeCredito());
					System.out.println("Nome fantasia: " + ((PessoaJuridica) c).getNomeFantasia());
					System.out.println("Cnpj: " + ((PessoaJuridica) c).getCnpj());
				}
			}
		}
	}

 

Sem título.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

No momento que você cadastra um novo PF ele carrega a lista de endereços pois ele herda da classe clientes e no código não está fazendo ligação entre o nome e o endereço ele não sabe quem é quem.
Pelo que mostra na imagem os dois tem o mesmo CPF mas acredito que seja essa herança que esteja fazendo com que no relatório saia a lista de endereços completa, no meu sistema ele faz a verificação se já existe aquele numero de CPF.
 

Sugestão: Utilize banco de dados para armazenar suas informações, crie 2 tabelas uma para PF e outra para PJ

EX: Tabela PF
Cliente: 
Nome: 
CPF: 

 

Em seguida utilize o código abaixo:

Faz as importações e vinculos com o banco de dados e cria a classe cadastrar_pf

 

Spoiler

private void cadastrar_pf (){ // CLASSE
     String sql = "insert into TBPF (cliente, nome, cpf) values (?,?,?); // INSIRA NA TABELA PF NAS COLUNAS CLIENTE, NOME E CPF OS VALORES QUE O USUÁRIO DIGITAR, COMO NÃO SABEMOS COLOCAMOS ?
     try { // TENTE PREPARAR A CONEXÃO PARA REALIZAR A INSERÇÃO
         pst = conexao.prepareStatement(sql); // MEU METODO QUE TRAZ A CONEXÃO COM O BANCO
         
         pst.setString(1, txtCliente.getText()); // PEGA O NOME QUE O USUARIO DIGITAR NO CAMPO 
         pst.setString(2, txtNome.getText()); // PEGA O NOME QUE O USUARIO DIGITAR NO CAMPO 
         pst.setString(3, txtCPF.getText()); // PEGA O CPF QUE O USUARIO DIGITAR NO CAMPO


          int adicionado = pst.executeUpdate(); // EXECUTA A QUERY ATUALIZANDO A INFORMAÇÃO NO BANCO DE DADOS
         if(adicionado > 0){
             JOptionPane.showMessageDialog(null," Cliente cadastrado com sucesso.");  
         }
        
     } catch (HeadlessException | SQLException e) { // CASO O CLIENTE JÁ ESTEJA CADASTRADO
         JOptionPane.showMessageDialog(null,"Cliente já cadastrado!");
         System.out.println(e);
     }
 }

 

O PRINT QUE DEIXEI ANEXO É UMA PARTE DO CÓDIGO E DA TELA DE CADASTRO DE EQUIPAMENTOS QUE ESTOU IMPLEMENTANDO EM MEU SISTEMA.JAVA1.thumb.jpg.6765c96924442db1daa890a1ac37d26d.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por Jack Oliveira
      Ola pessoal boa tarde
      estou tentando fazer um texto se mover dentro do input porem nao esta dando resultado que preciso
       
      Este é o codigo 
      <script type="text/javascript"> $(document).ready(function () { var frases = [{ 'elemento': $('input[name=search_string]'), 'frases': ["O que você está procurando?", "Buscar por: Academia, Barbearia, Churrascaria, Decoração, Escola, Farmácia, Gráfica, Imobiliaria, Lanchonete, Mecânica, Odontologia, Pizzaria...", "Faça sua busca por segmentos aqui.", "São mais de 3mil empresas para serem exploradas."] }]; animaInput(frases); }); </script>  
    • Por Rengavitp
      Boa noite pessoal!
       
      Estou fazendo um projeto web com spring boot e é a primeira vez que lido com imagens. Minha idéia é salvar imagens em uma pasta e depois recuperar essa imagem e mostrar, mas o problema que estou enfrentando é o seguinte, seu eu envio para o src do projeto na pasta imagens, eu até consigo acessar as imagens, mas preciso atualizar o projeto na IDE (isso vai acontecer em produção?) eu tentei salvar em uma pasta fora do source do projeto mas ai não consigo acessar. como devo fazer? fiz várias pesquisas, mas nenhuma me ajudou.
       
      Desde já agradeço.
    • Por Rengavitp
      Bom dia pessoal!

      Estou com o seguinte problema, tenho uma aplicação que funciona perfeitamente rodando na minha IDE (Spring Tool Suite) mas ao gerar o arquivo war e subir a aplicação no tom cat ele não funciona, mas apenas erro 404, abri o war e todos os arquivo estão lá, já tem seguir tudo quando e tutorial com problemas semelhantes mas nenhum resolveu. Abaixo mais informações,.

      Versão do java na aplicacao 11
      Versão do jva no servidor 11
      Versão do tomcat no servidor 8.5.55
       
      minha classe principal
      package br.com.masterplastfitas; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class MasterApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MasterApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MasterApplication.class); } } meu pom.xml
      <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.2</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>masterplast</groupId> <artifactId>Master</artifactId> <version>2.0</version> <packaging>war</packaging> <name>Master</name> <description>Aplicação web </description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> </dependency> <dependency> <groupId>org.mindrot</groupId> <artifactId>jbcrypt</artifactId> <version>0.4</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.0</version> </dependency> </dependencies> <build> <plugins> <!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> --> </plugins> </build> </project>  
    • Por Stephhany909
      While trying to persist an object with an attribute of type Point, defined as follows:
       
      @Entity @Table(name = "event") public class Event { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private long id; @Column(columnDefinition = "POINT") private Point coordinate; } I'm getting the error Data truncation: Cannot get geometry object from data you send to the GEOMETRY field.
      The corresponding database table is defined as follows:
       
      create table event ( id bigint not null auto_increment, coordinate POINT, primary key (id) ) engine= InnoDB; What am I missing?
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.