I’m in trouble when I invoke a method - JAVA

Asked

Viewed 551 times

1

I’m working on an online movie rental code, simple code to deliver to my science school teacher and I’m having the following mistake: When I register a film and I will list the film appears the registered movies and customers want to know how I can leave in my method film only appear the movies and client only customers. Below is my code and its respective classes including the main method.

Class: Customer

import java.util.ArrayList;
import javax.swing.JOptionPane;

public class Cliente {

    private String nome;
    private String endereco;
    private String telefone;
    private String rua;
    private String complemento;
    private String cidade;
    private String estado;
    private String cep;

    private int codigo;
    private int numero;
    private int dia;
    private int mes;
    private int ano;
    private int mescadastro;
    private int diacadastro;
    private int anocadastro;

    public void setDiac(int dayc) {
        diacadastro = dayc;

    }

    public void setMesc(int mc) {
        mescadastro = mc;
    }

    public void setAnoc(int yearc) {
        anocadastro = yearc;

    }

    public void setDia(int day) {
        dia = day;

    }

    public void setMes(int m) {
        mes = m;
    }

    public void setAno(int year) {
        ano = year;

    }

    public void setRua(String n) {
        rua = n;
    }

    public void setNumero(int casan) {
        numero = casan;
    }

    public void setComplemento(String com) {
        complemento = com;

    }

    public void setCidade(String city) {
        cidade = city;
    }

    public void setEstado(String state) {
        estado = state;
    }

    public void setCep(String ddd) {
        cep = ddd;
    }

    public void setCodigo(int c) {
        codigo = c;
    }

    public void setNome(String name) {
        this.nome = name;

    }

    public void setTelefone(String tel) {
        telefone = tel;
    }

    public int getCodigo() {
        return codigo;
    }

    public String getNome() {
        return nome;
    }

}

Class: Film

import java.util.ArrayList;
import javax.swing.JOptionPane;

public class Filme {

    private String titulo;
    private String genero;
    private int Anodelancamento;
    private int Duracao;


private int codigo;



void setCodigo(int c){
    codigo = c;

}

int getCodigo(){

    return codigo;

}
    void setTitulo(String t) {

        titulo = t;

    }

    String getTitulo(){
        return titulo;
    }

    void setGenero(String g) {

        genero = g;

    }

    void setAnodelancamento(int an) {

        Anodelancamento = an;

    }

    void setDuracao(int d) {

        Duracao = d;

    }



}

Class: Clientedao

import java.util.Random;
import javax.swing.JOptionPane;

public class ClienteDao {

    /*
     DESENVOLVIDO BY: "Igor Team"
     */

    int codc;
    int tamanhoDoVetor;
    Cliente[] clienteArray;
    Filme[] filmeArray;

    public ClienteDao(int tamanhoDoVetor) {

        this.tamanhoDoVetor = tamanhoDoVetor;
        clienteArray = new Cliente[tamanhoDoVetor];
        filmeArray = new Filme[tamanhoDoVetor];
    }

    int aux;

    public void cadastroCliente(int n) {
        // Se eu ja cadastrei n numero e quero cadastrar mais n

        aux = n + aux;

        for (int ig = 0; ig < aux; ig++) {
            if (clienteArray[ig] == null) {

                clienteArray[ig] = new Cliente();
                clienteArray[ig].setCodigo(ig);
                clienteArray[ig].setNome(JOptionPane.showInputDialog((ig + 1) + "º Cliente\nNome: "));
                /* clienteArray[ig].setRua(JOptionPane.showInputDialog("Rua: "));
                 clienteArray[ig].setNumero(Integer.parseInt(JOptionPane.showInputDialog("Nº: ")));
                 clienteArray[ig].setComplemento(JOptionPane.showInputDialog("Complemento: "));
                 clienteArray[ig].setCidade(JOptionPane.showInputDialog("Cidade: "));
                 clienteArray[ig].setEstado(JOptionPane.showInputDialog("Estado: "));
                 clienteArray[ig].setCep(JOptionPane.showInputDialog("CEP: "));
                 clienteArray[ig].setTelefone(JOptionPane.showInputDialog("Telefone: "));

                 clienteArray[ig].setDiac(Integer.parseInt(JOptionPane.showInputDialog("Cadastro" + "\nDia: ")));
                 clienteArray[ig].setMesc(Integer.parseInt(JOptionPane.showInputDialog("Mês: ")));
                 clienteArray[ig].setAnoc(Integer.parseInt(JOptionPane.showInputDialog("Ano: ")));

                 clienteArray[ig].setDia(Integer.parseInt(JOptionPane.showInputDialog("Nascimento" + "\nDia: ")));
                 clienteArray[ig].setMes(Integer.parseInt(JOptionPane.showInputDialog("Mês: ")));
                 clienteArray[ig].setAno(Integer.parseInt(JOptionPane.showInputDialog("Ano: "))); */

            }

        }
    }

