Você está na página 1de 20

FACULDADE ANHANGUERA - SANTA BRBARA DOESTE TECNOLOGIA EM ANLISE E DESENVOLVIMENTO DE SISTEMAS

PROGRAMAO ORIENTADA A OBJETOS

SANTA BRBARA DOESTE 2013

FACULDADE ANHANGUERA - SANTA BRBARA DOESTE TECNOLOGIA EM ANLISE E DESENVOLVIMENTO DE SISTEMAS

ALAN CHRISTIAN ANDREANI.................RA: 4423863955 ANDR LUIS CREPALDI.............................RA: 4486879454 ANSELMO OTERO NETO.............................RA: 4251865857 CLIO SILVA DE ALMEIDA.......................RA: 4486872812 TANIA DA SILVA..........................................RA: 3226022892

Trabalho apresentado ao professor Paulo Barreto. Disciplina: Programao Orientada a Objetos. Turma: 4 Srie. Turno: noite. Curso: Tecnologia em Analise e Desenvolvimento de Sistemas.

SANTA BRBARA DOESTE 2013

SUMRIO

1 Introduo..................................................................................................................... 2 ETAPA 1...................................................................................................................... 2.1 Classe Menu............................................................................................................... 2.2 Classe Reserva........................................................................................................... 3 ETAPA 2...................................................................................................................... 3.1 Classe Menu............................................................................................................... 3.2 Classe Reserva........................................................................................................... 3.3 Testes de Mesa.......................................................................................................... 3 Concluso..................................................................................................................... 4 Bibliografia...................................................................................................................

4 5 5 6 10 10 13 16 19 20

SANTA BRBARA DOESTE 2013

INTRODUO A finalidade deste trabalho desenvolver um sistema de hospedagem para o gerenciamento de reservas de hspedes; para tanto, utilizaremos a linguagem Java, fazendo uso da interface Eclipse. O grupo estudou as vrias possibilidades de desenvolvimento e apresenta a soluo, considerando todos os requisitos solicitados.

SANTA BRBARA DOESTE 2013

ETAPA 1 2.1 Classe Menu


/** * Modelagem da Classe Menu Principal * @authores Andr/Alan/Anselmo/Clio/Tania * @date 20/09/2013 */ import java.util.Scanner; public class Menu { public static void main (String args[]) { //Atributos int menu; int ocupado = 0; Scanner scan = new Scanner(System.in); //Instancia da classe Reserva Reserva objReserva = new Reserva(); //Exibindo o Menu do { System.out.println("Sistema de Hospedagem"); System.out.println("==============================="); System.out.println("1 - Registrar entrada em quarto"); System.out.println("2 - Registrar sada do quarto"); System.out.println("0 - Sair"); System.out.println("==============================="); System.out.print("Escolha uma opo: "); menu = scan.nextInt(); scan.nextLine(); System.out.println(); //Verificando a opo escolhida switch(menu) { //Registrar Entrada case 1: //Verifica se o quarto tem disponibilidade if(ocupado == 0) { System.out.print("Nome do hspede: "); objReserva.setNome(scan.nextLine()); System.out.print("Data: "); if (objReserva.setDataEntrada(scan.nextLine()) == false) { System.out.println("Data invlida!!!"); System.out.print("Tecle ENTER para continuar..."); scan.nextLine(); break; } System.out.print("Horrio: "); if (objReserva.setHoraEntrada(scan.nextLine()) ==

false)

{ System.out.println("Horrio invlido!!!"); System.out.print("Tecle ENTER para continuar..."); scan.nextLine(); break; ocupado = 1; System.out.println("\n\n\n\n\n\n\n\n\n"); break;

} //Se no tiver disponvel, exibe a mensagem else { System.out.println("Quarto indisponvel!"); System.out.print("Tecle ENTER para continuar..."); scan.nextLine(); break; } //Registrar Sada case 2: //Verifica se o quarto est ocupado para efetuar a sada if(ocupado == 1) { System.out.print("Data: "); if (objReserva.setDataSaida(scan.nextLine()) == false) { System.out.println("Data invlida!"); System.out.print("Tecle ENTER para continuar..."); scan.nextLine(); break; } System.out.print("Horrio: "); if (objReserva.setHoraSaida(scan.nextLine()) == false) { System.out.println("Horrio invlido!"); System.out.print("Tecle ENTER para continuar..."); scan.nextLine(); break; } objReserva.setNumDiarias(); System.out.println("============================================"); System.out.println("Locatrio: "+ objReserva.getNome()); System.out.println("Data e horrio de entrada: "+ objReserva.getDataEntrada() +" s "+ objReserva.getHoraEntrada()); System.out.println("Data e horrio de sada: "+ objReserva.getDataSaida() +" s "+ objReserva.getHoraSaida()); System.out.println("Nmero de dirias: "+ objReserva.getNumDiarias()); System.out.println("============================================"); ocupado = 0; System.out.print("Tecle ENTER para continuar..."); scan.nextLine(); } //Se no tiver ocupado, exibe a mensagem else { System.out.println("Quarto desocupado!");

System.out.print("Tecle ENTER para continuar..."); scan.nextLine(); break;

opo vlida");

//Opo para a sada do sistema case 0: System.out.println("Agradecemos a preferncia!"); break; default: System.out.println("Opo invlida! Favor escolher uma System.out.println("Tecle ENTER para continuar..."); scan.nextLine();

} } //Se o usurio digitar 0, o sistema encerrado while(menu != 0); scan.close(); }

