Jump to content

Recommended Posts

Posted (edited)

Boa Tarde

Tenho aqui umas dúvidas, tenho este trabalho para fazer: Pretende-se criar um sistema de gestão de uma pequena loja de reparações de equipamento informático, entre outros, computadores, impressoras e modems.

O sistema deverá permitir fazer a manutenção de registos de Clientes da loja e dos Empregados.

Todas as reparações devem ser registadas, identificando a data e hora a que deram entrada na loja, o equipamento a reparar, o funcionário que o recebeu e o cliente. De seguida, o cliente deverá ser contactado para ser informado do orçamento. Se concordar, é iniciada a reparação, senão o registo fica suspenso.

No preço da reparação entra o custo do material informático (que deve ser discriminado) e o custo/hora do técnico que efetua a reparação.

E eu já comecei, ja fiz a estrutura de classes e tudo, mas agora deparei-me com umas dúvidas...

package moprogestaoloja;
import javax.swing.JOptionPane;
/**
*
* @author Filipe
*/
public abstract class Clientes extends Pessoas {
private int nrcliente;
private Data idade; //public?
private int telefone;	public Clientes (String nome, int nrcliente, Data idade, String endereco, int telefone){
	super (nome, endereco);
	this.idade = idade;
	this.nrcliente = nrcliente;
	this.telefone = telefone;
}	/**
 * @return the nrcliente
 */
public int getNrcliente() {
	return nrcliente;
}
/**
 * @param nrcliente the nrcliente to set
 */
public void setNrcliente(int nrcliente) {
	this.nrcliente = nrcliente;
}	/**
 * @return the idade
 */
public Data getIdade() {
	return idade;
}
/**
 * @param idade the idade to set
 */
public void setIdade(Data idade) {
	this.idade = idade;
}	/**
 * @return the telefone
 */
public int getTelefone() {
	return telefone;
}
/**
 * @param telefone the telefone to set
 */
public void setTelefone(int telefone) {
	this.telefone = telefone;
}	 public void novoCliente(){

	String nome = JOptionPane.showInputDialog("Nome");
	String nrcliente = JOptionPane.showInputDialog("Número de Cliente");
	int nrc = Integer.parseInt(nrcliente);
	String endereco = JOptionPane.showInputDialog("Endereco");
	String telefone = JOptionPane.showInputDialog("Telefone");
	int tel = Integer.parseInt(telefone);
	setNome(nome);
	setNrcliente(nrc);
	setEndereco(endereco);
	setTelefone(tel);
 }}

Esta é a minha classe Clientes... E eu agora queria experimentar introduzir um novo cliente e guardar o respectivo, e como faço isso, e como procedo para chamar o método na classe main?

Agradecia ajuda

Cumps

Filipe

Edited by Baderous
geshi

Peace, Love & Empathy by: Kurt Cobain

Posted

Essa tua classe Clientes mais parece a classe Cliente apenas. Podes trocar o nome disso para Cliente e apagar esse método novoCliente() que isso não faz sentido nenhum. Se queres ter vários clientes, podes criar uma classe Clientes. Mas em vez de ter os dados de um cliente vai ter uma colecção de clientes. Procura as colecções do Java para encontrares a mais indicada. Depois ai nessa classe Clientes é que podes meter o método novoCliente() que adiciona objectos do tipo Cliente na colecção.

Nem tinha reparado que a tua classe Clientes é abstracta, portanto nem sequer podes criar objectos do tipo Clientes. Mas se apagares o abstract, podias fazer o seguinte:

  • Alterar o método novoCliente() para static.
  • No main() chamar o método novoCliente(): Clientes.novoCliente();
  • Criar um objecto do tipo Clientes no início do método novoCliente, antes de fazeres os set: cliente1 = new Clientes().
  • Adicionar construtor sem argumentos para Clientes();

Mas novamente, sem colecções só podes ter 1 cliente ou meter variáveis à ganância para cada 1.

Posted

Podes-me dar então um exemplo de como seria a classe clientes? para o problema que apresentei em cima?

Não percebi muito bem o que disseste na primeira parte :x