    public void consultarPorNome() {
        String nome = JOptionPane.showInputDialog(null, "Nome do cliente");
        for (Cliente c : clienteArray) {
            if (c != null) {
                if (c.getNome().equals(nome)) {
                    JOptionPane.showMessageDialog(null, "Codigo: "
                            + (c.getCodigo() + 1) + "\nNome: " + c.getNome());
                    return;
                }
            }
        }
        JOptionPane.showMessageDialog(null, "Nenhum cliente com o nome " + nome
                + " encontrado");
    }

    public void mostrarClientes() {
        for (Cliente c : clienteArray) {
            if (c != null) {
                if (c.getCodigo() != -1) {
                    JOptionPane.showMessageDialog(null, "Codigo: " + (c.getCodigo() + 1) + "\nNome: " + c.getNome());
return;
                }
            } 

        }
JOptionPane.showMessageDialog(null, "Nenhum cliente cadastrado");
    }

    public void apagarCliente() {
        int senhac2 = (Integer.parseInt(JOptionPane.showInputDialog(
                "DIGITE SUA SENHA DE ADMINISTRADOR")));

        if (senhac2 == 12345) {
            int codigo = (Integer.parseInt(JOptionPane.showInputDialog(
                    "Digite o código do cliente desejado: ")) - 1);
            if (procurarCliente(codigo) != true) {
                JOptionPane.showMessageDialog(null, "Cliente inexistente!");
            } else {
                //adicionei parenteses ao pegar o código para que ele incremente
                //1 apos pegar o código do cliente
                JOptionPane.showMessageDialog(null, "Código: " + ((clienteArray[codigo].getCodigo()) + 1)
                        + "\nNome: " + clienteArray[codigo].getNome());
                clienteArray[codigo] = null;
                JOptionPane.showMessageDialog(null,
                        "Exclusão concluida com SUCESSO");
            }
        } else {
            JOptionPane.showMessageDialog(null,
                    "SENHA INCORRETA DE ADMINISTRADOR");
        }
    }

    public boolean procurarCliente(int n) {

        for(int i = 0; i < clienteArray.length; i++) {
            if (clienteArray[i] != null) {
                if (clienteArray[i].getCodigo() == n) {
                    return true;
                }
            }

        }
        return false;
    }

    //FILMES
    char auxf = '0';
    int auxf2 = 0;
    int quantidadeFinal;

