Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.cpp
- // Bahan Kuis PBO II
- //
- // Created by Alexander Kevin on 5/22/14.
- // Copyright (c) 2014 Alexander Kevin. All rights reserved.
- //
- //soal :
- //buat program untuk dipakai di hotel dimana, receptionist akan melihat 3 menu yaitu :
- //1.room avalaibilty, 2.check in(register guest),3. Guest View , & 4.check out(payment).
- //adapun isi dari masing2 menu
- //1. menampilkan tipe ruangan (Normal, VIP, VVIP), harga , dan jumlah kamar
- //2. menampilkan form registrasi, input nama (6-20), input tipe kamar, dan lama menginap, menghasilkan code guest.
- //3. menampilkan code guest, nama guest, tipe kamar lama menginap
- //4. menampilkan input code guest dan tagihanya.
- // wajib ada string dan inheritance
- // code guess dengan format 12345 1=N(norma)/V(VIP)/Z(VVIP), 2=(Inisial Guest), 3=Lama Inap, 4-5 no Guest
- // contoh Guest Budi di kamar VIP menginap selama 3 hari, budi ke 7 maka code = VB307
- // Validasi berupa cek kestersedian kamar, cek input nama tipe kamar dan lama menginap.
- #include <iostream>
- #include <string>
- #include <iomanip>
- #include <conio.h>
- using namespace std;
- void menu();
- int jumlahn=0,jumlahv=0,jumlahz=0;//jumlah kamar yang sedang dipakai
- int jumlahguest=0;//jumlah tamu di buat global atau static juga boleh(static lebih ribet)
- class tamu {//tamu sebagai kelas utama karena setiap guest akan sellu meiliki dnama, tipe kamar dan lama inap sedangkan harga dan ketersedian setiap tipe kamar berbeda maka yang diturunkan adalah tipe kamar.
- protected ://agar bisa diakses kelas anak
- string nama[35];//nama guest
- string tipe[35];//tipe kamar
- int inap[35];//lama menginap
- char code[5][35];//code Guest
- int space[35];
- int price[35];
- public :
- void daftar(){//validasi cek pendaftaran
- do{
- cout<<"Masukan Nama Guest [6...20]: ";
- getline(cin,nama[jumlahguest]);cin.sync();cin.clear();
- }while(nama[jumlahguest].length()<6||nama[jumlahguest].length()>20);//cek nama kurang dari 6/lebih dari 20
- do{
- cout<<"Masukan Tipe Kamar [Normal/VIP/VVIP]: ";
- getline(cin,tipe[jumlahguest]);cin.sync();cin.clear();
- if(jumlahn>=20&&tipe[jumlahguest]=="Normal"){//cek kamar masih ada atu enga
- cout<<"Kamar Tidak Tersedia"<<endl;
- tipe[jumlahguest].append("aaa");//kalo abis biar input error
- }
- else if(jumlahv>=10&&tipe[jumlahguest]=="VIP"){//cek kamar masih ada atu enga
- cout<<"Kamar Tidak Tersedia"<<endl;
- tipe[jumlahguest].append("aaa");//kalo abis biar input error
- }
- else if(jumlahz>=5&&tipe[jumlahguest]=="VVIP"){//cek kamar masih ada atu enga
- cout<<"Kamar Tidak Tersedia"<<endl;
- tipe[jumlahguest].append("aaa");//kalo abis biar input error
- }
- }while(tipe[jumlahguest]!="Normal"&&tipe[jumlahguest]!="VVIP"&&tipe[jumlahguest]!="VIP");
- do{
- cout<<"Masukan Lama Menginap [1..9]: ";
- cin>>inap[jumlahguest];cin.sync();cin.clear();
- }while(inap[jumlahguest]<1||inap[jumlahguest]>9);//cek lama inap yg bener maks 9 hari dan tidak kurnag dari 1 hari
- if(tipe[jumlahguest]=="Normal"){//kalo input normal bikin kode huruf 1 N
- code[0][jumlahguest]='N';
- jumlahn++;//jangan lupa tambah jumlah kamar terpakai
- price[jumlahguest]=500000*inap[jumlahguest];//itung tagihanya
- }
- else if(tipe[jumlahguest]=="VIP"){
- jumlahv++;
- code[0][jumlahguest]='V';
- price[jumlahguest]=800000*inap[jumlahguest];
- }
- else{
- code[0][jumlahguest]='Z';
- jumlahz++;
- price[jumlahguest]=1000000*inap[jumlahguest];
- }
- code[1][jumlahguest]=nama[0][jumlahguest];//code huruf ke 2 selalu inisial copy langsung
- code[2][jumlahguest]=inap[jumlahguest]+48;//code huruf ke 3 selalu lama inap(bentuk integer) ubah ke char +48(ASCII)
- if(jumlahguest<10){//code huruf 4-5 tergantung dari jumlah guest yg bisa lebih dari 10p
- code[3][jumlahguest]='0';
- code[4][jumlahguest]=jumlahguest+48;
- }
- else{
- code[3][jumlahguest]= ((jumlahguest-jumlahguest%10)/10)+48;
- code[4][jumlahguest]=(jumlahguest%10)+48;
- }
- cout<<"Registrasi Sukses"<<endl<<"<KODE GUEST : "<<code[0][jumlahguest]<<code[1][jumlahguest]<<code[2][jumlahguest]<<code[3][jumlahguest]<<code[4][jumlahguest]<<">"<<endl;
- jumlahguest++;//jangan lupa tambah jumlah guestnya setelah regist berhasil
- cin.get();
- }
- void view(){
- system("cls");
- int x=0;
- cout<<"|KODE |NAMA GUEST |TIPE |LAMA |"<<endl<<"====================================================="<<endl;
- do{
- cout<<"|"<<code[0][x]<<code[1][x]<<code[2][x]<<code[3][x]<<code[4][x]<<"|";
- cout.width(22);//dari iomanip untuk memperata aja
- cout<<left<<nama[x]<<"|";
- cout.width(11);
- cout<<left<<tipe[x]<<"|";
- cout.width(5);
- cout<<inap[x]<<"|"<<endl;
- x++;
- }while(x<jumlahguest);
- cout<<endl<<"Keterangan :"<<endl<<"* Sudah Checkout"<<endl<<endl;
- }
- int getSpace(int x){//untuk dapat akses ke space
- return space[x];
- }
- int getPrice(int x){//untuk dapat akses ke price
- return price[x];
- }
- void checkout(){
- system("cls");
- if(jumlahguest!=0){//cek ada Guest ga
- view();
- cout<<"Masukan KODE Guest :";
- char codes[10];
- cin>>codes;cin.sync();cin.clear();
- int x=0;
- do{//cek code guest valid ga
- if(code[0][x]==codes[0]&&code[1][x]==codes[1]&&code[2][x]==codes[2]&&code[3][x]==codes[3]&&code[4][x]==codes[4])
- break;
- x++;
- }while(x<jumlahguest);
- if(x==jumlahguest){//kalo ga valid
- cout<<"Kode Salah Kembali ke menu"<<endl;
- cin.get();
- }
- else{//kalo valid
- if(nama[x][nama[x].length()-1]!='*'){//cek udah pernah checkout belom
- cout<<"Biaya yang harus anda bayar : Rp. "<<price[x]<<".00"<<endl;
- cout<<"Terima Kasih sudah menginap ke hotel kami, Kami menunggu kunjungan berikutnya";
- nama[x].append("*");//tambah keterangan udah bayar
- if(code[0][x]='N')//kurangin jumlah kamar terpakai
- jumlahn--;
- else if(code[0][x]='V')
- jumlahv--;
- else
- jumlahz--;
- cin.get();
- }
- else{//kalau ternyata sudah pernah checkout
- cout<<"Anda Sudah pernah Checkout sebelumnya, Terima Kasih. ";
- cin.get();
- }
- }
- }
- else{//kalau ternyata belom ada guestnya
- cout<<"Belum ada Tamu Kembali ke menu";
- cin.get();
- }
- }
- };
- class normal:public tamu{//class turunan dari tamu
- public:
- int space;
- int price;
- normal(){
- space=20;
- price=500000;
- }
- };
- class VIP:public tamu{//class turunan dari tamu
- public:
- int space;
- int price;
- VIP(){
- space=10;
- price=800000;
- }
- };
- class VVIP:public tamu{//class turunan dari tamu
- public:
- int space;
- int price;
- VVIP(){
- space=5;
- price=1000000;
- }
- };
- tamu Guest;
- normal n;
- VIP v;
- VVIP z;
- void available(){//cek ketersediaan kamar
- system("cls");
- cout<<"Tipe Kamar / Availablity /Harga"<<endl;
- cout<<"Normal / "<<n.space-jumlahn<<" / "<<n.price<<endl;//dikurang jumlahn agar hasil realtime
- cout<<"VIP / "<<v.space-jumlahv<<" / "<<v.price<<endl;
- cout<<"VVIP / "<<z.space-jumlahz<<" / "<<z.price<<endl;
- cin.get();
- menu();
- }
- void menu(){
- system("cls");
- int count=0;
- char x;
- cout<<"HOTEL BINA NUSANTARA SelfService Machine"<<endl<<"============================================="<<endl;
- cout<<"1. View Avalaible Room"<<endl<<"2. Check In"<<endl<<"3. View Guest"<<endl<<"4. Check Out"<<endl<<"5. Exit"<<endl;
- cout<<"Masukan Pilihan Anda : ";
- x=_getch();//supaya langsung tanpa enter dari conio.h
- switch(x){
- case '1':
- available();
- break;
- case '2':
- system("cls");
- Guest.daftar();
- menu();
- break;
- case '3':
- Guest.view();
- cin.get();
- menu();
- break;
- case '4':
- Guest.checkout();
- menu();
- break;
- case '5':
- break;
- default:
- menu();
- break;
- }
- }
- int main(){
- menu();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement