Järgige seda õpetust, et õppida, kuidas luua lihtsa graafilise kasutajaliidese kasutajaliidese abil põhiline andmehaldusrakendus.

Raamatute laenutussüsteem on raamatukoguhoidjatele ülimugav viis inventari ja laenutustegevuste haldamiseks. See lihtne rakendus sobib ideaalselt väikeste ja suurte raamatukogude, kogukonnakeskuste, raamatuklubide ja isegi teie isikliku raamatukogu jaoks.

Näidisrakendust kirjutades saate teada, kuidas luua platvormideülest GUI-rakendust, kuidas kasutada olemite modelleerimiseks klasse ja objekte ning kuidas oma programme moduleerida.

Tkinteri installimine ja kasutaja sisselogimis-/registreerimiskuva loomine

Raamatulaenutamissüsteemi loomiseks kasutate Tkinterit. Tkinter on Pythoni töölauarakenduste standardne GUI teek. Selle installimiseks tippige terminali:

pip install tkinter

Siit leiate kogu raamatukogude laenutussüsteemi loomise lähtekoodi GitHubi hoidla.

Importige vajalikud moodulid ja määrake klass, Raamatulaenusüsteem. Määratlege klassi konstruktorimeetod ja lähtestage juuraken, määrates rakenduse pealkirja, mõõtmed ja taustavärvi. Määratlege kaks loendit,

instagram viewer
raamatuid ja laenu_loend, mida kasutate raamatute pealkirjade ja inimeste laenutatud raamatute pealkirjade salvestamiseks.

Määratlege sõnastik, rekord, mida saate kasutada raamatute oleku värskendamiseks. Kasuta setup_gui() meetod graafilise kasutajaliidese loomiseks ja tühja loendi lähtestamiseks, raamatukoguhoidjad, mida kasutate mandaatide salvestamiseks.

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

Määratlege meetod, setup_gui(). Registreerimis-/sisselogimiskuva jaoks loote kolm nimega silti login_label, kasutajanime_silt, ja parooli_silt. Määrake iga sildi jaoks põhielement, millesse soovite selle paigutada, tekst, mida see peaks kuvama, fondi stiil ja fondi värv.

Koos siltidega peate looma kaks sisestusvidinat nimega kasutajanimi_entry ja password_entry raamatukoguhoidja volikirjade hankimiseks ja säilitamiseks. Saate ehitada a paroolikontrolli, et testida oma parooli turvalisust Pythoniga. Kasuta pakkima haldur, et korraldada kõik need vidinad ja lisada visuaalseks atraktiivsuseks sobiv polster.

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

Määratlege meetod, Logi sisse(). Kasuta saada () sisestusvidina meetod, et eraldada raamatukoguhoidja sisestatud mandaatide väärtus. Korrake raamatukoguhoidjate loendit ja kontrollige, kas kasutajanimi ja parool vastavad sisestatud väärtustele. Kui jah, tühjendage sisestatud väärtused algusest lõpuni. Hävitage kõik loodud vidinad ja helistage book_management_screen() meetod raamatulaenutussüsteemi halduskuva kuvamiseks.

Vastasel juhul on sisselogimismandaadid valed või raamatukoguhoidja pole registreerunud. Kuvage sobiv sõnum Tkinteri sõnumikasti vidina kaudu. Juhul kui soovite krüpteerige oma parool, installige bcrypt moodul.

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

Määratlege meetod, Registreeri(). Eraldage raamatukoguhoidja sisestatud mandaatide väärtus, lisage need raamatukoguhoidjate loendisse ja tühjendage kirjed täielikult.

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)

Määratlege meetod, book_management_screen(). Looge neli nimega silti lisa_raamatu_silt, tagastamise_raamatu_silt, eemalda_raamatu_silt, ja väljaandmise_raamatu_silt. Looge nendele siltidele vastavad neli kirjet ja neli nuppu ning veel üks nupp, et vaadata kõigi raamatute loendit koos nende olekutega. Kasutage pakihaldurit elementide korraldamiseks ja polsterduse lisamiseks.

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)

Raamatulaenutussüsteemi funktsionaalsuse loomine