    public void cadastrarFilmes(int qtdfilme) {
        int senhac = (Integer.parseInt(JOptionPane.showInputDialog("DIGITE SUA SENHA DE ADMINISTRADOR")));
        if (senhac == 12345) {
            auxf2 = qtdfilme + auxf2;
            for (int fi = 0; fi < auxf2; fi++) {

                if (filmeArray[fi] == null) {
                    filmeArray[fi] = new Filme();
                    filmeArray[fi].setCodigo(fi);
                    filmeArray[fi].setTitulo(JOptionPane.showInputDialog("Titulo " + (fi + 1) + "º: "));

                    auxf = JOptionPane.showInputDialog("Gênero do filme\n1-AÇÃO\n2-COMÉDIA\n3-SUSPENSE\n4-DRAMA").charAt(0);

                    switch (auxf) {
                        case '1':
                            //                 filmeArray[fi].setGenero("AÇAO");
                            //               filmeArray[fi].setAnodelancamento(Integer.parseInt(JOptionPane.showInputDialog("Ano de Lançamento: ")));
                            //    filmeArray[fi].setDuracao(Integer.parseInt(JOptionPane.showInputDialog("Duração do filme em minutos: ")));
                            // JOptionPane.showMessageDialog(null, "Filme: " + filmeArray[fi].getTitulo() + " CADASTRADO!!!");
                            break;
                        case '2':
                            filmeArray[fi].setGenero("COMEDIA");
                            filmeArray[fi].setAnodelancamento(Integer.parseInt(JOptionPane.showInputDialog("Ano de Lançamento: ")));
                            filmeArray[fi].setDuracao(Integer.parseInt(JOptionPane.showInputDialog("Duração do filme em minutos: ")));
                            JOptionPane.showMessageDialog(null, "Filme: " + filmeArray[fi].getTitulo() + " CADASTRADO!!!");
                            break;
                        case '3':
                            filmeArray[fi].setGenero("SUSPENSE");
                            filmeArray[fi].setAnodelancamento(Integer.parseInt(JOptionPane.showInputDialog("Ano de Lançamento: ")));
                            filmeArray[fi].setDuracao(Integer.parseInt(JOptionPane.showInputDialog("Duração do filme em minutos: ")));
                            JOptionPane.showMessageDialog(null, "Filme: " + filmeArray[fi].getTitulo() + " CADASTRADO!!!");
                            break;
                        case '4':
                            filmeArray[fi].setGenero("DRAMA");
                            filmeArray[fi].setAnodelancamento(Integer.parseInt(JOptionPane.showInputDialog("Ano de Lançamento: ")));
                            filmeArray[fi].setDuracao(Integer.parseInt(JOptionPane.showInputDialog("Duração do filme em minutos: ")));
                            JOptionPane.showMessageDialog(null, "Filme: " + filmeArray[fi].getTitulo() + " CADASTRADO!!!");
                            break;
                        default:
                            JOptionPane.showMessageDialog(null, "Opção inválida! ou Gênero do filme não cadastro no sistema! ");
                    }

                }
            }
        } else {
            JOptionPane.showMessageDialog(null, "SENHA DO ADMINISTRADOR INVALIDA");
        }
    }

    public void listaFilmes() {
        for (Filme gi : filmeArray) {
            if (gi != null) {
                if (gi.getCodigo() != -1) {
                    JOptionPane.showMessageDialog(null, "Codigo: " + (gi.getCodigo() + 1) + "\nNome: " + gi.getTitulo());
return;
                } 
            }

        }

                    JOptionPane.showMessageDialog(null, "Não existe filmes registrados!");

    }

    public void removerFilmes() {
        int senhacd = (Integer.parseInt(JOptionPane.showInputDialog(
                "DIGITE SUA SENHA DE ADMINISTRADOR")));
        if (senhacd == 12345) {
            int codfi = (Integer.parseInt(JOptionPane.showInputDialog(
                    "Digite o código do filme: ")));
            codfi -= 1;
            if (codfi < 0 || codfi > tamanhoDoVetor) {
                JOptionPane.showMessageDialog(null, "Código inválido");
            } else {
                if (filmeArray[codfi] != null) {
                    JOptionPane.showMessageDialog(null, "Código: " + 
                            ((filmeArray[codfi].getCodigo())+1)
                            + "\nTitulo: " + filmeArray[codfi].getTitulo());
                    filmeArray[codfi].setCodigo(0);
                    filmeArray[codfi].setAnodelancamento(0);
                    filmeArray[codfi].setDuracao(0);
                    filmeArray[codfi].setGenero("");
                    filmeArray[codfi].setTitulo("");
                    JOptionPane.showMessageDialog(null, 
                            "Exclusão concluida com SUCESSO");
                } else {
                    JOptionPane.showMessageDialog(null, 
                            "Filme inexistente!");
                }
            }

        } else {
            JOptionPane.showMessageDialog(null, 
                    "SENHA DO ADMINISTRADOR INVALIDA");
        }
    }
//LOCAÇÕES

    public void alugarFilme() {


        String nomeCliente = JOptionPane.showInputDialog(null, 
                "Ola, Cliente! \n" + "Digite o seu nome: ");

        for (Cliente d : clienteArray) {
            if (d != null) {
                if (d.getNome().equals(nomeCliente)) {
                    JOptionPane.showMessageDialog(null, "Codigo: "
                            + (d.getCodigo() + 1) + "\nNome: " + d.getNome());

                    String NomeFilme = JOptionPane.showInputDialog(null, 
                            "Qual filme você procura?");
                    for (Filme c : filmeArray) {

                        if (c != null) {
                            if (c.getTitulo().equals(NomeFilme)) {
                                JOptionPane.showMessageDialog(null, "Codigo: "
                                        + (c.getCodigo() + 1) + "\nNome: " + c.getTitulo());
                                String x11 = JOptionPane.showInputDialog("escolha a melhor forma de pagamneto ^^ \n 1. Cartão\n2. Boleto\n3. À Vista");
                                switch (x11) {
                                    case "1": {
                                        String cod = JOptionPane.showInputDialog("Digite o número do seu cartão");
                                        if (cod.equals("0000000000000000") || cod.equals("1111111111111111") || cod.equals("2222222222222222")
                                                || cod.equals("3333333333333333") || cod.equals("4444444444444444") || cod.equals("5555555555555555")
                                                || cod.equals("6666666666666666") || cod.equals("7777777777777777") || cod.equals("8888888888888888")
                                                || cod.equals("9999999999999999") || (cod.length() != 16)) {
                                            JOptionPane.showMessageDialog(null, "Numero do cartao invalido");
                                        } else {
                                            int nParcelas = (Integer.parseInt(JOptionPane.showInputDialog("Digite o numero de parcelas ate 4x: ")));
                                            if (nParcelas >= 1 && nParcelas <= 4) {
                                                JOptionPane.showMessageDialog(null, "Filme alugado");
                                                JOptionPane.showMessageDialog(null, "o link para você assistir o filme esta desponivel por ate 24hr! ");
                                                Random gerador = new Random();
                                                int RA = (gerador.nextInt(90000));
                                                JOptionPane.showInputDialog(null, "HTTPS://www.locadoraMorenos.com.br/" + d.getNome() + "/" + RA, "HTTPS://www.locadoraMorenos.com.br/" + d.getNome() + "/" + RA);
                                                JOptionPane.showMessageDialog(null, "Obrigado pela preferencia ^^");
                                            } else {
                                                JOptionPane.showMessageDialog(null, "ERRO");

                                            }

                                        }
                                        break;
                                    }
                                    case "2": {
                                        JOptionPane.showMessageDialog(null, "Filme alugado");
                                        Random gerador = new Random();
                                        int RA2 = (gerador.nextInt(90000));
                                        JOptionPane.showInputDialog(null, "HTTPS://www.locadoraMorenos.com.br/boletobrasil/" + RA2);

                                        JOptionPane.showMessageDialog(null, "Apos o pagamento você recebera um e-mail com o link do filme");
                                        JOptionPane.showMessageDialog(null, "Obrigado pela preferencia ^^");
                                        break;
                                    }
                                    default: {
                                        JOptionPane.showMessageDialog(null, "Não trabalhamos com esta forma de pagamento");
                                    }
                                }
                            }
                        }
                    }

                }
            }
        }
    }

}

Class: Menu

import javax.swing.JOptionPane;

public class Menu {

     ClienteDao dao;
     int opcao;

    private final int CLIENTE = 1;
    private final int ADMIN = 2;
    private final int SAIR = 0;
    private final int CADASTRAR = 1;
    private final int CLI_LISTAR_FILMES = 2;
    private final int CLI_ALUGAR_FILME = 3;

    private final int CONSULTAR_POR_NOME = 2;
    private final int MOSTRAR_TODOS = 3;
    private final int EXCLUIR = 4;
    private final int CADASTRARFILME = 5;
    private final int LISTAR_FILMES = 6;
    private final int REMOVER_FILME = 7;
    private final int ALUGAR_FILME = 8;

    private final String MENU_PRINCIPAL = "Menu de opções\n1 - CLIENTE\n2 - "
            + "ADMINISTRADOR\n0 - SAIR";
    private final String MENU_CLIENTE = "Menu de operaçoes\n1 - Novo "
            + "cadastro\n2 - Mostrar Filmes\n3 - Alugar filme\n0 - Sair ";
    private final String MENU_ADMIN = "Menu de opções\n1 - cria conta de "
            + "cliente\n2 - consultar por nome\n3 - mostrar todos clientes\n4"
            + " - excluir\n5 - adicionar filme\n6  - listar filmes\n7 - "
            + "remover filmes\n8 - alugar filmes\n0 - sair";
    private final String BEMVINDO_CLIENTE = "BEM VINDO A CENTRAL DE "
            + "CADASTRAMENTO DIGITE 1 PARA CONTINUAR";
    private final String BEMVINDO_ADMIN = "BEM VINDO A CENTRAL DE "
            + "CADASTRAMENTO DIGITE 1 PARA CONTINUAR";

