Utilizar o que: método, arquivo.txt, objetos no Projetinho Onibus

6 respostas
S

Pessoal, alguém pode me orientar ou dar algumas dicas e idéias para desenvolver uma lógica para resolver o problema apresentado

Tenho algumas apostilas de manipulação de arquivo, métodos e objetos, porém tenho dificuldade no java.

Projetinho Ônibus:

  • Deverá controlar as poltronas de um ônibus (44 lugares).
  • O sistema controla a venda de passagens deste ônibus as janelas são representadas por pelos números ímpares e o corredor pelos pares, ambos de 1 a 44.
  • O nome do passageiro, rg e número da poltrona deverá ser gravado em um arquivo, a venda só poderá ser feita caso a poltrona esteja vazia, para isso, o sistema solicita o número da poltrona para que seja feita uma consulta ao arquivo.
  • Emitir um relatório com apenas as poltronas que se encontram ocupadas.

Agradeço desde já pela atenção.

6 Respostas

Andre_Brito

Cara, um array de 44 lugares.
Aí você pode tanto pensar nesse array sendo único ou dividir ele em 2 (para ficarem duas fileiras de pares).
Os “i mod 2 != 0” são ímpares e os outros são pares.
Use a classe File para fazer um arquivo disso. Se você falou que tem algumas apostilas de arquivos, deve ser fácil de fazer então.
Guarde, na classe de Passageiro a posição em que ele se encontra (todos podem começar no 0). Para que você saiba quais cadeiras estão ocupadas e quais não estão.

Umas 3 classes no máximo devem resolver seu problema.

S

Obrigado “dedejava”

Amanhã vou iniciar a desenvolver a partir de sua orientação, e qualquer dificuldade eu atualizo esse tópico.

Valeu

sergiotaborda

Sergio Prado:
Pessoal, alguém pode me orientar ou dar algumas dicas e idéias para desenvolver uma lógica para resolver o problema apresentado

Tenho algumas apostilas de manipulação de arquivo, métodos e objetos, porém tenho dificuldade no java.

Projetinho Ônibus:

  • Deverá controlar as poltronas de um ônibus (44 lugares).
  • O sistema controla a venda de passagens deste ônibus as janelas são representadas por pelos números ímpares e o corredor pelos pares, ambos de 1 a 44.
  • O nome do passageiro, rg e número da poltrona deverá ser gravado em um arquivo, a venda só poderá ser feita caso a poltrona esteja vazia, para isso, o sistema solicita o número da poltrona para que seja feita uma consulta ao arquivo.
  • Emitir um relatório com apenas as poltronas que se encontram ocupadas.

Crie um objeto Onibus, um objeto Poltrona e um objeto Pessoa

Onibus tem vários Lugar e cada lugar pertence a uma pessoa e o codigo fica ± assim

class Onibus

   List<Poltrona> poltronas= new ArrayList<Poltrona>(44);

   public Onibus(){
         // preenche as poltronas todas vazias
         for (int i =0; i < 44 ; i++){
                poltronas.add(Poltrona.empty());
         }
   }

   public boolean reserva (int numeroPoltrona , Pessoa pessoa ){
              
       Poltrona p = poltronaPeloNumero(numeroPoltrona);

       return p.reservaPara(pessoa);
   }

   public Poltrona poltronaPeloNumero(int numeroPoltrona ){
       return poltronas.get(numeroPoltrona -1); // a poltrona 1 é o indece 0
   }

   public int numeroDaPoltrona(Poltrona p ){
        int pos = poltronas.indexOf(p);
       return pos < 0 ? -1 : pos+1; 
// a poltrona 1 é o indece 0 , mas pos ==-1 signifca não encontrado
   }


   public Poltrona adjacente(Poltrona p){

          int pos = numeroDaPoltrona(n);

         // se é impar pega o par seguinte. 
         // se é par , pega o impar anterior

         if (pos%2==0){
               return poltronas(pos-1);
         } else {
               return poltronas(pos+1);
          } 
          
   }


}

class Poltrona {

      Pessoa pessoa;

      public static Poltrona empty(){
         return new Poltrona();
       }

      public boolean estaLivre(){
           return pessoa==null;
      }

      public  boolean reservaPara(pessoa){
          if (!estaLivre()){ 
            return false; // não está livre. Não pode reservar.
          }
          this.pessoa = pessoa;
      }
}

etc… depois vc pensa em como salvar isso num aquivo (e por “arquivo” estou entendendo “não um banco de dados”). Vc pode usar XML por exemplo. É bem simples.

S

Valeu “sergiotaborda”, show de bola.

Após sua ajuda e material que consegui vou conclui esse exércicio.

Att.
Sérgio

S

Pessoal alguem pode me ajudar a corrgir os erros no codigo abaixo

// Classe principal utiliza a classe pessoa, que está no final da dessa classe UsaPessoa

import javax.swing.*;

public class UsaPessoa

