Ir para conteúdo


Revista PROGRAMAR – Edição 46 (Setembro 2014): Download já disponível!

- - - - -

Programa de gestão de loja


  • Por favor inicie sessão para responder
27 respostas a este tópico

#1 filipe3632

filipe3632

    Boolean User

  • Membro
  • PipPipPip
  • 142 mensagens

Publicado 26 de Maio de 2012 - 14:49

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...

Código (Java):
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

Editado por Baderous, 26 de Maio de 2012 - 17:09.
geshi


#2 _7_up_

_7_up_

    Boolean User

  • Membro
  • PipPipPip
  • 132 mensagens

Publicado 26 de Maio de 2012 - 15:46

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.

#3 filipe3632

filipe3632

    Boolean User

  • Membro
  • PipPipPip
  • 142 mensagens

Publicado 28 de Maio de 2012 - 16:03

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

#4 _7_up_

_7_up_

    Boolean User

  • Membro
  • PipPipPip
  • 132 mensagens

Publicado 28 de Maio de 2012 - 22:56

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:

Código :
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.

Editado por _7_up_, 28 de Maio de 2012 - 22:57.


#5 filipe3632

filipe3632

    Boolean User

  • Membro
  • PipPipPip
  • 142 mensagens

Publicado 01 de Junho de 2012 - 17:55

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?

Código (Java):
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

Editado por Baderous, 01 de Junho de 2012 - 20:23.
geshi


#6 _7_up_

_7_up_

    Boolean User

  • Membro
  • PipPipPip
  • 132 mensagens

Publicado 03 de Junho de 2012 - 01:18

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?

#7 filipe3632

filipe3632

    Boolean User

  • Membro
  • PipPipPip
  • 142 mensagens

Publicado 03 de Junho de 2012 - 12:43

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

#8 joelbrito

joelbrito

    void

  • Membro
  • PipPip
  • 67 mensagens

Publicado 03 de Junho de 2012 - 22:22

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

Código (Java):
ArrayList<Cliente> list = new ArrayList<Cliente>();

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

#9 filipe3632

filipe3632

    Boolean User

  • Membro
  • PipPipPip
  • 142 mensagens

Publicado 03 de Junho de 2012 - 22:38

E então como faço depois para adicionar, para gravar e para ver?

#10 joelbrito

joelbrito

    void

  • Membro
  • PipPip
  • 67 mensagens

Publicado 04 de Junho de 2012 - 09:35

 joelbrito, em 03 de Junho de 2012 - 22:22, disse:

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...
Código :
....
list.add(cliente);
....
tal como fizeste para as strings

Tens aqui tudo sobre ArrayList:
http://docs.oracle.c.../ArrayList.html

Editado por joelbrito, 04 de Junho de 2012 - 09:37.


#11 filipe3632

filipe3632

    Boolean User

  • Membro
  • PipPipPip
  • 142 mensagens

Publicado 04 de Junho de 2012 - 21:03

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

Código (Java):
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

Editado por Baderous, 04 de Junho de 2012 - 21:27.
geshi


#12 filipe3632

filipe3632

    Boolean User

  • Membro
  • PipPipPip
  • 142 mensagens

Publicado 04 de Junho de 2012 - 21:22

Neste momento só quero testar para os clientes, depois para os funcionários é igual.

#13 joelbrito

joelbrito

    void

  • Membro
  • PipPip
  • 67 mensagens

Publicado 04 de Junho de 2012 - 23:40

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:
Código (Java):
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...

#14 filipe3632

filipe3632

    Boolean User

  • Membro
  • PipPipPip
  • 142 mensagens

Publicado 05 de Junho de 2012 - 15:40

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?

#15 joelbrito

joelbrito

    void

  • Membro
  • PipPip
  • 67 mensagens

Publicado 05 de Junho de 2012 - 16:02

 filipe3632, em 05 de Junho de 2012 - 15:40, disse:

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...)

 filipe3632, em 05 de Junho de 2012 - 15:40, disse:

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.

#16 filipe3632

filipe3632

    Boolean User

  • Membro
  • PipPipPip
  • 142 mensagens

Publicado 05 de Junho de 2012 - 20:45

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 ... Código :
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());
                                   
                           
            }


#17 joelbrito

joelbrito

    void

  • Membro
  • PipPip
  • 67 mensagens

Publicado 05 de Junho de 2012 - 23:58

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();
.....

#18 mundo

mundo

    Try-Catch User

  • Membro
  • PipPipPipPip
  • 267 mensagens

Publicado 06 de Junho de 2012 - 14:39

 filipe3632, em 04 de Junho de 2012 - 21:03, 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

Código (Java):
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:
[code=java]
Código :
ArrayList<Cliente> list = new ArrayList();

O correto seria:
Código :
ArrayList<Cliente> list = new ArrayList<Cliente>();


#19 filipe3632

filipe3632

    Boolean User

  • Membro
  • PipPipPip
  • 142 mensagens

Publicado 06 de Junho de 2012 - 21:36

Não te estou a perceber joel, esse cli.getNome ficaria onde?

#20 filipe3632

filipe3632

    Boolean User

  • Membro
  • PipPipPip
  • 142 mensagens

Publicado 06 de Junho de 2012 - 22:21

Código (Java):
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?

Editado por Baderous, 07 de Junho de 2012 - 13:15.
geshi