Ikuti tutorial ini untuk mempelajari cara membuat aplikasi manajemen data dasar dengan antarmuka GUI sederhana.
Sistem peminjaman buku adalah cara yang sangat nyaman bagi pustakawan untuk mengelola aktivitas inventaris dan peminjaman. Aplikasi sederhana ini ideal untuk perpustakaan kecil hingga besar, pusat komunitas, klub buku, dan bahkan untuk koleksi buku pribadi Anda.
Menulis aplikasi sampel, Anda akan belajar tentang cara membuat aplikasi GUI lintas platform, cara menggunakan kelas dan objek untuk memodelkan entitas, dan cara memodulasi program Anda.
Menginstal Tkinter dan Membuat Layar Login/Daftar Pengguna
Untuk membangun sistem peminjaman buku, Anda akan menggunakan Tkinter. Tkinter adalah pustaka GUI standar untuk aplikasi desktop Python. Untuk menginstalnya, ketik terminal:
pip install tkinter
Anda dapat menemukan seluruh kode sumber membangun sistem peminjaman buku untuk perpustakaan di sini repositori GitHub.
Impor modul yang diperlukan dan tentukan kelas, Sistem Peminjaman Buku. Tentukan metode konstruktor untuk kelas dan inisialisasi jendela root, atur judul, dimensi, dan warna latar belakang aplikasi. Tentukan dua daftar,
buku Dan lend_list, yang akan Anda gunakan untuk menyimpan judul buku dan yang telah dipinjam orang.Tentukan kamus, catatan, yang dapat Anda gunakan untuk memperbarui status buku. Menggunakan setup_gui() metode untuk membuat antarmuka pengguna grafis dan menginisialisasi daftar kosong, pustakawan, yang akan Anda gunakan untuk menyimpan kredensial.
import tkinter as tk
from tkinter import messagebox
classBookBorrowingSystem:
def__init__(self):
self.master = tk.Tk()
self.master.title("Book Borrowing System")
self.master.geometry("750x600")
self.master.config(bg='#708090')
self.books = []
self.lend_list = []
self.record = {}
self.setup_gui()
self.librarians = []
Tentukan metode, setup_gui(). Untuk layar register/login, Anda akan membuat tiga label bernama login_label, nama_label, Dan kata sandi_label. Untuk setiap label, tentukan elemen induk tempat Anda ingin menempatkannya, teks yang harus ditampilkan, gaya font yang harus dimiliki bersama dengan warna font.
Bersamaan dengan label, Anda perlu membuat dua widget entri bernama username_entry Dan password_entry untuk mendapatkan dan menyimpan kredensial pustakawan. Anda dapat membangun sebuah pemeriksa kata sandi untuk menguji keamanan kata sandi Anda dengan Python. Menggunakan mengemas manajer untuk mengatur semua widget ini dan menambahkan padding yang sesuai untuk daya tarik visual.
defsetup_gui(self):
self.login_label = tk.Label(self.master, text="Book Borrowing System", font=("Helvetica", 24), bg='#708090', fg='white')
self.login_label.pack(pady=(30, 10))
self.login_button = tk.Button(self.master, text="Login", command=self.login, font=("Helvetica", 14))
self.login_button.pack(pady=10)
# Similarly, create the username_label, username_entry, password_label,
# password_entry, and the register button
Tentukan metode, Gabung(). Menggunakan mendapatkan() metode pada widget entri untuk mengekstrak nilai kredensial yang dimasukkan oleh pustakawan. Ulangi daftar pustakawan dan periksa apakah nama pengguna dan kata sandi cocok dengan nilai yang dimasukkan. Jika ya, kosongkan nilai yang dimasukkan dari awal hingga akhir. Hancurkan semua widget yang Anda buat dan panggil layar_manajemen_buku() metode untuk menampilkan layar pengelolaan sistem peminjaman buku.
Jika tidak, kredensial login salah, atau pustakawan belum terdaftar. Tampilkan pesan yang sesuai melalui widget kotak pesan Tkinter. Jika Anda mau enkripsi kata sandi Anda, instal modul bcrypt.
deflogin(self):
username = self.username_entry.get()
password = self.password_entry.get()for librarian in self.librarians:
if username == librarian[0] and password == librarian[1]:
self.username_entry.delete(0, tk.END)
self.password_entry.delete(0, tk.END)
self.login_label.destroy()# Destroy all the entries, labels, and buttons
self.book_management_screen()
return
messagebox.showerror("Error", "Invalid username or password. Please register if not done already.")
Tentukan metode, daftar(). Ekstrak nilai kredensial yang dimasukkan pustakawan, tambahkan ke daftar pustakawan, dan hapus entri sepenuhnya.
defregister(self):
username = self.username_entry.get()
password = self.password_entry.get()
self.librarians.append([username, password])
self.username_entry.delete(0, tk.END)
self.password_entry.delete(0, tk.END)
Tentukan metode, layar_manajemen_buku(). Buat empat label bernama add_book_label, return_book_label, hapus_buku_label, Dan terbitan_buku_label. Buat empat entri dan empat tombol yang sesuai dengan label ini, dan tombol lain untuk melihat daftar semua buku beserta statusnya. Gunakan pengelola paket untuk mengatur elemen dan menambahkan beberapa padding.
defbook_management_screen(self):
self.add_book_label = tk.Label(self.master, text="Add Book", font=("Helvetica", 18), bg='#708090', fg='white')
self.add_book_label.pack(pady=(20, 5))
self.add_book_entry = tk.Entry(self.master, font=("Helvetica", 14))
self.add_book_entry.pack()
self.add_book_button = tk.Button(self.master, text="Add Book", command=self.add_book, font=("Helvetica", 14))
self.add_book_button.pack(pady=5)# Repeat the same for return_book, remove_book, issue_book
self.view_books_button = tk.Button(self.master, text="View Books", command=self.view_books, font=("Helvetica", 14))
self.view_books_button.pack(pady=10)
Membangun Fungsi Sistem Peminjaman Buku
Tentukan metode, add_book(). Ekstrak konten widget entri dan tambahkan ke daftar buku. Di kamus rekaman, tambahkan kunci sebagai judul buku dan nilai sebagai ditambahkan. Tampilkan kotak pesan sukses yang memberitahukan bahwa program telah berhasil menambahkan buku. Hapus konten dari add_book_entry dari awal hingga akhir.
defadd_book(self):
book = self.add_book_entry.get()
self.books.append(book)
self.record[book] = "added"
messagebox.showinfo("Success", "Book added successfully")
self.add_book_entry.delete(0, tk.END)
Tentukan metode, hapus_buku(). Ekstrak judul buku dan periksa apakah ada di buku daftar. Jika ada, hapus dan rekam dari kamus. Setelah selesai, tampilkan kotak pesan sukses yang menginformasikan bahwa program telah menghapus buku tersebut. Jika tidak, tampilkan kotak pesan kesalahan yang menyatakan bahwa buku tidak ditemukan. Hapus entri dari hapus_buku_masuk sama sekali.
defremove_book(self):
book = self.remove_book_entry.get()if book in self.books:
self.books.remove(book)if book in self.record:
del self.record[book]messagebox.showinfo("Success", "Book removed successfully")
else:
messagebox.showerror("Error", "Book not found")
self.remove_book_entry.delete(0, tk.END)
Tentukan metode, buku_terbitan(). Ekstrak judul buku dan periksa apakah ada di buku daftar. Jika ya, tambahkan ini ke lend_list list dan hapus dari daftar buku. Perbarui nilai buku sebagai diterbitkan. Jika tidak, tampilkan kotak pesan kesalahan yang menyatakan bahwa buku tidak ditemukan. Hapus isi dari terbitan_book_entry().
defissue_book(self):
book = self.issue_book_entry.get()if book in self.books:
self.lend_list.append(book)
self.books.remove(book)
self.record[book] = "issued"
messagebox.showinfo("Success", "Book issued successfully")
else:
messagebox.showerror("Error", "Book not found")
self.issue_book_entry.delete(0, tk.END)
Tentukan metode, return_book(). Ekstrak judul dan periksa apakah ada di lend_list daftar. Jika ya, hapus dan tambahkan kembali ke daftar buku dan perbarui nilai dalam catatan sebagai yang dikembalikan. Tampilkan kotak pesan sukses yang menyatakan bahwa orang tersebut telah mengembalikan buku tersebut.
Jika judul ada dalam daftar buku dan status catatan terbaca ditambahkan, tampilkan kotak pesan kesalahan yang mengatakan bahwa orang tersebut tidak dapat mengembalikan buku karena tidak ada yang menerbitkannya. Jika tidak, tampilkan kotak pesan kesalahan yang menyatakan bahwa buku tidak ditemukan.
defreturn_book(self):
book = self.return_book_entry.get()if book in self.lend_list:
self.lend_list.remove(book)
self.books.append(book)
self.record[book] = "returned"
messagebox.showinfo("Success", "Book returned successfully")
elif book in self.books and self.record.get(book) == "added":
messagebox.showerror("Error", "Book can't be returned. It hasn't been issued.")
else:
messagebox.showerror("Error", "Book not found.")
self.return_book_entry.delete(0, tk.END)
Tentukan metode, lihat_buku(). Inisialisasi pesan variabel kosong. Bangun pesan untuk melakukan interpolasi string dan tampilkan judul buku beserta statusnya. Jika pesan kosong berarti tidak ada buku yang tersedia. Tampilkan output yang sesuai di kotak pesan.
defview_books(self):
message = ""for book, status in self.record.items():
message += f"{book}: {status}\n"ifnot message:
message = "No book records available."
messagebox.showinfo("Books", message)
Buat instance kelas dan jalankan Tkinter mainloop() untuk mendengarkan acara sampai Anda menutup jendela. Menggunakan itu __nama__ == "__main__" idiom untuk menjalankan program.
defrun(self):
self.master.mainloop()
if __name__ == "__main__":
book_borrowing_system = BookBorrowingSystem()
book_borrowing_system.run()
Contoh Keluaran Sistem Peminjaman Buku
Saat menjalankan program, ia menyambut Anda dengan layar register/login. Saat memasukkan kredensial dan mengklik Daftar tombol, program menambahkan Anda sebagai pustakawan. Memasukkan kredensial yang sama dan memukul Gabung akan mengarahkan Anda ke layar pengelolaan.
Saat memasukkan judul buku dan menekan Tambah Buku, program menampilkan kotak pesan yang berhasil menambahkan buku. Jika Anda mengklik tombol masalah, kembalikan, atau hapus, program akan menampilkan kotak pesan yang sesuai saat memperbarui status.
Saat mengklik Lihat Buku tombol, program menampilkan judul buku beserta statusnya. Jika Anda menghapus sebuah buku, program akan menghapus judulnya dan Anda tidak dapat melihatnya.
Jika Anda mencoba mengembalikan buku tanpa menerbitkannya atau menghapus buku saat diterbitkan, program akan menampilkan kotak pesan kesalahan.
Meningkatkan Aplikasi Peminjaman Buku
Implementasi ini adalah dasar untuk membangun aplikasi GUI tingkat produksi yang aman. Anda dapat meningkatkan fungsionalitasnya dengan mengimplementasikan validasi input, menggunakan hashlib untuk menyimpan kata sandi, menerapkan penanganan kesalahan yang tepat, dan menambahkan persistensi data dengan database.
Selain itu, Anda harus menerapkan tingkat autentikasi pengguna dengan berbagai tingkat akses untuk pembaca, pustakawan, dan administrator. Anda dapat menambahkan fungsi pencarian untuk mencari buku dan membuatnya lebih mudah diakses.