Seuraa tätä opetusohjelmaa, niin opit rakentamaan perustiedonhallintasovelluksen yksinkertaisella käyttöliittymällä.

Kirjojen lainausjärjestelmä on kirjastonhoitajille erittäin kätevä tapa hallita varastoa ja lainaustoimintoja. Tämä yksinkertainen sovellus on ihanteellinen pienille ja suurille kirjastoille, yhteisökeskuksille, kirjakerhoille ja jopa henkilökohtaiseen kirjakokoelmaasi.

Kirjoittamalla esimerkkisovellusta opit rakentamaan monialustaisen GUI-sovelluksen, käyttämään luokkia ja objekteja kokonaisuuksien mallintamiseen ja kuinka modulisoida ohjelmia.

Tkinterin asentaminen ja käyttäjän kirjautumis-/rekisteröintinäytön luominen

Käytät Tkinteriä kirjojen lainausjärjestelmän rakentamiseen. Tkinter on Python-työpöytäsovellusten standardi GUI-kirjasto. Asenna se kirjoittamalla terminaaliin:

pip install tkinter

Tästä löydät koko lähdekoodin kirjastojen kirjojen lainausjärjestelmän rakentamisesta GitHub-arkisto.

Tuo tarvittavat moduulit ja määritä luokka, Kirjalainausjärjestelmä. Määritä luokalle konstruktorimenetelmä ja alusta juuriikkuna, aseta sovelluksen otsikko, mitat ja taustaväri. Määritä kaksi listaa,

instagram viewer
kirjat ja laina_lista, jota käytät kirjojen nimien tallentamiseen ja lainaamien kirjojen tallentamiseen.

Määrittele sanakirja, ennätys, jonka avulla voit päivittää kirjojen tilan. Käytä setup_gui() menetelmä luoda graafinen käyttöliittymä ja alustaa tyhjä lista, kirjastonhoitajat, jota käytät kirjautumistietojen tallentamiseen.

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ääritä menetelmä, setup_gui(). Rekisteröinti-/kirjautumisnäyttöä varten luot kolme nimeä login_label, username_label, ja salasana_tunniste. Määritä jokaiselle tarralle pääelementti, johon haluat sijoittaa sen, tekstin, jonka sen tulee näyttää, fontin tyylin ja fontin värin.

Tarrojen lisäksi sinun on luotava kaksi merkintäwidgetiä nimeltä username_entry ja password_entry hankkia ja säilyttää kirjastonhoitajan valtakirjat. Voit rakentaa a salasanan tarkistaja testataksesi salasanasi suojausta Pythonilla. Käytä pakkaus johtaja järjestää kaikki nämä widgetit ja lisätä asianmukaiset pehmusteet visuaalista houkuttelevuutta varten.

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ääritä menetelmä, Kirjaudu sisään(). Käytä saada() menetelmä syöttöwidgetissä poimimaan kirjastonhoitajan syöttämien valtuustietojen arvon. Toista kirjastonhoitajaluetteloa ja tarkista, vastaavatko käyttäjänimi ja salasana syötettyjä arvoja. Jos kyllä, tyhjennä syötetyt arvot alusta loppuun. Tuhoa kaikki luomasi widgetit ja soita book_management_screen() tapa näyttää kirjojen lainausjärjestelmän hallintaruutu.

Muussa tapauksessa kirjautumistiedot ovat virheelliset tai kirjastonhoitaja ei ole rekisteröitynyt. Näytä sopiva viesti Tkinterin viestilaatikko-widgetin kautta. Jos haluat salaa salasanasi, asenna bcrypt-moduuli.

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ääritä menetelmä, rekisteröidy (). Poimi kirjastonhoitajan syöttämien valtuustietojen arvo, lisää ne kirjastonhoitajan luetteloon ja tyhjennä merkinnät kokonaan.

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ääritä menetelmä, book_management_screen(). Luo neljä nimettyä tarraa add_book_label, palautuskirjan_tarra, poista_kirjan_tunniste, ja issue_book_label. Luo neljä merkintää ja neljä painiketta, jotka vastaavat näitä tarroja, ja toinen painike tarkastellaksesi luetteloa kaikista kirjoista ja niiden tilasta. Järjestä elementit pakkausten hallinnan avulla ja lisää pehmusteita.

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)

Kirjalainausjärjestelmän toimivuuden kehittäminen

Määritä menetelmä, add_book(). Pura syöttöwidgetin sisältö ja lisää se kirjaluetteloon. Lisää tietuesanakirjaan avain kirjan nimeksi ja arvo nimellä lisätty. Näytä onnistumisviestiruutu, joka kertoo, että ohjelma on lisännyt kirjan onnistuneesti. Tyhjennä sisältö add_book_entry alusta loppuun.

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ääritä menetelmä, poista_kirja(). Pura kirjan nimi ja tarkista, onko se kirjassa kirjat lista. Jos se on olemassa, poista se ja sen tietue sanakirjasta. Kun olet valmis, näytä onnistumisviestiruutu, joka ilmoittaa, että ohjelma on poistanut kirjan. Muussa tapauksessa näytä virheilmoitusruutu, jossa sanotaan, että kirjaa ei löydy. Tyhjennä merkintä poista_kirja_merkintä täysin.

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ääritä menetelmä, issue_book(). Pura kirjan nimi ja tarkista, onko se olemassa kirjat lista. Jos kyllä, liitä tämä laina_lista luettelosta ja poista se kirjaluettelosta. Päivitä kirjan arvo nimellä annettu. Muussa tapauksessa näyttöön tulee virheilmoitusruutu, jossa sanotaan, että kirjaa ei löydy. Tyhjennä sisältö 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ääritä menetelmä, palautuskirja(). Pura otsikko ja tarkista, onko se olemassa laina_lista lista. Jos kyllä, poista se ja lisää se takaisin kirjaluetteloon ja päivitä tietueen arvo palautetussa muodossa. Näytä onnistumisviestilaatikko, jossa ilmoitetaan, että henkilö on palauttanut kirjan.

Jos nimike on kirjaluettelossa ja tietueen tila lukee lisätty, näyttää virheviestiruudun, jossa sanotaan, että henkilö ei voi palauttaa kirjaa, koska kukaan ei ole antanut sitä. Muussa tapauksessa näyttöön tulee virheilmoitusruutu, jossa sanotaan, että kirjaa ei löydy.

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ääritä menetelmä, view_books(). Alusta viesti muuttuja tyhjänä. Muodosta viesti suorittaaksesi merkkijonointerpoloinnin ja näyttää kirjojen nimet sekä niiden tila. Jos viesti on tyhjä, kirjoja ei ole saatavilla. Näytä vastaava tulos viestilaatikossa.

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)

Luo luokasta ilmentymä ja suorita Tkinter mainloop() kuunnellaksesi tapahtumia, kunnes suljet ikkunan. Käyttää the __name__ == "__main__" idioomi ohjelman suorittamiseen.

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

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

Kirjalainausjärjestelmän esimerkkitulostus

Ohjelmaa suoritettaessa se tervehtii sinua rekisteröitymis-/kirjautumisnäytöllä. Kun annat kirjautumistiedot ja napsautat Rekisteröidy -painiketta, ohjelma lisää sinut kirjastonhoitajaksi. Syötä samat tunnistetiedot ja lyö Kirjaudu sisään ohjaa sinut hallintanäyttöön.

Kun kirjoitat kirjan nimen ja painat Lisää kirja, ohjelma näyttää viestiruudun, että se lisäsi kirjan onnistuneesti. Jos napsautat ongelma-, palautus- tai poistopainiketta, ohjelma näyttää asianmukaisen viestiruudun tilan päivittämisen aikana.

Napsauttamalla Näytä kirjat -painiketta, ohjelma näyttää kirjojen nimet ja niiden tilan. Jos poistat kirjan, ohjelma poistaa sen nimen etkä voi tarkastella sitä.

Jos yrität palauttaa kirjan myöntämättä sitä tai poistamatta kirjaa julkaisun aikana, ohjelma näyttää virheviestiruudun.

Kirjalainaussovelluksen parantaminen

Tämä toteutus on perusta turvallisen tuotantotason GUI-sovelluksen rakentamiselle. Voit parantaa sen toimivuutta toteuttamalla syötteen validoinnin käyttämällä hashlib salasanojen tallentamiseen, oikean virheenkäsittelyn toteuttamiseen ja tietojen pysyvyyden lisäämiseen tietokannan kanssa.

Tämän lisäksi sinun tulee ottaa käyttöön käyttäjien todennustasoja, joilla on eri käyttöoikeustasot lukijoille, kirjastonhoitajille ja järjestelmänvalvojille. Voit lisätä hakutoimintoja hakeaksesi kirjoja ja helpottaaksesi niiden käyttöä.