Anda di halaman 1dari 52

LAPORAN TUGAS BESAR AKHIR PRAKTIKUM

PROYEK STRUKTUR DATA DAN ALGORITMA

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 :

1. Gita Dwi Putriani (G1A019043)


2. Valleryan Virgil Zuliuskandar (G1A020021)
3. Rose Enjellina (G1A021019)
4. Rimayana Dwi Atika (G1A021021)
5. Yulia Pratiwi (G1A021029)
6. Esti Asmareta Ayu (G1A021042)
7. Zabrila Amrina Zadia Putri (G1A021053)
8. Arif Rahmat Ikhsan (G1A021067)
9. Rayhan M. Rizki (G1A021083)
10. Fanissa Azzahra (G1A021091)

Dosen Pengampu :

1. Arie Vatresia, S.T., M.TI., Ph.D.


2. Mochammad Yusa, S.Kom., M.Kom.

PROGRAM STUDI INFORMATIKA


FAKULTAS TEKNIK UNIVERSITAS
BENGKULU
2023
KATA PENGANTAR

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

Kata Pengantar ..................................................................................................... i


Daftar isi .............................................................................................................. ii
Daftar Gambar .................................................................................................... iii
Daftar Lampiran.................................................................................................. iv
BAB I PENDAHULUAN
A.Latar Belakang…………………………………………………………1
B.Rumusan Masalah……………………………………………………...2
C.Tujuan dan Manfaat…………………………………………………….3
BAB II TINJAUAN PUSTAKA
A. Landasan Teori………………………………………………………...4
BAB III PEMBAHASAN
A. Pembahasan…………………………………………………………...6
BAB IV KESIMPULAN DAN SARAN
A. Kesimpulan…………………………………………………………...41
B. Saran…………………………………………………………………. 41
DAFTAR PUSTAKA…………………………………………………………….43
LAMPIRAN………………………………………………………………………44

ii
DAFTAR GAMBAR

Gambar 1 Screencode Fungsi Kode Program ....................................................... 6


Gambar 2 Screencode Page 1 ............................................................................... 8
Gambar 3 Screencode Page 2 ............................................................................... 9
Gambar 4 Screencode Page 3 ............................................................................. 11
Gambar 5 Screencode Page 4 ............................................................................. 16
Gambar 6 Screencode page 5 ............................................................................. 27
Gambar 7 Screencode Page 6 ............................................................................. 33
Gambar 8 Output Page 1 .................................................................................... 36
Gambar 9 Output page 2 .................................................................................... 37
Gambar 10 Ouput Page 3 ................................................................................... 37
Gambar 11 Output Page 4 .................................................................................. 38
Gambar 12 Output Page 5 .................................................................................. 39
Gambar 13 Output Page 6 .................................................................................. 40

iii
DAFTAR LAMPIRAN

Lampiran 1 Diskusi Hari Ke-1 ........................................................................... 44


Lampiran 2 Diskusi Hari Ke-2 ........................................................................... 44
Lampiran 3 Diskusi Hari Ke-3 ........................................................................... 45
Lampiran 4 Diskusi Hari Ke-4 ........................................................................... 45

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?

Melalui penelitian dan eksplorasi tentang pertanyaan-pertanyaan tersebut,


diharapkan dapat memperoleh pemahaman yang lebih baik tentang manfaat dan
potensi penerapan binary search dalam meningkatkan kinerja dan layanan 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 :

Gambar 1 Screencode Fungsi Kode Program

Source code gambar 1 :


from datetime import datetime
import tkinter as tk
from tkinter import Label, PhotoImage, messagebox
from tkinter import ttk

window = tk.Tk() # create a window widget

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)

for frame in (page1, page2, page3, page4, page5, page6):


frame.grid(row=0, column=0, sticky='nsew')

def show_frame(frame):
frame.tkraise()

show_frame(page1)

Penjelasan source code gambar 1 :