Peace, Love & Empathy by: Kurt Cobain

Posted (edited)

A classe Clientes como o nome indica seria um grupo de objectos do tipo Cliente.

Para agrupar objectos podes usar as colecções em Java. A mais indicada para o teu problema tens de ser tu a ver qual é.

Mas para fazer a classe Clientes da forma mais simples que eu consigo imaginar:

public class Clientes extends ArrayList<Cliente>{

}

Já está, é só isso.

Já podes adicionar e remover vários clientes, os que quiseres...

Todos os métodos disponíveis na tua classe clientes são os herdados de ArrayList que podes ver na documentação.

Edited by _7_up_
Posted (edited)

Boa Tarde pessoal, isto é o meu código da classe clientes, e agora queria guardar os clientes numa array list, secalhar não estou a fazer certo, mas ao fazer list.add como eu tambem quero adicionar um objecto data não consigo fazer, dá erro, podem ajudar-me?

int i;
	int n = Integer.parseInt(JOptionPane.showInputDialog("Introduza o número de clientes da loja:"));

   for (i=1;i<=n;i++){


	Cliente cli1, cli2, cli3;

		//Objecto Fernando
//			cli1 = new Cliente();
//			cli1.nome = "Fernando";
//			cli1.telefone = "912345678";
//			cli1.endereco = "Paredes";
//			cli1.nrcliente = 123455;

		String cnome = (JOptionPane.showInputDialog("Introduza o nome do Cliente:"));
		int cnrcliente = Integer.parseInt (JOptionPane.showInputDialog("Introduza o nr. do Cliente:"));
		String ncliente = new Integer(cnrcliente).toString();
		Data dtNasc = Data.lerData();

		String cendereco = (JOptionPane.showInputDialog("Introduz o endereço postal do Cliente:"));
		String ctelefone = (JOptionPane.showInputDialog("Introduza o nr. de telefone do Cliente:"));


		cli1 = new Cliente(cnome, cnrcliente, dtNasc, cendereco, ctelefone);

		ArrayList<String> list = new ArrayList<String> (n);
		list.add(cnome);
		list.add(cnrcliente, ncliente);
		list.add(dtNasc);
		list.add(cendereco);
		list.add(ctelefone);

Cumprimentos

Edited by Baderous
geshi

Peace, Love & Empathy by: Kurt Cobain

Posted

Fizeste um array de strings e portanto não podes lá meter objectos de outros tipos. Mas isso ai também está um bocado desorientado. Porque não metes no array logo o teu objecto cliente completo?

Posted

E é isso que eu quero fazer, como é que posso fazer isto?

Por incrível que pareça isso faz-me avançar muito no trabalho, preciso de ajuda

Cumprimentos

Peace, Love & Empathy by: Kurt Cobain

Posted

É só "dizeres" que o teu ArrayList é de clientes e não de strings

ArrayList<Cliente> list = new ArrayList<Cliente>();

Assim cada posição do list vai ter um cliente...

Engenharia de Sistemas Informáticos @ IPCA

"Estou convencido de que cerca de metade do que separa os empreendedores de sucesso daqueles malsucedidos é a pura perseverança." - Steve Jobs

Posted (edited)

Assim cada posição do list vai ter um cliente...

Adicionas um objecto do tipo cliente á lista em vez de adicionares uma string.

Crias um cliente e depois...

....
list.add(cliente);
....

tal como fizeste para as strings

Tens aqui tudo sobre ArrayList:

http://docs.oracle.c.../ArrayList.html

Edited by joelbrito

Engenharia de Sistemas Informáticos @ IPCA

"Estou convencido de que cerca de metade do que separa os empreendedores de sucesso daqueles malsucedidos é a pura perseverança." - Steve Jobs

Posted (edited)

E como faço para listar o que introduzi, e se por exemplo quiser ver a informação no cliente antónio?

Precisava mesmo de saber isso

Cumprimentos

package moprogestaoloja;
import javax.swing.JOptionPane;
import java.util.*;

/**
*
* @author Filipe
*/
public class Main {
/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
	// TODO code application logic here

	int i;
	int n = Integer.parseInt(JOptionPane.showInputDialog("Introduza o número de clientes da loja:"));

   for (i=1;i<=n;i++){


	Cliente cli1;

		//Objecto Fernando
//			cli1 = new Cliente();
//			cli1.nome = "Fernando";
//			cli1.telefone = "912345678";
//			cli1.endereco = "Paredes";
//			cli1.nrcliente = 123455;
		ArrayList<Cliente> list = new ArrayList();

		String cnome = (JOptionPane.showInputDialog("Introduza o nome do Cliente:"));
		int cnrcliente = Integer.parseInt (JOptionPane.showInputDialog("Introduza o nr. do Cliente:"));
		Data dtNasc = Data.lerData();
		String cendereco = (JOptionPane.showInputDialog("Introduz o endereço postal do Cliente:"));
		String ctelefone = (JOptionPane.showInputDialog("Introduza o nr. de telefone do Cliente:"));


		cli1 = new Cliente(cnome, cnrcliente, dtNasc, cendereco, ctelefone);
		list.add(cli1);
		for (int j = 0; j < list.size(); j++) {
		System.out.println(list.get(j));


	}
	}
		//criar variaveis, pedindo valores ao utilizador
		//cli2 = new Cliente (cnome, cnrcliente, dtNasc, cendereco, ctelefone);

		//cli3 = new Cliente ();
		//cli3.nome = "Sofia";
		//cli3.telefone = "967896541";
		//cli3.endereco = "Paredes de coura";
		//cli3.nrcliente = 123457;
		int j;
		int nr = Integer.parseInt(JOptionPane.showInputDialog("Introduza o nr de funcionarios da loja:"));
		for (j=1;j<=n;j++){
		String fnome = (JOptionPane.showInputDialog("Introduza o nome do Funcionário:"));
		int fnrfuncionario = Integer.parseInt (JOptionPane.showInputDialog("Introduza o nr. do Funcionário:"));
		Data dtNasc = Data.lerData();
		String fendereco = (JOptionPane.showInputDialog("Introduz o endereço postal do Funcionário:"));
		String femail = (JOptionPane.showInputDialog("Introduz o endereço email do Funcionário:"));
		Double fcustohora = Double.parseDouble(JOptionPane.showInputDialog("Introduz o custo de hora do Funcionário:"));
		String ftelefone = (JOptionPane.showInputDialog("Introduza o nr. de telefone do Funcionário:"));

		Funcionario func1;

		func1 = new Funcionario (fnome, fnrfuncionario, fendereco, dtNasc, femail, ftelefone, fcustohora);
		// func1.nome = "Ricardo";
		//func1.endereco = "Recarei";
		//unc1.nrfuncionario = 345;
		//func1.email = "rims5@pcrepara.pt";
		//func1.custoHora = 11.50;
	}

Tenho todo este código, mas o que me mostra está errado, está sempre a aparecer nome tem 2012 anos

Não percebo o que está mal

Edited by Baderous
geshi

Peace, Love & Empathy by: Kurt Cobain

Posted

Tens uma lista de objectos cliente. Para cada cliente na lista tens que imprimir o nome, o telefone, o endereço e o numero de cliente.

ou seja:


for (int j = 0; j < list.size(); j++) {
			System.out.println(list.get(j).getNome()); //Ou qualquer que seja o teu getter para o nome do cliente
			System.out.println(list.get(j).getTelefone()); // Ou qualquer que seja o teu getter para o telefone do cliente
			.......
		}

Tu estavas a imprimir o objecto cliente...

Engenharia de Sistemas Informáticos @ IPCA

"Estou convencido de que cerca de metade do que separa os empreendedores de sucesso daqueles malsucedidos é a pura perseverança." - Steve Jobs

Posted

Já está a funcionar direito, qual é o método do array list agora que tenho de utilizar para pesquisar a posição que eu quiser?

E isto já guarda sempre no array certo?

Peace, Love & Empathy by: Kurt Cobain

Posted

Já está a funcionar direito, qual é o método do array list agora que tenho de utilizar para pesquisar a posição que eu quiser?

Para isso tens que percorrer todo o arraylist e utilizar uma condição de procura pelo atributo que pretendes (nome, numero de cliente, etc...)

E isto já guarda sempre no array certo?

Sim, cada vez que usas o método add do arraylist estás a acrescentar um cliente á lista.

Engenharia de Sistemas Informáticos @ IPCA

"Estou convencido de que cerca de metade do que separa os empreendedores de sucesso daqueles malsucedidos é a pura perseverança." - Steve Jobs

Posted

Estava a tentar implementar algo para conseguir ver todos os dados do cliente por exemplo joão e tentei algo como isto, mas está-me a dar erro no j, secalhar não posso ter o j ali ...

String nomecli = (JOptionPane.showInputDialog("Introduza o cliente que quer pesquisar"));

		 for (Cliente cli: listc)  { 
		    if (cli.getNome().equals(nomecli)) 
						    System.out.println(listc.get(j).getNome());
						    System.out.println(listc.get(j).getNrcliente());
						    System.out.println(listc.get(j).getD_nasc());
						    System.out.println(listc.get(j).getEndereco());
						    System.out.println(listc.get(j).getTelefone());


    }

Peace, Love & Empathy by: Kurt Cobain

Posted

Claro que dá erro.

o j não é uma variável válida dentro desse ciclo.

A forma como fizeste para ir buscar o cliente á lista só funciona se o ciclo for for 😉 com números.

Ao utilizares o ciclo for dessa forma, tens que fazer como fizeste no if:

cli.getNome();

cli.getNrCliente();

.....

Engenharia de Sistemas Informáticos @ IPCA

"Estou convencido de que cerca de metade do que separa os empreendedores de sucesso daqueles malsucedidos é a pura perseverança." - Steve Jobs

Posted
Em 6/4/2012 às 22:03, filipe3632 disse:

E como faço para listar o que introduzi, e se por exemplo quiser ver a informação no cliente antónio?

Precisava mesmo de saber isso

Cumprimentos


package moprogestaoloja;
import javax.swing.JOptionPane;
import java.util.*;

/**
*
* @author Filipe
*/
public class Main {
/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
	// TODO code application logic here

	int i;
	int n = Integer.parseInt(JOptionPane.showInputDialog("Introduza o número de clientes da loja:"));

   for (i=1;i<=n;i++){


	Cliente cli1;

		//Objecto Fernando
//			cli1 = new Cliente();
//			cli1.nome = "Fernando";
//			cli1.telefone = "912345678";
//			cli1.endereco = "Paredes";
//			cli1.nrcliente = 123455;
		ArrayList<Cliente> list = new ArrayList();

		String cnome = (JOptionPane.showInputDialog("Introduza o nome do Cliente:"));
		int cnrcliente = Integer.parseInt (JOptionPane.showInputDialog("Introduza o nr. do Cliente:"));
		Data dtNasc = Data.lerData();
		String cendereco = (JOptionPane.showInputDialog("Introduz o endereço postal do Cliente:"));
		String ctelefone = (JOptionPane.showInputDialog("Introduza o nr. de telefone do Cliente:"));


		cli1 = new Cliente(cnome, cnrcliente, dtNasc, cendereco, ctelefone);
		list.add(cli1);
		for (int j = 0; j < list.size(); j++) {
		System.out.println(list.get(j));


	}
	}
		//criar variaveis, pedindo valores ao utilizador
		//cli2 = new Cliente (cnome, cnrcliente, dtNasc, cendereco, ctelefone);

		//cli3 = new Cliente ();
		//cli3.nome = "Sofia";
		//cli3.telefone = "967896541";
		//cli3.endereco = "Paredes de coura";
		//cli3.nrcliente = 123457;
		int j;
		int nr = Integer.parseInt(JOptionPane.showInputDialog("Introduza o nr de funcionarios da loja:"));
		for (j=1;j<=n;j++){
		String fnome = (JOptionPane.showInputDialog("Introduza o nome do Funcionário:"));
		int fnrfuncionario = Integer.parseInt (JOptionPane.showInputDialog("Introduza o nr. do Funcionário:"));
		Data dtNasc = Data.lerData();
		String fendereco = (JOptionPane.showInputDialog("Introduz o endereço postal do Funcionário:"));
		String femail = (JOptionPane.showInputDialog("Introduz o endereço email do Funcionário:"));
		Double fcustohora = Double.parseDouble(JOptionPane.showInputDialog("Introduz o custo de hora do Funcionário:"));
		String ftelefone = (JOptionPane.showInputDialog("Introduza o nr. de telefone do Funcionário:"));

		Funcionario func1;

		func1 = new Funcionario (fnome, fnrfuncionario, fendereco, dtNasc, femail, ftelefone, fcustohora);
		// func1.nome = "Ricardo";
		//func1.endereco = "Recarei";
		//unc1.nrfuncionario = 345;
		//func1.email = "rims5@pcrepara.pt";
		//func1.custoHora = 11.50;
	}
 

Tenho todo este código, mas o que me mostra está errado, está sempre a aparecer nome tem 2012 anos

Não percebo o que está mal

Ainda assim nesta linha tens uma coisa mal:

ArrayList<Cliente> list = new ArrayList();
O correto seria:
ArrayList<Cliente> list = new ArrayList<Cliente>();
Posted (edited)
package moprogestaoloja;
import javax.swing.JOptionPane;
import java.util.*;

/**
*
* @author Filipe
*/
public class Main {
/**
 * @param args the command line arguments
 */
public static void main(String[] args) {



	// TODO code application logic here
	int op = 0;
	 Scanner ler = new Scanner(System.in);
		System.out.println("MENU:");
		System.out.println("---------------------------------");
		System.out.println("1- Introduzir Clientes");
		System.out.println("2- Pesquisar Cliente");
		System.out.println("3- Introduzir Funcionários");
		System.out.println("5- Sair");
		System.out.println("---------------------------------");
		System.out.print("OPÇÃO -> ");
		op = ler.nextInt();
		switch (op){
			case 1:

		int i;
		int n = Integer.parseInt(JOptionPane.showInputDialog("Introduza o número de clientes da loja:"));

		for (i=1;i<=n;i++){


		Cliente cli1;

		ArrayList<Cliente> listc = new ArrayList();

			String cnome = (JOptionPane.showInputDialog("Introduza o nome do Cliente:"));
			int cnrcliente = Integer.parseInt (JOptionPane.showInputDialog("Introduza o nr. do Cliente:"));
			Data dtNasc = Data.lerData();
			String cendereco = (JOptionPane.showInputDialog("Introduz o endereço postal do Cliente:"));
			String ctelefone = (JOptionPane.showInputDialog("Introduza o nr. de telefone do Cliente:"));


		cli1 = new Cliente(cnome, cnrcliente, dtNasc, cendereco, ctelefone);
		listc.add(cli1);
		for (int j = 0; j < listc.size(); j++) {
							System.out.println("Nome:" +(listc.get(j).getNome()));
							System.out.println("Nr. Cliente:" +(listc.get(j).getNrcliente()));
							System.out.println("Data de Nascimento:" +(listc.get(j).getD_nasc()));
							System.out.println("Endereço:" +(listc.get(j).getEndereco()));
							System.out.println("Telefone:" +(listc.get(j).getTelefone()));
		}






		}

		case 2:

		String nomecli = (JOptionPane.showInputDialog("Introduza o cliente que quer pesquisar"));



		for (Cliente cli: listc)  {
			if (cli.getNome().equals(nomecli)){
							System.out.println(cli.getNome());
							System.out.println(cli.getNrcliente());
							System.out.println(cli.getD_nasc());
							System.out.println(cli.getEndereco());
							System.out.println(cli.getTelefone());
			}  
		}

		}

Estava a tentar aqui este código porque eu queria uma espécie de menu com opções para escolher introduzir cliente ou pesquisar, mas isso dá.me erro, porque eu tenho dois cases e nos dois uso a mesma list, como é que posso dar a volta a esta situação?

Edited by Baderous
geshi

Peace, Love & Empathy by: Kurt Cobain

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.