filipe3632 Posted May 26, 2012 at 02:49 PM Report #458219 Posted May 26, 2012 at 02:49 PM (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 May 26, 2012 at 05:09 PM by Baderous geshi Peace, Love & Empathy by: Kurt Cobain
_7_up_ Posted May 26, 2012 at 03:46 PM Report #458229 Posted May 26, 2012 at 03:46 PM 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.
filipe3632 Posted May 28, 2012 at 04:03 PM Author Report #458576 Posted May 28, 2012 at 04:03 PM 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
_7_up_ Posted May 28, 2012 at 10:56 PM Report #458729 Posted May 28, 2012 at 10:56 PM (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 May 28, 2012 at 10:57 PM by _7_up_
filipe3632 Posted June 1, 2012 at 05:55 PM Author Report #459748 Posted June 1, 2012 at 05:55 PM (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 June 1, 2012 at 08:23 PM by Baderous geshi Peace, Love & Empathy by: Kurt Cobain
_7_up_ Posted June 3, 2012 at 01:18 AM Report #459950 Posted June 3, 2012 at 01:18 AM 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?
filipe3632 Posted June 3, 2012 at 12:43 PM Author Report #459979 Posted June 3, 2012 at 12:43 PM 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
joelbrito Posted June 3, 2012 at 10:22 PM Report #460145 Posted June 3, 2012 at 10:22 PM É 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
filipe3632 Posted June 3, 2012 at 10:38 PM Author Report #460148 Posted June 3, 2012 at 10:38 PM E então como faço depois para adicionar, para gravar e para ver? Peace, Love & Empathy by: Kurt Cobain
joelbrito Posted June 4, 2012 at 09:35 AM Report #460192 Posted June 4, 2012 at 09:35 AM (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 June 4, 2012 at 09:37 AM 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
filipe3632 Posted June 4, 2012 at 09:03 PM Author Report #460388 Posted June 4, 2012 at 09:03 PM (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 June 4, 2012 at 09:27 PM by Baderous geshi Peace, Love & Empathy by: Kurt Cobain
filipe3632 Posted June 4, 2012 at 09:22 PM Author Report #460398 Posted June 4, 2012 at 09:22 PM Neste momento só quero testar para os clientes, depois para os funcionários é igual. Peace, Love & Empathy by: Kurt Cobain
joelbrito Posted June 4, 2012 at 11:40 PM Report #460434 Posted June 4, 2012 at 11:40 PM 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
filipe3632 Posted June 5, 2012 at 03:40 PM Author Report #460580 Posted June 5, 2012 at 03:40 PM 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
joelbrito Posted June 5, 2012 at 04:02 PM Report #460588 Posted June 5, 2012 at 04:02 PM 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
filipe3632 Posted June 5, 2012 at 08:45 PM Author Report #460692 Posted June 5, 2012 at 08:45 PM 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
joelbrito Posted June 5, 2012 at 11:58 PM Report #460773 Posted June 5, 2012 at 11:58 PM 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
mundo Posted June 6, 2012 at 02:39 PM Report #460900 Posted June 6, 2012 at 02:39 PM 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>();
filipe3632 Posted June 6, 2012 at 09:36 PM Author Report #461090 Posted June 6, 2012 at 09:36 PM Não te estou a perceber joel, esse cli.getNome ficaria onde? Peace, Love & Empathy by: Kurt Cobain
filipe3632 Posted June 6, 2012 at 10:21 PM Author Report #461114 Posted June 6, 2012 at 10:21 PM (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 June 7, 2012 at 01:15 PM by Baderous geshi Peace, Love & Empathy by: Kurt Cobain
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now