2.2 Classe Reserva


/** * Modelagem da Classe Reserva * @authores Andr/Alan/Anselmo/Clio/Tania * @date 20/09/2013 */ //referencia biblioteca GregorianCalendar para o tratamento das datas import java.util.GregorianCalendar; public class Reserva { //Atributos private String nome; private GregorianCalendar dtEntrada = new GregorianCalendar(); private GregorianCalendar dtSaida = new GregorianCalendar(); private String dataEntrada, dataSaida; private int diaEntrada, diaSaida, mesEntrada, mesSaida, anoEntrada, anoSaida; private String horaEntrada, horaSaida; private int timeEntrada, timeSaida, minEntrada, minSaida; private int qtdeDiarias; private double valorDiaria; //Mtodos Setters/Getters public String getNome() { return nome; } public String getDataEntrada() { return dataEntrada; }

public String getDataSaida() { return dataSaida; } public String getHoraEntrada() { return horaEntrada; } public String getHoraSaida() { return horaSaida; } public int getNumDiarias() { return qtdeDiarias; } public double getValorDiaria() { return valorDiaria; } public double getTotalReceber() { return this.valorDiaria * this.qtdeDiarias; } public void setNome(String locatario) { //Valida o valor do parametro locatario (nulo ou em branco) if(locatario != null && !locatario.trim().equals("")) nome = locatario; } public boolean setDataEntrada(String data) { //Valida o parametro data para a extrao da data/mes/ano if(data != null && !data.trim().equals("")) { dataEntrada = data; //converte os 2 primeiros dgitos para inteiros, referentes ao dia diaEntrada = Integer.parseInt(data.trim().substring(0,2)); //converte os 2 dgitos referentes ao mes para inteiros mesEntrada = Integer.parseInt(data.trim().substring(3,5)); //converte os 4 ltimos dgitos para inteiros, referentes ao ano anoEntrada = Integer.parseInt(data.trim().substring(6,10)); //Seta o valor do dia/mes/ano para o atributo dtEntrada, para uso da funo do componente dtEntrada.set(GregorianCalendar.DATE, diaEntrada); dtEntrada.set(GregorianCalendar.MONTH, mesEntrada); dtEntrada.set(GregorianCalendar.YEAR, anoEntrada); dtEntrada.getTime(); return true; } else return false; } public boolean setDataSaida(String data) { if(data != null && !data.trim().equals("")) { dataSaida = data; //converte os 2 primeiros dgitos para inteiros, referentes ao dia

diaSaida = //converte mesSaida = //converte anoSaida =

Integer.parseInt(data.trim().substring(0,2)); os 2 dgitos referentes ao mes para inteiros Integer.parseInt(data.trim().substring(3,5)); os 4 ltimos dgitos para inteiros, referentes ao ano Integer.parseInt(data.trim().substring(6,10));

//Seta o valor do dia/mes/ano para o atributo dtEntrada, para uso da funo do componente dtSaida.set(GregorianCalendar.DATE, diaSaida); dtSaida.set(GregorianCalendar.MONTH, mesSaida); dtSaida.set(GregorianCalendar.YEAR, anoSaida); dtSaida.getTime(); } else return false; if (anoSaida < anoEntrada) { return false; } else if (mesSaida < mesEntrada) { return false; } else if (diaSaida < diaEntrada) { return false; } else return true; } public boolean setHoraEntrada(String hora) { if(hora != null && !hora.trim().equals("")) { horaEntrada = hora; //Converte os 2 primeiros digitos para inteiro referentes a hora timeEntrada = Integer.parseInt(hora.trim().substring(0,2)); //Converte os 2 ltimos digitos para inteiro referentes aos minutos minEntrada = Integer.parseInt(hora.trim().substring(3,5)); return true; } else return false; } public boolean setHoraSaida(String hora) { if(hora != null && !hora.trim().equals("")) { horaSaida = hora; //Converte os 2 primeiros digitos para inteiro referentes a hora timeSaida = Integer.parseInt(hora.trim().substring(0,2)); //Converte os 2 ltimos digitos para inteiro referentes aos minutos minSaida = Integer.parseInt(hora.trim().substring(3,5)); } else

10

return false; if (diaEntrada == diaSaida && mesEntrada == mesSaida && anoEntrada == anoSaida) { if (timeSaida < timeEntrada) return false; else if (horaSaida == horaEntrada && minSaida < minEntrada) return false; else return true; } else return true; } public void setNumDiarias() { int horaEntrada1 = 0, horaSaida1 = 0; if(timeEntrada < 12) horaEntrada1 = 1; if(timeSaida >= 12) horaSaida1 = 1; //Uso da funo getTimeInMillis para converter as datas de entrada e sada em milisegundos para o calculo das diarias long entradaMilisegundos = dtEntrada.getTimeInMillis(); long saidaMilisegundos = dtSaida.getTimeInMillis(); qtdeDiarias = (int) ((saidaMilisegundos - entradaMilisegundos) / (24*60*60*1000) + horaEntrada1 + horaSaida1); } }

ETAPA 2 3.1 Classe Menu


/** * Modelagem da Classe Menu Principal * @authores Andr/Alan/Anselmo/Clio/Tania * @date 20/09/2013 */ import java.util.Scanner; public class Menu { public static void main (String args[]) { //Atributos int menu; int ocupado = 0; Scanner scan = new Scanner(System.in); //Instancia da classe Reserva Reserva objReserva = new Reserva(); //Exibindo o Menu do { System.out.println("Sistema de Hospedagem");

11

System.out.println("==============================="); System.out.println("1 - Registrar entrada em quarto"); System.out.println("2 - Registrar sada do quarto"); System.out.println("3 - Atualizar o valor da diria"); System.out.println("0 - Sair"); System.out.println("==============================="); System.out.print("Escolha uma opo: "); menu = scan.nextInt(); scan.nextLine(); System.out.println(); //Verificando a opo escolhida switch(menu) { //Registrar Entrada case 1: //Verifica se o quarto tem disponibilidade if(ocupado == 0) { System.out.print("Nome do hspede: "); objReserva.setNome(scan.nextLine()); System.out.print("Data: "); if (objReserva.setDataEntrada(scan.nextLine()) == false) { System.out.println("Data invlida!!!"); System.out.print("Tecle ENTER para continuar..."); scan.nextLine(); break; } System.out.print("Horrio: "); if (objReserva.setHoraEntrada(scan.nextLine()) == { System.out.println("Horrio invlido!!!"); System.out.print("Tecle ENTER para continuar..."); scan.nextLine(); break; ocupado = 1; System.out.println("\n\n\n\n\n\n\n\n\n"); break;

false)

} //Se no tiver disponvel, exibe a mensagem else { System.out.println("Quarto indisponvel!"); System.out.print("Tecle ENTER para continuar..."); scan.nextLine(); break; } //Registrar Sada case 2: //Verifica se o quarto est ocupado para efetuar a sada if(ocupado == 1) { System.out.print("Data: "); if (objReserva.setDataSaida(scan.nextLine()) == false) { System.out.println("Data invlida!");

12

System.out.print("Tecle ENTER para continuar..."); scan.nextLine(); break; } System.out.print("Horrio: "); if (objReserva.setHoraSaida(scan.nextLine()) == false) { System.out.println("Horrio invlido!"); System.out.print("Tecle ENTER para continuar..."); scan.nextLine(); break; } objReserva.setNumDiarias(); System.out.println("============================================"); System.out.println("Locatrio: "+ objReserva.getNome()); System.out.println("Data e horrio de entrada: "+ objReserva.getDataEntrada() +" s "+ objReserva.getHoraEntrada()); System.out.println("Data e horrio de sada: "+ objReserva.getDataSaida() +" s "+ objReserva.getHoraSaida()); System.out.println("Nmero de dirias: "+ objReserva.getNumDiarias()); System.out.println("Total devido: R$ "+ objReserva.getTotalReceber()); System.out.println("============================================"); ocupado = 0; System.out.print("Tecle ENTER para continuar..."); scan.nextLine(); } //Se no tiver ocupado, exibe a mensagem else { System.out.println("Quarto desocupado!"); System.out.print("Tecle ENTER para continuar..."); scan.nextLine(); break; } //Opo para alterao do valor da diria case 3: { System.out.print("Novo valor da diria: "); objReserva.setValorDiaria(scan.nextDouble()); scan.nextLine(); System.out.println("\n\n\nValor atualizado com sucesso!!!\n\n\n"); break; } //Opo para a sada do sistema case 0: System.out.println("Agradecemos a preferncia!"); break; default: System.out.println("Opo invlida! Favor escolher uma System.out.println("Tecle ENTER para continuar..."); scan.nextLine();

