Advertisement
asrori

classList

Apr 22nd, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <list>
  3. #include <cstring>
  4. #include <iomanip>
  5. #include <cstdlib>
  6. #include "Buku.h"
  7.  
  8. using namespace std;
  9.  
  10. void clearbuffer();
  11. void menu();
  12. void tampil(list <Buku> &, list <Buku>::iterator &);
  13. void tambahBuku(list <Buku> &, int *);
  14. void hapusBuku(list <Buku> &, int *);
  15.  
  16. int main() {
  17.     list <Buku> bukuSaya;
  18.     list <Buku>::iterator it;
  19.     int pilihanMenu, banyakData = 0;
  20.  
  21.     do{
  22.         system("clear");
  23.         menu();
  24.         cout << "\n\nmasukkan menu [1-4] : ";
  25.         cin >> pilihanMenu; clearbuffer();
  26.         if (pilihanMenu == 1)
  27.             if (banyakData < 10) {
  28.                 tambahBuku(bukuSaya, &banyakData);
  29.             }else {
  30.                 cout << "data sudah penuh...";
  31.                 clearbuffer();
  32.             }
  33.         if (pilihanMenu == 2) tampil(bukuSaya, it);
  34.         if (pilihanMenu == 3) hapusBuku(bukuSaya, &banyakData);
  35.     } while (pilihanMenu != 4);
  36.  
  37.     return 0;
  38. }
  39.  
  40. void clearbuffer(){
  41.     cin.clear();
  42.     cin.ignore(1024, '\n');
  43. }
  44.  
  45. void menu(){
  46.     cout << "selamat datang di perpustakaan\n";
  47.     cout << "==============================\n\n";
  48.     cout << "1. Pinjam Buku\n";
  49.     cout << "2. lihat semua buku yang dipinjam\n";
  50.     cout << "3. hapus semua buku";
  51.     cout << "4. keluar";
  52. }
  53.  
  54. void tambahBuku(list <Buku> &bukuSaya, int *banyakData){ //pass by reference
  55.     string judulBuku;
  56.     int jumlah, harga, subtotal;
  57.  
  58.     do{
  59.         cout << "masukkan judul [5-20 karakter] : ";
  60.         getline(cin, judulBuku);
  61.     } while (judulBuku.length() < 5 or judulBuku.length() > 20);
  62.  
  63.     do{
  64.         cout << "masukkan harga [Rp. 5000 - Rp. 10.000] : ";
  65.         cin >> harga; clearbuffer();
  66.     } while (harga < 5000 or harga > 10000);
  67.  
  68.     do{
  69.         cout << "masukkan jumlah [1-20] : ";
  70.         cin >> jumlah; clearbuffer();
  71.     } while (jumlah < 1 or jumlah > 20);
  72.  
  73.     subtotal = jumlah * harga;
  74.  
  75.     Buku *buku = new Buku(judulBuku, jumlah, harga, subtotal); //inisialisasi objek buku
  76.     bukuSaya.push_back(*buku); //masukkan objek buku kedalam list buku saya
  77.     delete buku; //hapus objek buku supaya tidak memenuhi ruang heap memory
  78.  
  79.     *banyakData += 1;
  80.     cout << "sukses menambahkan buku...";
  81.     clearbuffer();
  82. }
  83.  
  84. void tampil(list <Buku> &bukuSaya, list <Buku>::iterator &it){ //pass by reference
  85.     int total = 0;
  86.     int i = 1;
  87.  
  88.     system("clear");
  89.     cout << "daftar buku yang diorder\n";
  90.     cout << "========================\n\n";
  91.     cout << "----------------------------------------------------------\n";
  92.     cout << "| No. | Judul                | Jumlah | Harga | Subtotal |\n";
  93.     cout << "----------------------------------------------------------\n";
  94.  
  95.     if (bukuSaya.empty()){ //cek apakah didalam list tidak ada data, jika iya maka return true
  96.         cout << "|             tidak ada data                             |\n";
  97.     } else {
  98.         for (it = bukuSaya.begin(); it != bukuSaya.end(); ++it) {
  99.             cout << "| " << left  << setw(3)    << i++
  100.                  << left << " | " << setw(20)   << left << it->getJudul()
  101.                  << left << " | " << setw(6)    << left << it->getJumlah()
  102.                  << left << " | " << setw(5)    << left << it->getHarga()
  103.                  << left << " | " << setw(7)    << left << it->getSubTotal()
  104.                  << "  |\n";
  105.             total = total + it->getSubTotal();
  106.         }
  107.     }
  108.     cout << "----------------------------------------------------------\n\n";
  109.     cout << "total harga : " << total << endl;
  110.     cout << "tekan ENTER untuk melanjutkan...";
  111.     clearbuffer();
  112. }
  113.  
  114. void hapusBuku(list <Buku> &bukuSaya, int *banyakData){
  115.  
  116.     if (bukuSaya.empty()){
  117.         cout << "tidak ada data, terima kasih telah menggunakan aplikasi ini...";
  118.     } else {
  119.         bukuSaya.clear(); //hapus semua data yang ada di list
  120.         cout << "semua buku telah dihapus, terima kasih telah menggunakan aplikasi ini...";
  121.     }
  122.  
  123.     *banyakData = 0;
  124.     clearbuffer();
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement