-->

Program Queue (Antrian) Pemesanan Produk Minuman Menggunakan C++

Pada siang hari ini Evan Fauzi Blog akan memberikan sebuah program C++ Pemesanan Produk Minuman menggunakan software CodeBlocks. Sebenarnya ini merupakan tugas yang diberikan oleh dosen saya dalam mata kuliah Algoritma dan Struktur Data pada Semester 2. Saya akan share di artikel ini. Jika kalian seorang Maba Teknik Informatika yang sedang mencari jawaban tugas Algoritma dan Struktur Data bisa dicoba program di bawah ini.

Program Queue C++ Pemesanan Produk Minuman

Latar Belakang

Program antrian (queue) pemesanan produk minuman di sebuah outlet di buat untuk memenuhi ujian akhir semester 2 mata kuliah algoritma & struktur data dengan maksud agar customer yang order bisa di layani dengan teratur dan rapi. Supaya customer yang pertama memesan bisa di layani pertama dan customer yang memesan ke-dua dilayani kedua begitu juga seterusnya. Proses kerjanya dengan menginputkan orderan customer dan lalu print setelah itu customer menunggu oerderanya selesai sampai bartender memangil urutan orderan atau dengan customer melihat di layar lcd yang terpasang di atas outlet.


Adapun tujuan dari makalah ini adalah :
  • Flowchart dari program queue pemesanan produk minuman
  • Penjelasan Sintaks dari program queue pemesanan produk minuman
  • Tampilan Program & Penjelasan dari program queue pemesanan produk minuman

Flowchart

Flowchart

Penjelasan Sintaks

Membuat program untuk pemesanan produk minuman pada sebuah outlet dengan rumus : Total = Harga produk minuman x Jumlah porsi, hanya bisa memilih menu yang telah tersedia. Jika memilih produk yang tidak ada dalam daftar menu maka otomatis akan keluar perintah yang berbunyi “Kode Yang Anda Masukan Tidak Ada”.

Cara kerja program :
  1. Pertama program akan menampilkan daftar menu yang ada di rumah makan tersebut.
  2. Pelanggan akan disuruh memilih menu yang diinginkan.
  3. Masukan jumlah porsi.
  4. Lalu akan tercantum jumlah harga yang harus dibayar.
  5. Lalu akan ada pilihan lagi apakah pelanggan ingin menambah pesanannya atau tidak.
  6. Setelah itu program untuk memesan dan membayar makanan dan minuman sudah selesai. Dan terima kasih atas kunjungan anda.
Codingan :

#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#define MAX 10

using namespace std;