Ini adalah skrip Python yang membuat jendela GUI menggunakan pustaka
tkinter. Jendela tersebut memiliki judul "Sistem Informasi Perpustakaan" dan
berukuran 1200x600 piksel. Ini juga mendefinisikan enam frame bernama page1,
page2, page3, page4, page5, dan page6, dan menyetel semuanya untuk
diposisikan pada baris 0, kolom 0 dari jendela dengan properti lengket disetel ke
'nsew' (utara, selatan, timur , barat). Fungsi show_frame() didefinisikan
untuk beralih antar frame saat dipanggil dengan melewatkan frame yang
diinginkan sebagai parameter. Baris terakhir kode memanggil show_frame()
untuk menampilkan page1bingkai, yang merupakan bingkai pertama yang
ditampilkan saat jendela dibuka.
Itu juga mendefinisikan fungsi show_frame yang mengambil bingkai sebagai
argumen dan menaikkannya ke atas menggunakan tkraise()metode.Baris terakhir
dari kode memanggil show_framefungsi dengan page1sebagai argumen, yang
berarti itu page1akan menjadi bingkai pertama yang ditampilkan di jendela.

7
Kode juga mengimpor beberapa modul dari pustaka tkinter, termasuk Label,
PhotoImage, messagebox, dan ttk.

Gambar 2 Screencode Page 1

Source code gambar 2 :

# ============= Page 1 =========


bg = PhotoImage(file="START1.png")

# Show image using label


label1 = Label(page1, image=bg)
label1.place(x=-70, y=15)

tombol = tk.Button(window, text=" START ", font=(


"MONOSPACE", 15), activebackground="blue", command=lambda:
show_frame(page2))
tombol.place(x=330, y=400)

Penjelasan Source code :

Gambar 2 Kode ini tampaknya menjadi bagian dari program antarmuka


pengguna grafis (GUI) menggunakan perpustakaan tkinter dengan Python. Itu
memuat file gambar bernama "START1.png" menggunakan kelas PhotoImage
dan menugaskannya ke variabel bg. Kemudian, ia membuat label bernama label1
dan menyetel atribut gambarnya ke bg variabel.
Baris berikutnya membuat tombol bernama tomboldengan label "MULAI",
font "MONOSPACE" dan ukuran font 15. Saat tombol ini diklik, tombol ini
memanggil fungsi bernama show_frame dengan argumen page2. Posisi tombol

8
diatur menggunakan placemetode.

Gambar 3 Screencode Page 2

Source code gambar 3 :

# =================Page 2 ================
bg2 = PhotoImage(file="admin.png")

# Show image using label


label3 = Label(page2, image=bg2)
label3.place(x=500, y=150)

next_button = tk.Button(page2, text="ADMIN", command=lambda:


show_frame(
page3), font=(20), activebackground='blue')
next_button.place(x=300, y=300)

next_button = tk.Button(page2, text="USER", command=lambda: show_frame(


page6), font=(20), activebackground='blue')
next_button.place(x=300, y=450)

Penjelasan source code gambar 3 :


Sepertinya pada gambar 3 ini adalah cuplikan kode yang ditulis dengan
Python menggunakan pustaka Tkinter untuk membuat antarmuka pengguna
grafis (GUI) dengan tombol dan gambar.

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

Source code gambar 4 :


# ============================== Page 3
===============================
page3.config(background="white")
logo1 = tk.PhotoImage(file="login_admin.png")

pag2_label = tk.Label(page3, text='SIGN IN', font=(


'Arial', 30, 'bold'), bg="white", fg='black')
pag2_label.place(x=90, y=50)

pag3_label = tk.Label(page3, text='', font=(


'Arial', 30, 'bold'), bg="white", fg='black', image=logo1, compound="right")
pag3_label.place(x=400, y=50)

def cek_login():
username = entry_username.get()
password = entry_password.get()

if username == "admin" and password == "12345":


label_error.config(text="")
page2.pack_forget()
show_frame(page4)
else:

11
messagebox.showinfo("WARNING", " password anda salah")

# Membuat label dan entry untuk username


