Kövesse ezt az oktatóanyagot, hogy megtanulja, hogyan hozhat létre alapvető adatkezelési alkalmazást egy egyszerű grafikus felhasználói felülettel.

A könyvkölcsönző rendszer rendkívül kényelmes módja a könyvtárosok számára a leltárkezelés és a kölcsönzési tevékenységek kezelésében. Ez az egyszerű alkalmazás ideális kis és nagy könyvtárak, közösségi központok, könyvklubok és még a személyes könyvgyűjtemény számára is.

A példaalkalmazás megírása során megtudhatja, hogyan készíthet többplatformos grafikus felhasználói felületet, hogyan használhat osztályokat és objektumokat entitások modellezésére, és hogyan modularizálhatja programjait.

A Tkinter telepítése és a felhasználói bejelentkezési/regisztrációs képernyő létrehozása

A könyvkölcsönző rendszer felépítéséhez használja a Tkintert. A Tkinter a Python asztali alkalmazások szabványos grafikus felhasználói felületének könyvtára. A telepítéshez írja be a terminálba:

pip install tkinter

A könyvtárak könyvkölcsönző rendszerének kiépítésének teljes forráskódja ebben található GitHub adattár.

instagram viewer

Importálja a szükséges modulokat és határozzon meg egy osztályt, Könyvkölcsönző Rendszer. Határozzon meg egy konstruktor metódust az osztályhoz, és inicializálja a gyökérablakot, állítsa be az alkalmazás címét, méreteit és háttérszínét. Határozzon meg két listát, könyveket és lend_list, amelyet a könyvek címeinek és a kölcsönzött könyvek tárolására fog használni.

Szótár meghatározása, rekord, amellyel frissítheti a könyvek állapotát. Használja a setup_gui() módszer a grafikus felhasználói felület létrehozására és egy üres lista inicializálására, könyvtárosok, amelyet a hitelesítő adatok tárolására fog használni.

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

Határozzon meg egy módszert, setup_gui(). A regisztrációs/bejelentkezési képernyőhöz három címkét kell létrehozni login_label, username_label, és jelszó_címke. Minden címkéhez adja meg a szülőelemet, amelybe el szeretné helyezni, a megjelenítendő szöveget, a betűstílust és a betűszínt.

A címkékkel együtt létre kell hoznia két névre szóló bejegyzés widgetet username_entry és jelszó_bejegyzés hogy megszerezze és tárolja a könyvtáros hitelesítő adatait. Építhetsz a jelszó-ellenőrző segítségével tesztelheti jelszavai biztonságát a Python segítségével. Használja a csomag menedzser, hogy rendszerezze ezeket a widgeteket, és adja hozzá a megfelelő kitöltést a vizuális vonzerő érdekében.

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

Határozzon meg egy módszert, Belépés(). Használja a kap() metódust a bejegyzés widgeten a könyvtáros által beírt hitelesítő adatok értékének kinyeréséhez. Ismételje meg a könyvtárosok listáját, és ellenőrizze, hogy a felhasználónév és a jelszó megegyezik-e a megadott értékekkel. Ha igen, törölje a beírt értékeket az elejétől a végéig. Megsemmisíti az összes létrehozott widgetet, és hívja a book_management_screen() módszer a könyvkölcsönző rendszer kezelőképernyőjének megjelenítésére.

Ellenkező esetben a bejelentkezési adatok hibásak, vagy a könyvtáros nem regisztrált. Jelenítse meg a megfelelő üzenetet a Tkinter üzenetmező widgetjén keresztül. Abban az esetben, ha szeretné titkosítsa a jelszavát, telepítse a bcrypt modult.

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

Határozzon meg egy módszert, Regisztráció(). Bontsa ki a könyvtáros által megadott hitelesítő adatok értékét, adja hozzá őket a könyvtáros listájához, és teljesen törölje a bejegyzéseket.

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)

Határozzon meg egy módszert, book_management_screen(). Hozzon létre négy elnevezett címkét add_book_label, return_book_label, Remove_book_label, és issue_book_label. Hozzon létre négy bejegyzést és négy gombot ezeknek a címkéknek megfelelően, valamint egy másik gombot az összes könyv listájának megtekintéséhez az állapotukkal együtt. Használja a csomagkezelőt az elemek rendszerezéséhez és néhány kitöltés hozzáadásához.

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)

A könyvkölcsönző rendszer működőképességének kiépítése

