Boa noite computêros…

Dando continuidade a nossas aventuras pelo J2ME, lembram da Introdução?

Sabem que eu tenho uma certa mania de postar provas e exercícios aqui no blog… se procurarem vão encontrar algumas espalhadas por aí…

Que tal mais uma???

Monte um programa em J2ME que efetue a votação de filmes considerando os seguintes critérios:

  • Para cada filme será exibido o encarte. Serão 5 filmes para a votação.
  • Cada filme deverá receber notas de 0 a 5.
  • A votação só encerra quando a última pessoa efetuar a votação. O qual deverá sempre ser perguntado após a votação.
  • Ao final deverá exibir a classificação em ordem de crescente e o encarte do filme(obs: a referência será a média das notas votadas).

Código:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class votacaoRegimental extends MIDlet implements CommandListener{
    private Command exitCommand;
    private Command votarCommand;
    private Command resCommand;
    private Command voltarCommand;

    private Display display;

    private Image img_1,img_2,img_3,img_4,img_5;
    private ChoiceGroup filme_1,filme_2,filme_3,filme_4,filme_5;
    private int qtde_1,qtde_2,qtde_3,qtde_4,qtde_5;

    private Form frmPrincipal;
    private Form frmVoto;
    private Form frmResultado;

    public votacaoRegimental(){
    	display = Display.getDisplay(this);
    	frmPrincipal = new Form("Votação de filmes");

    	qtde_1 = 0;
    	qtde_2 = 0;
    	qtde_3 = 0;
    	qtde_4 = 0;
    	qtde_5 = 0;

    	exitCommand = new Command("Sair", Command.EXIT, 1);
        votarCommand = new Command("Votar", Command.SCREEN, 1);

        String votos[] = {"0","1","2","3","4","5"};

        filme_1 = new ChoiceGroup("Filme 1",Choice.EXCLUSIVE, votos,null);
        filme_2 = new ChoiceGroup("Filme 2",Choice.EXCLUSIVE, votos,null);
        filme_3 = new ChoiceGroup("Filme 3",Choice.EXCLUSIVE, votos,null);
        filme_4 = new ChoiceGroup("Filme 4",Choice.EXCLUSIVE, votos,null);
        filme_5 = new ChoiceGroup("Filme 5",Choice.EXCLUSIVE, votos,null);

        filme_1.setSelectedIndex(0,true);

        frmPrincipal.addCommand(exitCommand);
        frmPrincipal.addCommand(votarCommand);

        try{
        	img_1 = Image.createImage("/filme1.png");
        	frmPrincipal.append(img_1);
        }
        catch(Exception e){}
        frmPrincipal.append(filme_1);
        try{
        	img_1 = Image.createImage("/filme2.png");
        	frmPrincipal.append(img_1);
        }
        catch(Exception e){}
        frmPrincipal.append(filme_2);
        try{
        	img_1 = Image.createImage("/filme3.png");
        	frmPrincipal.append(img_1);
        }
        catch(Exception e){}
        frmPrincipal.append(filme_3);
        try{
        	img_1 = Image.createImage("/filme4.png");
        	frmPrincipal.append(img_1);
        }
        catch(Exception e){}
        frmPrincipal.append(filme_4);
        try{
        	img_1 = Image.createImage("/filme5.png");
        	frmPrincipal.append(img_1);
        }
        catch(Exception e){}
        frmPrincipal.append(filme_5);        

        frmPrincipal.setCommandListener(this);
    }

    public void zerar(){
    	filme_1.setSelectedIndex(0,true);
    	filme_2.setSelectedIndex(0,true);
    	filme_3.setSelectedIndex(0,true);
    	filme_4.setSelectedIndex(0,true);
    	filme_5.setSelectedIndex(0,true);
    }

    public void startApp() {
        display.setCurrent(frmPrincipal); //o formulário será o objeto inicial da tela
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public void commandAction(Command c, Displayable s) {
        if (c == exitCommand) {
            destroyApp(false);
            notifyDestroyed();
        }
        else if (c == votarCommand){
        	qtde_1 += filme_1.getSelectedIndex();
        	qtde_2 += filme_2.getSelectedIndex();
        	qtde_3 += filme_3.getSelectedIndex();
        	qtde_4 += filme_4.getSelectedIndex();
        	qtde_5 += filme_5.getSelectedIndex();

        	Votos v = new Votos();
        }
    }

    class Votos implements CommandListener{
    	public Votos(){
    		frmVoto = new Form("Voto computado");

    		voltarCommand = new Command("Voltar", Command.SCREEN,1);
      		frmVoto.addCommand(voltarCommand);
      		display.setCurrent(frmVoto);

      		resCommand = new Command("Resultado",Command.SCREEN,1);
      		frmVoto.addCommand(resCommand);      		

      		frmVoto.setCommandListener(this);

      		StringItem texto = new StringItem("Voto Computado, você pode visualizar os resultados, ou voltar para a Votação através do menu.","...");
      		frmVoto.append(texto);
    	}

    	public void commandAction(Command c, Displayable s) {
        	if (c==voltarCommand){
        		zerar();
        		display.setCurrent(frmPrincipal);
        	}
        	else if (c==resCommand){
        		Resultado r = new Resultado();
        	}
    	}
    }

    class Resultado implements CommandListener{
    	public Resultado(){
    		frmResultado = new Form("Resultado da Votação");
    		voltarCommand = new Command("Menu Principal", Command.SCREEN,1);
      		frmResultado.addCommand(voltarCommand);
      		display.setCurrent(frmResultado);
      		frmResultado.setCommandListener(this);

      		int[] qtde_votos = {qtde_1,qtde_2,qtde_3,qtde_4,qtde_5};
      		int[] numero_filme = {1,2,3,4,5};

      		int aux;
      		int aux2;
      		for(int i=0;i< qtde_votos[j]){
      					aux = qtde_votos[i];
      					aux2 = numero_filme[i];

      					qtde_votos[i] = qtde_votos[j];
      					numero_filme[i] = numero_filme[j];

      					qtde_votos[j] = aux;
      					numero_filme[j] = aux2;
      				}
      			}
      		}

      		Image imgs[] = new Image[numero_filme.length];
      		for (int i=0;i

O código num tá comentado porque num tive tempo ainda de comentá-lo, portanto, se houver alguma dúvida comenta ae…

Obs:Desculpa pela zona do código, mas foi assim mesmo que fiz… Não é a melhor forma eu concordo… mas numa prova valendo 5 pontos na média, não podemos pensar só em como fazer da melhor forma, maximizando a utilização de recursos (deixe isso para Teoria da Computação).