label_username = tk.Label(master=page3, text="Username", font=(
"Argent", 15), fg='black', bg="#FFC948")
label_username.place(x=100, y=140)

entry_username = tk.Entry(master=page3, bg="#7CFAFF")


entry_username.place(x=100, y=170)

# Membuat label dan entry untuk password


label_password = tk.Label(master=page3, text="Password",
font=("Argent", 15), bg="#FFC948")
label_password.place(x=100, y=210)

entry_password = tk.Entry(master=page3, bg="#7CFAFF", show="*")


entry_password.place(x=100, y=240)

# Membuat button untuk login


button_login = tk.Button(master=page3, text=" Login ", font=(
"MONOSPACE", 15), activebackground='blue', command=cek_login)
button_login.place(x=100, y=280)

# Membuat label untuk pesan error


label_error = tk.Label(master=page3)
label_error.place(x=100, y=280)

button_login = tk.Button(master=page3, text=" Back< ", font=(

12
"MONOSPACE", 15), activebackground='blue', command=lambda:
show_frame(page2))
button_login.place(x=100, y=600)

Penjelasan Sourch Code gambar 4 :

Gambar 4 merupakan Kode program pada tampilan halaman login untuk


masuk ke aplikasi.Baris kode pertama adalah konfigurasi halaman dengan
mengatur warna background menjadi putih.
Kode selanjutnya membuat variabel logo1dan memuat gambar dengan
menggunakan modul tkinter.PhotoImage(). Selanjutnya, kode membuat label
dengan teks "SIGN IN" yang diberi font, ukuran, dan warna latar belakang dan
font yang berbeda. Label ini ditempatkan pada koordinat x=90, y=50. Kemudian
kode membuat label kosong dengan gambar logo dan mengatur posisinya pada
koordinat x=400, y=50.
Fungsi cek_login() di dalam kode akan dieksekusi saat tombol login ditekan.
Fungsi ini mengambil nilai dari entry untuk username dan password dimasukkan
oleh pengguna. Jika nilai yang dimasukkan sama dengan "admin" dan "12345",
maka halaman login ditutup dan halaman berikutnya yaitu page4 akan
ditampilkan. Namun, jika nilai yang dimasukkan salah, maka pesan peringatan
akan muncul.
Selanjutnya kode buat label dan entry untuk username dan password. Kode
juga membuat tombol untuk login. Saat tombol login ditekan, fungsi cek_login()
akan dipanggil. Kemudian, kode membuat label untuk pesan error jika username
atau password salah dan menempatkannya di koordinat x=100, y=280. Kode juga
membuat tombol untuk login. Saat tombol login ditekan, fungsi cek_login() akan
dipanggil.
Terakhir, kode membuat button kembali yang ketika ditekan akan kembali ke
halaman sebelumnya, yaitu page2. Tombol ini diberi teks "Back<" dan
ditempatkan pada koordinat x=100, y=600.

13
14
15
Gambar 5 Screencode Page 4

Sourch code gambar 5 :


# ============================== Page 4
===========================================
bg1 = PhotoImage(file="tambah3.png")

# Show image using label


label2 = Label(page4, image=bg1)
label2.place(x=260, y=0)

# 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"}
]

# Fungsi untuk melakukan pencarian buku dengan binary search

def binary_search(books, target):


left = 0
right = len(books) - 1

while left <= right:


mid = (left + right) // 2
if books[mid]["judul"] == target:
return mid
elif books[mid]["judul"] < target:
left = mid + 1
else:
right = mid - 1

17
return -1

# Fungsi untuk menampilkan hasil pencarian

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']}")

# Fungsi untuk menambahkan buku baru

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()

# Clear input fields


title_entry.delete(0, tk.END)
availability_combobox.set("Tersedia")
author_entry.delete(0, tk.END)
shelf_entry.delete(0, tk.END)

# Pastikan bahwa array selalu terurut setelah setiap perubahan


books.sort(key=lambda x: x["judul"])