Határozzon meg egy módszert, add_book(). Bontsa ki a bejegyzés widget tartalmát, és adja hozzá a könyvek listájához. A rekordszótárban adja hozzá a kulcsot a könyv címeként és az értéket mint tette hozzá. Jelenítsen meg egy sikeres üzenetmezőt, amely jelzi, hogy a program sikeresen hozzáadta a könyvet. Törölje a tartalmát add_book_entry az elejétől a végéig.

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)

Határozzon meg egy módszert, Remove_book(). Vegye ki a könyv címét, és ellenőrizze, hogy benne van-e a könyvben könyveket lista. Ha létezik, távolítsa el a szótárból és rekordját. Ha végzett, jelenítsen meg egy sikerüzenetet, amely tájékoztatja, hogy a program eltávolította a könyvet. Ellenkező esetben jelenítsen meg egy hibaüzenetet, amely azt jelzi, hogy a könyv nem található. Törölje a bejegyzést a Remove_book_entry teljesen.

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)

Határozzon meg egy módszert, kiadás_könyv(). Vegye ki a könyv címét, és ellenőrizze, hogy létezik-e a könyvben könyveket lista. Ha igen, csatolja ezt a lend_list listát, és távolítsa el a könyvek listájáról. Frissítse a könyv értékét mint kiadott. Ellenkező esetben jelenítsen meg egy hibaüzenetet, amely szerint a könyv nem található. Törölje a tartalmát 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)

Határozzon meg egy módszert, return_book(). Bontsa ki a címet, és ellenőrizze, hogy létezik-e a lend_list lista. Ha igen, távolítsa el, és illessze vissza a könyvlistához, és frissítse a rekord értékét a visszaadott formában. Jelenítsen meg egy sikeres üzenetdobozt, amely jelzi, hogy a személy visszaküldte a könyvet.

Ha a cím létezik a könyvlistában, és a rekord állapota olvasható tette hozzá, jelenítsen meg egy hibaüzenetet, amely szerint a személy nem tudja visszaküldeni a könyvet, mivel senki sem adta ki. Ellenkező esetben jelenítsen meg egy hibaüzenetet, amely szerint a könyv nem található.

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)

Határozzon meg egy módszert, view_books(). Inicializálja a üzenet változó üres. Szerkessze meg az üzenetet karakterlánc-interpoláció végrehajtásához, és jelenítse meg a könyvek címét az állapotukkal együtt. Ha az üzenet üres, akkor nincsenek elérhető könyvek. Jelenítse meg a megfelelő kimenetet egy üzenetablakban.

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)

Hozzon létre egy példányt az osztályból, és futtassa a Tkintert mainloop() hogy figyelje az eseményeket, amíg be nem zárja az ablakot. Használat a __name__ == "__main__" idióma a program futtatásához.

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

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

Példa a könyvkölcsönző rendszer kimenetére

A program futtatásakor egy regisztrációs/bejelentkezési képernyővel fogad. A hitelesítő adatok megadásakor és a gombra kattintva Regisztráció gombot, a program felveszi Önt könyvtárosként. Ugyanazon hitelesítő adatok megadása és ütés Belépés a kezelőképernyőre navigál.

A könyv címének megadása és a Könyv hozzáadása gomb megnyomása után a program egy üzenetet jelenít meg, amely jelzi, hogy sikeresen hozzáadta a könyvet. Ha a probléma, visszatérés vagy eltávolítás gombra kattint, a program megjeleníti a megfelelő üzenetmezőt az állapot frissítése közben.

A gombra kattintva Könyvek megtekintése gombot, a program megjeleníti a könyvek címét az állapotukkal együtt. Ha eltávolít egy könyvet, a program törli a címet, és nem tudja megtekinteni.

Abban az esetben, ha megpróbál visszaküldeni egy könyvet anélkül, hogy kiadta volna, vagy eltávolítana egy könyvet a kiadás alatt, a program hibaüzenetet jelenít meg.

A könyvkölcsönző alkalmazás fejlesztése

Ez a megvalósítás az alapja egy biztonságos éles szintű GUI-alkalmazás felépítésének. A funkcionalitást javíthatja a bemeneti ellenőrzés végrehajtásával, a használatával hashlib a jelszavak tárolására, a megfelelő hibakezelés megvalósítására és az adatok megmaradásának növelésére egy adatbázissal.

Ezen kívül felhasználói hitelesítési szinteket kell megvalósítania, különböző hozzáférési szintekkel az olvasók, a könyvtárosok és a rendszergazdák számára. Keresési funkcióval könyveket kereshet, és megkönnyítheti a hozzáférést.