एक साधारण जीयूआई फ्रंटएंड के साथ एक बुनियादी डेटा-प्रबंधन ऐप बनाने का तरीका जानने के लिए इस ट्यूटोरियल का अनुसरण करें।

पुस्तक-उधार प्रणाली पुस्तकालयाध्यक्षों के लिए इन्वेंट्री और उधार गतिविधियों को प्रबंधित करने का एक सुपर सुविधाजनक तरीका है। यह सरल ऐप छोटे से लेकर बड़े पुस्तकालयों, सामुदायिक केंद्रों, पुस्तक क्लबों और यहां तक ​​कि आपके व्यक्तिगत पुस्तक संग्रह के लिए भी आदर्श है।

नमूना ऐप लिखते हुए, आप सीखेंगे कि क्रॉस-प्लेटफ़ॉर्म जीयूआई ऐप कैसे बनाएं, इकाइयों को मॉडल करने के लिए कक्षाओं और ऑब्जेक्ट का उपयोग कैसे करें, और अपने प्रोग्राम को मॉड्यूलर कैसे करें।

टिंकर स्थापित करना और उपयोगकर्ता लॉगिन/रजिस्टर स्क्रीन बनाना

पुस्तक उधार प्रणाली बनाने के लिए, आप टिंकर का उपयोग करेंगे। टिंकर पायथन डेस्कटॉप अनुप्रयोगों के लिए मानक जीयूआई लाइब्रेरी है। इसे स्थापित करने के लिए, टर्मिनल में टाइप करें:

pip install tkinter

आप इसमें पुस्तकालयों के लिए पुस्तक-उधार प्रणाली के निर्माण का संपूर्ण स्रोत कोड पा सकते हैं गिटहब रिपॉजिटरी.

आवश्यक मॉड्यूल आयात करें और एक वर्ग परिभाषित करें, बुकबॉरोइंग सिस्टम. क्लास के लिए एक कंस्ट्रक्टर विधि को परिभाषित करें और रूट विंडो को आरंभ करें, शीर्षक, आयाम और एप्लिकेशन का पृष्ठभूमि रंग सेट करें। दो सूचियाँ परिभाषित करें,

instagram viewer
पुस्तकें और उधार_सूची, जिसका उपयोग आप पुस्तकों के शीर्षक और लोगों द्वारा उधार ली गई पुस्तकों को संग्रहीत करने के लिए करेंगे।

एक शब्दकोश परिभाषित करें, अभिलेख, जिसका उपयोग आप पुस्तकों की स्थिति अपडेट करने के लिए कर सकते हैं। उपयोग सेटअप_गुई() ग्राफिकल यूजर इंटरफ़ेस बनाने और एक खाली सूची आरंभ करने की विधि, पुस्तकाध्यक्ष, जिसका उपयोग आप क्रेडेंशियल्स को संग्रहीत करने के लिए करेंगे।

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 = []

एक विधि परिभाषित करें, सेटअप_गुई(). रजिस्टर/लॉगिन स्क्रीन के लिए, आप नामित तीन लेबल बनाएंगे लॉगिन_लेबल, उपयोक्तानाम_लेबल, और पासवर्ड_लेबल. प्रत्येक लेबल के लिए, उस मूल तत्व को परिभाषित करें जिसमें आप उसे रखना चाहते हैं, उसे कौन सा टेक्स्ट प्रदर्शित करना चाहिए, फ़ॉन्ट शैली के साथ-साथ फ़ॉन्ट रंग क्या होना चाहिए।

लेबल के साथ, आपको नामित दो प्रविष्टि विजेट बनाने की आवश्यकता है उपयोक्तानाम_प्रविष्टि और पासवर्ड_एंट्री लाइब्रेरियन की साख प्राप्त करने और संग्रहीत करने के लिए। आप एक निर्माण कर सकते हैं पायथन के साथ आपकी पासवर्ड सुरक्षा का परीक्षण करने के लिए पासवर्ड चेकर. उपयोग सामान बाँधना प्रबंधक को इन सभी विजेट्स को व्यवस्थित करना होगा और दृश्य अपील के लिए उचित पैडिंग जोड़ना होगा।

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