# Fungsi untuk mengubah ketersediaan buku

def toggle_availability():
# Cari indeks buku yang akan diubah ketersediaannya
target_book = treeview.selection()[0]
index = int(target_book.split("_")[1])

# Ubah ketersediaan buku


books[index]["ketersediaan"] = not books[index]["ketersediaan"]

# 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])

# Hapus buku dari daftar


del books[index]

# Update Treeview
update_treeview()

# Fungsi untuk mengupdate Treeview

def update_treeview():
# Hapus semua item di Treeview
treeview.delete(*treeview.get_children())

# Tambahkan buku-buku dari daftar ke Treeview


for i, book in enumerate(books):
ketersediaan = "Tersedia" if book["ketersediaan"] else "Tidak Tersedia"
treeview.insert(parent="", index=i, iid=f"book_{i}", text="", values=(
book["judul"], ketersediaan, book["pengarang"], book["rak_buku"]))

# 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()

# Tambahkan buku-buku dari daftar ke Treeview


for i, book in enumerate(books):
ketersediaan = "Tersedia" if book["ketersediaan"] else "Tidak Tersedia"
treeview.insert(parent="", index=i, iid=f"book_{i}", text="", values=(
book["judul"], ketersediaan, book["pengarang"], book["rak_buku"]))

# Membuat form untuk menambahkan buku baru


form_label = tk.Label(page4, text="Penambahan Buku Baru",
bg="light yellow", fg='black')
form_label.place(x=550, y=400)

title_label = tk.Label(page4, text="Judul:", bg="light blue", fg='black')


title_label.place(x=300, y=475)

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_label = tk.Label(page4, text="Pengarang:", bg="light blue", fg='black')


author_label.place(x=675, y=475)

author_entry = tk.Entry(page4)
author_entry.place(x=655, y=500)

shelf_label = tk.Label(page4, text="Rak Buku:", bg="light blue", fg='black')


shelf_label.place(x=905, y=475)

shelf_entry = tk.Entry(page4)
shelf_entry.place(x=880, y=500)

add_button = tk.Button(page4, text="Tambah Buku",


bg="light yellow", fg='black', command=add_book)
add_button.place(x=570, y=550)

# Membuat tombol untuk mengubah ketersediaan buku


toggle_button = tk.Button(
page4, text="Ubah Ketersediaan", command=toggle_availability)
toggle_button.place(x=250, y=240)

delete_button = tk.Button(page4, text="Hapus Buku", command=delete_book)


delete_button.place(x=900, y=240)

pinjam_button = tk.Button(page4, text="Peminjaman Buku -->",


command=lambda: show_frame(
page5), font=("Arial", 12), activebackground='blue')
pinjam_button.place(x=940, y=650)

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)

Penjelasan sourch code gambar 5 :


Gambar 5 Ini adalah blok kode yang ditulis dengan Python menggunakan
perpustakaan Tkinter untuk membuat antarmuka pengguna grafis (GUI) untuk
sistem perpustakaan. Kode dimulai dengan mengimpor file gambar yaitu terdapat
dalam kode bg1= PhotoImage(file="tambah3.png") dan menampilkannya di GUI
menggunakan label.
Selanjutnya, daftar kamus yang disebut "buku" dibuat. Setiap kamus mewakili
buku dan berisi judul, status ketersediaan, penulis, dan lokasi rak buku. Kode ini
kemungkinan merupakan bagian dari program yang lebih besar yang
menyertakan fungsi untuk mencari dan menampilkan informasi tentang buku di
sistem perpustakaan.
Fungsi binary_searchdi atas menerima dua parameter, yaitu booksdan target.
booksadalah sebuah daftar yang berisi informasi buku seperti judul, penulis,
penerbit, dll. Sedangkan targetadalah judul buku yang ingin dicari.Fungsi ini
menggunakan algoritma binary search untuk mencari buku yang sesuai dengan
judul yang diberikan def binary_search(books, target):
Pertama-tama, fungsi ini menginisialisasi dua variabel, yaitu left dan right,
yang menunjukkan indeks awal dan akhir dari daftar books. Selanjutnya, fungsi
ini memulai sebuah loop sementara yang berjalan left kurang dari atau sama
dengan right. Pada setiap iterasi, fungsi ini menghitung nilai tengah dari range
pencarian dengan mengambil nilai tengah dari variable left dan right, lalu
menyimpan hasilnya ke variabel mid. Selanjutnya, fungsi ini membandingkan
nilai judul dari buku pada indeks middengan nilai target yang diberikan.

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