///Deklarasi struct antrian
struct Queue {
int front, rear, data[MAX];
}Q;
bool isFull();
bool isEmpty();
void printQueue();
void enqueue();
void dequeue();
int main()
{
    atas:
    system("cls");
    char pembelian;
    int kode, porsi, jumlah, banyak, antrian;
    long int total, bayar, harga,duit,kembalian;
    int choose;
    awal:
    printQueue();
    ///Tampilan menu
    cout << "----------------------------\n"
    << "         Menu Pilihan       \n"
    << "----------------------------\n"
    << " [1] Masukan antrian pesanan \n"
    << " [2] Pesanan diantarkan\n"
    << " [3] Keluar \n\n"
    << "----------------------------\n"
    << "Masukkan pilihan : "; cin >> choose;
    switch (choose)
    {
    case 1:
        enqueue();
        goto mulai;
        break;
    case 2:
        dequeue();
        goto awal;
        break;
    case 3:
        goto akhir;
    default:
        cout << "Pilihan tidak tersedia\n";
        goto awal;
        break;
    }
mulai:
    cout<<" ================= ICE KEPAL MILO ===============\n";
    cout<<"\n";
    cout<<"                     BANG ACUN\n";
    cout<<"\n";
    cout<<" ===================== MENU ======================\n";
    cout<<" 1. Kepal Milo Original\n";
    cout<<" 2. Kepal Milo Rainbow\n";
    cout<<" 3. Kepal Milo Green Tea\n";
    cout<<" 4. Kepal Milo Fruits\n";
    cout<<" 5. Kepal Milo Benjut\n";
    cout<<"\n";
    cout<<" ================= MENU TAMBAHAN =================\n";
    cout<<" 6. Oreo\n";
    cout<<" 7. Fruit\n";

    cout<<" =============== MINUMAN MASA KINI ===============\n";
    cout<<"\n";
    cout<<"Jumlah Menu Yang Dipesan = ";
    cin>>banyak;
    jumlah=1;
    bayar=0;
    for(jumlah=1;jumlah<=banyak;jumlah++){
        ulang:
        cout<<" \nMasukan Kode Menu = ";
        cin>>kode;
        cout<<"\n";
    if (kode==1){
        cout<<" Nama Makanan = Kepal Milo Original\n";
        cout<<" Harga        = Rp. 20000,-\n";
        cout<<" Jumlah Porsi = ";
        cin>>porsi;
        harga=20000;
        total=harga*porsi;
        cout<<" Total Harga  = Rp"<<total;
        cout<<"\n";
        }
    else
    if (kode==2){
        cout<<" Nama Makanan = Kepal Milo Rainbow\n";
        cout<<" Harga        = Rp. 25000,-\n";
        cout<<" Jumlah Porsi = ";
        cin>>porsi;
        harga=25000;
        total=harga*porsi;
        cout<<" Total Harga  = Rp"<<total;
        cout<<"\n";
    }
    else
    if (kode==3)
    {
        cout<<" Nama Makanan = Kepal Milo Green Tea\n";
        cout<<" Harga        = Rp. 25000,-\n";
        cout<<" Jumlah Porsi = ";
        cin>>porsi;
        harga=25000;
        total=harga*porsi;
        cout<<" Total Harga  = Rp"<<total;
        cout<<"\n";
    }
    else
    if (kode==4)
    {
        cout<<" Nama Makanan = Kepal Milo Fruits\n";
        cout<<" Harga        = Rp. 25000,-\n";
        cout<<" Jumlah Porsi = ";
        cin>>porsi;
        harga=25000;
        total=harga*porsi;
        cout<<" Total Harga  = Rp"<<total;
        cout<<"\n";
    }
    else
    if (kode==5)
    {
        cout<<" Nama Makanan = Kepal Milo Benjut\n";
        cout<<" Harga        = Rp. 25000,-\n";
        cout<<" Jumlah Porsi = ";
        cin>>porsi;
        harga=25000;
        total=harga*porsi;
        cout<<" Total Harga  = Rp"<<total;
        cout<<"\n";
    }
    else
    if (kode==6)
    {
        cout<<" Nama Minuman = Oreo\n";
        cout<<" Harga        = Rp. 2000\n";
        cout<<" Jumlah Porsi = ";
        cin>>porsi;
        harga=2000;
        total=harga*porsi;
        cout<<" Total Harga  = Rp"<<total;
        cout<<"\n";
    }
    else
    if (kode==7)
    {
        cout<<" Nama Minuman = Fruits Ice\n";
        cout<<" Harga        = Rp. 3000\n";
        cout<<" Jumlah Porsi = ";
        cin>>porsi;
        harga=3000;
        total=harga*porsi;
        cout<<" Total Harga  = Rp"<<total;
        cout<<"\n";
    }
    else
    {
        cout<<"Pilihan tidak tersedia\n";
        goto mulai;
    }
    bayar=bayar+total;
    }
    cout<<"\nTotal Bayar\t\t  = Rp"<<bayar<<",-";
    cout<<"\n\n\Masukan Pembayaran        = Rp";cin>>duit;
    kembalian=duit-bayar;
    cout<<"\nCash Back\t          = Rp"<<kembalian<<",-";
    cout << endl;
    printQueue();
    cout<<"\n\n\t\t\t((((TERIMA KASIH))))";
    cout<<"\n\n\n\n\nPembelian Baru [Y/t] ";cin>>pembelian;
    if (pembelian=='y'||pembelian=='Y')
    goto atas;
    else
    akhir:
    system("cls");
    cout<<"\n\n\t\t\tProgram Logging Off....";
}

