package projetofinal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Set;
import javax.swing.JOptionPane;
public class AluguelQuarto{
private Date dataEntrada = null, dataSaida = null;
private int numPessoas, horaEntrada, minutoEntrada, horaSaida, minutoSaida, numCamas, numDiarias, numQuarto;
static private double valorDiaria =30;
private double totalPagar;
private String nome;
private int quartos [] = new int [60];
//Construtor padrão
AluguelQuarto(){
}
//Construtor Sobrecarregado
AluguelQuarto(int numQuarto, String nome, Date dataEntrada, int horaEntrada,
int minutoEntrada, int numPessoas){
setNumQuarto (numQuarto);
setNome (nome);
setDataEntrada (dataEntrada);
setHoraEntrada (horaEntrada);
setMinutoEntrada (minutoEntrada);
setNumPessoas (numPessoas);
}
//Metodos de modificação
public void setDataEntrada (Date dataEntrada){
this.dataEntrada = dataEntrada;
}
public void setHoraEntrada (int horaEntrada){
this.horaEntrada = horaEntrada;
}
public void setMinutoEntrada (int minutoEntrada){
this.minutoEntrada = minutoEntrada;
}
public void setDataSaida (Date dataSaida){
this.dataSaida = dataSaida;
}
public void setHoraSaida (int horaSaida){
this.horaSaida = horaSaida;
}
public void setMinutoSaida (int minutoSaida){
this.minutoSaida = minutoSaida;
}
public void setNumCamas (int numCamas){
this.numCamas = numCamas;
}
public void setNumPessoas (int numPessoas){
this.numPessoas = numPessoas;
}
public void setNumQuarto(int numQuarto){
this.numQuarto = numQuarto;
}
//Método para setar o valor da diaria somente se ele for maior que 0
public void setValorDiaria(double valorDiaria){
this.valorDiaria = valorDiaria;
while (valorDiaria <= 0){
valorDiaria = Double.parseDouble (JOptionPane.showInputDialog ("Digite um valor valido"));
}
}
public void setNome (String nome){
this.nome = nome;
}
//Métodos de acesso
public Date getDataEntrada(){
return dataEntrada;
}
public int getHoraEntrada(){
return horaEntrada;
}
public int getMinutoEntrada(){
return minutoEntrada;
}
public Date getDataSaida(){
return dataSaida;
}
public int getHoraSaida(){
return horaSaida;
}
public int getMinutoSaida(){
return minutoSaida;
}
public int getNumDiarias(){
return numDiarias;
}
public double getTotalPagar(){
return totalPagar;
}
public String getNome (){
return nome;
}
//Método que calcula o numero de diarias
public void calcnumdiarias(){
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setLenient(false);
numDiarias = (int)((dataSaida.getTime() - dataEntrada.getTime())/1000 / 60 / 60 / 24);
if (horaSaida == 12 && minutoSaida > 0){
numDiarias++;
}
if (horaSaida > 12){
numDiarias++;
}
}
//Método que calcular o total a ser pago de acordo com o tipo de aluguel (quarto ou chalé)
public void calctotalpagar(){
if (numQuarto <= 50){
totalPagar = numDiarias * valorDiaria * numPessoas;
}
if (numQuarto > 50 && numQuarto <= 60){
totalPagar = (numDiarias * (valorDiaria * 1.2) * numPessoas) + numCamas * (valorDiaria * 0.10);
}
}
//Método que altera o valor da diaria
public void alterarvalor(){
setValorDiaria (Double.parseDouble (JOptionPane.showInputDialog ("Digite o novo valor da diária")));
while (valorDiaria <= 0){
valorDiaria = Double.parseDouble (JOptionPane.showInputDialog ("Digite uma valor valido"));
}
}
//Método para registrar entrada
public void RegistrarEntrada(){
numQuarto = Integer.parseInt (JOptionPane.showInputDialog("Digite o número do quarto"));
//Verificar se o quarto está ou não ocupado
if (quartos[numQuarto]== 0){
quartos[numQuarto]= 1;
}
else{
JOptionPane.showMessageDialog (null, "Quarto ocupado!!");
menu();
}
nome = JOptionPane.showInputDialog ("Digite o nome do locatário");
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setLenient(false);
//Método para verificar se a data digitada é valida
try {
dataEntrada = df.parse(JOptionPane.showInputDialog("Informe a data de entrada no formato dd/mm/aaaa"));
}
catch (ParseException ex1){
JOptionPane.showMessageDialog(null, "Data inválida!!!");
try{
dataEntrada = df.parse(JOptionPane.showInputDialog("Informe uma data válida!"));
}
catch (ParseException ex2){
JOptionPane.showMessageDialog(null, "Data inválida!!!");
try{
dataEntrada = df.parse(JOptionPane.showInputDialog("Informe uma data válida!"));
}
catch (ParseException ex3){
JOptionPane.showMessageDialog(null, "Data inválida!!!");
}
}
}
horaEntrada = Integer.parseInt (JOptionPane.showInputDialog ("Digite a hora da entrada"));
minutoEntrada = Integer.parseInt (JOptionPane.showInputDialog ("Digite o minuto de entrada"));
numPessoas = Integer.parseInt (JOptionPane.showInputDialog ("Digite o numero de pessoas"));
if (numQuarto > 50 && numQuarto <= 60){
numCamas = Integer.parseInt (JOptionPane.showInputDialog ("Digite o numero de camas extras"));
}
}
//Metodo para registrar saida
public void RegistrarSaida(){
numQuarto = Integer.parseInt (JOptionPane.showInputDialog("Digite o número do quarto"));
//Verificar se o quarto está ou não livre
if (quartos[numQuarto] == 0){
JOptionPane.showMessageDialog (null, "Quarto Livre");
menu();
}
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setLenient(false);
try {
dataSaida = df.parse(JOptionPane.showInputDialog("Informe a data de saída no formato dd/mm/aaaa"));
}
catch (ParseException ex1){
JOptionPane.showMessageDialog(null, "Data inválida!!!");
try{
dataSaida = df.parse(JOptionPane.showInputDialog("Informe uma data válida!"));
}
catch (ParseException ex2){
JOptionPane.showMessageDialog(null, "Data inválida!!!");
try{
dataSaida = df.parse(JOptionPane.showInputDialog("Informe uma data válida!"));
}
catch(ParseException ex3){
JOptionPane.showMessageDialog(null, "Data inválida!!!");
}
}
}
horaSaida = Integer.parseInt (JOptionPane.showInputDialog ("Digite a hora da saída"));
minutoSaida = Integer.parseInt (JOptionPane.showInputDialog ("Digite o minuto de saida"));
quartos[numQuarto] = 0;
}
//Método que imprime o recibo
public void recibo(){
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setLenient(false);
System.out.println ("=========================="
+ "\n Locatário: "+ getNome()
+ "\n Data de Entrada: "+df.format(dataEntrada)+" às "+getHoraEntrada()+":"+getMinutoEntrada()
+ "\n Data de Saída: "+df.format(dataSaida)+" às "+getHoraSaida()+":"+getMinutoSaida()
+ "\n Número de Diárias: "+getNumDiarias()
+ "\n Total a pagar: R$"+getTotalPagar());
}
//Método que mostra o menu na tela para que o usuario possa escolher o que fazer
public void menu(){
int opcao = Integer.parseInt (JOptionPane.showInputDialog ("Digite a opção desejada, sendo"+
"\n 1 - para registrar a entrada em um quarto"+
"\n 2 - para registrar a saida do quarto"+
"\n 3 - para alterar o valor da diária"+
"\n 4 - para sair"));
while (opcao != 4){
switch(opcao){
case 1:
RegistrarEntrada();
break;
case 2:
RegistrarSaida();
calcnumdiarias();
calctotalpagar();
recibo();
break;
case 3:
alterarvalor();
break;
default:
JOptionPane.showMessageDialog (null, "Opção invalida");
}
opcao = Integer.parseInt (JOptionPane.showInputDialog ("Digite a opção desejada, sendo"+
"\n 1 - para registrar a entrada em um quarto"+
"\n 2 - para registrar a saida do quarto"+
"\n 3 - para alterar o valor da diária"+
"\n 4 - para sair"));
}
}
}
package projetofinal;
import java.util.Date;
public class AluguelChale extends AluguelQuarto{
//Construtor padrão
AluguelChale(){
}
//Construtor sobrecarregado
AluguelChale(int numQuarto, String nome, Date dataEntrada, int horaEntrada,
int minutoEntrada, int numPessoas, int numCamas){
setNumQuarto (numQuarto);
setNome (nome);
setDataEntrada(dataEntrada);
setHoraEntrada (horaEntrada);
setMinutoEntrada (minutoEntrada);
setNumPessoas (numPessoas);
setNumCamas (numCamas);
}
}
package projetofinal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class Executavel {
public static void main (String args[]) throws ParseException{
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
//Instancia de objetos e chamando o menu para exibir as opções
AluguelQuarto AQ1 = new AluguelQuarto();
AQ1.menu();
AluguelQuarto AQ2 = new AluguelQuarto();
AQ2.menu();
AluguelChale AC1 = new AluguelChale ();
AC1.menu();
AluguelChale AC2 = new AluguelChale();
AC2.menu();
}
}
Como vocês podem ver, instanciei 4 objetos na classe executável, o problema é que eu digito um numero de quarto pro objeto 1 e queria que quando eu digitasse esse mesmo numero de quarto pro objeto 2 ou qualquer outro dos objetos instanciados aparecesse a mensagem falando que o quarto está ocupado, o problema é que isso não acontece, só acontece se eu digitar o mesmo numero do quarto mais de uma vez pro mesmo objeto.
Gostaria de saber o que posso alterar no programa para fazer essa verificação, é só isso que está faltando no meu programa.
Desde já agradeço a atenção de todos.