Source code gambar 6 :


#=============================Page
5====================================
bg5 = PhotoImage(file="PINJAM.png")

# Show image using label


label4 = ttk.Label(page5, image=bg5)
label4.place(x=30, y=45)

# Membuat array untuk menyimpan data peminjam


peminjam = []

# Fungsi untuk menambahkan peminjam baru

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()

peminjam.append({"nama": nama, "npm": npm,

27
"tgl_pinjam": tgl_pinjam, "tgl_kembali": tgl_kembali, "judul_buku":
judul_buku})
message.config(text="Data peminjam berhasil ditambahkan.")

# Fungsi untuk menghapus data peminjam

def hapus_peminjam():
nama = nama_entry3.get()

for data in peminjam:


if data["nama"] == nama:
peminjam.remove(data)
message.config(text="Data peminjam berhasil dihapus.")
result.config(text="")
return

message.config(text="Data peminjam tidak ditemukan.")


result.config(text="")

# Fungsi untuk menampilkan daftar peminjam

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)

# Membuat tab tambah peminjam


tambah_tab = ttk.Frame(notebook)
notebook.add(tambah_tab, text="Tambah Peminjam")

nama_label = ttk.Label(tambah_tab, text="Nama:")


nama_label.pack(pady=5)

nama_entry = ttk.Entry(tambah_tab)
nama_entry.pack(pady=5)

npm_label = ttk.Label(tambah_tab, text="NPM:")


npm_label.pack(pady=5)

npm_entry = ttk.Entry(tambah_tab)
npm_entry.pack(pady=5)

judul_buku_label = ttk.Label(tambah_tab, text="Judul Buku:")


judul_buku_label.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_label = ttk.Label(tambah_tab, text="Tgl. Kembali (dd/mm/yyyy):")


tgl_kembali_label.pack(pady=5)

tgl_kembali_entry = ttk.Entry(tambah_tab)
tgl_kembali_entry.pack(pady=5)

tambah_button = ttk.Button(tambah_tab, text="Tambah",


command=tambah_peminjam)
tambah_button.pack(pady=10)

# Membuat tab hapus peminjam


hapus_tab = ttk.Frame(notebook)
notebook.add(hapus_tab, text="Hapus Peminjam")

nama_label3 = ttk.Label(hapus_tab, text="Nama:")


nama_label3.pack(pady=5)

nama_entry3 = ttk.Entry(hapus_tab)
nama_entry3.pack(pady=5)

hapus_button = ttk.Button(hapus_tab, text="Hapus",


command=hapus_peminjam)
hapus_button.pack(pady=10)

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)

result = ttk.Label(tampilkan_tab, text="")


result.pack(pady=10)

# Membuat label untuk pesan


message = ttk.Label(page5, text="")
message.pack(pady=10)

back_button = tk.Button(master=page5, text=" Back< ", font=(


"MONOSPACE", 15), activebackground='blue', command=lambda:
show_frame(page4))
back_button.place(x=100, y=600)

Penjelasan source code gambar 6 :


Ini adalah kode Python yang membuat antarmuka pengguna grafis (GUI)
untuk sistem perpustakaan. Kode membuat antarmuka tab dengan tiga tab:
"Tambah Peminjam" (Tambahkan Peminjam), "Hapus Peminjam" (Hapus
Peminjam), dan "Tampilkan Peminjam" (Tampilkan Peminjam).
Pada tab “Tambah Peminjam”, pengguna dapat menginput nama, nomor
induk mahasiswa, tanggal peminjaman, tanggal pengembalian, dan judul buku
yang dipinjam. Saat pengguna mengklik tombol "Tambah" (Tambah), informasi
tersebut ditambahkan ke array yang disebut "peminjam".
Pada tab “Hapus Peminjam”, pengguna dapat menginput nama peminjam

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

