Estacionamento - JAVA - Usando SWING

10 respostas
T

Boa dia pessoa, estou começando a programar em java a pouco tempo e preciso de uma ajuda de vcs.

Tenho que fazer o seguinte trabalho.

"O estacionamento deve ter, no mínimo, uma tela de controle de passagem de veículos.
Carros ? R$4,00
Motos ? R$2,00
Caminhões ? R$4,00 por eixo

É necessário armazenar a data de entrada e de saida(dd/mm/aaaa hh:mi:ss) cada veículo.

ISSO TUDO AI EU JA FIZ.

AKI COMEÇA MINHA DUVIDA:

O software ainda deve permitir ainda as seguintes operações:

  1. Calcular o número de veículos que passaram no estacionamento em um
    determinado dia;

  2. Calcular qual tipo de veículo que entrou em maior número no estacionamento em
    um determinado dia;

Não consigo implementar essas duas funcionalidades.

meu programa esta dividido em 5 pacotes e varias classes.

– estacionamento
- Estacionamento.java

– gui
- EntradaVeiculos.java
- SaidaVeiculos.java
- Menu.java
- OutrasOpcoes.java
- MaiorMovimento.java
- MaiorCadastroTipo.java

– main
- main.java

– tools
- Data.java

– veiculos
-Veiculos
- Carro
- Moto
- Caminhao

10 Respostas

L

Porque vc não adiciona na sua classe veículo, o tipo de abilitação por exemplo, ou algo que direrencie um do outro… assim ,quando vc cadastrar um novo carro, a classe carro seta a super (Veículo) a variável abilitação como B, quando for moto, seta como A , e caminhão como E,…

Depois para pesquisar quando veículos por dia e seus tipos fica fácil…faz a pesquisa na data determinada e pega por exemplo todos os veículos com abilitação A… daí vc sabe quantas motos foram cadastradas naquele dia…

filipefox

1. Calcular o número de veículos que passaram no estacionamento em um
determinado dia;

Vc não usa um vetor de veiculos?
Percorra o vetor de veiculos, e exiba o número daqueles que possuam a data de entrada igual a data especificada pelo usuário.

Para a pergunta 2, o que está acima é uma ótima solução.

T

filipe, vale pela dica.

tentei fazer o que vc disse mas nao consigo de forma alguma. nao to conseguindo comparar. o resultado sempre é negativo

estou fazendo da seguinte forma.