एक विधि परिभाषित करें, लॉग इन करें(). उपयोग पाना() लाइब्रेरियन द्वारा दर्ज किए गए क्रेडेंशियल्स का मूल्य निकालने के लिए एंट्री विजेट पर विधि। लाइब्रेरियन की सूची को दोबारा जांचें और जांचें कि उपयोगकर्ता नाम और पासवर्ड दर्ज किए गए मानों से मेल खाते हैं या नहीं। यदि हां, तो प्रारंभ से अंत तक दर्ज किए गए मान साफ़ करें। आपके द्वारा बनाए गए सभी विजेट को नष्ट करें और कॉल करें पुस्तक_प्रबंधन_स्क्रीन() पुस्तक उधार प्रणाली की प्रबंधन स्क्रीन प्रदर्शित करने की विधि।

अन्यथा, लॉगिन क्रेडेंशियल गलत हैं, या लाइब्रेरियन ने पंजीकृत नहीं किया है। टिंकर के संदेश बॉक्स विजेट के माध्यम से उचित संदेश प्रदर्शित करें। यदि आप चाहें तो अपना पासवर्ड एन्क्रिप्ट करें, 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.")

एक विधि परिभाषित करें, पंजीकरण करवाना(). लाइब्रेरियन द्वारा दर्ज किए गए क्रेडेंशियल का मान निकालें, उन्हें लाइब्रेरियन की सूची में जोड़ें, और प्रविष्टियों को पूरी तरह से हटा दें।

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)

एक विधि परिभाषित करें, पुस्तक_प्रबंधन_स्क्रीन(). नाम के चार लेबल बनाएं add_book_label, वापसी_पुस्तक_लेबल, हटाएं_पुस्तक_लेबल, और अंक_पुस्तक_लेबल. इन लेबलों के अनुरूप चार प्रविष्टियाँ और चार बटन बनाएँ, और सभी पुस्तकों की सूची उनकी स्थिति के साथ देखने के लिए एक और बटन बनाएँ। तत्वों को व्यवस्थित करने और कुछ पैडिंग जोड़ने के लिए पैक मैनेजर का उपयोग करें।

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)

पुस्तक उधार प्रणाली की कार्यक्षमता का निर्माण

एक विधि परिभाषित करें, जोड़ें_पुस्तक(). प्रविष्टि विजेट की सामग्री निकालें और उसे पुस्तकों की सूची में जोड़ें। रिकॉर्ड शब्दकोश में, कुंजी को पुस्तक के शीर्षक के रूप में और मान को इस रूप में जोड़ें जोड़ा. एक सफलता संदेश बॉक्स प्रदर्शित करें जो बताता है कि प्रोग्राम ने पुस्तक को सफलतापूर्वक जोड़ दिया है। की सामग्री साफ़ करें add_book_entry आरंभ से अंत तक.

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)

एक विधि परिभाषित करें, हटाओ_पुस्तक(). पुस्तक का शीर्षक निकालें और जांचें कि क्या वह इसमें मौजूद है पुस्तकें सूची। यदि यह मौजूद है, तो इसे और इसके रिकॉर्ड को शब्दकोश से हटा दें। एक बार हो जाने पर, एक सफल संदेश बॉक्स प्रदर्शित करें जिसमें सूचित किया जाए कि प्रोग्राम ने पुस्तक हटा दी है। अन्यथा, एक त्रुटि संदेश बॉक्स प्रदर्शित करें जिसमें लिखा हो कि पुस्तक नहीं मिली। की प्रविष्टि साफ़ करें हटाओ_पुस्तक_प्रविष्टि पूरी तरह।

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)

एक विधि परिभाषित करें, अंक_पुस्तक(). पुस्तक का शीर्षक निकालें और जांचें कि क्या वह इसमें मौजूद है पुस्तकें सूची। यदि हाँ, तो इसे इसमें जोड़ें उधार_सूची सूची बनाएं और इसे पुस्तकों की सूची से हटा दें। पुस्तक का मूल्य इस प्रकार अद्यतन करें जारी किए गए. अन्यथा, एक त्रुटि संदेश बॉक्स प्रदर्शित करें जिसमें लिखा हो कि पुस्तक नहीं मिली। की सामग्री साफ़ करें मुद्दा_पुस्तक_प्रविष्टि().

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)