    public void menuPrincipal() {
        {

            int qtd = 100;
            dao = new ClienteDao(qtd);

            while (true) {
                opcao = Integer.parseInt(JOptionPane
                        .showInputDialog(MENU_PRINCIPAL));

                switch (opcao) {
                    case CLIENTE: {
                        this.menuCliente();
                        break;
                    }
                    case ADMIN: {
                        this.menuAdministrador();
                        break;
                    }
                    case SAIR: {
                        System.exit(0);
                        break;
                    }
                    default: {
                        JOptionPane.showMessageDialog(null, "Opção inválida");
                    }
                }
                dao.mostrarClientes();
            }
        }
    }

    private void menuCliente() {

        opcao = Integer.parseInt(JOptionPane.showInputDialog(MENU_CLIENTE));
        switch (opcao) {
            case CADASTRAR: {
                int qtdcliente = Integer.parseInt(JOptionPane
                        .showInputDialog(BEMVINDO_CLIENTE, null));
                if (qtdcliente == 1) {
                    dao.cadastroCliente(qtdcliente);
                } else {
                    JOptionPane.showMessageDialog(null, "Desculpe mas "
                            + "parece que você não digitou 1");
                }
                break;
            }
            case CLI_LISTAR_FILMES: {
                dao.listaFilmes();
                break;
            }
            case CLI_ALUGAR_FILME: {
                dao.alugarFilme();
                break;
            }
            case SAIR: {
                System.exit(0);
                break;
            }
        }
    }

    private void menuAdministrador() {
        int senha = Integer.parseInt(JOptionPane
                .showInputDialog("DIGITE SUA SENHA ADMINISTRADOR: "));
        if (senha == 12345) {
            opcao = Integer
                    .parseInt(JOptionPane.showInputDialog(MENU_ADMIN));
            switch (opcao) {
                case CADASTRAR: {
                    int qtdcliente = Integer
                            .parseInt(JOptionPane
                                    .showInputDialog(BEMVINDO_ADMIN, null));
                    if (qtdcliente == 1) {
                        dao.cadastroCliente(qtdcliente);
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "Desculpe mas parece que você não digitou 1");
                    }
                    break;
                }
                case CONSULTAR_POR_NOME: {
                    dao.consultarPorNome();
                    break;
                }
                case MOSTRAR_TODOS: {
                    dao.mostrarClientes();
                    break;
                }
                case EXCLUIR: {
                    dao.apagarCliente();
                    break;
                }
                case CADASTRARFILME: {
                    int qtdfilme = Integer.parseInt(JOptionPane.showInputDialog(
                            "Digite a quantidade de filme para cadastrar: ",
                            null));
                    dao.cadastrarFilmes(qtdfilme);

                    break;
                }
                case LISTAR_FILMES: {
                    dao.listaFilmes();
                    break;
                }
                case REMOVER_FILME: {
                    dao.removerFilmes();
                    break;
                }
                case ALUGAR_FILME: {
                    dao.alugarFilme();
                    break;
                }
                case SAIR: {
                    System.exit(0);
                    break;
                }
            }
        }
    }


}

Class: Program (containing the main method)

public class Programa {
    public static void main(String[] args) {
        Menu teste = new Menu();
        teste.menuPrincipal();

    }
}
  • 1

    I don’t understand. What’s the mistake?

  • if (senha == 12345) - Ugh...

2 answers

4


Your problem seems to be this line in your method menuPrincipal() class Menu:

dao.mostrarClientes();

Especially considering this is inside a bond while (true).


However, do you know what a DAO is for? I think not, because your DAO is not actually a DAO. A DAO should be an object whose only purpose is to save/persist/retrieve the information from your database, even if your database is just an array in memory.

But your DAO does a lot more than that. It also reads user input and contains business rules. That’s not right. The result of putting so many things inside the DAO is that it becomes a gambiarra in the shape of a spaghetti ball with no recognizable structure.