public double CalculaMovimento(Data data){
		   double cont = 0;
		   int i;

		   for (i=0;i<numAtualVeiculos;i++){
	    	   if (data.equals(veiculos[i].getEntrada()))
	    	   {
	    		   System.out.println("igual"); 
	    		   cont = cont + 1;
	     	   }
	       } 
	    	   
	    	   return cont;

mas ele nao entra neste if de maneira nenhuma.
eu colocando pra imprirmir somente as datas elas sao exatamentes iguais.
ficam assim:
eu entro com

20/08/2008 12:0:00

e imprime:

20 de agosto de 2008 12:0:0

vou postar a minha classe data que eu peguei do professor.

package tools;

public class Data
{
	private int dia,mes,ano;
	private int hora,min,seg;
	private int meses[]={31,28,31,30,31,30,31,31,30,31,30,31};

	// construtores
	public Data()
	{
		dia=1;mes=1;ano=1970;hora=0;min=0;seg=0;
	}
	
	public Data(int d, int m, int a, int h, int mi, int s)
	{
		setData(d,m,a,h,mi,s);		
	}
	
	// métodos modificadores
	public void setData(int d, int m, int a, int h, int mi, int s)
	{
		dia=d;mes=m;ano=a;
		hora=h;	min=mi;	seg=s;
		validarData();		
	}
	
	// métodos
	public void validarData()
	{
		// verifica se o ano é bisexto
		if (bisexto(ano))
			meses[1]=29;
	
		// verifica se data é válida
		if (!(mes>0 && mes<13) || !(dia>0 && dia<=meses[mes-1]) || !(ano>=1970))
		{
			System.out.println("data invalida");
			System.out.println("a data foi colocada como: 01/01/1970 00:00:00");
			if (bisexto(ano))
				meses[1]=28;
			dia=1;mes=1;ano=1970;hora=0;min=0;seg=0;
			return;
		}		
	}
	
	
	public long dataSegundos()
	{
		int i;
		long aux;
		long dias=0;
		
		// considera os anos bisextos
		for (i=1970;i<ano;i++)
			if (bisexto(i))
				dias++;
	
		// soma os anos
		dias+=(ano-1970)*365;
	
		// soma os meses
		for (i=0;i<(mes-1);i++)
			dias+=meses[i];
		
		// soma os dias
		dias+=(dia-1);
	
		aux=dias*24*60*60;
	
		aux+=hora*3600;
		aux+=min*60;
		aux+=seg;
	
		return aux;		
	}
	
	public boolean bisexto(int ano)
	{
		if ((ano%4==0 && ano%100!=0) || (ano%400==0))
			return true;
		else
			return false;
	}
	
	
	public String toString ()
	{
		String aux;
		String nomesMeses[]={"janeiro","fevereiro","marco","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"};
	
		aux=dia+" de "+nomesMeses[mes-1]+" de "+ano+" "+hora+":"+min+":"+seg;
	
		return aux;
	}
	
}
Fernando_Generoso_da

Faz o seguinte:

Dá uma estudada na classe Calendar…

Pega a data que a pessoa quer fazer a consulta (Dia, Mes e Ano) apenas e a data dos veículos no banco(Dia mes e ano) e transforma no tipo long e compara. outro jeito é tu pegar por exemplo:

Todos os veiculos que entraram na quarta feira dia 27/08/2008. aí voce pega o calendar, e joga em uma variavel, a data 27/08/2008 00:00:00 AM e em uma segunda variavel a data 27/08/2008 23:59:59. aí pega a data que quer ser consultada joga para long todas e compara e ve se está dentro do intervalo do dia.

Espero ter ajudado :lol:

T

gostaria mt de fazer isso, mas como eu separo elas?

e como transformar para long?

pra usar a classe calendar eu me desfaço da minha classe date?:::???

ajudou bastante, mas continuo sem saber como fazer…

to quase começando tudo de novo

Fernando_Generoso_da
public class TesteCalendar {

	public static void main(String args[]) {
		Calendar cal = Calendar.getInstance();
		Date data_1 = null;
		Date data_2 = null;
		Date data_3 = null;

		//primeira hora do dia
		cal.set(Calendar.YEAR, 2008);
		cal.set(Calendar.MONTH, Calendar.AUGUST);
		cal.set(Calendar.DAY_OF_MONTH, 27);
		cal.set(Calendar.HOUR, 0);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MILLISECOND, 0);
		cal.set(Calendar.AM_PM, Calendar.AM);

		data_1 = cal.getTime();

		//ultima hora do dia
		cal.set(Calendar.HOUR, 23);
		cal.set(Calendar.MINUTE, 59);
		cal.set(Calendar.SECOND, 59);
		cal.set(Calendar.MILLISECOND, 99);
		cal.set(Calendar.AM_PM, Calendar.AM);

		data_2 = cal.getTime();

		//uma hora qualquer no dia
		cal.set(Calendar.HOUR, 14);
		cal.set(Calendar.MINUTE, 23);
		cal.set(Calendar.SECOND, 15);
		cal.set(Calendar.MILLISECOND, 00);
		cal.set(Calendar.AM_PM, Calendar.AM);

		data_3 = cal.getTime();

		System.out.println(data_1);
		System.out.println(data_2);
		System.out.println(data_3);

		long data1EmLong = data_1.getTime();
		long data2EmLong = data_2.getTime();
		long data3EmLong = data_3.getTime();

		if (data3EmLong > data1EmLong && data3EmLong < data2EmLong) {
			System.out.println("a data 3 é no mesmo dia!!!");
		} else {
			System.out.println("A data 3 não é no mesmo dia");
		}

	}

}
dicabeca

so uma duvida por acaso isso é para professora Gellars ?

T

hahahaha, esssa foi boa…

não é pra ela nao, mas bem que ela poderia me ajudar…
j afui aluno dela…mas em C, e nao em java

dicabeca

heheh é pq ela passou um trabalho assim tb hhahaha

T

e vc fez?
me ajuda a converter

Criado 26 de agosto de 2008
Ultima resposta 27 de ago. de 2008
Respostas 10
Participantes 5