एक विधि परिभाषित करें, वापसी_पुस्तक(). शीर्षक निकालें और जांचें कि क्या यह मौजूद है उधार_सूची सूची। यदि हाँ, तो इसे हटा दें और इसे वापस पुस्तकों की सूची में जोड़ दें और रिकॉर्ड में दिए गए मान को अद्यतन करें। एक सफल संदेश बॉक्स प्रदर्शित करें जिसमें बताया गया हो कि उस व्यक्ति ने पुस्तक वापस कर दी है।

यदि शीर्षक पुस्तक सूची में मौजूद है और रिकॉर्ड की स्थिति पढ़ी जाती है जोड़ा, एक त्रुटि संदेश बॉक्स प्रदर्शित करें जिसमें कहा गया हो कि व्यक्ति पुस्तक वापस नहीं कर सकता क्योंकि इसे किसी ने जारी नहीं किया है। अन्यथा, एक त्रुटि संदेश बॉक्स प्रदर्शित करें जिसमें लिखा हो कि पुस्तक नहीं मिली है।

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)

एक विधि परिभाषित करें, दृश्य_पुस्तकें(). को आरंभ करें संदेश रिक्त के रूप में परिवर्तनीय. स्ट्रिंग इंटरपोलेशन करने के लिए संदेश का निर्माण करें और पुस्तकों का शीर्षक उनकी स्थिति के साथ प्रदर्शित करें। यदि संदेश खाली है, तो कोई पुस्तकें उपलब्ध नहीं हैं। संदेश बॉक्स में संबंधित आउटपुट प्रदर्शित करें।

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)

कक्षा का एक उदाहरण बनाएं और टिंकर चलाएं मुख्य घेरा() जब तक आप विंडो बंद न कर दें तब तक घटनाओं को सुनने के लिए। उपयोग __नाम__ == "__मुख्य__" मुहावरा प्रोग्राम चलाने के लिए.

defrun(self):
self.master.mainloop()

if __name__ == "__main__":
book_borrowing_system = BookBorrowingSystem()
book_borrowing_system.run()

पुस्तक उधार प्रणाली का उदाहरण आउटपुट

प्रोग्राम चलाने पर, यह एक रजिस्टर/लॉगिन स्क्रीन के साथ आपका स्वागत करता है। क्रेडेंशियल दर्ज करने और क्लिक करने पर पंजीकरण करवाना बटन, प्रोग्राम आपको लाइब्रेरियन के रूप में जोड़ता है। समान क्रेडेंशियल दर्ज करना और मारना लॉग इन करें आपको प्रबंधन स्क्रीन पर ले जाएगा।

पुस्तक का शीर्षक दर्ज करने और ऐड बुक पर दबाने पर, प्रोग्राम एक संदेश बॉक्स प्रदर्शित करता है कि उसने पुस्तक को सफलतापूर्वक जोड़ा है। यदि आप समस्या, वापसी, या हटाएं बटन पर क्लिक करते हैं, तो प्रोग्राम स्थिति को अपडेट करते समय उचित संदेश बॉक्स प्रदर्शित करता है।

क्लिक करने पर पुस्तकें देखें बटन, प्रोग्राम पुस्तकों का शीर्षक उनकी स्थिति के साथ प्रदर्शित करता है। यदि आप कोई पुस्तक हटाते हैं, तो प्रोग्राम शीर्षक हटा देता है और आप उसे नहीं देख सकते।

यदि आप किसी पुस्तक को जारी किए बिना या जारी किए जाने के दौरान उसे हटाए बिना वापस करने का प्रयास करते हैं, तो प्रोग्राम एक त्रुटि संदेश बॉक्स प्रदर्शित करता है।

बुक बॉरोइंग ऐप को बेहतर बनाना

यह कार्यान्वयन एक सुरक्षित उत्पादन-स्तरीय जीयूआई एप्लिकेशन के निर्माण की नींव है। आप इनपुट सत्यापन लागू करके इसकी कार्यक्षमता बढ़ा सकते हैं हैशलिब पासवर्ड संग्रहीत करना, उचित त्रुटि प्रबंधन लागू करना और डेटाबेस के साथ डेटा दृढ़ता जोड़ना।

इसके अलावा, आपको पाठकों, पुस्तकालयाध्यक्षों और प्रशासकों के लिए पहुंच के विभिन्न स्तरों के साथ उपयोगकर्ता प्रमाणीकरण स्तर लागू करना चाहिए। आप पुस्तकों की खोज के लिए खोज कार्यक्षमता जोड़ सकते हैं और इसे एक्सेस करना आसान बना सकते हैं।