Jump to content

Programa simples de gerenciamento dum parque de estacionamento


Recommended Posts

Posted

Exercício 1

Considere que um parque de estacionamento automóvel pretende uma aplicação para ajudar no cálculo do montante a pagar por cada utente, da receita total do dia, do número total de veículos e também o tempo médio de aparcamento.

O parque abre às 6 e encerra às 24horas e todos os carros devem sair até essa hora.

O preço da primeira hora é 1€, a 2ª é 0.80€ e as restantes 0.70E€.

Faça um programa, devidamente modularizado, que esteja constantemente a receber, à saída de cada carro, a hora de entrada ( horas e minutos) e a hora de saída ( horas e minutos), determine o total a pagar. Quando for introduzido hora e minuto de entrada e a hora e minuto de saída, tudo com valores 0, o programa termina indicando a receita total do dia, o número total de veículos aparcados e também o tempo médio de aparcamento.

import javax.swing.JOptionPane;
public class Main {
        
    public static void main(String[] args) {
        
        String e_h,e_m,s_h,s_m;
        int e_hora,e_minuto,s_hora,s_minuto, min_e, min_s,perm,n_horas,ncars;
        double preco,total;
        total=0;
        preco=0;
        ncars=0;
        
        do
        {
             
            
             do
             {
                //Introduçao das Hora / Minutos de Entrada
                e_h=JOptionPane.showInputDialog("Entrada (atençao parque Abre às 6 e fecha às 24h) \nHora: ");
                e_hora=Integer.parseInt(e_h);
                e_m=JOptionPane.showInputDialog("Entrada \nMinutos: ");
                e_minuto=Integer.parseInt(e_m);
        
                 //Introduçao das Hora / Minutos de Saida
                s_h=JOptionPane.showInputDialog("Saida (atençao parque Abre às 6 e fecha às 24h) \nHora: ");
                s_hora=Integer.parseInt(s_h);
                s_m=JOptionPane.showInputDialog("Saida \nMinutos: ");
                s_minuto=Integer.parseInt(s_m);
               
             }[b] while( (e_hora<6) ||(e_hora>24) || (s_hora<e_hora));[/b]
        
        //conversao de horas em minutos
        min_e=(e_hora * 60) + e_minuto;
        min_s=(s_hora * 60) + s_minuto;
                
        //calcular tempo de permanencia no parque
        perm=min_s-min_e; 
        
        // numero de horas no parque
        n_horas= perm / 60;
                
        // se estiver apenas 2 horas no parque
        if ((n_horas ==1) || (perm % 60 != 0))
        {
            preco=1;
        }
       
        if (n_horas == 2)
        { 
           preco=1;
           preco= preco + 0.80;
        }
        
        if (n_horas > 2)
        {
           preco=1; 
           preco = (preco + 0.80) + ((n_horas-2) * 0.70);
        }
        
        //Os minutos apos uma hora inteira
        if ((perm % 60 != 0 ) && (n_horas ==1))
        {
           preco = preco + 0.80;
        }
        if ((perm % 60 != 0 ) && (n_horas >= 2))
        {
           preco = preco + 0.70;
        }
        total=total+preco;
        ncars=ncars+1;
        JOptionPane.showMessageDialog(null,"O gajo esteve: "+n_horas+" e vai pagar: "+preco);
        } while((e_hora!=0) || (e_minuto!=0) || (s_hora!=0) || (s_minuto!=0));
        
        
       
        ncars=ncars--;
        JOptionPane.showMessageDialog(null,"Hoje rendeu: "+total+" passaram por aki: "+ncars);
        
        
        System.exit(0);
    }
}

Estou com dificuldades em controlar se a hora introduzida é superior a 6 e inferior a 24, porque se a hora / minutos forem todas iguais a zero o programa é suposto encerrar :S

Alguma alma caridosa pode dar uma maozinha?

PS: já agora, como se faz um menu em java?

Posted

Para começar, quando puseres código, usa a ferramenta GeSHi para ficar o código mais legível, com corzinhas e tal...

Passando ao teu problema, podes colocar um if logo no início do while em que se as horas e os minutos forem todos 0 o ciclo while pára. (Caso não saibas, tens o break; que faz isso mesmo).

Quanto ao menu, não te posso ajudar porque nunca mexi em swing, só aplicações de consola.

Posted

esse tipo de cenas: breaks, gotos, e isso ... n sao contra um boa estruturaçao dum programa? ?

PS: ya funciona, devia ter pensado nisso antes 😛 .

Obrigado

  • 2 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.