Source code gambar 7 :


#===================================Page
6====================================
bg4 = PhotoImage(file="CARI.png")

# Show image using label


label4 = Label(page6, image=bg4)
label4.place(x=360, y=110)
# 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,
"pengarang": "William Golding", "rak_buku": "I9"},
{"judul": "Pride and Prejudice", "ketersediaan": True,
"pengarang": "Jane Austen", "rak_buku": "E5"},

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"}
]

# Fungsi untuk melakukan pencarian buku dengan binary search


def binary_search(books, target):
left = 0
right = len(books) - 1

while left <= right:


mid = (left + right) // 2
if books[mid]["judul"] == target:
return mid
elif books[mid]["judul"] < target:
left = mid + 1
else:
right = mid - 1
return -1

# Fungsi untuk menampilkan hasil pencarian dalam bentuk tabel


def show_result():
target_book = entry.get()

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)

label = tk.Label(page6, text="Masukkan judul buku yang ingin dicari:")


label.place(x=520, y=100)

entry = tk.Entry(page6)
entry.place(x=570, y=125)

button = tk.Button(page6, text="Cari", command=show_result)


button.place(x=610, y=150)

message = tk.Label(page6, text="")

35
message.place(x=620, y=180)

back_button = tk.Button(master=page6, text=" Back< ", font=(


"MONOSPACE", 15), activebackground='blue', command=lambda:
show_frame(page2))
back_button.place(x=100, y=650)

window.mainloop()

Penjelasan Source code gambar 7 :


Ini adalah kode Python yang membuat program GUI sederhana untuk mencari
buku di perpustakaan. Program menampilkan gambar menggunakan widget
Tkinter Label dan daftar buku dalam struktur data kamus. Program ini juga
mencakup dua fungsi: binary_search dan show_result. Fungsi binary_search
melakukan pencarian biner pada daftar buku untuk menemukan buku target,
sedangkan fungsi show_result menampilkan hasil pencarian dalam format tabel
menggunakan widget ttk.Treeview.

Gambar 8 Output Page 1


Gambar 8 merupakan output dari sourchcode yang terdapat dalam page 1
sebuah tombol dengan teks "START" menggunakan fungsi tk.Button() yang
akan mengeksekusi perintah untuk menampilkan frame "page2" ketika tombol
tersebut ditekan. Tombol tersebut ditempatkan pada koordinat (330, 400) di
dalam window.

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

Gambar 10 Ouput Page 3


Gambar 10 merupakan Program sebuah GUI (Graphical User Interface)
sederhana untuk login pada sebuah sistem. Output dari program tersebut adalah
sebuah window aplikasi yang menampilkan halaman login dengan form input
username dan password.

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".

Gambar 11 Output Page 4

Gambar 11 adalah program Python yang membuat GUI sistem manajemen


perpustakaan menggunakan Tkinter. Program ini menampilkan daftar buku
dalam bentuk widget tampilan pohon. Pengguna dapat mencari buku,
menambahkan buku baru, mengaktifkan ketersediaan buku, dan menghapus
buku.
Daftar buku awalnya didefinisikan sebagai daftar kamus yang berisi judul
buku, status ketersediaan, nama penulis, dan lokasi rak. Fungsi pencarian
menggunakan pencarian biner untuk menemukan buku dan menampilkan
informasinya, seperti ketersediaan, penulis, dan lokasi rak. Fungsi add membuat
kamus baru berdasarkan input pengguna dan menambahkannya ke daftar buku.
Fungsi sakelar mengubah status ketersediaan buku yang dipilih. Fungsi hapus
menghapus buku yang dipilih dari daftar buku.
Program ini juga menyertakan GUI dengan beberapa bidang entri dan tombol
untuk memasukkan input pengguna dan widget tampilan untuk daftar buku.

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.

