IMPLEMENTASI SWITCH CASE PADA PROGRAM PERPUSTAKAAN

IMPLEMENTASI SWITCH CASE PADA PROGRAM PERPUSTAKAAN

Disusun sebagai Project Mata Kuliah Teknik Pemrograman Terstruktur

Oleh:

  • Fathma Athifah (10124464) – Menu 1
  • Naila Noor Safitri (11124025) – Menu 2
  • Zahrah Syifa Zain (11124407) – Menu 3

Artikel ini akan membahas sebuah program sederhana untuk sistem perpustakaan yang dibuat dengan bahasa pemrograman C menggunakan switch case, perulangan, array, dan kondisi. Program ini berjalan di layar terminal dan memiliki beberapa fitur utama, yaitu:
  1. Menambahkan informasi buku
  2. Menampilkan daftar buku yang tersedia
  3. Meminjam buku
  4. Keluar dari program
Alur kerja dari program ini adalah sebagai berikut:
  1. Program dimulai
  2. Sistem menampilkan menu utama
  3. Pengguna memilih salah satu opsi dari menu (1 hingga 4)
  4. Program kemudian menjalankan instruksi sesuai dengan pilihan yang dilakukan pengguna
  5. Setelah proses selesai, program kembali ke menu utama
  6. Program akan terus berjalan sampai pengguna memilih opsi keluar
Hal ini terjadi karena program menggunakan struktur perulangan do-while, sehingga menu akan muncul terus-menerus hingga kondisi untuk berhenti terpenuhi. Berikut adalah struktur programnya:

1. Library dan Konstanta 




  • #include <stdio.h> digunakan untuk fungsi input dan output seperti printf() dan scanf()
  • #include <string.h> digunakan untuk mengelola string (meskipun belum digunakan langsung, biasanya disiapkan terlebih dahulu)
  • #define MAX 5 artinya program hanya bisa menyimpan maksimal 5 buku agar buku tidak melebihi kapasitas array
2.  Deklarasi Variabel
  • menu : untuk menyimpan pilihan menu yang dipilih pengguna
  • judul : untuk menyimpan judul buku. Variabel judul menggunakan array dua dimensi, yaitu [MAX] untuk batas jumlah buku dan [50] untuk panjang karakter judul
  • stok : untuk menyimpan stok buku. Variabel stok menggunakan array satu dimensi, yaitu [MAX] untuk batas jumlah stok
  • jumlahBuku : untuk menyimpan total jumlah buku yang dimasukkan
  • i : untuk perulangan
  • pinjam : untuk menyimpan nomor buku yang dipinjam

  • do {
    • Ini adalah awal dari perulangan do-while
    • Perbedaan utama do-while dengan while biasa: kode di dalam do pasti dijalankan minimal satu kali meskipun kondisi nantinya bernilai salah
    • Cocok untuk menu program, karena menu harus tampil setidaknya sekali sebelum user memilih keluar
  • Menampilkan Judul Menu
    • printf digunakan untuk menampilkan teks ke layar
    • \n di awal untuk pindah baris sebelum mencetak teks
    • ===== SISTEM PERPUSTAKAAN ===== hanya tampilan agar menu terlihat rapih
    • \n di akhir untuk pindah ke baris berikutnya
  • Menampilkan Pilihan Menu
    • Empat baris ini menampilkan opsi menu yang bisa dipilih user
    • Masing-masing angka nantinya akan diproses di switch (menu)
    • \n memastikan setiap menu tampil di baris baru
    • Makna setiap menu:
      • Input Data Buku : memasukkan judul dan stok buku
      • Tampilkan Data Buku : menampilkan daftar buku
      • Pinjam Buku : mengurangi stok buku
      • Keluar : menghentikan program
  • Meminta Input Pilihan Menu
    • Menampilkan teks tanpa \n agar kursor tetap di baris yang sama
    • Tujuannya supaya input terlihat rapih setelah teks
  • Membaca Input dari User
    • scanf membaca input keyboard
    • %d merupakan format untuk bilangan bulat (int)
    • &menu untuk alamat memori variabel menu






Output yang dihasilkan dari kode program sebelumnya berupa tampilan menu utama sistem perpustakaan. Output ini menampilkan judul program, daftar pilihan menu dari 1 sampai 4, serta perintah "Pilih menu" yang menandakan program sedang menunggu input dari pengguna. Angka yang dimasukkan pengguna akan disimpan ke variabel menu dan digunakan untuk menentukan proses selanjutnya pada struktur switch(menu) serta mengontrol pengulangan menu dalam perulangan do-while.


CASE 1  INPUT DATA BUKU







  • switch(menu)
    • switch digunakan untuk menentukan aksi program berdasarkan pilihan menu yang dimasukkan pengguna
    • Nilai menu diperoleh dari input sebelumnya scanf("%d', &menu);
    • Jika pengguna memilih menu 1, maka program akan menjalankan case 1
  • Case 1 – Input Data
    • Case 1 dijalankan ketika pengguna memilih menu Input Data Buku
    • Bagian ini berfungsi untuk memasukkan data buku ke dalam sistem
  • Menentukan Jumlah Buku
    • Program meminta pengguna memasukkan jumlah buku yang akan diinput
    • MAX adalah batas maksimal jumlah buku (dalam program bernilai 5)
    • Nilai yang dimasukkan disimpan ke variabel jumlahBuku
    • Variabel ini menentukan berapa kali perulangan input buku akan dilakukan
  • Perulangan Input Data Buku
    • Perulangan for digunakan untuk menginput data beberapa buku sesuai jumlah yang dimasukkan
    • Perulangan berjalan dari i = 0 sampai i < jumlahBuku
    • Variabel i digunakan sebagai indeks array
  • Menampilkan Nomor Buku
    • Menampilkan nomor urut buku yang sedang diinput
    • i + 1 digunakan agar penomoran dimulai dari 1, bukan 0
  • Input Judul Buku
    • Program meminta pengguna memasukkan judul buku
    • Judul adalah array dua dimensi bertipe char untuk menyimpan teks
    • Format "%[^ \n]" berarti : spasi di depan untuk membersihkan karakter newline sebelumnya membaca seluruh karakter hingga tombol enter ditekan
    • Judul buku disimpan di judul[i]
  • Input Stok Buku
    • Program meminta pengguna memasukkan jumlah stok buku
    • Nilai stok disimpan ke array stok sesuai indeks buku (stok[i])
    • Setiap buku memiliki stok masing-masing
  • Break
    • Menghentikan eksekusi case 1
    • Program keluar dari struktur switch dan kembali ke menu utama (karena do-while)
    Output











Output tersebut adalah hasil eksekusi menu 1 (Input Data Buku) pada program perpustakaan.

Setelah menu utama ditampilkan, pengguna memilih menu 1, sehingga program masuk ke bagian case 1 pada switch(menu). Program kemudian meminta jumlah buku yang akan diinput, yaitu 3, sesuai dengan perintah scanf("%d", &menu); .

Selanjutnya, perulangan for(i = 0; i < jumlahBuku; i++) dijalankan sebanyak 3 kali
Pada setiap perulangan:
  • Program menampilkan nomor buku (Buku ke-1, Buku ke-2, Buku ke-3)
  • Meminta input judul buku yang disimpan ke array judul[i]
  • Meminta input stok buku yang disimpan ke array stok[i]
Karena itu, output menampilkan tiga data buku, yaitu Si Kancil, Malin Kundang, dan Buto Ijo beserta stok masing-masing judul buku. Data tersebut kemudian tersimpan dalam array dan dapat digunakan pada menu lain, seperti menampilkan data buku atau meminjam buku.


CASE 2  TAMPILKAN DATA BUKU






  • Case 2 – Tampilkan Data Buku
    • Case 2 akan dijalankan ketika pengguna memilih menu 2
    • Bagian ini berfungsi untuk menampilkan seluruh data buku yang sudah diinput sebelumnya yaitu pada menu 1 (case 1)
    • Program ini akan menampilkan teks === DAFTAR BUKU === sebagai header agar pengguna tahu bahwa yang ditampilkan adalah daftar buku
  • Menampilkan Data Buku
    • kondisi if digunakan untuk memeriksa apakah variabel jumlahBuku bernilai 0 jika iya maka program akan menampilkan "Belum ada buku!" dan jika tidak maka program akan melanjutkan ke proses penampilan data
    • perulangan for digunakan untuk menampilkan data seluruh buku yang diinput pada case 1, perulangan berjalan dari i = 0 sampai i < jumlahBuku (variabel i adalah array untuk mengakses data buku)
  • Menampilkan nomor urut buku menggunakan i + 1 (indeks array i = 0) sehingga penomoran dimulai dari 1
  • Judul Buku akan ditampilkan dari yang tersimpan pada array judul[i] yang merupakan array dua dimensi bertipe char
  • Stok Buku akan ditampilkan dari yang tersimpan pada array stok[i] yang merupakan array satu dimensi bertipe int
  • Break berfungsi untuk menghentikan eksekusi case 2 setelah semua data buku ditampilkan, program akan keluar dari struktur switch dan kembali ke menu utama
    Output











Ketika pengguna memilih menu 2, program akan menampilkan daftar buku yang sudah diinput sebelumnya. Output diawali dengan header === DAFTAR BUKU === lalu program akan melakukan perulangan sesuai jumlah buku yang tersimpan. Pada setiap iterasi, ditampilkan nomor urut buku, judul buku dari array judul[i], serta stok buku dari array stok[i].
Pada output terdapat tiga data buku yang ditampilkan, yaitu:
  • Buku ke-1 dengan judul Si Kancil dan stok 3
  • Buku ke-2 dengan judul Malin Kundang dan stok 5
  • Buku ke-3 dengan judul Buto Ijo dan stok 1
Dengan demikian, output case 2 menunjukkan bahwa data yang telah diinput berhasil disimpan dan dapat ditampilkan kembali dengan format yang rapi dan informatif, sehingga pengguna dapat melihat daftar koleksi buku yang tersedia di perpustakaan.


CASE 3  PINJAM BUKU









  • Case 3 – Pinjam Buku
    • Case 3 akan dijalankan ketika pengguna memilih menu 3
    • Bagian ini berfungsi untuk memproses peminjaman buku dari daftar yang telah diinput sebelumnya pada menu 1 
    • Program meminta pengguna untuk memasukkan nomor buku yang ingin dipinjam, input disimpan dalam variabel pinjam
  • Kondisi if digunakan untuk memeriksa apakah nomor buku yang dimasukkan valid, jika nomor tidak valid maka program akan menampilkan pesan "Nomor buku tidak valid!"
  • Pengecekan Stok Buku
    • Jika nomor buku valid, program akan memeriksa stok buku menggunakan kondisi if(stok[pinjam-1] > 0. 
    • Jika stok tersedia, maka:
      • Program akan mengurangi nilai stok pada indeks sebanyak 1 (stok[pinjam-1]--)
      • Menampilkan pesan "Buku berhasil dipinjam!"
    • JIka stok habis, maka program akan menampilkan pesan "Maaf, stok buku habis."
  • Break untuk menghentikan eksekusi case 3 setelah peminjaman selesai dan program akan keluar dari struktur switch lalu kembali ke menu utama perulangan do-while

    Output
    
Pada output ini, pengguna memilih menu 3 untuk meminjam buku, lalu memasukkan nomor buku 1. Program memeriksa apakah nomor tersebut valid dan stok buku masih tersedia. Karena stok buku masih tersedia maka program menampilkan pesan "Buku berhasil dipinjam!" yang artinya proses peminjaman berhasil dilakukan


    









Pada gambar, pengguna memilih menu 3 dan memasukkan nomor buku 3. Program memeriksa stok buku ke 3 dan menemukan bahwa stok masih tersedia. Maka, program mengurangi stok sebanyak satu dan menampilkan pesan "Buku berhasil dipinjam!" yang menunjukkan bahwa buku berhasil dipinjam. Lalu, pengguna mencoba lagi untuk meminjam buku 3, Namun, karena stoknya sudah habis akibat peminjaman sebelumnya, program menampilkan pesan "Maaf, stok buku habis."


CASE 4  KELUAR
  •     Case 4 – Keluar dari program
    • Case 4 dijalankan ketika pengguna memilih menu 4 (keluar)
    • Program menampilkan pesan: "Terima kasih sudah menggunakan sistem perpustakaan." yang berfungsi sebagai penutup program dan konfirmasi bahwa pengguna telah memilih keluar
    • break digunakan untuk untuk menghentikan eksekusi case 4 dan keluar dari struktur switch
  • Default (Pilihan menu tidak valid)
    • default akan dijalankan jika nilai menu tidak sesuai dengan case 1-4
    • Misalnya, pengguna memasukkan angka 5 atau 0
    • Program akan menampilkan pesan kesalahan agar pengguna tahu bahwa pilihan menu tidak valid
    • Setelah itu, program kembali menampilkan menu utama karena masih berada dalam perulangan
  • Kondisi Perulangan do-while
    • Ini adalah kondisi dari perulangan do-while
    • Selama nilai Menu bukan 4, program akan:
      • menampilkan menu utama kembali
      • menunggu input pengguna lagi
    • Jika pengguna memilih menu 4, kondisi menu !=4 bernilai salah, sehingga perulangan berhenti
  • Return 0;
    • Menandakan bahwa fungsi main() berakhir dengan normal
    • Nilai 0 berarti program selesai tanpa error

    Output


    










    

Output tersebut menunjukkan dua kondisi berbeda yang terjadi sesuai dengan logika pada kode program, yaitu pemilihan menu keluar dan pemilihan menu yang tidak valid

Pada tampilan pertama, pengguna memilih menu 4, sehingga program masuk ke bagian case 4 pada struktur switch(menu). Program kemudian menampilkan pesan "Terima kasih sudah menggunakan sistem perpustakaan.". Setelah itu, kondisi pada perulangan do-while adalah menu !=4, perulangan seharusnya berhenti dan program berakhir.

Pada tampilan kedua, pengguna memilih menu 5, yang tidak tersedia dalam pilihan menu. Karena tidak ada case 5 di dalam switch, maka program menjalankan bagian default, sehingga muncul output "Menu tidak tersedia!". Setelah pesan tersebut ditampilkan, program kembali menampilkan menu utama karena kondisi perulangan menu !=4 masih terpenuhi.

Dengan demikian, output ini menunjukkan bahwa case 4 berfungsi untuk mengakhiri program, sedangkan default digunakan untuk menangani input menu yang tidak sesuai, sesuai dengan penjelasan kode program sebelumnya.


KODE PROGRAM LENGKAP

#include <stdio.h>
#include <string.h>

#define MAX 5

int main() {
    int menu;
    char judul[MAX][50];
    int stok[MAX];
    int jumlahBuku = 0;
    int i;
    int pinjam;

    do {
        printf("\n===== SISTEM PERPUSTAKAAN =====\n");
        printf("1. Input Data Buku\n");
        printf("2. Tampilkan Data Buku\n");
        printf("3. Pinjam Buku\n");
        printf("4. Keluar\n");
        printf("Pilih menu : ");
        scanf("%d", &menu);

        switch(menu) {
        case 1:
            printf("\nInput jumlah buku (max %d): ", MAX);
            scanf("%d", &jumlahBuku);

            for(i = 0; i < jumlahBuku; i++) {
                printf("\nBuku ke-%d\n", i+1);
                printf("Judul : ");
                scanf(" %[^\n]", judul[i]);
                printf("Stok  : ");
                scanf("%d", &stok[i]);
            }
            break;

        case 2:
            printf("\n=== DAFTAR BUKU ===\n");
            for(i = 0; i < jumlahBuku; i++) {
                printf("\nBuku ke-%d", i+1);
                printf("\nJudul : %s", judul[i]);
                printf("\nStok  : %d\n", stok[i]);
            }
            break;

        case 3:
            printf("\nPilih nomor buku yang ingin dipinjam: ");
            scanf("%d", &pinjam);

            if(pinjam > 0 && pinjam <= jumlahBuku) {
                if(stok[pinjam-1] > 0) {
                    stok[pinjam-1]--;
                    printf("Buku berhasil dipinjam!\n");
                } else {
                    printf("Maaf, stok buku habis.\n");
                }
            } else {
                printf("Nomor buku tidak valid!\n");
            }
            break;

        case 4:
            printf("Terima kasih sudah menggunakan sistem perpustakaan.\n");
            break;

        default:
            printf("Menu tidak tersedia!\n");
        }

    } while(menu != 4);

    return 0;
}



Komentar