So here are some suggestions:

  1. In the method cadastroCliente(int n) the value of n always is 1. After all, if the user does not type 1, you do not let enter the method. Thus, you can delete this parameter and replace the aux = n + aux for aux++. And on the menu you can change that:
            int qtdcliente = Integer.parseInt(JOptionPane
                    .showInputDialog(BEMVINDO_CLIENTE, null));
            if (qtdcliente == 1) {
                dao.cadastroCliente(qtdcliente);
            } else {
                JOptionPane.showMessageDialog(null, "Desculpe mas "
                        + "parece que você não digitou 1");
            }

That’s why:

            JOptionPane.showMessageDialog(null, BEMVINDO_CLIENTE));
            dao.cadastroCliente();

And you also change the message to "TYPE 1 TO CONTINUE".

  1. Continuing in the method cadastroCliente(), instead of reading the customer’s name inside, get it from the outside. Use cadastroCliente(String nome). You can also delete the variable aux simply searching for the first empty space in the array. You do not need to track where it is beforehand. If the array is full, you throw an exception. So your method looks like this:
public void cadastroCliente(String nome) {
    int aux;
    for (aux = 0; aux < clienteArray.length && clienteArray[aux] != null; aux++) {}
    if (aux == clienteArray.length) {
        throw new DAOException("Não há mais espaço para cadastrar clientes");
    }
    Cliente c = new Cliente();
    c.setCodigo(aux);
    c.setNome(nome);
    clienteArray[aux] = c;
}

And on your menu:

            JOptionPane.showMessageDialog(null, BEMVINDO_CLIENTE));
            String nome = JOptionPane.showInputDialog("Nome do cliente:");
            try {
                dao.cadastroCliente(nome);
            } catch (DAOException e) {
                JOptionPane.showMessageDialog(null, "Descuple, ocorreu um erro:\n" + e.getMessage());
            }

And you create a class to represent the error in your DAO:

public class DAOException extends Exception {
    public DAOException(String message) {
         super(message);
    }

    public DAOException(String message, Throwable cause) {
         super(message, cause);
    }
}
  1. You should do something similar to the other DAO methods. Take as a parameter what should be registered, changed, consulted or deleted. In the case of the query, you must return what was consulted. If the method cannot perform its work for any reason, throw an exception and capture it in the above layer. NEVER read user data or display messages to the user within their DAO, as this is bad programming practice. The reason is that displaying or reading user data evades the responsibility of DAO. Ideally, if you were to port your system to a web environment, you should not need to change a single comma in the DAO, but because of the JOptionPane That’s not going to happen. So, don’t use the JOptionPane within the DAO.

  2. Your DAO works with two entities: customer and film. I recommend dividing it into two distinct Daos to avoid mixing the concepts.

  3. Exchange the System.exit(0); break; for return false; and at the end of the method put a return true;. Do the method menuPrincipal check what was returned by menuCliente and menuAdministrador (that will be boolean) instead of always repeating with the while (true). The reason for this is that aborting the execution of the program suddenly makes it difficult to perform any outstanding tasks and modifying the program becomes more complicated. The ideal is to let it finish naturally.

  4. And this is from here:

if (senhac2 == 12345)
...
if (senha == 12345)

IS HORRIBLE! The password is hardcoded in the source code and because of this cannot be changed or configured and once stolen the system is compromised. I don’t think your teacher will like that at all, because if I were your teacher, I would subtract points from you here, excuse my frankness. Okay, but what to do? At least put it in a variable to not get the password straight in the code. Ideally create a login DAO/passwords or maybe read from a file.

  1. This place is pretty fragile:
opcao = Integer.parseInt(JOptionPane
                    .showInputDialog(MENU_PRINCIPAL));

What happens if instead of typing a number I enter my name? The system breaks! The solution to this is to treat user input:

try {
    opcao = Integer.parseInt(JOptionPane
                    .showInputDialog(MENU_PRINCIPAL));
} catch (NumberFormatException e) {
    opcao = -1;
}
  1. To avoid coding the business logic within the switch, encapsulate it in a method. That is, instead:
            case CADASTRARFILME: {
                int qtdfilme = Integer.parseInt(JOptionPane.showInputDialog(
                        "Digite a quantidade de filme para cadastrar: ",
                        null));
                dao.cadastrarFilmes(qtdfilme);

                break;
            }