Gambar 13 Output Page 6

Gambar 13 merupakan Kode program dengan sebuah label yang memuat


gambar, form pencarian judul buku, tombol pencarian, dan label untuk
menampilkan hasil pencarian dalam bentuk tabel. Pada saat program dijalankan,
user dapat memasukkan judul buku yang ingin dicari pada form yang telah
disediakan dan menekan tombol "Cari". Jika buku tersebut ditemukan dalam
daftar buku, maka program akan menampilkan hasil pencarin.

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

Aryanto, A. (2017). Pembuatan Sistem Informasi Perpustakaan Smp Muhammadiyah


7 Surakarta. Speed-Sentra Penelitian Engineering dan Edukasi, 5(1).

Bentley, J. L. (1975). Multidimensional binary search trees used for associative


searching. Communications of the ACM, 18(9), 509-517.

Mutiawani, V. (2014). Hashtable Sebagai Alternatif Dari Algoritma Pencarian Biner


Pada Aplikasi E-Acesia. Universitas Syiah Kuala, Banda Aceh.

Nugraha, F. (2014). Analisa dan perancangan sistem informasi


perpustakaan. Simetris: Jurnal Teknik Mesin, Elektro dan Ilmu Komputer, 5(1),
27-32.

Napitupulu, N., & Sihombing, N. S. (2010). Struktur Data dan Algoritma. USUpress.

Nowak, R. (2008, September). Generalized binary search. In 2008 46th Annual


Allerton Conference on Communication, Control, and Computing (pp. 568-574).
IEEE.

Saputri, N. A. O., & Hannah, M. P. (2018). Analisis Efektifitas Penggunaan Web-


Based-Learning pada Matakuliah Praktikum Struktur Data. JUST IT: Jurnal
Sistem Informasi, Teknologi Informasi Dan Komputer, 8(2), 69-75.

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.

Wulandari, T. K. (2022). Penerapan Metode Binary Search dan Hamming Distance


untuk E-library SMAN 2 Katingan Hilir. KONSTELASI: Konvergensi Teknologi
dan Sistem Informasi, 2(1).

43
LAMPIRAN

Lampiran 1 Diskusi Hari Ke-1

Lampiran 2 Diskusi Hari Ke-2

44
Lampiran 3 Diskusi Hari Ke-3

Lampiran 4 Diskusi Hari Ke-4

45
KEMENTRIAN PENDIDIKAN DAN KEBUDAYAAN RISET
DAN TEKNOLOGI
UNIVERSITAS BENGKULU
FAKULTAS TEKNIK
PROGRAM STUDI INFORMATIKA

Jl. Wr. Supratman Kandang Limun, Bengkulu


Bengkulu 38371 A Telp: (0736) 344087, 22105 - 227

LEMBAR ASISTENSI
PRAKTIKUM PROYEK STRUKTUR DATA DAN ALGORITMA

Nama Kelompok : 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)

Dosen : 1. Arie Vatresia, S.T., M.TI, Ph.D.


2. Mochammad Yusa, S.Kom. M.Kom.

Asisten : 1. Gita Dwi Putriani (G1A019043)


2. Valleryan Virgil Zuliuskandar (G1A020021)
3. Rose Enjellina (G1A021019)
4. Rimaya Dwi Atika (G1A021021)
5. Yulia Pratiwi (G1A021029)
6. Esti Asmareta Ayu (G1A021042)
7. Zabrila Amrina Zadia Putri (G1A021053)
8. Arif Rahmat Ikhsan (G1A021067)
9. Rayhan M. Rizki (G1A021083)
10. Fanissa Azzahra (G1A021091)

Laporan Praktikum Catatan dan Tanda Tangan

Laporan Praktikum Akhir Tugas Besar

Anda mungkin juga menyukai