Guest User

Parkir.cpp

a guest
Feb 20th, 2019
8,690
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.25 KB | None | 0 0
  1. #include "parkir.h"
  2.  
  3. /* pendapatan = 0 */
  4.  
  5. int Parkir::pendapatan = 0;
  6.  
  7. /* size = 0 */
  8.  
  9. int Parkir::size = 0;
  10.  
  11. /* head and tail = null */
  12.  
  13. Parkir::Parkir() {
  14.  
  15.     head = nullptr;
  16.     tail = nullptr;
  17. }
  18.  
  19. /* is empty */
  20.  
  21. bool Parkir::isEmpty() const {
  22.  
  23.     return head == nullptr;
  24. }
  25.  
  26. /* get size */
  27.  
  28. int Parkir::getSize() const {
  29.  
  30.     return this->size;
  31. }
  32.  
  33. /* get pendapatan */
  34.  
  35. int Parkir::getPendapatan() const {
  36.  
  37.     return this->pendapatan;
  38. }
  39.  
  40. /* menu */
  41.  
  42. void Parkir::menu() {
  43.  
  44.     std::cout << "\n--------------------------------------------------------------------------------" << std::endl;
  45.     std::cout << std::setw(51) << "PROGRAM ANTRIAN KENDARAAN" << std::endl;
  46.     std::cout << "--------------------------------------------------------------------------------\n" << std::endl;
  47.  
  48.     std::cout << std::setw(48) << "1. Antrian Parkir Mobil" << std::endl;
  49.     std::cout << std::setw(43) << "2. Keluarkan Mobil" << std::endl;
  50.     std::cout << std::setw(51) << "3. Tampilkan Antrian Mobil" << std::endl;
  51.     std::cout << std::setw(55) << "4. Menghitung Total Pendapatan" << std::endl;
  52.     std::cout << std::setw(33) << "0. Exit\n" << std::endl;
  53.  
  54.     std::cout << "--------------------------------------------------------------------------------\n" << std::endl;
  55. }
  56.  
  57. /* add plat */
  58.  
  59. void Parkir::addPlat(int n) {
  60.  
  61.     this->size++;
  62.  
  63.     Node* temp = new Node;
  64.  
  65.     temp->plat = n;
  66.     temp->next = nullptr;
  67.  
  68.     if(isEmpty()) {
  69.  
  70.         head = temp;
  71.         tail = temp;
  72.  
  73.     } else {
  74.  
  75.         tail->next = temp;
  76.         tail = tail->next;
  77.     }
  78.  
  79.     std::cout << "\n" << n << " berhasil ditambahkan" << std::endl;
  80. }
  81.  
  82. /* is true, cek plat yang dicari ada / tidak */
  83.  
  84. bool Parkir::isTrue(int n) const {
  85.  
  86.     bool result = false;
  87.  
  88.     Node* temp = head;
  89.  
  90.     while (temp != nullptr) {
  91.  
  92.         if(temp->plat == n) {
  93.  
  94.             result = true;
  95.         }
  96.  
  97.         temp = temp->next;
  98.     }
  99.  
  100.     return result;
  101. }
  102.  
  103. /* delete plat */
  104.  
  105. void Parkir::deletePlat(int n) {
  106.  
  107.     if(isTrue(n)) {
  108.  
  109.         Node* current = head;
  110.         Node* prev = nullptr;
  111.  
  112.         if(current->next == nullptr) {
  113.  
  114.             std::cout << "\n" << current->plat << " sudah dikeluarkan!" << std::endl;
  115.  
  116.             delete current;
  117.             head = nullptr;
  118.  
  119.             this->size--;
  120.  
  121.             this->pendapatan += 3500;
  122.  
  123.         } else {
  124.  
  125.             if(current->plat == n) {
  126.  
  127.                 std::cout << "\n" << current->plat << " sudah dikeluarkan!" << std::endl;
  128.  
  129.                 head = head->next;
  130.                 delete current;
  131.  
  132.                 this->size--;
  133.  
  134.                 this->pendapatan += 3500;
  135.  
  136.             } else {
  137.  
  138.                 int pos = 0;
  139.  
  140.                 current = head;
  141.  
  142.                 while (current != nullptr) {
  143.  
  144.                     if(current->plat == n) {
  145.  
  146.                         pos++;
  147.                         break;
  148.                     }
  149.  
  150.                     pos++;
  151.  
  152.                     current = current->next;
  153.                 }
  154.  
  155.                 current = head;
  156.  
  157.                 for(int i = 0; i < pos; i++) {
  158.  
  159.                     std::cout << "\n" << current->plat << " sudah dikeluarkan!";
  160.  
  161.                     prev = current;
  162.                     delete current;
  163.  
  164.                     current = current->next;
  165.  
  166.                     this->size--;
  167.  
  168.                     this->pendapatan += 3500;
  169.                 }
  170.  
  171.                 head = prev->next;
  172.  
  173.                 std::cout << std::endl;
  174.             }
  175.         }
  176.  
  177.     } else {
  178.  
  179.         std::cout << "\nPlat nomor yang diinputkan tidak ada!" << std::endl;
  180.     }
  181. }
  182.  
  183. /* display pendapatan */
  184.  
  185. void Parkir::displayPendapatan() {
  186.  
  187.     std::cout << "\nPendapatan : " << getPendapatan() << std::endl;
  188. }
  189.  
  190. /* display */
  191.  
  192. void Parkir::display() {
  193.  
  194.     if(isEmpty()) {
  195.  
  196.         std::cout << "\nParkiran Kosong!" << std::endl;
  197.  
  198.     } else {
  199.  
  200.         std::cout << "\nDaftar Plat Kendaraan : \n" << std::endl;
  201.  
  202.         int nomor = 1;
  203.  
  204.         Node* temp = head;
  205.  
  206.         while (temp != nullptr) {
  207.  
  208.             std::cout << (nomor++) << ". " << temp->plat << std::endl;
  209.  
  210.             temp = temp->next;
  211.         }
  212.  
  213.         std::cout << "\nTotal Kendaraan : " << getSize() << std::endl;
  214.     }
  215. }
Advertisement
Add Comment
Please, Sign In to add comment