Vykdykite šią mokymo programą, kad sužinotumėte, kaip sukurti pagrindinę duomenų valdymo programą naudojant paprastą GUI sąsają.
Knygų skolinimosi sistema yra itin patogus būdas bibliotekininkams tvarkyti inventorių ir skolinimosi veiklą. Ši paprasta programa idealiai tinka mažoms ir didelėms bibliotekoms, bendruomenės centrams, knygų klubams ir net jūsų asmeninei knygų kolekcijai.
Rašydami programos pavyzdį sužinosite, kaip sukurti kelių platformų GUI programą, kaip naudoti klases ir objektus objektams modeliuoti ir kaip moduliuoti programas.
„Tkinter“ diegimas ir vartotojo prisijungimo / registracijos ekrano kūrimas
Norėdami sukurti knygų skolinimosi sistemą, naudosite Tkinter. Tkinter yra standartinė GUI biblioteka, skirta Python darbalaukio programoms. Norėdami jį įdiegti, terminale įveskite:
pip install tkinter
Čia galite rasti visą bibliotekų knygų skolinimosi sistemos kūrimo šaltinio kodą GitHub saugykla.
Importuokite reikiamus modulius ir nustatykite klasę, Knygų skolinimosi sistema. Apibrėžkite klasės konstruktoriaus metodą ir inicijuokite šakninį langą, nustatydami programos pavadinimą, matmenis ir fono spalvą. Apibrėžkite du sąrašus,
knygos ir skolinti_sąrašas, kurį naudosite knygų pavadinimams ir žmonių pasiskolintiems saugoti.Apibrėžkite žodyną, rekordas, kurį galite naudoti norėdami atnaujinti knygų būseną. Naudoti setup_gui() būdas sukurti grafinę vartotojo sąsają ir inicijuoti tuščią sąrašą, bibliotekininkai, kurį naudosite kredencialams saugoti.
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 = []
Apibrėžkite metodą, setup_gui(). Registracijos / prisijungimo ekrane sukursite tris pavadinimus login_label, vartotojo vardo_etiketė, ir slaptažodžio_etiketė. Kiekvienai etiketei apibrėžkite pagrindinį elementą, į kurį norite įdėti, tekstą, kuris turi būti rodomas, šrifto stilių ir šrifto spalvą.
Kartu su etiketėmis turite sukurti du įvesties valdiklius, pavadintus vartotojo vardas_įvestis ir slaptažodis_įvestis gauti ir saugoti bibliotekininko įgaliojimus. Galite pastatyti a slaptažodžių tikrintuvas, kad patikrintumėte slaptažodžio saugumą naudodami Python. Naudoti paketas tvarkyklę, kad sutvarkytumėte visus šiuos valdiklius ir pridėtumėte atitinkamą užpildą, kad būtų patrauklus vaizdas.
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
Apibrėžkite metodą, Prisijungti(). Naudoti gauti () metodą įvesties valdiklyje, kad ištrauktumėte bibliotekininko įvestų kredencialų vertę. Pakartokite bibliotekininkų sąrašą ir patikrinkite, ar vartotojo vardas ir slaptažodis atitinka įvestas reikšmes. Jei taip, išvalykite įvestas reikšmes nuo pradžios iki pabaigos. Sunaikinkite visus sukurtus valdiklius ir paskambinkite į book_management_screen() būdas rodyti knygų skolinimosi sistemos valdymo ekraną.
Priešingu atveju prisijungimo duomenys yra neteisingi arba bibliotekininkas neužsiregistravo. Parodykite atitinkamą pranešimą naudodami „Tkinter“ pranešimų laukelio valdiklį. Tuo atveju, jei norite užšifruokite slaptažodį, įdiekite bcrypt modulį.
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.")
Apibrėžkite metodą, Registruotis(). Ištraukite bibliotekininko įvestų kredencialų vertę, įtraukite juos į bibliotekininko sąrašą ir visiškai išvalykite įrašus.
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)
Apibrėžkite metodą, book_management_screen(). Sukurkite keturias etiketes pavadinimu add_book_label, grąžinimo_knygos_etiketė, pašalinti_knygos_etiketę, ir išduoti_knygos_etiketę. Sukurkite keturis įrašus ir keturis mygtukus, atitinkančius šias etiketes, ir kitą mygtuką, kad peržiūrėtumėte visų knygų sąrašą ir jų būseną. Naudokite paketo tvarkyklę elementams tvarkyti ir papildymui pridėti.
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)
Knygų skolinimosi sistemos funkcionalumo kūrimas
Apibrėžkite metodą, add_book(). Išskleiskite įrašo valdiklio turinį ir pridėkite jį prie knygų sąrašo. Įrašų žodyne pridėkite raktą kaip knygos pavadinimą ir reikšmę kaip pridėta. Parodykite sėkmės pranešimo laukelį, nurodantį, kad programa sėkmingai įtraukė knygą. Išvalykite turinį add_book_entry nuo pradžios iki pabaigos.
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)
Apibrėžkite metodą, pašalinti_knyga (). Ištraukite knygos pavadinimą ir patikrinkite, ar jis yra knygoje knygos sąrašą. Jei jis yra, pašalinkite jį ir jo įrašą iš žodyno. Baigę parodykite sėkmės pranešimo laukelį, informuojantį, kad programa pašalino knygą. Kitu atveju parodykite klaidos pranešimo laukelį, kad knyga nerasta. Išvalykite įvestį pašalinti_knygos_įrašas visiškai.
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)
Apibrėžkite metodą, issue_book(). Ištraukite knygos pavadinimą ir patikrinkite, ar jis yra knygoje knygos sąrašą. Jei taip, pridėkite tai prie skolinti_sąrašas sąrašą ir pašalinkite jį iš knygų sąrašo. Atnaujinkite knygos vertę kaip išduotas. Kitu atveju parodykite klaidos pranešimo laukelį, kad knyga nerasta. Išvalykite turinį 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)
Apibrėžkite metodą, return_book(). Ištraukite pavadinimą ir patikrinkite, ar jis yra skolinti_sąrašas sąrašą. Jei taip, pašalinkite jį ir vėl pridėkite prie knygų sąrašo ir atnaujinkite įrašo vertę kaip grąžintą. Rodyti sėkmės pranešimo laukelį, nurodantį, kad asmuo grąžino knygą.
Jei pavadinimas yra knygų sąraše ir įrašo būsena skaitoma pridėta, parodykite klaidos pranešimo laukelį, kuriame teigiama, kad asmuo negali grąžinti knygos, nes niekas jos neišdavė. Kitu atveju parodykite klaidos pranešimo laukelį, kad knyga nerasta.
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)
Apibrėžkite metodą, view_books(). Inicijuoti žinutę kintamasis kaip tuščias. Sukurkite pranešimą, kad atliktumėte eilučių interpoliaciją ir parodytumėte knygų pavadinimus kartu su jų būsena. Jei pranešimas tuščias, knygų nėra. Rodyti atitinkamą išvestį pranešimų laukelyje.
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)
Sukurkite klasės egzempliorių ir paleiskite „Tkinter“. mainloop () klausytis įvykių, kol uždarysite langą. Naudokite į __name__ == "__pagrindinis__" idioma programai paleisti.
defrun(self):
self.master.mainloop()
if __name__ == "__main__":
book_borrowing_system = BookBorrowingSystem()
book_borrowing_system.run()
Knygų skolinimosi sistemos išvesties pavyzdys
Paleidus programą, ji pasveikina jus registracijos / prisijungimo ekrane. Įvedę kredencialus ir spustelėję Registruotis mygtuką, programa prideda jus kaip bibliotekininką. Įveskite tuos pačius kredencialus ir paspauskite Prisijungti nukreips jus į valdymo ekraną.
Įvedus knygos pavadinimą ir paspaudus Pridėti knygą, programa parodo pranešimą, kad knyga sėkmingai įtraukta. Jei spustelėsite problemos, grąžinimo arba pašalinimo mygtuką, programa, atnaujindama būseną, parodys atitinkamą pranešimų laukelį.
Spustelėjus Žiūrėti knygas mygtuką, programa rodo knygų pavadinimus kartu su jų būsena. Jei pašalinsite knygą, programa ištrins pavadinimą ir negalėsite jos peržiūrėti.
Jei bandote grąžinti knygą jos neišduodami arba neišėmę knygos, kai ji buvo išleista, programa parodys klaidos pranešimo laukelį.
Knygų skolinimosi programėlės tobulinimas
Šis diegimas yra pagrindas kuriant saugią gamybos lygio GUI programą. Galite pagerinti jo funkcionalumą įdiegę įvesties patvirtinimą, naudodami hašlibas saugoti slaptažodžius, įgyvendinant tinkamą klaidų tvarkymą ir pridedant duomenų patvarumą su duomenų baze.
Be to, turėtumėte įdiegti vartotojo autentifikavimo lygius su skirtingais skaitytojų, bibliotekininkų ir administratorių prieigos lygiais. Galite pridėti paieškos funkciją, kad galėtumėte ieškoti knygų ir palengvinti prieigą.