עקוב אחר המדריך הזה כדי ללמוד כיצד לבנות אפליקציית ניהול נתונים בסיסית עם ממשק ממשק משתמש פשוט.

מערכת השאלת ספרים היא דרך נוחה במיוחד עבור ספרנים לנהל פעילויות מלאי והשאלה. האפליקציה הפשוטה הזו אידיאלית לספריות קטנות עד גדולות, מרכזים קהילתיים, מועדוני ספרים ואפילו לאוסף הספרים האישי שלך.

כתיבת האפליקציה לדוגמה, תלמד כיצד לבנות אפליקציית GUI חוצת פלטפורמות, כיצד להשתמש במחלקות ובאובייקטים כדי לדגמן ישויות וכיצד לעצב את התוכניות שלך.

התקנת Tkinter ובניית מסך התחברות/רישום משתמש

כדי לבנות את מערכת השאלת הספרים, תשתמש ב-Tkinter. Tkinter היא ספריית ה-GUI הסטנדרטית עבור יישומי Python שולחניים. כדי להתקין אותו, הקלד בטרמינל:

pip install tkinter

אתה יכול למצוא את כל קוד המקור של בניית מערכת השאלת ספרים לספריות בזה מאגר GitHub.

ייבא את המודולים הנדרשים והגדר מחלקה, מערכת הלוואות ספרים. הגדר שיטת בנאי עבור המחלקה ואתחל את חלון הבסיס, הגדרת הכותרת, הממדים וצבע הרקע של היישום. הגדירו שתי רשימות, ספרים ו lend_list, שתשתמש בהם כדי לאחסן את כותרות הספרים ואיזה אנשים שאלו.

הגדירו מילון, תקליט, שבו תוכל להשתמש כדי לעדכן את סטטוס הספרים. להשתמש ב

instagram viewer
setup_gui() שיטה ליצור את ממשק המשתמש הגרפי ולאתחל רשימה ריקה, ספרנים, שבו תשתמש כדי לאחסן את האישורים.

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

הגדירו שיטה, setup_gui(). עבור מסך הרישום/כניסה, תיצור שלוש תוויות בשם התווית_login, שם_משתמש_תווית, ו password_label. עבור כל תווית, הגדירו את רכיב האב שבו תרצו למקם אותה, הטקסט שהיא אמורה להציג, סגנון הגופן שצריך להיות בו יחד עם צבע הגופן.

יחד עם התוויות, עליך ליצור שני ווידג'טים של כניסה בשם username_entry ו סיסמה_הזנת לקבל ולאחסן את האישורים של הספרן. אתה יכול לבנות א בודק סיסמאות כדי לבדוק את אבטחת הסיסמה שלך עם Python. להשתמש ב חבילה מנהל לארגן את כל הווידג'טים האלה ולהוסיף את הריפוד המתאים למשיכה ויזואלית.

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

הגדירו שיטה, התחברות(). להשתמש ב לקבל() שיטה בווידג'ט הכניסה כדי לחלץ את הערך של האישורים שהזין הספרן. חזור על רשימת הספרנים ובדוק אם שם המשתמש והסיסמה תואמים לערכים שהוזנו. אם כן, נקה את הערכים שהוזנו מההתחלה ועד הסוף. הרס את כל הווידג'טים שיצרת וקרא ל- ספר_ניהול_מסך() שיטה להצגת מסך הניהול של מערכת השאלת הספרים.

אחרת, אישורי הכניסה שגויים, או שהספרן לא נרשם. הצג את ההודעה המתאימה באמצעות ווידג'ט תיבת ההודעות של Tkinter. למקרה שתרצה הצפין את הסיסמה שלך, התקן את מודול 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, החזרת_תווית_ספר, remove_book_label, ו issue_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(). חלץ את התוכן של ווידג'ט הערך והוסף אותו לרשימת הספרים. במילון הרשומות, הוסף את המפתח ככותרת הספר ואת הערך as הוסיף. הצג תיבת הודעת הצלחה המספרת שהתוכנית הוסיפה את הספר בהצלחה. נקה את התוכן של 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)

הגדירו שיטה, remove_book(). חלץ את כותרת הספר ובדוק אם הוא קיים ב- ספרים רשימה. אם הוא קיים, הסר אותו ואת הרשומה שלו מהמילון. לאחר שתסיים, הצג תיבת הודעת הצלחה המודיעה שהתוכנית הסירה את הספר. אחרת, הצג תיבת הודעת שגיאה האומרת שהספר לא נמצא. נקה את הכניסה של remove_book_entry לַחֲלוּטִין.

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)

הגדירו שיטה, issue_book(). חלץ את כותרת הספר ובדוק אם הוא קיים ב- ספרים רשימה. אם כן, צרף את זה ל- lend_list רשימה והסר אותה מרשימת הספרים. עדכן את ערך הספר כ הפיקו. אחרת, הצג תיבת הודעת שגיאה האומרת שהספר לא נמצא. נקה את התוכן של issue_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)

הגדירו שיטה, return_book(). חלץ את הכותרת ובדוק אם היא קיימת ב- lend_list רשימה. אם כן, הסר אותו והוסף אותו בחזרה לרשימת הספרים ועדכן את הערך ברשומה כפי שהוחזר. הצג תיבת הודעת הצלחה המציינת שהאדם החזיר את הספר.

אם הכותרת קיימת ברשימת הספרים והסטטוס של הרשומה נקרא הוסיף, הצג תיבת הודעת שגיאה האומרת שהאדם אינו יכול להחזיר את הספר מכיוון שאיש לא הוציא אותו. אחרת, הצג תיבת הודעת שגיאה האומרת שהספר לא נמצא.

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)

הגדירו שיטה, view_books(). אתחל את הוֹדָעָה משתנה כריק. בנה את ההודעה כדי לבצע אינטרפולציה למחרוזות ולהציג את כותרת הספרים יחד עם הסטטוס שלהם. אם ההודעה ריקה, אין ספרים זמינים. הצג את הפלט המתאים בתיבת הודעה.

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)

צור מופע של המחלקה והפעל את ה-Tkinter mainloop() להאזין לאירועים עד שתסגור את החלון. להשתמש ה __name__ == "__main__" נִיב כדי להפעיל את התוכנית.

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

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

פלט לדוגמה של מערכת השאלת ספרים

בהפעלת התוכנית, היא מקבלת את פניך עם מסך הרשמה/כניסה. בהזנת האישורים ולחיצה על הירשם כפתור, התוכנית מוסיפה אותך כספרנית. מזין את אותם אישורים ומכה התחברות ינווט אותך למסך הניהול.

בהזנת כותרת הספר ולחיצה על הוסף ספר, התוכנית מציגה תיבת הודעה שהיא הוסיפה את הספר בהצלחה. אם תלחץ על כפתור הבעיה, החזרה או הסרה, התוכנית תציג את תיבת ההודעה המתאימה בזמן עדכון הסטטוס.

בלחיצה על צפה בספרים כפתור, התוכנית מציגה את כותרת הספרים יחד עם הסטטוס שלהם. אם תסיר ספר, התוכנית תמחק את הכותר ולא תוכל לצפות בו.

במקרה שאתה מנסה להחזיר ספר מבלי להנפיק אותו או להסיר ספר בזמן ההנפקה, התוכנית מציגה תיבת הודעת שגיאה.

שיפור אפליקציית השאלת ספרים

יישום זה מהווה בסיס לבניית יישום GUI מאובטח ברמת ייצור. אתה יכול לשפר את הפונקציונליות שלו על ידי יישום אימות קלט, באמצעות hashlib לאחסן סיסמאות, יישום טיפול נכון בשגיאות והוספת התמדה של נתונים עם מסד נתונים.

מלבד זאת, עליך ליישם רמות אימות משתמשים עם רמות גישה שונות עבור קוראים, ספרנים ומנהלי מערכת. אתה יכול להוסיף פונקציונליות חיפוש כדי לחפש ספרים ולהקל על הגישה.