Use this:

private void cadastrarFilme() {
    int qtdfilme = Integer.parseInt(JOptionPane.showInputDialog(
            "Digite a quantidade de filme para cadastrar: ",
            null));
    dao.cadastrarFilmes(qtdfilme);
}

// ...

            case CADASTRARFILME: {
                cadastrarFilme();
                break;
            }

And with that, you wouldn’t need to be messing around inside cases of switch whenever changing a feature, because each feature will be isolated within a method.

  1. If you are using java 7 or higher, you can use Strings in switches. With this it is much easier to type something like "Rent movie" instead of "8". To make it easy for you, give a trim() and a toUpperCase() before using on switch.

  2. In the method cadastrarFilmes(int qtdfilme), you have it:

                switch (auxf) {
                    case '1':
                        //                 filmeArray[fi].setGenero("AÇAO");
                        //               filmeArray[fi].setAnodelancamento(Integer.parseInt(JOptionPane.showInputDialog("Ano de Lançamento: ")));
                        //    filmeArray[fi].setDuracao(Integer.parseInt(JOptionPane.showInputDialog("Duração do filme em minutos: ")));
                        // JOptionPane.showMessageDialog(null, "Filme: " + filmeArray[fi].getTitulo() + " CADASTRADO!!!");
                        break;
                    case '2':
                        filmeArray[fi].setGenero("COMEDIA");
                        filmeArray[fi].setAnodelancamento(Integer.parseInt(JOptionPane.showInputDialog("Ano de Lançamento: ")));
                        filmeArray[fi].setDuracao(Integer.parseInt(JOptionPane.showInputDialog("Duração do filme em minutos: ")));
                        JOptionPane.showMessageDialog(null, "Filme: " + filmeArray[fi].getTitulo() + " CADASTRADO!!!");
                        break;
                    case '3':
                        filmeArray[fi].setGenero("SUSPENSE");
                        filmeArray[fi].setAnodelancamento(Integer.parseInt(JOptionPane.showInputDialog("Ano de Lançamento: ")));
                        filmeArray[fi].setDuracao(Integer.parseInt(JOptionPane.showInputDialog("Duração do filme em minutos: ")));
                        JOptionPane.showMessageDialog(null, "Filme: " + filmeArray[fi].getTitulo() + " CADASTRADO!!!");
                        break;
                    case '4':
                        filmeArray[fi].setGenero("DRAMA");
                        filmeArray[fi].setAnodelancamento(Integer.parseInt(JOptionPane.showInputDialog("Ano de Lançamento: ")));
                        filmeArray[fi].setDuracao(Integer.parseInt(JOptionPane.showInputDialog("Duração do filme em minutos: ")));
                        JOptionPane.showMessageDialog(null, "Filme: " + filmeArray[fi].getTitulo() + " CADASTRADO!!!");
                        break;

To avoid all this code repetition, I suggest something like this:

                String generos[] = {"ACAO", "COMEDIA", "SUSPENSE", "DRAMA"};
                int escolhido = auxf - '0';
                if (escolhido <= 0 || escolhido >= generos.length) {
                    throw new DAOException("Gênero inválido.");
                }
                filmeArray[fi].setGenero(generos[escolhido - 1]);
                filmeArray[fi].setAnodelancamento(ano); // ano é um parâmtero do método.
                filmeArray[fi].setDuracao(duracao); // duracao é um parâmetro do método.

You should combine this approach with the approach used in cadastroCliente to keep the code clean.

Finally, this method should not verify the password, as this is not the responsibility of the DAO. The menu should only invoke the DAO when the password has already been checked as correct.

  1. Encapsulate your credit card verification logic in a static method. And remember that it is not the DAO that has to worry about doing this.

  2. Correct your code. Follow the variable naming conventions. Give meaningful names to your variables. Use the modifier private for fields in their classes. Remove unnecessary imports. All this helps A LOT.

There’s got to be dozens more things you could go over in your code. But what is above should already render you a good job to improve and correct your code.

  • Victor! Check your email :D Strong hug.

3

The problem is in class menu.

Every time you walk into while it shows customers dao.mostrarClientes();

  • Why the downvote? Apparently the line dao.mostrarClientes(); is left over in the method menuPrincipal, and is probably printing too many things!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.