///cek apakah antrian penuh
bool isFull() {
return Q.rear == MAX;
}

///cek apakah antrian kosong
bool isEmpty() {
return Q.rear == 0;
}

///Menampilkan Queue
void printQueue() {
if (isEmpty()) {
        cout << "----------------------------\n";
        cout << "        Antrian kosong      "<<endl;
        cout << "----------------------------\n";
}
else {
        cout << "\n----------------------------\n";
cout << " Antrian Pesanan : ";
for (int i = Q.front; i < Q.rear; i++)
//menambahkan koma jika data tidak terdapat di antrian pertama
cout << Q.data[i] << ((Q.rear-1 == i) ? "" : ",");
cout << "\n----------------------------\n";
  }
}

///manambahkan data ke antrian
void enqueue() {
if (isFull())
{
cout << "Antrian penuh!"<<endl;
}
else {
int data;
///menambahkan data ke antrian
cout << "Masukkan No Antrian : ";cin >> data;
Q.data[Q.rear] = data;
///menempatkan tail pada elemen data terakhir yang ditambahkan
Q.rear++;
cout << "Data ditambahkan\n";
printQueue();
}
}

/// mengambil data dari antrian
void dequeue() {
if (isEmpty())
{
cout << "Antrian masih kosong"<<endl;
}
else{
cout << "Mengantarkan pesanan antrian ke \"" << Q.data[Q.front] << "\"..." << endl;
///menggeser antrian data ke head
for (int i = Q.front; i < Q.rear; i++)
Q.data[i] = Q.data[i + 1];
///menempatkan tail pada data terakhir yang digeser
Q.rear--;
}
}

Penjelasan Coding

1.  Preprocessor dan Header File

#define MAX 10 //maksimum data queue

Disini kita hanya menggunakan dua baris preprocessor untuk mendefinisikan header file iostream untuk standard input/output stream dan MAX untuk maksimum data array pada queue/antrian.

2. Struct data

//Deklarasi struct antrian
struct Queue {
int front, rear, data[MAX];
}Q;

Pada struct kita mendeklarasikan front, rear dan array data[] dengan jumlah array dari data maksimum yang telah di definisikan sebelumnya yaitu MAX.

Deklarasi variabel pada struct sama halnya dengan pendeklarasian variabel pada umumnya, karena disini kita hanya memiliki tipe data yang sama, jadi kita bisa menghemat baris dengan menyebariskan tiga variabel bertipe integer.

3. Memeriksa antrian

//cek apakah antrian penuh
bool isFull() {
return Q.rear == MAX;
}

//cek apakah antrian kosong
bool isEmpty() {
return Q.rear == 0;
}

Kedua fungsi ini akan digunakan untuk memeriksa apakah antrian penuh isFull() (fungsi pertama) dan antrian kosong isEmpty(), keduanya mengembalikan nilai boolean, jadi kita cukup mengembalikan nilai perbandingan pada fungsi masing - masing.

Pada fungsi isFull() akan mengembalikan nilai true jika nilai Q.rear sama dengan maksimum data array yang telah ditentukan MAX, atau false jika tidak sama.

Pada fungsi isEmpty() akan mengembalikan nilai true jika nilai Q.rear sama dengan 0, atau false jika tidak sama.

4. Menampilkan Antrian

///Menampilkan Queue
void printQueue() {
if (isEmpty()) {
        cout << "----------------------------\n";
        cout << "        Antrian kosong      "<<endl;
        cout << "----------------------------\n";
}
else {
        cout << "\n----------------------------\n";
cout << " Antrian Pesanan : ";
for (int i = Q.front; i < Q.rear; i++)
//menambahkan koma jika data tidak terdapat di antrian pertama
cout << Q.data[i] << ((Q.rear-1 == i) ? "" : ",");
cout << "\n----------------------------\n";
  }
}

Untuk menampilkan antrian, kita perlu memeriksa apakah antriannya kosong. Jika kosong maka tidak ada data untuk ditampilkan, jadi cukup tampilkan pesan. Tapi jika antrian berisi data atau ada antrian disana maka tampilkan data yang ada di antrian menggunakan for loop.

Disini kode di dalam perulangan/loop hanyalah elemen setiap data yang telah dimasukkan dengan menggunakan koma kecuali data terakhir.

5. Input Data ke antrian

///manambahkan data ke antrian
void enqueue() {
if (isFull())
{
cout << "Antrian penuh!"<<endl;
}
else {
int data;
///menambahkan data ke antrian
cout << "Masukkan No Antrian : ";cin >> data;
Q.data[Q.rear] = data;
///menempatkan tail pada elemen data terakhir yang ditambahkan
Q.rear++;
cout << "Data ditambahkan\n";
printQueue();
}
}

Untuk menginputkan data ke antrian hal utama yang perlu kita lakukan adalah memeriksa apakah antrian penuh atau tidak, jika penuh, maka kita tidak dapat menambahkan data ke antrian karena sudah tidak ada ruang lagi yang tersedia.

Jika masih ada ruang maka inputkan data ke antrian dan tambahkan satu nilai ke Q.rear dimana data tersebut berada pada antrian paling belakang.

Disini kita juga memanggil fungsi printQueue() yang telah didefinisikan pada baris kode sebelumnya, secara langsung setelah data ditambahkan. Jadi user bisa melihat data ada di dalam antrian.

6. Mengambil Data antrian

/// mengambil data dari antrian
void dequeue() {
if (isEmpty())
{
cout << "Antrian masih kosong"<<endl;
}
else{
cout << "Mengantarkan pesanan antrian ke \"" << Q.data[Q.front] << "\"..." << endl;
///menggeser antrian data ke head
for (int i = Q.front; i < Q.rear; i++)
Q.data[i] = Q.data[i + 1];
///menempatkan tail pada data terakhir yang digeser
Q.rear--;
}
}

Sama halnya dengan menampilkan antrian, untuk mengambil data dari dalam antrian atau mengeluarkannya (dequeue), pertama kali kita perlu memeriksa apakah ada data dalam antrian. Karena kita tidak dapat menghapus data yang tidak ada pada antrian.

Jika ada data pada antrian, maka geser data ke antrian palng depan atau Q.front, disini kita akan menimpa data yang keluar dari antrian yang paling depan dan kemudian mengurangi satu nilai Q.rear.

7. Menampilkan Menu

    ///Tampilan menu
    cout << "----------------------------\n"
    << "         Menu Pilihan       \n"
    << "----------------------------\n"
    << " [1] Masukan antrian pesanan \n"
    << " [2] Pesanan diantarkan\n"
    << " [3] Keluar \n\n"
    << "----------------------------\n"
    << "Masukkan pilihan : "; cin >> choose;
    switch (choose)
    {
    case 1:
        enqueue();
        goto mulai;
        break;
    case 2:
        dequeue();
        goto awal;
        break;
    case 3:
        goto akhir;
    default:
        cout << "Pilihan tidak tersedia\n";
        goto awal;
        break;
    }

switch akan memeriksa pilihan user (disini adalah nilai variabel choose dengan tipe data integer). Disini hanya ada dua pilihan. pilihan pertama jika user ingin menambahkan data ke antrian dan pilihan kedua jika user ingin menghapus atau mengeluarkan data dari antrian. Selain dari kedua pilihan tersebut maka tampilkan pesan pilihan tidak tersedia.

Hasil Output CMD

Output CMD 1

Output CMD 2

Output CMD 3

Output CMD 4

Output CMD 5

Demikian hasil dari Program Queue pemesanan produk minuman yang dapat kami jelaskan. Program ini dibuat untuk memudahkan pelanggan memesan minum secara teratur dan tertib supaya tidak saling berdesakan.

Kesimpulan

Dari program queue yang berfungsi sebagai program antrian sangat berguna untuk kasus pemesanan produk minuman yang kami buat karena jika tidak ada program ini pasti akan tidak teratur dan juga tidak rapi saat orderan banyak, bartender pasti sanga kerepotan untuk mengatur orderan yang banyak jika tidak ada suatu program yang membantu tugasnya maupun pekerjaannya.

Berlangganan update artikel terbaru via email :

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel