Sekojiet līdzi šai apmācībai, lai uzzinātu, kā izveidot pamata datu pārvaldības lietotni ar vienkāršu GUI priekšgalu.

Grāmatu aizņemšanās sistēma ir ļoti ērts veids, kā bibliotekāri var pārvaldīt krājumus un aizņemties. Šī vienkāršā lietotne ir ideāli piemērota mazām vai lielām bibliotēkām, kopienas centriem, grāmatu klubiem un pat jūsu personīgajai grāmatu kolekcijai.

Rakstot lietotnes paraugu, jūs uzzināsit par to, kā izveidot starpplatformu GUI lietotni, kā izmantot klases un objektus entītiju modelēšanai un kā modularizēt programmas.

Tkinter instalēšana un lietotāja pieteikšanās/reģistrācijas ekrāna izveide

Lai izveidotu grāmatu aizņemšanās sistēmu, izmantosiet Tkinter. Tkinter ir standarta GUI bibliotēka Python darbvirsmas lietojumprogrammām. Lai to instalētu, terminālī ierakstiet:

pip install tkinter

Šeit varat atrast visu bibliotēku grāmatu aizņemšanās sistēmas izveides avota kodu GitHub repozitorijs.

Importējiet nepieciešamos moduļus un definējiet klasi, Grāmatu aizņēmuma sistēma. Definējiet klases konstruktora metodi un inicializējiet saknes logu, iestatot lietojumprogrammas nosaukumu, izmērus un fona krāsu. Definējiet divus sarakstus,

instagram viewer
grāmatas un aizdot_saraksts, ko izmantosit, lai saglabātu grāmatu nosaukumus un to, kuras personas ir aizņēmušās.

definēt vārdnīcu, ieraksts, ko varat izmantot, lai atjauninātu grāmatu statusu. Izmantojiet setup_gui() metode grafiskā lietotāja interfeisa izveidei un tukša saraksta inicializācijai, bibliotekāri, ko izmantosit, lai saglabātu akreditācijas datus.

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

Definējiet metodi, setup_gui(). Reģistrācijas/pieteikšanās ekrānam izveidosit trīs etiķetes ar nosaukumu login_label, lietotājvārda_iezīme, un password_label. Katrai etiķetei definējiet vecākelementu, kurā vēlaties to ievietot, tekstu, kas tai jāparāda, fonta stilu, kas tai jābūt, kā arī fonta krāsu.

Kopā ar etiķetēm jums ir jāizveido divi ierakstu logrīki ar nosaukumu lietotājvārds_ieraksts un password_entry iegūt un uzglabāt bibliotekāra akreditācijas datus. Jūs varat izveidot a paroļu pārbaudītājs, lai pārbaudītu paroles drošību ar Python. Izmantojiet komplekts pārvaldnieku, lai sakārtotu visus šos logrīkus un pievienotu atbilstošu polsterējumu vizuālai pievilcībai.

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

Definējiet metodi, Pieslēgties(). Izmantojiet gūt() metodi ievades logrīkā, lai iegūtu bibliotekāra ievadīto akreditācijas datu vērtību. Atkārtojiet bibliotekāru sarakstu un pārbaudiet, vai lietotājvārds un parole atbilst ievadītajām vērtībām. Ja jā, notīriet ievadītās vērtības no sākuma līdz beigām. Iznīciniet visus izveidotos logrīkus un zvaniet uz book_management_screen() metode, lai parādītu grāmatu aizņēmuma sistēmas pārvaldības ekrānu.

Pretējā gadījumā pieteikšanās akreditācijas dati ir nepareizi vai bibliotekārs nav reģistrējies. Parādiet atbilstošo ziņojumu, izmantojot Tkinter ziņojumu lodziņa logrīku. Gadījumā, ja vēlaties šifrējiet savu paroli, instalējiet bcrypt moduli.

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

Definējiet metodi, reģistrēties (). Izņemiet bibliotekāra ievadīto akreditācijas datu vērtību, pievienojiet tos bibliotekāra sarakstam un pilnībā notīriet ierakstus.

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)

Definējiet metodi, book_management_screen(). Izveidojiet četras etiķetes ar nosaukumu add_book_label, return_book_label, Remove_book_label, un issue_book_label. Izveidojiet četrus ierakstus un četras pogas, kas atbilst šīm etiķetēm, un vēl vienu pogu, lai skatītu visu grāmatu sarakstu kopā ar to statusu. Izmantojiet pakotnes pārvaldnieku, lai sakārtotu elementus un pievienotu polsterējumu.

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)

Grāmatu aizņēmuma sistēmas funkcionalitātes veidošana