opo vlida");

13

} //Se o usurio digitar 0, o sistema encerrado while(menu != 0); scan.close(); }

3.2 Classe Reserva


/** * Modelagem da Classe Reserva * @authores Andr/Alan/Anselmo/Clio/Tania * @date 20/09/2013 */ //referencia biblioteca GregorianCalendar para o tratamento das datas import java.util.GregorianCalendar; public class Reserva { //Atributos private String nome; private GregorianCalendar dtEntrada = new GregorianCalendar(); private GregorianCalendar dtSaida = new GregorianCalendar(); private String dataEntrada, dataSaida; private int diaEntrada, diaSaida, mesEntrada, mesSaida, anoEntrada, anoSaida; private String horaEntrada, horaSaida; private int timeEntrada, timeSaida, minEntrada, minSaida; private int qtdeDiarias; private double valorDiaria; //Mtodos Setters/Getters public String getNome() { return nome; } public String getDataEntrada() { return dataEntrada; } public String getDataSaida() { return dataSaida; } public String getHoraEntrada() { return horaEntrada; } public String getHoraSaida() { return horaSaida; } public int getNumDiarias() { return qtdeDiarias; }

14

public double getValorDiaria() { return valorDiaria; } public double getTotalReceber() { return this.valorDiaria * this.qtdeDiarias; } public void setNome(String locatario) { //Valida o valor do parametro locatario (nulo ou em branco) if(locatario != null && !locatario.trim().equals("")) nome = locatario; } public boolean setDataEntrada(String data) { //Valida o parametro data para a extrao da data/mes/ano if(data != null && !data.trim().equals("")) { dataEntrada = data; //converte os 2 primeiros dgitos para inteiros, referentes ao dia diaEntrada = Integer.parseInt(data.trim().substring(0,2)); //converte os 2 dgitos referentes ao mes para inteiros mesEntrada = Integer.parseInt(data.trim().substring(3,5)); //converte os 4 ltimos dgitos para inteiros, referentes ao ano anoEntrada = Integer.parseInt(data.trim().substring(6,10)); //Seta o valor do dia/mes/ano para o atributo dtEntrada, para uso da funo do componente dtEntrada.set(GregorianCalendar.DATE, diaEntrada); dtEntrada.set(GregorianCalendar.MONTH, mesEntrada); dtEntrada.set(GregorianCalendar.YEAR, anoEntrada); dtEntrada.getTime(); return true; } else return false; } public boolean setDataSaida(String data) { if(data != null && !data.trim().equals("")) { dataSaida = data; //converte os 2 primeiros dgitos para inteiros, referentes ao dia diaSaida = Integer.parseInt(data.trim().substring(0,2)); //converte os 2 dgitos referentes ao mes para inteiros mesSaida = Integer.parseInt(data.trim().substring(3,5)); //converte os 4 ltimos dgitos para inteiros, referentes ao ano anoSaida = Integer.parseInt(data.trim().substring(6,10)); //Seta o valor do dia/mes/ano para o atributo dtEntrada, para uso da funo do componente dtSaida.set(GregorianCalendar.DATE, diaSaida); dtSaida.set(GregorianCalendar.MONTH, mesSaida); dtSaida.set(GregorianCalendar.YEAR, anoSaida); dtSaida.getTime(); } else return false;

15

if (anoSaida < anoEntrada) { return false; } else if (mesSaida < mesEntrada) { return false; } else if (diaSaida < diaEntrada) { return false; } else return true; } public boolean setHoraEntrada(String hora) { if(hora != null && !hora.trim().equals("")) { horaEntrada = hora; //Converte os 2 primeiros digitos para inteiro referentes a hora timeEntrada = Integer.parseInt(hora.trim().substring(0,2)); //Converte os 2 ltimos digitos para inteiro referentes aos minutos minEntrada = Integer.parseInt(hora.trim().substring(3,5)); return true; } else return false; } public boolean setHoraSaida(String hora) { if(hora != null && !hora.trim().equals("")) { horaSaida = hora; //Converte os 2 primeiros digitos para inteiro referentes a hora timeSaida = Integer.parseInt(hora.trim().substring(0,2)); //Converte os 2 ltimos digitos para inteiro referentes aos minutos minSaida = Integer.parseInt(hora.trim().substring(3,5)); } else return false; if (diaEntrada == diaSaida && mesEntrada == mesSaida && anoEntrada == anoSaida) { if (timeSaida < timeEntrada) return false; else if (horaSaida == horaEntrada && minSaida < minEntrada) return false; else return true; } else return true; } public void setNumDiarias() {

16

int horaEntrada1 = 0, horaSaida1 = 0; if(timeEntrada < 12) horaEntrada1 = 1; if(timeSaida >= 12) horaSaida1 = 1; //Uso da funo getTimeInMillis para converter as datas de entrada e sada em milisegundos para o calculo das diarias long entradaMilisegundos = dtEntrada.getTimeInMillis(); long saidaMilisegundos = dtSaida.getTimeInMillis(); qtdeDiarias = (int) ((saidaMilisegundos - entradaMilisegundos) / (24*60*60*1000) + horaEntrada1 + horaSaida1); } //Armazena o valor da diria public void setValorDiaria(double valorDiaria) { if(valorDiaria > 0) { this.valorDiaria = valorDiaria; } } }

3.2 Testes de mesa Sistema de hospedagem =============================== 1 - Registrar entrada em quarto 2 - Registrar sada do quarto 3 - Atualizar o valor da diria 0 - Sair =============================== Escolha uma opo: 1 Nome do locatrio: Andr Luis Crepaldi Data: 13/09/2013 Horrio: 10:00 Sistema de hospedagem ===============================

17

1 - Registrar entrada em quarto 2 - Registrar sada do quarto 3 - Atualizar o valor da diria 0 - Sair =============================== Escolha uma opo: 2 Data: 15/09/2013 Horrio: 17:00 Valor da diria: 50.00 ============================================ Locatrio: Andr Luis Crepaldi Data e horrio de entrada: 13/09/2013 s 10:00 Data e horrio de sada: 15/09/2013 s 17:00 Nmero de dirias: 3 Total devido: R$ 150.0 ============================================ Tecle ENTER para continuar... Opes invlidas: Sistema de hospedagem =============================== 1 - Registrar entrada em quarto 2 - Registrar sada do quarto 3 - Atualizar o valor da diria 0 - Sair ===============================

18

Escolha uma opo: 2 Quarto desocupado! Tecle ENTER para continuar... Sistema de hospedagem =============================== 1 - Registrar entrada em quarto 2 - Registrar sada do quarto 3 - Atualizar o valor da diria 0 - Sair =============================== Escolha uma opo: 5 Opo invlida! Favor escolher uma opo vlida Tecle ENTER para continuar... Sistema de hospedagem =============================== 1 - Registrar entrada em quarto 2 - Registrar sada do quarto 3 - Atualizar o valor da diria 0 - Sair =============================== Escolha uma opo: 1

Quarto indisponvel! Tecle ENTER para continuar...

19

CONCLUSO Quando fazemos uso dos conceitos da programao orientada a objetos, alcanamos consistncia, organizao, segurana, produtividade, alm de muitos outros benefcios. A praticidade na manuteno dos cdigos tambm um fator importante a salientar, proporcionando a leitura e entendimento de forma universal.

SANTA BRBARA DOESTE 2013

20

BIBLIOGRAFIA

Internet: http://www.tutorialspoint.com/java/util/gregoriancalendar_getgregorianchange.htm, acessada em 17/09/2013.

SANTA BRBARA DOESTE 2013