Program reservasi hotel dengan java oop - inputan dinamis dengan JOptionPane dan BufferedReader. Pada kesempatan kali ini, saya akan memberikan tutorial untuk membuat program reservasi hotel dengan menggunakan bahasa pemrograman Java, menggunakan konsep OOP atau object oriented programming dan bisa melakukan inputan yang dinamis.
sebelum membuat program ini, saya secara pribadi merasa kesulitan mencari tutorial yang jelas di internet tentang penggunaan inputan dinamis pada program java yang berbasis objek atau oop. tutorial yang ada di internet sebagian besar atau bahkan semua nya menggunkan inputan yang bersifat statis.
Program Reservasi Hotel dengan Java OOP
program reservasi hotel berbasis java yang saya buat ini terdapat 3 class utama yaitu class entitas yang berisi method setter dan getter, class proses yang berisi proses logika dan perhitungan aritmatika serta class main yang berisi program utama yang akan di eksekusi.
alur program
- user menginputkan inputan data diri dan pilihan kamar hotel di program Main.
- setelah itu, inputan yang telah di berikan akan masuk ke class entitas yang berisi method getter dan setter.
- setelah masuk ke file entitas, lalu inputan tadi di proses di class prosses.
- setelah di proses di class proses, maka hasil nya akan di tampilkan kembali di class main.
Langkah - langkah membuat program reservasi hotel
Inputan dengan JOptionPane
- Siapkan teks editor yang biasa kalian gunakan, bisa menggunakan notepad++, sublime, atau bisa juga menggunakan IDE Netbeans.
- ketikkan kode berikut dan simpan dengan nama EntitasSewaHotel.java file ini berfungsi sebagai Class entitas yang berisi method getter dan setter.
public class EntitasSewaHotel {
protected int jenis, lama, status;
protected String nama, alamat;
public int getJenis() {
return jenis;
}
public void setJenis(int jenis) {
this.jenis = jenis;
}
public int getLama() {
return lama;
}
public void setLama(int lama) {
this.lama = lama;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getAlamat() {
return alamat;
}
public void setAlamat(String alamat) {
this.alamat = alamat;
}
} - Kemudian buat file baru lagi dengan nama HitungTarifHotel.java Class ini nantinya akan berfungsi sebagai class yang bertugas melakukan perhitungan aritmatika dan percabangan.
public class HitungTarifHotel extends EntitasSewaHotel{
private int tarif;
private double diskon;
private double bayar;
private String kamar;
private String ostatus;
public HitungTarifHotel() {
}
public String get_status(){
if(status==1)
ostatus="Member";
else if(status==2)
ostatus="Non Member";
return ostatus;
}
public int get_tarif(){
if(jenis==1){
//kamar="Deluxe ";
tarif = lama*275000;
}
else if (jenis==2){
//kamar="Suite";
tarif = lama*300000;
}
else if (jenis==3){
//kamar="President";
tarif = lama*375000;
}
else{
}
return tarif;
}
public String get_kamar(){
if(jenis==1){
kamar="Deluxe ";
//tarif = lama*275000;
}
else if (jenis==2){
kamar="Suite";
//tarif = lama*300000;
}
else if (jenis==3){
kamar="President";
//tarif = lama*375000;
}
else{
}
return kamar;
}
public double get_diskon(){
if (status==1){
if(lama>=4 && lama<=7){
diskon = 0.20 * tarif;
}
else if (lama>7) {
diskon = 0.35 * tarif;
}
}
else if (status==2){
if (lama>=4 && lama<=7){
diskon = 0.10 * tarif;
}
else if (lama>7){
diskon = 0.15 * tarif;
}
}
return diskon;
}
public double get_bayar(){
return tarif-diskon;
}
} - Setelah itu buat file dengan nama SewaHotelMain.java file ini berfungsi sebagai kelas utama atau main class yang akan di eksekusi dan di jalankan.
import java.io.IOException;
import javax.swing.JOptionPane;
public class SewaHotelMain {
public static void main(String[] args) throws IOException{
HitungTarifHotel pesan=new HitungTarifHotel();
pesan.setNama(JOptionPane.showInputDialog("Masukkan nama kamu, iya kamu"));
String msg_nama = "Selamat datang gan " + pesan.getNama();
JOptionPane.showMessageDialog(null, msg_nama);
String alamat;
pesan.setAlamat(JOptionPane.showInputDialog("Masukan Alamat"));
boolean stt=true;
while(stt){
String menu = "\nPilih Jenis Kamar\n1. Deluxe Room Rp 275.000/hari\n2. Suite Room Rp 300.000/hari\n3. President Room Rp 370.000/hari\nJenis kamar yang dipesan \t: ";
try {
pesan.setJenis(Integer.parseInt(JOptionPane.showInputDialog(menu)));
}
catch (Exception e) {
}
if(pesan.getJenis()>3 || pesan.getJenis()<1){
stt=true;
JOptionPane.showMessageDialog(null, "nak nginput seng tenanan", "Ojo ngawur gan", JOptionPane.ERROR_MESSAGE);
}
else
stt=false;
}
boolean stt2=true;
while(stt2){
String status="status \n1. Member \n2. Non Member";
try {
pesan.setStatus(Integer.parseInt(JOptionPane.showInputDialog(status)));
}
catch (Exception e) {
}
if(pesan.getStatus()>2 || pesan.getStatus()<1){
stt2=true;
JOptionPane.showMessageDialog(null, "nak nginput seng tenanan", "Ojo ngawur gan", JOptionPane.ERROR_MESSAGE);
}
else
stt2=false;
}
String lama="masukkan lama menginap (Hari)";
try {
pesan.setLama(Integer.parseInt(JOptionPane.showInputDialog(lama)));
}
catch (Exception e) {
}
String outputHasil="Hasil Pemesanan \n\nNama : "+pesan.getNama()+
"\nAlamat : "+pesan.getAlamat()+
"\nJenis Kamar : "+pesan.get_kamar()+
"\nLama Menginap : "+pesan.getLama()+" Hari"+
"\nStatus : "+pesan.get_status()+
"\nTarif : Rp."+pesan.get_tarif()+
"\nDiskon : Rp."+pesan.get_diskon()+
"\nTotal Bayar : Rp."+pesan.get_bayar();
try {
JOptionPane.showMessageDialog(null,outputHasil);
}
catch (Exception e) {
}
}
} - Setelah itu simpan ketiga file di atas dalam satu folder, compile dengan perintah javac namafile.java, dimulai dari file entitas, proseshitung dan terakhir file main, setelah semua file di compile, jalankan class main dengan perintah java SewaHotelMain
dalam program java sederhana, ada berbagai macam cara untuk memberikan inputan kedalam program, yang sering di gunakan adalah JOption pane dan Buffered Reader. kode di atas adalah Program yang menggunakan inputan JOptionPane, dan berikut ini saya juga akan meberikan tutorial Program Reservasi Hotel dengan inputan Buffered Reader.
Inputan dengan BufferedReader
- Untuk Inputan dengan BufferedReader, di class main bufferedReader ini saya hanya mengedit kelas main dengan Inputan JOption pane di atas, dan kode-kode dengan inputan JOptionPane nya hanya saya komentar saja, agar bisa mudah dibedakan inputan BufferedReader dengan Inputan JOptionPane. kalian hanya cukup mengganti file SewaHotelMain.java dengan kode seperti di bawah ini.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.swing.JOptionPane;
public class SewaHotelMain {
public static void main(String[] args) throws IOException{
HitungTarifHotel pesan=new HitungTarifHotel();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//pesan.setNama(JOptionPane.showInputDialog("Masukkan nama kamu, iya kamu"));
//String msg_nama = "Selamat datang gan " + pesan.getNama();
//JOptionPane.showMessageDialog(null, msg_nama);
System.out.println("Masukkan nama Kamu : ");
pesan.setNama(br.readLine());
//String alamat;
//pesan.setAlamat(JOptionPane.showInputDialog("Masukan Alamat"));
System.out.println("Masukkan Alamat : ");
pesan.setAlamat(br.readLine());
boolean stt=true;
while(stt){
System.out.println("\nPilih Jenis Kamar\n1. Deluxe Room Rp 275.000/hari\n2. Suite Room Rp 300.000/hari\n3. President Room Rp 370.000/hari\nJenis kamar yang dipesan \t: ");;
try {
pesan.setJenis(Integer.parseInt(br.readLine () ));
}
catch (Exception e) {
}
if(pesan.getJenis()>3 || pesan.getJenis()<1){
stt=true;
//JOptionPane.showMessageDialog(null, "nak nginput seng tenanan", "Ojo ngawur gan", JOptionPane.ERROR_MESSAGE);
System.out.println("Inputan salah silahkan ulangi lagi");
}
else
stt=false;
}
boolean stt2=true;
while(stt2){
//String status="status \n1. Member \n2. Non Member";
System.out.println("status \n1. Member \n2. Non Member");
try {
//pesan.setStatus(Integer.parseInt(JOptionPane.showInputDialog(status)));
pesan.setStatus(Integer.parseInt(br.readLine()));
}
catch (Exception e) {
}
if(pesan.getStatus()>2 || pesan.getStatus()<1){
stt2=true;
//JOptionPane.showMessageDialog(null, "nak nginput seng tenanan", "Ojo ngawur gan", JOptionPane.ERROR_MESSAGE);
System.out.println("Inputan salah silahkan ulangi lagi");
}
else
stt2=false;
}
//String lama="masukkan lama menginap (Hari)";
System.out.println("Masukkan lama menginap : ");
try {
//pesan.setLama(Integer.parseInt(JOptionPane.showInputDialog(lama)));
pesan.setLama(Integer.parseInt(br.readLine()));
}
catch (Exception e) {
}
/*String outputHasil="Hasil Pemesanan \n\nNama : "+pesan.getNama()+
"\nAlamat : "+pesan.getAlamat()+
"\nJenis Kamar : "+pesan.get_kamar()+
"\nLama Menginap : "+pesan.getLama()+" Hari"+
"\nStatus : "+pesan.get_status()+
"\nTarif : Rp."+pesan.get_tarif()+
"\nDiskon : Rp."+pesan.get_diskon()+
"\nTotal Bayar : Rp."+pesan.get_bayar();
try {
JOptionPane.showMessageDialog(null,outputHasil);
}
catch (Exception e) {
}
*/
System.out.println("<==== Hasil Pemesanan =====>"+
"\nNama \t\t: "+pesan.getNama()+
"\nAlamat \t\t: "+pesan.getAlamat()+
"\nJenis kamar \t: "+pesan.get_kamar()+
"\nStatus \t\t :"+pesan.get_status()+
"\nTarif \t\t :"+pesan.get_tarif()+
"\nDiskon \t\t :"+pesan.get_diskon()+
"\nTotal \t\t :"+pesan.get_bayar()
);
}
}
program reservasi hotel dengan java oop - inputan dinamis
4/
5
Oleh
Budi hartono