{

// criaremos um vetor com 44 elementos do tipo CadCliente;

static Pessoa cad[] = new Pessoa[44];
// marca a primeira posição livre no vetor cad
static int posLivre=0;

// chama o método menu
public static void main(String args[]){
	menu();
}

// Menu
public static void menu()
{
	String opcao = JOptionPane.showInputDialog("1 - Cadastrar \n" + "2 - Imprimir");
	
	if(opcao != null)
	{
		
		switch(opcao.charAt(0))
		{
			case 1: Cadastrar(); break;
			case 2: Imprimir(); break;						
		}
	}	
}

public static void Cadastrar()
{
	// antes de cadastrar verifica se o cadastro nao está cheio
	if(posLivre < cad.length)
	{
		String nome = JOptionPane.showInputDialog("Digite o nome");
		String Rg   = JOptionPane.showInputDialog("Digite o Rg");
		String NumeroPoltrona = JOptionPane.showInputDialog("Digite o numero da poltrona");
		
		if(Nome != null && Rg != null && NumeroPoltrona != null)
		{
			// chama o método setNome da instancia cad[posLivre]
			cad[posLivre]= new CadCliente(nome,Integer.parseInt(Rg),Integer.parseInt(NumeroPoltrona));
			
			// Os metodos sets podem ser excluidos porque o construtor inicializa os atributos
			
			cad[posLivre].setNome(Nome);
			cad[posLivre].setRg(Integer.parseInt(Rg));
			cad[posLivre].setNumeroPoltrona(Integer.parseInt(NumeroPoltrona));
			
			poslivre++;
			
		}
	}			
	
	
}

public static void Imprimir()
{
	String aux;
	
	for(int i=0; i<posLivre;i++)
	{
		aux = cad[i].getNome;
		
		// verifica se o nome não é vazio, pois esta é a condição que criamos para excluir um registro do vetor cad
		if(!aux.equals(""))
			cad[i].Imprimir();
	}	
		
}

}

// classe pessoa com seus atributos

public class Pessoa

{

private String Nome;

private int Rg;

private int NumeroPoltrona;
Pessoa(String n, int r, int nro)
{
	Nome = n;
	Rg = r;
	NumeroPoltrona = nro;
}	

public void setNome(String aux){
	Nome = aux;
}     

public void setRg(int aux){
	Rg = aux;
}


// aqui tem como validar se a poltrona é par(corredor) ou impar(janela)
public void setNumeroPoltrona(int aux){
	NumeroPoltrona = aux;   	
}

public String getNome(){
	return Nome;
}

public int getRg(){
	return Rg;
}

public int getNumeroPoltrona(){
	return NumeroPoltrona;
}

}

Segue erros abaixo:

--------------------Configuration: --------------------

C:\Documents and Settings\Administrador\Meus documentos\Sergio\Trabalho Interdiciplinar\UsaPessoa.java:42: cannot resolve symbol

symbol  : variable Nome

location: class UsaPessoa

if(Nome != null && Rg != null && NumeroPoltrona != null)

^

C:\Documents and Settings\Administrador\Meus documentos\Sergio\Trabalho Interdiciplinar\UsaPessoa.java:45: cannot resolve symbol

symbol  : class CadCliente

location: class UsaPessoa

cad[posLivre]= new CadCliente(nome,Integer.parseInt(Rg),Integer.parseInt(NumeroPoltrona));

^

C:\Documents and Settings\Administrador\Meus documentos\Sergio\Trabalho Interdiciplinar\UsaPessoa.java:49: cannot resolve symbol

symbol  : variable Nome

location: class UsaPessoa

cad[posLivre].setNome(Nome);

^

C:\Documents and Settings\Administrador\Meus documentos\Sergio\Trabalho Interdiciplinar\UsaPessoa.java:53: cannot resolve symbol

symbol  : variable poslivre

location: class UsaPessoa

poslivre++;

^

C:\Documents and Settings\Administrador\Meus documentos\Sergio\Trabalho Interdiciplinar\UsaPessoa.java:67: cannot resolve symbol

symbol  : variable getNome

location: class Pessoa

aux = cad[i].getNome;

^

C:\Documents and Settings\Administrador\Meus documentos\Sergio\Trabalho Interdiciplinar\UsaPessoa.java:71: cannot resolve symbol

symbol  : method Imprimir  ()

location: class Pessoa

cad[i].Imprimir();

^

6 errors

Process completed.

Andre_Brito

Então cara… alguns dos seus erros são nas variáveis. A variável String Nome (o seu primeiro erro), na verdade possui 2 erros. Um é de que a variável declarada é nome e não Nome. E outra, quando você vai comprar string com alguma coisa, você deve usar o método .equals() que tem na documentação da classe String.

Quer uma dica?
Quando for postar códigos, coloque ele entre , pq fica muito mais fácil de ler.

Abraço.

Criado 9 de novembro de 2007
Ultima resposta 10 de nov. de 2007
Respostas 6
Participantes 3