Definējiet metodi, add_book(). Izvelciet ieraksta logrīka saturu un pievienojiet to grāmatu sarakstam. Ierakstu vārdnīcā pievienojiet atslēgu kā grāmatas nosaukumu un vērtību kā pievienots. Parādiet veiksmes ziņojuma lodziņu, kas informē, ka programma ir veiksmīgi pievienojusi grāmatu. Notīrīt saturu add_book_entry no sākuma līdz beigām.

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)

Definējiet metodi, noņemt_grāmatu(). Izvelciet grāmatas nosaukumu un pārbaudiet, vai tas ir iekļauts grāmatas sarakstu. Ja tas pastāv, noņemiet to un tā ierakstu no vārdnīcas. Kad tas ir izdarīts, parādiet veiksmes ziņojuma lodziņu, informējot, ka programma ir noņēmusi grāmatu. Pretējā gadījumā parādiet kļūdas ziņojuma lodziņu, kurā teikts, ka grāmata nav atrasta. Notīriet ierakstu Remove_book_entry pilnībā.

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)

Definējiet metodi, issue_book(). Izvelciet grāmatas nosaukumu un pārbaudiet, vai tas pastāv grāmatas sarakstu. Ja jā, pievienojiet to aizdot_saraksts sarakstu un noņemiet to no grāmatu saraksta. Atjauniniet grāmatas vērtību kā izdots. Pretējā gadījumā parādiet kļūdas ziņojuma lodziņu, kurā teikts, ka grāmata nav atrasta. Notīrīt saturu 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)

Definējiet metodi, return_book(). Izvelciet nosaukumu un pārbaudiet, vai tas pastāv aizdot_saraksts sarakstu. Ja jā, noņemiet to un pievienojiet to atpakaļ grāmatu sarakstam un atjauniniet ieraksta vērtību, kā atgriezts. Parādiet veiksmes ziņojuma lodziņu, kurā norādīts, ka persona ir atgriezusi grāmatu.

Ja nosaukums pastāv grāmatu sarakstā un ieraksta statuss skan pievienots, parādiet kļūdas ziņojuma lodziņu, kurā teikts, ka persona nevar atgriezt grāmatu, jo neviens to nav izdevis. Pretējā gadījumā parādiet kļūdas ziņojuma lodziņu, kurā teikts, ka grāmata nav atrasta.

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)

Definējiet metodi, view_books(). Inicializējiet ziņa mainīgais kā tukšs. Izveidojiet ziņojumu, lai veiktu virknes interpolāciju un parādītu grāmatu nosaukumus kopā ar to statusu. Ja ziņojums ir tukšs, nav pieejama neviena grāmata. Parādiet atbilstošo izvadi ziņojuma lodziņā.

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)

Izveidojiet klases gadījumu un palaidiet Tkinter mainloop() lai klausītos notikumus, līdz aizverat logu. Izmantot uz __name__ == "__main__" idioma lai palaistu programmu.

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

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

Grāmatu aizņēmuma sistēmas izvades piemērs

Palaižot programmu, tā jūs sveicina ar reģistrēšanās/pieteikšanās ekrānu. Ievadot akreditācijas datus un noklikšķinot uz Reģistrēties pogu, programma jūs pievieno kā bibliotekāru. Ievadot tos pašus akreditācijas datus un nospiežot Pieslēgties novirzīs jūs uz pārvaldības ekrānu.

Ievadot grāmatas nosaukumu un nospiežot Pievienot grāmatu, programma parāda ziņojuma lodziņu, ka grāmata ir veiksmīgi pievienota. Ja noklikšķināsit uz problēmas, atgriešanas vai noņemšanas pogas, programma statusa atjaunināšanas laikā parāda atbilstošo ziņojuma lodziņu.

Noklikšķinot uz Skatīt grāmatas pogu, programma parāda grāmatu nosaukumus kopā ar to statusu. Ja noņemat grāmatu, programma izdzēš nosaukumu, un jūs to nevarat skatīt.

Ja mēģināt atgriezt grāmatu, to neizdodot vai neizņemot grāmatu izdošanas laikā, programma parāda kļūdas ziņojuma lodziņu.

Grāmatu aizņemšanās lietotnes uzlabošana

Šī ieviešana ir pamats drošas ražošanas līmeņa GUI lietojumprogrammas izveidei. Jūs varētu uzlabot tā funkcionalitāti, ieviešot ievades validāciju, izmantojot hashlib glabāt paroles, ieviešot pareizu kļūdu apstrādi un pievienojot datu noturību ar datu bāzi.

Papildus tam ir jāievieš lietotāju autentifikācijas līmeņi ar dažādiem piekļuves līmeņiem lasītājiem, bibliotekāriem un administratoriem. Varat pievienot meklēšanas funkcionalitāti, lai meklētu grāmatas un atvieglotu piekļuvi.