Advertisement
akevintg

(MATERIAL REVIEW) QUIZ PBO II

May 22nd, 2014
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.91 KB | None | 0 0
  1. //
  2. //  main.cpp
  3. //  Bahan Kuis PBO II
  4. //
  5. //  Created by Alexander Kevin on 5/22/14.
  6. //  Copyright (c) 2014 Alexander Kevin. All rights reserved.
  7. //
  8.  
  9. //soal :
  10. //buat program untuk dipakai di hotel dimana, receptionist akan melihat 3 menu yaitu :
  11. //1.room avalaibilty, 2.check in(register guest),3. Guest View , & 4.check out(payment).
  12. //adapun isi dari masing2 menu
  13. //1. menampilkan tipe ruangan (Normal, VIP, VVIP), harga , dan jumlah kamar
  14. //2. menampilkan form registrasi, input nama (6-20), input tipe kamar, dan lama menginap, menghasilkan code guest.
  15. //3. menampilkan code guest, nama guest, tipe kamar lama menginap
  16. //4. menampilkan input code guest dan tagihanya.
  17. // wajib ada string dan inheritance
  18. // code guess dengan format 12345 1=N(norma)/V(VIP)/Z(VVIP), 2=(Inisial Guest), 3=Lama Inap, 4-5 no Guest
  19. // contoh Guest Budi di kamar VIP menginap selama 3 hari, budi ke 7 maka code = VB307
  20. // Validasi berupa cek kestersedian kamar, cek input nama tipe kamar dan lama menginap.
  21.  
  22. #include <iostream>
  23. #include <string>
  24. #include <iomanip>
  25. #include <conio.h>
  26.  
  27. using namespace std;
  28.  
  29. void menu();
  30. int jumlahn=0,jumlahv=0,jumlahz=0;//jumlah kamar yang sedang dipakai
  31. int jumlahguest=0;//jumlah tamu di buat global atau static juga boleh(static lebih ribet)
  32.  
  33. 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.
  34. protected ://agar bisa diakses kelas anak
  35.     string nama[35];//nama guest
  36.     string tipe[35];//tipe kamar
  37.     int inap[35];//lama menginap
  38.     char code[5][35];//code Guest
  39.     int space[35];
  40.     int price[35];
  41. public  :
  42.     void daftar(){//validasi cek pendaftaran
  43.         do{
  44.             cout<<"Masukan Nama Guest [6...20]: ";
  45.             getline(cin,nama[jumlahguest]);cin.sync();cin.clear();
  46.         }while(nama[jumlahguest].length()<6||nama[jumlahguest].length()>20);//cek nama kurang dari 6/lebih dari 20
  47.         do{
  48.             cout<<"Masukan Tipe Kamar [Normal/VIP/VVIP]: ";
  49.             getline(cin,tipe[jumlahguest]);cin.sync();cin.clear();
  50.             if(jumlahn>=20&&tipe[jumlahguest]=="Normal"){//cek kamar masih ada atu enga
  51.                 cout<<"Kamar Tidak Tersedia"<<endl;
  52.                 tipe[jumlahguest].append("aaa");//kalo abis biar input error
  53.             }
  54.             else if(jumlahv>=10&&tipe[jumlahguest]=="VIP"){//cek kamar masih ada atu enga
  55.                 cout<<"Kamar Tidak Tersedia"<<endl;
  56.                 tipe[jumlahguest].append("aaa");//kalo abis biar input error
  57.             }
  58.             else if(jumlahz>=5&&tipe[jumlahguest]=="VVIP"){//cek kamar masih ada atu enga
  59.                 cout<<"Kamar Tidak Tersedia"<<endl;
  60.                 tipe[jumlahguest].append("aaa");//kalo abis biar input error
  61.             }
  62.         }while(tipe[jumlahguest]!="Normal"&&tipe[jumlahguest]!="VVIP"&&tipe[jumlahguest]!="VIP");
  63.         do{
  64.             cout<<"Masukan Lama Menginap [1..9]: ";
  65.             cin>>inap[jumlahguest];cin.sync();cin.clear();
  66.         }while(inap[jumlahguest]<1||inap[jumlahguest]>9);//cek lama inap yg bener maks 9 hari dan tidak kurnag dari 1 hari
  67.         if(tipe[jumlahguest]=="Normal"){//kalo input normal bikin kode huruf 1 N
  68.             code[0][jumlahguest]='N';
  69.             jumlahn++;//jangan lupa tambah jumlah kamar terpakai
  70.             price[jumlahguest]=500000*inap[jumlahguest];//itung tagihanya
  71.         }
  72.         else if(tipe[jumlahguest]=="VIP"){
  73.             jumlahv++;
  74.             code[0][jumlahguest]='V';
  75.             price[jumlahguest]=800000*inap[jumlahguest];
  76.         }
  77.         else{
  78.             code[0][jumlahguest]='Z';
  79.             jumlahz++;
  80.             price[jumlahguest]=1000000*inap[jumlahguest];
  81.         }
  82.         code[1][jumlahguest]=nama[0][jumlahguest];//code huruf ke 2 selalu inisial copy langsung
  83.         code[2][jumlahguest]=inap[jumlahguest]+48;//code huruf ke 3 selalu lama inap(bentuk integer) ubah ke char +48(ASCII)
  84.         if(jumlahguest<10){//code huruf 4-5 tergantung dari jumlah guest yg bisa lebih dari 10p
  85.             code[3][jumlahguest]='0';
  86.             code[4][jumlahguest]=jumlahguest+48;
  87.            
  88.         }
  89.         else{
  90.             code[3][jumlahguest]= ((jumlahguest-jumlahguest%10)/10)+48;
  91.             code[4][jumlahguest]=(jumlahguest%10)+48;
  92.         }
  93.         cout<<"Registrasi Sukses"<<endl<<"<KODE GUEST : "<<code[0][jumlahguest]<<code[1][jumlahguest]<<code[2][jumlahguest]<<code[3][jumlahguest]<<code[4][jumlahguest]<<">"<<endl;
  94.         jumlahguest++;//jangan lupa tambah jumlah guestnya setelah regist berhasil
  95.         cin.get();
  96.     }
  97.     void view(){
  98.         system("cls");
  99.         int x=0;
  100.         cout<<"|KODE |NAMA GUEST            |TIPE       |LAMA |"<<endl<<"====================================================="<<endl;
  101.         do{
  102.             cout<<"|"<<code[0][x]<<code[1][x]<<code[2][x]<<code[3][x]<<code[4][x]<<"|";
  103.             cout.width(22);//dari iomanip untuk memperata aja
  104.             cout<<left<<nama[x]<<"|";
  105.             cout.width(11);
  106.             cout<<left<<tipe[x]<<"|";
  107.             cout.width(5);
  108.             cout<<inap[x]<<"|"<<endl;
  109.             x++;
  110.         }while(x<jumlahguest);
  111.         cout<<endl<<"Keterangan :"<<endl<<"* Sudah Checkout"<<endl<<endl;
  112.     }
  113.     int getSpace(int x){//untuk dapat akses ke space
  114.         return space[x];
  115.     }
  116.     int getPrice(int x){//untuk dapat akses ke price
  117.         return price[x];
  118.     }
  119.     void checkout(){
  120.         system("cls");
  121.         if(jumlahguest!=0){//cek ada Guest ga
  122.             view();
  123.             cout<<"Masukan KODE Guest :";
  124.             char codes[10];
  125.             cin>>codes;cin.sync();cin.clear();
  126.             int x=0;
  127.             do{//cek code guest valid ga
  128.                 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])
  129.                     break;
  130.                 x++;
  131.             }while(x<jumlahguest);
  132.             if(x==jumlahguest){//kalo ga valid
  133.                 cout<<"Kode Salah Kembali ke menu"<<endl;
  134.                 cin.get();
  135.             }
  136.             else{//kalo valid
  137.                 if(nama[x][nama[x].length()-1]!='*'){//cek udah pernah checkout belom
  138.                     cout<<"Biaya yang harus anda bayar : Rp. "<<price[x]<<".00"<<endl;
  139.                     cout<<"Terima Kasih sudah menginap ke hotel kami, Kami menunggu kunjungan berikutnya";
  140.                     nama[x].append("*");//tambah keterangan udah bayar
  141.                     if(code[0][x]='N')//kurangin jumlah kamar terpakai
  142.                         jumlahn--; 
  143.                     else if(code[0][x]='V')
  144.                         jumlahv--;
  145.                     else
  146.                         jumlahz--;
  147.                     cin.get();
  148.                 }
  149.                 else{//kalau ternyata sudah pernah checkout
  150.                     cout<<"Anda Sudah pernah Checkout sebelumnya, Terima Kasih. ";
  151.                     cin.get();
  152.                 }
  153.             }
  154.         }
  155.         else{//kalau ternyata belom ada guestnya
  156.             cout<<"Belum ada Tamu Kembali ke menu";
  157.             cin.get();
  158.         }
  159.  
  160.     }  
  161. };
  162.  
  163. class normal:public tamu{//class turunan dari tamu
  164. public:
  165.     int space;
  166.     int price;
  167.     normal(){
  168.         space=20;
  169.         price=500000;
  170.     }
  171. };
  172.  
  173. class VIP:public tamu{//class turunan dari tamu
  174. public:
  175.     int space;
  176.     int price;
  177.     VIP(){
  178.         space=10;
  179.         price=800000;
  180.     }
  181.  
  182. };
  183.  
  184. class VVIP:public tamu{//class turunan dari tamu
  185. public:
  186.     int space;
  187.     int price;
  188.     VVIP(){
  189.         space=5;
  190.         price=1000000;
  191.     }
  192. };
  193.  
  194. tamu Guest;
  195. normal n;  
  196. VIP v;
  197. VVIP z;
  198.  
  199. void available(){//cek ketersediaan kamar
  200.     system("cls");
  201.     cout<<"Tipe Kamar  / Availablity /Harga"<<endl;
  202.     cout<<"Normal / "<<n.space-jumlahn<<" / "<<n.price<<endl;//dikurang jumlahn agar hasil realtime
  203.     cout<<"VIP / "<<v.space-jumlahv<<" / "<<v.price<<endl;
  204.     cout<<"VVIP / "<<z.space-jumlahz<<" / "<<z.price<<endl;
  205.     cin.get();
  206.     menu();
  207. }
  208.  
  209. void menu(){
  210.     system("cls");
  211.     int count=0;
  212.     char x;
  213.     cout<<"HOTEL BINA NUSANTARA SelfService Machine"<<endl<<"============================================="<<endl;
  214.     cout<<"1. View Avalaible Room"<<endl<<"2. Check In"<<endl<<"3. View Guest"<<endl<<"4. Check Out"<<endl<<"5. Exit"<<endl;
  215.     cout<<"Masukan Pilihan Anda : ";
  216.     x=_getch();//supaya langsung tanpa enter dari conio.h
  217.     switch(x){
  218.         case '1':
  219.             available();
  220.             break;
  221.         case '2':
  222.             system("cls");
  223.             Guest.daftar();
  224.             menu();
  225.             break;
  226.         case '3':
  227.             Guest.view();
  228.             cin.get();
  229.             menu();
  230.             break;
  231.         case '4':
  232.             Guest.checkout();
  233.             menu();
  234.             break;
  235.         case '5':
  236.             break;
  237.         default:
  238.             menu();
  239.             break;
  240.     }
  241. }
  242.  
  243. int main(){
  244.     menu();
  245. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement