Disusun Oleh :
1. Reksi Hendra Pratama (G1A022032)
2. Attiya Dianti Fadli (G1A022002)
3. Keysa Maqfirah (G1A022012)
4. Evelyn Eunike Aritonang (G1A022024)
5. Esa Nirza Zakia Putri (G1A022036)
Nama Asisten Dosen :
Dosen Pengampu :
Dalam kata pengantar ini, saya ingin menyampaikan laporan akhir terkait
tugas besar akhir praktikum yang telah kami selesaikan. Laporan tersebut membahas
tentang implementasi struktur data dan algoritma dalam sistem informasi
perpustakaan dengan menggunakan binary search.
Tugas ini merupakan bagian penting dari proses pembelajaran dan
pengembangan diri kami sebagai mahasiswa. Selama proses pengerjaan tugas, kami
telah menghadapi berbagai tantangan dan kesulitan, namun dengan bantuan dosen,
asisten dosen dan rekan satu tim, kami berhasil menyelesaikan tugas dengan baik.
Dalam laporan ini, kami akan memaparkan hasil dari tugas besar akhir
praktikum yang telah kami kerjakan, termasuk tujuan dari tugas, metodologi yang
digunakan, serta hasil dan penemuan yang diperoleh. kami juga akan menjelaskan
pembelajaran yang kami dapatkan selama proses pengerjaan tugas, serta saran dan
rekomendasi untuk pengembangan lebih lanjut.
Kami berharap laporan ini dapat memberikan kontribusi yang bermanfaat bagi
perkembangan ilmu pengetahuan dan teknologi, serta dapat menjadi referensi bagi
rekan-rekan mahasiswa yang akan melakukan tugas serupa di masa depan. Terima
kasih kepada dosen pembimbing dan rekan satu tim yang telah membantu dan
mendukung kami dalam menyelesaikan tugas ini.
i
DAFTAR ISI
ii
DAFTAR GAMBAR
iii
DAFTAR LAMPIRAN
iv
BAB 1
PENDAHULUAN
A. Latar Belakang
Perpustakaan merupakan institusi penting dalam masyarakat yang bertujuan
untuk menyediakan akses ke berbagai sumber pengetahuan dan informasi.
Seiring dengan kemajuan teknologi, perpustakaan juga bertransformasi menjadi
sistem informasi perpustakaan yang menggunakan teknologi informasi dalam
manajemen koleksi dan layanan kepada pengguna.
Sistem informasi perpustakaan memainkan peran yang krusial dalam
mengorganisir dan menyediakan akses cepat terhadap koleksi yang tersedia.
Dalam konteks ini, pemilihan struktur data dan algoritma yang tepat menjadi
faktor penting dalam memastikan keefektifan dan efisiensi sistem informasi
perpustakaan.
Salah satu algoritma yang dapat diterapkan dalam sistem informasi
perpustakaan adalah binary search. Binary search adalah algoritma pencarian
yang efisien dan cepat dalam mencari elemen di dalam kumpulan data yang
sudah terurut. Dalam konteks sistem informasi perpustakaan, binary search dapat
digunakan untuk mempercepat proses pencarian buku berdasarkan kriteria
tertentu, seperti judul, penulis, atau nomor ISBN.
Penerapan binary search dalam sistem informasi perpustakaan memiliki
beberapa manfaat yang signifikan. Pertama, pencarian data menjadi lebih efisien
dan cepat, sehingga pengguna dapat dengan mudah menemukan buku yang
mereka cari. Kedua, pengelolaan koleksi perpustakaan menjadi lebih terorganisir
dan sistematis, dengan memanfaatkan struktur data yang efektif.
Dalam latar belakang ini, kami berfokus untuk mempelajari dan menerapkan
binary search dalam konteks sistem informasi perpustakaan. Kami akan menggali
lebih dalam tentang konsep dan implementasi binary search, serta
mengeksplorasi manfaat dan potensi penerapannya dalam memperbaiki kinerja
sistem informasi perpustakaan.
1
Dengan pemahaman yang baik tentang struktur data dan algoritma, serta
penerapan binary search dalam sistem informasi perpustakaan, diharapkan sistem
informasi perpustakaan dapat menjadi lebih efisien, efektif, dan memenuhi
kebutuhan pengguna dengan lebih baik.
Melalui laporan ini, kami berharap dapat memberikan wawasan baru dan
pemahaman yang lebih mendalam tentang penggunaan binary search dalam
sistem informasi perpustakaan. Semoga laporan ini memberikan manfaat dan
kontribusi positif dalam pengembangan sistem informasi perpustakaan yang
lebih baik di masa depan.
B. Rumusan Masalah
Berdasarkan latar belakang yang telah dijelaskan, terdapat beberapa rumusan
masalah yang dapat diajukan dalam konteks penerapan binary search dalam
sistem informasi perpustakaan. Rumusan masalah tersebut antara lain:
1. Bagaimana penerapan binary search dalam sistem informasi perpustakaan
dapat meningkatkan efisiensi dan kecepatan proses pencarian data?
2. Apa saja kriteria pencarian yang dapat diimplementasikan menggunakan
binary search dalam sistem informasi perpustakaan?
3. Bagaimana proses pengelolaan koleksi perpustakaan dapat ditingkatkan
melalui penerapan binary search?
4. Apakah ada batasan atau kendala dalam menerapkan binary search dalam
sistem informasi perpustakaan, dan bagaimana cara mengatasinya?
5. Bagaimana penggunaan binary search dapat meningkatkan kepuasan
pengguna dalam mengakses dan mencari buku dalam sistem informasi
perpustakaan?
2
C. Tujuan dan Manfaat
Tujuan:
1. Mempelajari konsep dan prinsip dasar binary search dalam konteks
sistem informasi perpustakaan.
2. Mengimplementasikan binary search sebagai algoritma pencarian efisien
dalam sistem informasi perpustakaan.
3. Meningkatkan efisiensi dan kecepatan proses pencarian data dalam sistem
informasi perpustakaan.
4. Meningkatkan pengelolaan koleksi perpustakaan melalui penerapan
binary search.
5. Menganalisis manfaat dan potensi penggunaan binary search dalam
meningkatkan layanan dan kepuasan pengguna sistem informasi
perpustakaan.
Manfaat:
1. Mempercepat proses pencarian buku dalam sistem informasi
perpustakaan sehingga pengguna dapat dengan mudah menemukan buku
yang mereka cari.
2. Meningkatkan efisiensi dan efektivitas pengelolaan koleksi perpustakaan
dengan memanfaatkan struktur data yang efisien.
3. Mengoptimalkan penggunaan sumber daya perpustakaan dengan
meminimalkan waktu yang diperlukan untuk mencari buku.
4. Meningkatkan kepuasan pengguna dengan memberikan akses yang cepat
dan mudah terhadap koleksi perpustakaan.
5. Menyediakan landasan yang kuat untuk pengembangan dan peningkatan
sistem informasi perpustakaan di masa depan.
6. Memberikan pemahaman yang lebih mendalam tentang struktur data dan
algoritma dalam konteks nyata.
7. Mengembangkan kemampuan analisis dan pemecahan masalah dalam
mengoptimalkan sistem informasi perpustakaan.
3
BAB II
TINJAUAN PUSTAKA
A. Landasan Teori
Sistem Informasi Perpustakaan adalah suatu sistem yang digunakan untuk
mengelola dan menyediakan akses terhadap koleksi buku dan sumber informasi
lainnya di dalam perpustakaan. Tujuan utama dari sistem informasi perpustakaan
adalah memudahkan pengguna dalam mencari dan mendapatkan informasi yang
diinginkan dengan cepat dan efisien.
Struktur data adalah cara atau metode untuk menyimpan dan mengorganisir
data agar dapat diakses dan dimanipulasi dengan efisien. Dalam sistem informasi
perpustakaan, beberapa struktur data yang umum digunakan adalah array, linked
list, stack, dan queue. (Sutiono, S.Kom., M.Kom., M.T. I)
Secara teknis, sebuah data disusun dalam susunan tertentu maupun suatu
kolom baik data yang berbentuk angka, simbol, huruf, maupun bentuk yang
lain.Di dalam penyusunan data, ada dua istilah yang harus kalian ingat yakni
node yang merupakan elemen dalam penyusunan data yang berisikan dengan
pointer ke node yang selanjutnya, dan yang kadua adalah indeks yakni objek
yang terdapat pada sistem database guna mempercepat pencarian data.
Algoritma Searching adalah tahapan sistematis yang digunakan pada program
untuk menelusuri suatu data yang dicari. Algoritma ini akan menerima sebuah
argumen atau kata kunci yang akan dicari. Kemudian algoritma akan
menjalankan langkah langkah tertentu untuk mendapatkan hasil berdasarkan kata
kunci. Setelah proses pencarian selesai, maka akan diperoleh hasil dari salah satu
dua kemungkinan, yaitu data yang dicari berdasarkan kata kunci telah ditemukan
atau data tidak dapat ditemukan.
Terdapat dua algoritma searching yang umum digunakan yaitu sequential
searching dan binary searching yang mana setiap algoritma pencarian ini
memiliki langkahnya masing masing (Muhammad Waffa, 2021)
Algoritma pencarian adalah prosedur atau langkah-langkah yang digunakan
untuk mencari elemen tertentu di dalam kumpulan data. Dalam konteks sistem
4
informasi perpustakaan, algoritma pencarian yang efisien sangat penting untuk
mempercepat proses pencarian data. Salah satu algoritma yang efisien adalah
binary search.
Binary search adalah algoritma pencarian yang efisien untuk mencari elemen
di dalam kumpulan data yang sudah terurut. Prinsip dasar dari binary search
adalah membagi kumpulan data menjadi dua bagian, lalu membandingkan
elemen tengah dengan elemen yang dicari. Jika elemen tersebut sama, maka
pencarian selesai. Jika elemen tersebut lebih kecil, maka pencarian dilanjutkan di
setengah bagian pertama. Jika elemen tersebut lebih besar, maka pencarian
dilanjutkan di setengah bagian kedua. Proses ini berlanjut sampai elemen
ditemukan atau tidak ditemukan. (Bentley, J. L., 1975).
Dalam konteks sistem informasi perpustakaan, binary search dapat diterapkan
untuk mempercepat pencarian buku berdasarkan kriteria tertentu, seperti judul,
penulis, atau nomor ISBN. Dengan menerapkan binary search, sistem informasi
perpustakaan dapat mengurangi waktu yang dibutuhkan pengguna untuk
menemukan buku yang mereka cari, sehingga meningkatkan efisiensi dan
kepuasan pengguna.
Keuntungan Menggunakan Binary Search:
a. Efisiensi Pencarian: Binary search memiliki kompleksitas waktu O(log n), di
mana n adalah jumlah elemen dalam kumpulan data.
b. Hal ini membuat pencarian menjadi lebih efisien dibandingkan dengan
metode pencarian linear.
c. Pencarian Terurut: Binary search membutuhkan kumpulan data yang sudah
terurut. Oleh karena itu, dalam sistem informasi perpustakaan, data buku
harus diurutkan berdasarkan kriteria tertentu sebelum diterapkan binary
search.
d. Penerapan yang Luas: Binary search merupakan algoritma yang umum
digunakan dalam berbagai bidang, termasuk sistem informasi perpustakaan.
e. Pemahaman tentang binary search dapat diterapkan dalam skenario lain yang
membutuhkan pencarian efisien.
5
BAB III
PEMBAHASAN
1. Membuat SI Perpustakaan
Jawaban :
window.rowconfigure(0, weight=1)
window.columnconfigure(0, weight=1)
# window.state("zoomed")
window.title("Sistem Informasi Perpustakaan")
window.geometry("1200x600")
6
page1 = tk.Frame(window)
page2 = tk.Frame(window)
page3 = tk.Frame(window)
page4 = tk.Frame(window)
page5 = tk.Frame(window)
page6 = tk.Frame(window)
def show_frame(frame):
frame.tkraise()
show_frame(page1)
7
Kode juga mengimpor beberapa modul dari pustaka tkinter, termasuk Label,
PhotoImage, messagebox, dan ttk.
8
diatur menggunakan placemetode.
# =================Page 2 ================
bg2 = PhotoImage(file="admin.png")
9
Kode bg2 = PhotoImage(file="admin.png") membuat objek gambar bernama
"bg2" dengan membaca file gambar bernama "admin.png". Kemudian, ia
membuat objek label bernama "label3" dan menyetel citranya ke objek "bg2".
Label tersebut kemudian diposisikan pada GUI menggunakan metode "place".
Kode next_button = tk.Button(page2, text="ADMIN",
command=lambda:show_frame(page3),font=(20),activebackground='blue')next_
button.place(x=300, y=300) juga membuat dua tombol: satu dengan teks
"ADMIN" dan satu lagi dengan teks "USER". Kedua tombol diposisikan
menggunakan metode "place" dan memiliki ukuran font 20 dan warna latar
belakang aktif biru activebackground='blue'). Saat diklik, tombol "ADMIN" akan
menampilkan bingkai dengan pengenal "halaman3" dan tombol "USER" akan
menampilkan bingkai dengan pengenal "halaman6". Fungsi yang digunakan
untuk menampilkan bingkai tidak ditampilkan dalam cuplikan kode ini.
10
Gambar 4 Screencode Page 3
def cek_login():
username = entry_username.get()
password = entry_password.get()
11
messagebox.showinfo("WARNING", " password anda salah")
12
"MONOSPACE", 15), activebackground='blue', command=lambda:
show_frame(page2))
button_login.place(x=100, y=600)
13
14
15
Gambar 5 Screencode Page 4
# Daftar buku beserta informasi ketersediaan, nama pengarang, dan letak rak
buku
books = [
{"judul": "1984", "ketersediaan": True,
"pengarang": "George Orwell", "rak_buku": "C3"},
{"judul": "Animal Farm", "ketersediaan": True,
"pengarang": "George Orwell", "rak_buku": "D4"},
{"judul": "Brave New World", "ketersediaan": True,
"pengarang": "Aldous Huxley", "rak_buku": "G7"},
{"judul": "Lord of the Flies", "ketersediaan": False,
16
"pengarang": "William Golding", "rak_buku": "I9"},
{"judul": "Pride and Prejudice", "ketersediaan": True,
"pengarang": "Jane Austen", "rak_buku": "E5"},
{"judul": "The Adventures of Huckleberry Finn", "ketersediaan": True,
"pengarang": "Mark Twain", "rak_buku": "H8"},
{"judul": "The Catcher in the Rye", "ketersediaan": False,
"pengarang": "J.D. Salinger", "rak_buku": "F6"},
{"judul": "The Grapes of Wrath", "ketersediaan": True,
"pengarang": "John Steinbeck", "rak_buku": "J10"},
{"judul": "The Great Gatsby", "ketersediaan": True,
"pengarang": "F. Scott Fitzgerald", "rak_buku": "A1"},
{"judul": "To Kill a Mockingbird", "ketersediaan": False,
"pengarang": "Harper Lee", "rak_buku": "B2"}
]
17
return -1
def show_result():
target_book = entry.get()
index = binary_search(books, target_book)
if index == -1:
message.config(text=f"{target_book} tidak ditemukan.")
else:
book = books[index]
if book["ketersediaan"]:
ketersediaan = "tersedia"
else:
ketersediaan = "tidak tersedia"
message.config(
text=f"Judul: {book['judul']}\nKetersediaan: {ketersediaan}\nPengarang:
{book['pengarang']}\nRak Buku: {book['rak_buku']}")
def add_book():
new_book = {
"judul": title_entry.get(),
"ketersediaan": True if availability_combobox.get() == "Tersedia" else
False,
"pengarang": author_entry.get(),
"rak_buku": shelf_entry.get()
18
}
books.append(new_book)
# Urutkan kembali array
books.sort(key=lambda x: x["judul"])
# Update Treeview
update_treeview()
def toggle_availability():
# Cari indeks buku yang akan diubah ketersediaannya
target_book = treeview.selection()[0]
index = int(target_book.split("_")[1])
# Update Treeview
update_treeview()
19
# Fungsi untuk menghapus buku
def delete_book():
# Cari indeks buku yang akan dihapus
target_book = treeview.selection()[0]
index = int(target_book.split("_")[1])
# Update Treeview
update_treeview()
def update_treeview():
# Hapus semua item di Treeview
treeview.delete(*treeview.get_children())
# Membuat Treeview
treeview = ttk.Treeview(page4, columns=(
"judul", "ketersediaan", "pengarang", "rak_buku"), show="headings")
20
treeview.heading("judul", text="Judul")
treeview.heading("ketersediaan", text="Ketersediaan")
treeview.heading("pengarang", text="Pengarang")
treeview.heading("rak_buku", text="Rak Buku")
treeview.pack()
title_entry = tk.Entry(page4)
title_entry.place(x=250, y=500)
availability_label = tk.Label(
page4, text="Ketersediaan:", bg="light blue", fg='black')
availability_label.place(x=450, y=475)
availability_combobox = ttk.Combobox(
page4, values=["Tersedia", "Tidak Tersedia"])
availability_combobox.set("Tersedia")
21
availability_combobox.place(x=425, y=500)
author_entry = tk.Entry(page4)
author_entry.place(x=655, y=500)
shelf_entry = tk.Entry(page4)
shelf_entry.place(x=880, y=500)
22
back_button = tk.Button(master=page4, text=" Back< ", font=(
"MONOSPACE", 15), activebackground='blue', command=lambda:
show_frame(page3))
back_button.place(x=100, y=650)
23
Jika nilai judul dari buku pada indeks mid sama dengan nilai target, maka
fungsi ini akan mengembalikan nilai mid sebagai indeks buku yang sesuai
dengan judul yang diberikan. Jika nilai judul dari buku pada indeks mid kurang
dari nilai target, maka fungsi akan menggeser range pencarian ke kanan dengan
mengubah nilai variabel left menjadi mid + 1. Jika nilai judul dari buku pada
indeks mid lebih besar dari nilai target, maka fungsi akan menggeser range
pencarian ke kiri dengan mengubah nilai variabel right menjadi mid - 1.Jika pada
akhirnya tidak ada buku yang sesuai dengan judul yang diberikan, maka fungsi
ini akan mengembalikan nilai -1.
Fungsi `show_result()` tidak membutuhkan argumen, tetapi bergantung pada
variabel global `books` untuk mencari buku dalam koleksi.Ia menggunakan
fungsi `binary_search()` untuk mencari buku target dalam daftar `books`. Jika
buku ditemukan, fungsi menampilkan judul buku, pengarang, lokasi rak, dan
status ketersediaan menggunakan metode `message.config()`. Jika buku tidak
ditemukan, akan muncul pesan yang menunjukkan bahwa buku tidak ditemukan.
Perhatikan bahwa fungsi mengasumsikan bahwa daftar `books` berisi kamus
dengan kunci berikut: `judul` (title), `pengarang` (author), `rak_buku` (shelf
location), dan `ketersediaan` (availability). Nilai ketersediaan diharapkan berupa
boolean (True or false).Fungsi `toggle_availability()` digunakan untuk mengubah
ketersediaan buku di dalam variabel `books` dan kemudian memperbarui
tampilan `treeview`. Fungsi ini mengandung beberapa langkah, yaitu:
Mencari indeks buku yang akan diubah ketersediaannya dengan mengambil
baris pertama dari seleksi `treeview`, lalu memecah string tersebut menjadi
indeks buku. Indeks ini kemudian dijadikan integer.Mengubah nilai ketersediaan
buku di variabel `books` dengan cara mengganti nilai boolean ketersediaan buku
di indeks yang telah ditemukan dengan nilai kebalikan dari ketersediaan
sebelumnya.
Memperbarui tampilan `treeview` dengan memanggil fungsi
`update_treeview()`.Namun, perlu diingat bahwa kode di dalam fungsi ini tidak
mengecek apakah seleksi di `treeview` benar-benar adalah sebuah buku. Jadi jika
24
seleksi tidak mengandung informasi yang benar atau tidak ada seleksi sama
sekali, fungsi ini akan mengalami error. Oleh karena itu, sebaiknya tambahkan
penanganan error di dalam fungsi ini jika diperlukan.
Kode mendefinisikan fungsi `update_treeview()` yang memperbarui widget
`treeview` berdasarkan daftar `buku` yang disediakan`treeview` dibuat dengan
empat kolom dan empat judul, menggunakan kelas `ttk.Treeview`. Judulnya
adalah "Judul", "Ketersediaan", "Pengarang", dan "Rak Buku", dan kolom diberi
nama "judul", "ketersediaan", "pengarang", dan "rak_buku".
Fungsi `update_treeview()` pertama-tama menghapus semua item yang ada
dari `treeview` menggunakan metode `delete()`. Kemudian, iterasi pada daftar
`books` dan menyisipkan setiap buku sebagai item baru ke dalam `treeview`
menggunakan metode `insert()`. Parameter `values` dari metode `insert()` adalah
tuple yang berisi nilai untuk setiap kolom item baru.
Nilai kolom “Ketersediaan” ditentukan berdasarkan nilai kunci `ketersediaan`
pada kamus buku. Jika nilainya `Benar`, string "Tersedia" digunakan, jika tidak
maka "Tidak Tersedia" digunakan.Secara keseluruhan, kode ini menyiapkan
widget `treeview` dengan empat kolom, dan menyediakan fungsi untuk
memperbarui `treeview` berdasarkan daftar buku.
25
26
Gambar 6 Screencode page 5
def tambah_peminjam():
nama = nama_entry.get()
npm = npm_entry.get()
tgl_pinjam = datetime.strptime(tgl_pinjam_entry.get(), '%d/%m/%Y')
tgl_kembali = datetime.strptime(tgl_kembali_entry.get(), '%d/%m/%Y')
judul_buku = judul_buku_entry.get()
27
"tgl_pinjam": tgl_pinjam, "tgl_kembali": tgl_kembali, "judul_buku":
judul_buku})
message.config(text="Data peminjam berhasil ditambahkan.")
def hapus_peminjam():
nama = nama_entry3.get()
def tampilkan_peminjam():
if len(peminjam) == 0:
message.config(text="Belum ada data peminjam.")
result.config(text="")
else:
message.config(text="")
text = ""
for data in peminjam:
28
text += f"Nama: {data['nama']}\nNPM: {data['npm']}\nJudul Buku:
{data['judul_buku']}\nTgl. Pinjam:
{data['tgl_pinjam'].strftime('%d/%m/%Y')}\nTgl. Kembali:
{data['tgl_kembali'].strftime('%d/%m/%Y')}\n\n"
result.config(text=text)
# Membuat notebook
notebook = ttk.Notebook(page5)
notebook.pack(pady=10)
nama_entry = ttk.Entry(tambah_tab)
nama_entry.pack(pady=5)
npm_entry = ttk.Entry(tambah_tab)
npm_entry.pack(pady=5)
judul_buku_entry = ttk.Entry(tambah_tab)
judul_buku_entry.pack(pady=5)
29
tgl_pinjam_label = ttk.Label(tambah_tab, text="Tgl. Pinjam (dd/mm/yyyy):")
tgl_pinjam_label.pack(pady=5)
tgl_pinjam_entry = ttk.Entry(tambah_tab)
tgl_pinjam_entry.pack(pady=5)
tgl_kembali_entry = ttk.Entry(tambah_tab)
tgl_kembali_entry.pack(pady=5)
nama_entry3 = ttk.Entry(hapus_tab)
nama_entry3.pack(pady=5)
30
# Membuat tab tampilkan peminjam
tampilkan_tab = ttk.Frame(notebook)
notebook.add(tampilkan_tab, text="Tampilkan Peminjam")
tampilkan_button = ttk.Button(
tampilkan_tab, text="Tampilkan", command=tampilkan_peminjam)
tampilkan_button.pack(pady=10)
31
yang akan dihapus dari array “peminjam”. Ketika pengguna mengklik tombol
"Hapus" (Hapus), informasi tersebut dihapus dari array "peminjam".
Pada tab "Tampilkan Peminjam", pengguna dapat mengklik tombol
"Tampilkan" (Tampilkan) untuk menampilkan daftar semua peminjam dalam
larik "peminjam".GUI juga menyertakan tombol "Kembali" untuk kembali ke
halaman sebelumnya. Catatan : Kode menggunakan modul tkinter untuk
membuat GUI dan modul datetime untuk menangani input tanggal.
32
Gambar 7 Screencode Page 6
33
{"judul": "The Adventures of Huckleberry Finn", "ketersediaan": True,
"pengarang": "Mark Twain", "rak_buku": "H8"},
{"judul": "The Catcher in the Rye", "ketersediaan": False,
"pengarang": "J.D. Salinger", "rak_buku": "F6"},
{"judul": "The Grapes of Wrath", "ketersediaan": True,
"pengarang": "John Steinbeck", "rak_buku": "J10"},
{"judul": "The Great Gatsby", "ketersediaan": True,
"pengarang": "F. Scott Fitzgerald", "rak_buku": "A1"},
{"judul": "To Kill a Mockingbird", "ketersediaan": False,
"pengarang": "Harper Lee", "rak_buku": "B2"}
]
34
index = binary_search(books, target_book)
if index == -1:
message.config(text=f"{target_book} tidak ditemukan.")
else:
book = books[index]
if book["ketersediaan"]:
ketersediaan = "tersedia"
else:
ketersediaan = "tidak tersedia"
table = ttk.Treeview(page6, columns=(
"Ketersediaan", "Pengarang", "Rak Buku"))
table.heading("#0", text="Judul")
table.heading("Ketersediaan", text="Ketersediaan")
table.heading("Pengarang", text="Pengarang")
table.heading("Rak Buku", text="Rak Buku")
table.insert("", "end", text=book["judul"], values=(
ketersediaan, book["pengarang"], book["rak_buku"]))
table.place(x=250, y=300)
entry = tk.Entry(page6)
entry.place(x=570, y=125)
35
message.place(x=620, y=180)
window.mainloop()
36
Gambar 9 Output page 2
Gambar 9 merupakan ouput dari sourchcode page 1. dimana terdapat dua
tombol yang ditampilkan pada frame/page 2, yaitu "ADMIN" dan "USER"
Ketika pengguna menekan tombol "ADMIN", maka program akan memanggil
fungsi "show_frame()" dengan parameter page3. Kemudian frame/page 3 akan
ditampilkan ke layar.
Sedangkan ketika pengguna menekan tombol "USER", maka program akan
memanggil fungsi "show_frame()" dengan parameter page6. Kemudian
frame/page 6 akan ditampilkan ke layar.Selain tombol, program tersebut juga
menampilkan gambar "admin.png" pada koordinat (500,150) dengan
menggunakan label
37
Selain itu, terdapat dua tombol yaitu "Login" dan "Back" yang berfungsi untuk
melakukan aksi login atau kembali ke halaman sebelumnya. Jika username dan
password yang dimasukkan benar, maka aplikasi akan menampilkan halaman
selanjutnya yaitu page4. Namun jika username dan password yang dimasukkan
salah, maka aplikasi akan menampilkan pesan peringatan "password anda salah".
38
Gambar 12 Output Page 5
Gambar 12 merupakan program tersebut adalah sebuah GUI (Graphical User
Interface) yang digunakan untuk mengelola data peminjaman buku. Program ini
memiliki beberapa tab, yaitu "Tambah Peminjam", "Hapus Peminjam", dan
"Tampilkan Peminjam".
Ada tab "Tambah Peminjam", terdapat beberapa field input yang harus diisi,
yaitu Nama, NPM, Judul Buku, Tgl. Pinjam, dan Tgl. Kembali. Setelah semua
field diisi, pengguna dapat menekan tombol "Tambah" untuk menambahkan data
peminjam baru ke dalam array "peminjam".
Pada tab "Hapus Peminjam", terdapat sebuah field input untuk mencari data
39
peminjam berdasarkan Nama. Jika data peminjam ditemukan, pengguna dapat
menekan tombol "Hapus" untuk menghapus data tersebut dari array "peminjam".
Pada tab "Tampilkan Peminjam", terdapat sebuah tombol "Tampilkan" yang
akan menampilkan daftar seluruh data peminjam yang telah diinputkan ke dalam
array "peminjam". Data tersebut ditampilkan dalam bentuk label dengan scroll
bar untuk memudahkan pengguna membaca jika data peminjam yang terlalu
banyak. Program ini juga memiliki tombol "Back" untuk kembali ke halaman
sebelumnya.
40
BAB IV
KESIMPULAN DAN SARAN
A. Kesimpulan
Dari hasil kami belajar selama praktikum dan hasil diskusi tim kami dapat
disimpulkan bahwasannya untuk membuat program SI perpustakaan ini
diperlukan untuk memastikan telah menginstal library yang diperlukan, seperti
Tkinter, sebelum menjalankan kode ini.
Periksa apakah semua file gambar yang digunakan (misalnya START1.png,
admin.png, dll.) ada dalam direktori yang sama dengan file Python.Sesuaikan
tata letak gambar dan tombol dengan kebutuhan desain Anda.Pastikan untuk
memahami dan memodifikasi kode sesuai dengan kebutuhan aplikasi Anda.
Pertimbangkan untuk membagi kode ini menjadi beberapa modul atau kelas yang
terpisah untuk mempermudah pemeliharaan dan pengembangan di masa
mendatang.
Jika ingin menyimpan data peminjaman buku secara permanen,
pertimbangkan untuk menggunakan database atau file untuk menyimpan data,
daripada menggunakan variabel dalam kode seperti yang dilakukan saat ini.
Dengan memperhatikan saran-saran ini, Anda dapat memulai untuk
mengembangkan aplikasi "Sistem Informasi Perpustakaan" berbasis Tkinter
dengan lebih baik.
B. Saran
Saran yang dapat kami berikan selama praktikum yang pertama saran ini
ditujukan untuk kedua asisten dosen kami yaitu agar tetap menjadi asisten dosen
yang profesional, ingatlah bahwasannya mbak-mbak adalah perpanjangan dari
dosen, jadi pastikan mbak-mbak selalu berperilaku secara profesional. Bisa tetap
menjadi teladan bagi para adik- adik tingkatnya karena apa yang mereka adalah
contoh dan sumber inspirasi, jadi pastikan selalu memberikan yang terbaik dan
menjadi teladan yang baik bagi mereka.Saat melakukan demonstrasi, pastikan
41
menjelaskan langkah-langkahnya dengan jelas dan mudah dipahami. Jangan
terburu-buru dan pastikan bahwa semua mahasiswa memahami apa yang sedang
dilakukan. Tetap menjadi mbak- mbak kami yang ramah.
Yang kedua adalah saran yang ditujukan untuk diri kami sendiri yaitu untuk
lebih menghargai materi yang diberikan mbak-mbak sebagai asisten dosen,
memberikan feedback positif dengan mengerjakan tugas yang diberikan.
Menghargai dan saling membatu sesama untuk memecahkan suatu permasalahan
dalam program, mengasah keterampilan dengan sering berlatih dan juga untuk
mempersiapkan diri lebih disarankan untuk mempersiapkan diri dan juga materi
yang ingin dibahas pada saat praktikum.
42
DAFTAR PUSTAKA
Napitupulu, N., & Sihombing, N. S. (2010). Struktur Data dan Algoritma. USUpress.
Santoso, A. N., Anggara, A. I. D., Syah, A. F., Noerlillah, L. W., & Alamsyah, W. S.
(2018). Sistem Kontrol Perpustakaan Menggunakan Metode Binary
Searching. SinarFe7, 1(1), 365-368.
43
LAMPIRAN
44
Lampiran 3 Diskusi Hari Ke-3
45
KEMENTRIAN PENDIDIKAN DAN KEBUDAYAAN RISET
DAN TEKNOLOGI
UNIVERSITAS BENGKULU
FAKULTAS TEKNIK
PROGRAM STUDI INFORMATIKA
LEMBAR ASISTENSI
PRAKTIKUM PROYEK STRUKTUR DATA DAN ALGORITMA