Määratlege meetod, add_book(). Eraldage sisestusvidina sisu ja lisage see raamatute loendisse. Lisage kirjesõnaraamatusse raamatu pealkirjaks võti ja väärtuseks as lisatud. Kuvage eduteate kast, mis ütleb, et programm on raamatu edukalt lisanud. Tühjendage sisu add_book_entry algusest lõpuni.

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)

Määratlege meetod, eemalda_raamat(). Võtke raamatu pealkiri välja ja kontrollige, kas see on raamatus olemas raamatuid nimekirja. Kui see on olemas, eemaldage see ja selle kirje sõnastikust. Kui olete lõpetanud, kuvage eduteate kast, mis teavitab, et programm on raamatu eemaldanud. Vastasel juhul kuvage veateate kast, mis ütleb, et raamatut ei leitud. Tühjendage kirje eemalda_raamatu_kirje täielikult.

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)

Määratlege meetod, number_book(). Võtke välja raamatu pealkiri ja kontrollige, kas see on raamatus olemas raamatuid nimekirja. Kui jah, lisage see laenu_loend nimekirja ja eemaldage see raamatute loendist. Värskendage raamatu väärtust kui välja antud. Vastasel juhul kuvage veateate kast, mis ütleb, et raamatut ei leitud. Tühjendage sisu 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)

Määratlege meetod, return_book(). Tõmmake pealkiri välja ja kontrollige, kas see on failis olemas laenu_loend nimekirja. Kui jah, eemaldage see ja lisage see tagasi raamatute loendisse ning värskendage kirje väärtust tagastatuna. Kuvage eduteate kast, mis ütleb, et inimene on raamatu tagastanud.

Kui pealkiri on raamatute loendis olemas ja kirje olek loeb lisatud, kuvab veateate, mis ütleb, et inimene ei saa raamatut tagastada, kuna keegi pole seda välja andnud. Vastasel juhul kuvage veateate kast, mis ütleb, et raamatut ei leitud.

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)

Määratlege meetod, vaata_raamatuid(). Initsialiseerige sõnum muutuja tühi. Looge sõnum stringide interpoleerimiseks ja kuvage raamatute pealkiri koos nende olekuga. Kui teade on tühi, pole raamatuid saadaval. Kuvage vastav väljund sõnumikastis.

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)

Looge klassi eksemplar ja käivitage Tkinter mainloop() sündmuste kuulamiseks kuni akna sulgemiseni. Kasutage a __name__ == "__main__" idioom programmi käivitamiseks.

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

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

Raamatulaenutussüsteemi näidisväljund

Programmi käivitamisel tervitab see teid registreerimis-/sisselogimiskuvaga. Mandaatide sisestamisel ja nupul klõpsamisel Registreeri nuppu, lisab programm teid raamatukoguhoidjaks. Sisestage samad mandaadid ja lööge Logi sisse navigeerib teid halduskuvale.

Kui sisestate raamatu pealkirja ja vajutate nuppu Lisa raamat, kuvab programm teatekasti, et raamatu lisamine õnnestus. Kui klõpsate probleemi, tagastamise või eemaldamise nuppu, kuvab programm oleku värskendamise ajal vastava teatekasti.

Klõpsates Vaata raamatuid nuppu, kuvab programm raamatute pealkirjad koos nende olekuga. Kui eemaldate raamatu, kustutab programm pealkirja ja te ei saa seda vaadata.

Kui proovite raamatut tagastada ilma seda välja andmata või väljastamise ajal raamatut eemaldamata, kuvab programm veateate.

Raamatulaenutusrakenduse täiustamine

See teostus on aluseks turvalise tootmistaseme GUI rakenduse loomisele. Saate selle funktsionaalsust täiustada, rakendades sisendi valideerimist, kasutades hashlib paroolide salvestamiseks, õige veakäsitluse rakendamiseks ja andmete püsivuse lisamiseks andmebaasiga.

Peale selle peaksite rakendama kasutaja autentimise tasemeid erineva juurdepääsutasemega lugejatele, raamatukoguhoidjatele ja administraatoritele. Saate lisada otsingufunktsiooni, et otsida raamatuid ja hõlbustada juurdepääsu.