from tkinter import *
from tkinter import ttk, messagebox
import mysql.connector
class LibraryManagementSystem:
def __init__(self, root):
self.root = root
self.root.title("Library Management System")
self.root.geometry("1400x700+0+0")
self.member_var = StringVar()
self.prn_var = StringVar()
self.id_var = StringVar()
self.firstname_var = StringVar()
self.lastname_var = StringVar()
self.address1_var = StringVar()
self.address2_var = StringVar()
self.postcode_var = StringVar()
self.mobile_var = StringVar()
self.bookid_var = StringVar()
self.booktitle_var = StringVar()
self.auther_var = StringVar()
self.dateborrowed_var = StringVar()
self.datedue_var = StringVar()
self.daysonbook = StringVar()
self.lateratefine_var = StringVar()
self.dateoverdue = StringVar()
self.finallprice = StringVar()
lbltitle = Label(self.root, text="LIBRARY MANAGEMENT SYSTEM", bg="powder blue", fg="green", bd=20, relief="ridge", font=("Times New Roman", 50, "bold"), padx=2, pady=6)
lbltitle.pack(side=TOP, fill=X)
frame = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
frame.place(x=0, y=130, width=1365, height=370)
# DATA FRAME LEFT
DataFrameLeft = LabelFrame(frame, text="LIBRARY MEMBERSHIP INFORMATION", bg="powder blue", fg="green", bd=12, relief="ridge", font=("Times New Roman", 12, "bold"))
DataFrameLeft.place(x=0, y=5, width=920, height=330)
lblmember = Label(DataFrameLeft, bg="powder blue", text="MEMBER TYPE", font=("Times New Roman", 15, "bold"), padx=2, pady=6)
lblmember.grid(row=0, column=0, sticky=W)
comMember = ttk.Combobox(DataFrameLeft, font=("Times New Roman", 15, "bold"), width=25, textvariable=self.member_var, state="readonly")
comMember["value"] = ("ADMIN STAFF", "STUDENT", "LECTURER")
comMember.current(0)
comMember.grid(row=0, column=1)
lblPRN_no = Label(DataFrameLeft, font=("arial", 12, "bold"), text="PRN NO.", padx=2, pady=2, bg="powder blue")
lblPRN_no.grid(row=1, column=0, sticky=W)
textPRN_no = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.prn_var, width=30)
textPRN_no.grid(row=1, column=1)
lblTitle = Label(DataFrameLeft, font=("arial", 12, "bold"), text="ID NO.", padx=2, pady=2, bg="powder blue")
lblTitle.grid(row=2, column=0, sticky=W)
textTitle = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.id_var, width=30)
textTitle.grid(row=2, column=1)
lblFirstName = Label(DataFrameLeft, font=("arial", 12, "bold"), text="First Name", padx=2, pady=2, bg="powder blue")
lblFirstName.grid(row=3, column=0, sticky=W)
textFirstName = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.firstname_var, width=30)
textFirstName.grid(row=3, column=1)
lblLastName = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Last Name", padx=2, pady=2, bg="powder blue")
lblLastName.grid(row=4, column=0, sticky=W)
textLastName = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.lastname_var, width=30)
textLastName.grid(row=4, column=1)
lblAddress1 = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Address 1", padx=2, pady=2, bg="powder blue")
lblAddress1.grid(row=5, column=0, sticky=W)
textAddress1 = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.address1_var, width=30)
textAddress1.grid(row=5, column=1)
lblAddress2 = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Address 2", padx=2, pady=2, bg="powder blue")
lblAddress2.grid(row=6, column=0, sticky=W)
textAddress2 = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.address2_var, width=30)
textAddress2.grid(row=6, column=1)
lblPostcode = Label(DataFrameLeft, font=("arial", 12, "bold"), text=" Post Code", padx=2, pady=2, bg="powder blue")
lblPostcode.grid(row=7, column=0, sticky=W)
textPostcode = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.postcode_var, width=30)
textPostcode.grid(row=7, column=1)
lblMobile = Label(DataFrameLeft, font=("arial", 12, "bold"), text=" Mobile No.", padx=2, pady=2, bg="powder blue")
lblMobile.grid(row=8, column=0, sticky=W)
textMobile = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.mobile_var, width=30)
textMobile.grid(row=8, column=1)
lblBookid = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Book Id.", padx=2, pady=2, bg="powder blue")
lblBookid.grid(row=0, column=2, sticky=W)
textBookid = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.bookid_var, width=30)
textBookid.grid(row=0, column=3)
lblBooktitle = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Book Title", padx=2, pady=2, bg="powder blue")
lblBooktitle.grid(row=1, column=2, sticky=W)
textBooktitle = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.booktitle_var, width=30)
textBooktitle.grid(row=1, column=3)
lblAuther = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Auther Name", padx=2, pady=2, bg="powder blue")
lblAuther.grid(row=2, column=2, sticky=W)
textAuther = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.auther_var, width=30)
textAuther.grid(row=2, column=3)
lblDateBorrowed = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date Borrowed ", padx=2, pady=2, bg="powder blue")
lblDateBorrowed.grid(row=3, column=2, sticky=W)
textDateBorrowed = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.dateborrowed_var, width=30)
textDateBorrowed.grid(row=3, column=3)
lblDateDue = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date Due: ", padx=2, pady=2, bg="powder blue")
lblDateDue.grid(row=4, column=2, sticky=W)
textDateDue = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.datedue_var, width=30)
textDateDue.grid(row=4, column=3)
lblDaysonBook = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Days on Book", padx=2, pady=2, bg="powder blue")
lblDaysonBook.grid(row=5, column=2, sticky=W)
textDaysonBook = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.daysonbook, width=30)
textDaysonBook.grid(row=5, column=3)
lbllateretuenfine = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Late Return Fine", padx=2, pady=2, bg="powder blue")
lbllateretuenfine.grid(row=6, column=2, sticky=W)
textlateretuenfine = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.lateratefine_var, width=30)
textlateretuenfine.grid(row=6, column=3)
lblDateoverDate = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date over Date", padx=2, pady=2, bg="powder blue")
lblDateoverDate.grid(row=7, column=2, sticky=W)
textDateoverDate = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.dateoverdue, width=30)
textDateoverDate.grid(row=7, column=3)
lblActualPrice = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Actual Price", padx=2, pady=2, bg="powder blue")
lblActualPrice.grid(row=8, column=2, sticky=W)
textActualPrice = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.finallprice, width=30)
textActualPrice.grid(row=8, column=3)
# BUTTONS
Framebutton = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
Framebutton.place(x=0, y=500, width=1365, height=60)
btnAddData = Button(Framebutton, command=self.add_data, text="Add Data", font=("arial", 12, "bold"), width=70, bg="blue", fg="white")
btnAddData.grid(row=0, column=0)
btnExit = Button(Framebutton, command=self.exit_app, text="Exit", font=("arial", 12, "bold"), width=50, bg="blue", fg="white")
btnExit.grid(row=0, column=1)
# INFORMATION FRAME
FrameDetails = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
FrameDetails.place(x=0, y=560, width=1365, height=130)
Table_frame = Frame(FrameDetails, bd=6, relief="ridge", bg="powder blue")
Table_frame.place(x=0, y=2, width=1310, height=100)
xscroll = Scrollbar(Table_frame, orient=HORIZONTAL)
yscroll = Scrollbar(Table_frame, orient=VERTICAL)
self.Library_table = ttk.Treeview(Table_frame, column=("Member Type", "PRN No.", "ID No.", "First Name", "Last Name", "Address 1", "Address 2", "Post Code", "Mobile No.", "Book Id.", "Book Title", "Author Name", "Date Borrowed", "Date Due", "Days on Book", "Late Return Fine", "Date Overdue", "Actual Price"),
xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
xscroll.pack(side=BOTTOM, fill=X)
yscroll.pack(side=RIGHT, fill=Y)
xscroll.config(command=self.Library_table.xview)
yscroll.config(command=self.Library_table.yview)
self.Library_table.heading("Member Type", text="Member Type")
self.Library_table.heading("PRN No.", text="PRN No.")
self.Library_table.heading("ID No.", text="ID No.")
self.Library_table.heading("First Name", text="First Name")
self.Library_table.heading("Last Name", text="Last Name")
self.Library_table.heading("Address 1", text="Address 1")
self.Library_table.heading("Address 2", text="Address 2")
self.Library_table.heading("Post Code", text="Post Code")
self.Library_table.heading("Mobile No.", text="Mobile No.")
self.Library_table.heading("Book Id.", text="Book Id.")
self.Library_table.heading("Book Title", text="Book Title")
self.Library_table.heading("Author Name", text="Author Name")
self.Library_table.heading("Date Borrowed", text="Date Borrowed")
self.Library_table.heading("Date Due", text="Date Due")
self.Library_table.heading("Days on Book", text="Days on Book")
self.Library_table.heading("Late Return Fine", text="Late Return Fine")
self.Library_table.heading("Date Overdue", text="Date Overdue")
self.Library_table.heading("Actual Price", text="Actual Price")
self.Library_table['show'] = 'headings'
self.Library_table.column("Member Type", width=90)
self.Library_table.column("PRN No.", width=90)
self.Library_table.column("ID No.", width=90)
self.Library_table.column("First Name", width=90)
self.Library_table.column("Last Name", width=90)
self.Library_table.column("Address 1", width=90)
self.Library_table.column("Address 2", width=90)
self.Library_table.column("Post Code", width=90)
self.Library_table.column("Mobile No.", width=90)
self.Library_table.column("Book Id.", width=90)
self.Library_table.column("Book Title", width=90)
self.Library_table.column("Author Name", width=90)
self.Library_table.column("Date Borrowed", width=90)
self.Library_table.column("Date Due", width=90)
self.Library_table.column("Days on Book", width=90)
self.Library_table.column("Late Return Fine", width=90)
self.Library_table.column("Date Overdue", width=90)
self.Library_table.column("Actual Price", width=90)
self.Library_table.pack(fill=BOTH, expand=1)
self.Library_table.bind("<ButtonRelease-1>", self.get_cursor)
def add_data(self):
conn = mysql.connector.connect(host="localhost", username="root", password="LFCOMP@105", database="librarymanagementsystem")
my_cursor = conn.cursor()
my_cursor.execute("INSERT INTO newlibrary VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
(self.member_var.get(), self.prn_var.get(), self.id_var.get(), self.firstname_var.get(),
self.lastname_var.get(), self.address1_var.get(), self.address2_var.get(),
self.postcode_var.get(), self.mobile_var.get(), self.bookid_var.get(), self.booktitle_var.get(),
self.auther_var.get(), self.dateborrowed_var.get(), self.datedue_var.get(),
self.daysonbook.get(), self.lateratefine_var.get(), self.dateoverdue.get(), self.finallprice.get()))
conn.commit()
self.fetch_data()
conn.close()
messagebox.showinfo("Success", "Data has been added successfully!")
def fetch_data(self):
conn = mysql.connector.connect(host="localhost", username="root", password="LFCOMP@105", database="librarymanagementsystem")
my_cursor = conn.cursor()
my_cursor.execute("SELECT * FROM newlibrary")
rows = my_cursor.fetchall()
if len(rows) != 0:
self.Library_table.delete(*self.Library_table.get_children())
for i in rows:
self.Library_table.insert("", END, values=i)
conn.commit()
def exit_app(self):
exit_prompt = messagebox.askyesno("Library Management System", "Do you want to exit?")
if exit_prompt > 0:
self.root.destroy()
if __name__ == "__main__":
root = Tk()
obj = LibraryManagementSystem(root)
root.mainloop()
python
from tkinter import *
from tkinter import ttk
import mysql.connector
class LibraryManagementSystem:
def __init__(self, root):
self.root = root
self.root.title("Library Management System")
self.root.geometry("1400x700+0+0")
self.member_var = StringVar()
self.prn_var = StringVar()
self.id_var = StringVar()
self.firstname_var = StringVar()
self.lastname_var = StringVar()
self.address1_var = StringVar()
self.address2_var = StringVar()
self.postcode_var = StringVar()
self.mobile_var = StringVar()
self.bookid_var = StringVar()
self.booktitle_var = StringVar()
self.auther_var = StringVar()
self.dateborrowed_var = StringVar()
self.datedue_var = StringVar()
self.daysonbook = StringVar()
self.lateratefine_var = StringVar()
self.dateoverdue = StringVar()
self.finallprice = StringVar()
lbltitle = Label(self.root, text="LIBRARY MANAGEMENT SYSTEM", bg="powder blue", fg="green", bd=20, relief="ridge", font=("Times New Roman", 50, "bold"), padx=2, pady=6)
lbltitle.pack(side=TOP, fill=X)
frame = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
frame.place(x=0, y=130, width=1365, height=370)
# DATA FRAME LEFT
DataFrameLeft = LabelFrame(frame, text="LIBRARY MEMBERSHIP INFORMATION", bg="powder blue", fg="green", bd=12, relief="ridge", font=("Times New Roman", 12, "bold"))
DataFrameLeft.place(x=0, y=5, width=920, height=330)
lblmember = Label(DataFrameLeft, bg="powder blue", text="MEMBER TYPE", font=("Times New Roman", 15, "bold"), padx=2, pady=6)
lblmember.grid(row=0, column=0, sticky=W)
comMember = ttk.Combobox(DataFrameLeft, font=("Times New Roman", 15, "bold"), width=25, textvariable=self.member_var, state="readonly")
comMember["value"] = ("ADMIN STAFF", "STUDENT", "LECTURER")
comMember.current(0)
comMember.grid(row=0, column=1)
lblPRN_no = Label(DataFrameLeft, font=("arial", 12, "bold"), text="PRN NO.", padx=2, pady=2, bg="powder blue")
lblPRN_no.grid(row=1, column=0, sticky=W)
textPRN_no = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.prn_var, width=30)
textPRN_no.grid(row=1, column=1)
lblTitle = Label(DataFrameLeft, font=("arial", 12, "bold"), text="ID NO.", padx=2, pady=2, bg="powder blue")
lblTitle.grid(row=2, column=0, sticky=W)
textTitle = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.id_var, width=30)
textTitle.grid(row=2, column=1)
lblFirstName = Label(DataFrameLeft, font=("arial", 12, "bold"), text="First Name", padx=2, pady=2, bg="powder blue")
lblFirstName.grid(row=3, column=0, sticky=W)
textFirstName = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.firstname_var, width=30)
textFirstName.grid(row=3, column=1)
lblLastName = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Last Name", padx=2, pady=2, bg="powder blue")
lblLastName.grid(row=4, column=0, sticky=W)
textLastName = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.lastname_var, width=30)
textLastName.grid(row=4, column=1)
lblAddress1 = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Address 1", padx=2, pady=2, bg="powder blue")
lblAddress1.grid(row=5, column=0, sticky=W)
textAddress1 = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.address1_var, width=30)
textAddress1.grid(row=5, column=1)
lblAddress2 = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Address 2", padx=2, pady=2, bg="powder blue")
lblAddress2.grid(row=6, column=0, sticky=W)
textAddress2 = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.address2_var, width=30)
textAddress2.grid(row=6, column=1)
lblPostcode = Label(DataFrameLeft, font=("arial", 12, "bold"), text=" Post Code", padx=2, pady=2, bg="powder blue")
lblPostcode.grid(row=7, column=0, sticky=W)
textPostcode = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.postcode_var, width=30)
textPostcode.grid(row=7, column=1)
lblMobile = Label(DataFrameLeft, font=("arial", 12, "bold"), text=" Mobile No.", padx=2, pady=2, bg="powder blue")
lblMobile.grid(row=8, column=0, sticky=W)
textMobile = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.mobile_var, width=30)
textMobile.grid(row=8, column=1)
lblBookid = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Book Id.", padx=2, pady=2, bg="powder blue")
lblBookid.grid(row=0, column=2, sticky=W)
textBookid = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.bookid_var, width=30)
textBookid.grid(row=0, column=3)
lblBooktitle = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Book Title", padx=2, pady=2, bg="powder blue")
lblBooktitle.grid(row=1, column=2, sticky=W)
textBooktitle = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.booktitle_var, width=30)
textBooktitle.grid(row=1, column=3)
lblAuther = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Auther Name", padx=2, pady=2, bg="powder blue")
lblAuther.grid(row=2, column=2, sticky=W)
textAuther = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.auther_var, width=30)
textAuther.grid(row=2, column=3)
lblDateBorrowed = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date Borrowed ", padx=2, pady=2, bg="powder blue")
lblDateBorrowed.grid(row=3, column=2, sticky=W)
textDateBorrowed = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.dateborrowed_var, width=30)
textDateBorrowed.grid(row=3, column=3)
lblDateDue = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date Due: ", padx=2, pady=2, bg="powder blue")
lblDateDue.grid(row=4, column=2, sticky=W)
textDateDue = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.datedue_var, width=30)
textDateDue.grid(row=4, column=3)
lblDaysonBook = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Days on Book", padx=2, pady=2, bg="powder blue")
lblDaysonBook.grid(row=5, column=2, sticky=W)
textDaysonBook = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.daysonbook, width=30)
textDaysonBook.grid(row=5, column=3)
lbllateretuenfine = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Late Return Fine", padx=2, pady=2, bg="powder blue")
lbllateretuenfine.grid(row=6, column=2, sticky=W)
textlateretuenfine = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.lateratefine_var, width=30)
textlateretuenfine.grid(row=6, column=3)
lblDateoverDate = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Date over Date", padx=2, pady=2, bg="powder blue")
lblDateoverDate.grid(row=7, column=2, sticky=W)
textDateoverDate = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.dateoverdue, width=30)
textDateoverDate.grid(row=7, column=3)
lblActualPrice = Label(DataFrameLeft, font=("arial", 12, "bold"), text="Actual Price", padx=2, pady=2, bg="powder blue")
lblActualPrice.grid(row=8, column=2, sticky=W)
textActualPrice = Entry(DataFrameLeft, font=("arial", 13, "bold"), textvariable=self.finallprice, width=30)
textActualPrice.grid(row=8, column=3)
# BUTTONS
Framebutton = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
Framebutton.place(x=0, y=500, width=1365, height=60)
btnAddData = Button(Framebutton, command=self.adda_data, text="Add Data", font=("arial", 12, "bold"), width=70, bg="blue", fg="white")
btnAddData.grid(row=0, column=0)
btnAddData = Button(Framebutton, text="Exit", font=("arial", 12, "bold"), width=50, bg="blue", fg="white")
btnAddData.grid(row=0, column=1)
# INFORMATION FRAME
FrameDetails = Frame(self.root, bd=12, relief="ridge", padx=20, bg="powder blue")
FrameDetails.place(x=0, y=560, width=1365, height=130)
Table_frame = Frame(FrameDetails, bd=6, relief="ridge", bg="powder blue")
Table_frame.place(x=0, y=2, width=1310, height=100)
xscroll = Scrollbar(Table_frame, orient=HORIZONTAL)
yscroll = Scrollbar(Table_frame, orient=VERTICAL)
self.Library_table = ttk.Treeview(Table_frame, column=("Member Type", "PRN No.", "ID No.", "First Name", "Last Name", "Address 1", "Address 2", "Post Code", "Mobile No.", "Book Id.", "Book Title", "Author Name", "Date Borrowed", "Date Due", "Days on Book", "Late Return Fine", "Date Overdue", "Actual Price"),
xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
xscroll.pack(side=BOTTOM, fill=X)
yscroll.pack(side=RIGHT, fill=Y)
xscroll.config(command=self.Library_table.xview)
yscroll.config(command=self.Library_table.yview)
self.Library_table.heading("Member Type", text="Member Type")
self.Library_table.heading("PRN No.", text="PRN No.")
self.Library_table.heading("ID No.", text="ID No.")
self.Library_table.heading("First Name", text="First Name")
self.Library_table.heading("Last Name", text="Last Name")
self.Library_table.heading("Address 1", text="Address 1")
self.Library_table.heading("Address 2", text="Address 2")
self.Library_table.heading("Post Code", text="Post Code")
self.Library_table.heading("Mobile No.", text="Mobile No.")
self.Library_table.heading("Book Id.", text="Book Id.")
self.Library_table.heading("Book Title", text="Book Title")
self.Library_table.heading("Author Name", text="Author Name")
self.Library_table.heading("Date Borrowed", text="Date Borrowed")
self.Library_table.heading("Date Due", text="Date Due")
self.Library_table.heading("Days on Book", text="Days on Book")
self.Library_table.heading("Late Return Fine", text="Late Return Fine")
self.Library_table.heading("Date Overdue", text="Date Overdue")
self.Library_table.heading("Actual Price", text="Actual Price")
self.Library_table['show'] = 'headings'
self.Library_table.column("Member Type", width=90)
self.Library_table.column("PRN No.", width=90)
self.Library_table.column("ID No.", width=90)
self.Library_table.column("First Name", width=90)
self.Library_table.column("Last Name", width=90)
self.Library_table.column("Address 1", width=90)
self.Library_table.column("Address 2", width=90)
self.Library_table.column("Post Code", width=90)
self.Library_table.column("Mobile No.", width=90)
self.Library_table.column("Book Id.", width=90)
self.Library_table.column("Book Title", width=90)
self.Library_table.column("Author Name", width=90)
self.Library_table.column("Date Borrowed", width=90)
self.Library_table.column("Date Due", width=90)
self.Library_table.column("Days on Book", width=90)
self.Library_table.column("Late Return Fine", width=90)
self.Library_table.column("Date Overdue", width=90)
self.Library_table.column("Actual Price", width=90)
self.Library_table.pack(fill=BOTH, expand=1)
self.Library_table.bind("<ButtonRelease-1>", self.get_cursor)
def adda_data(self):
conn = mysql.connector.connect(host="localhost", username="root", password="LFCOMP@105", database="librarymanagementsystem")
my_cursor = conn.cursor()
my_cursor.execute("INSERT INTO newlibrary VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
(self.member_var.get(), self.prn_var.get(), self.id_var.get(), self.firstname_var.get(),
self.lastname_var.get(), self.address1_var.get(), self.address2_var.get(),
self.postcode_var.get(), self.mobile_var.get(), self.bookid_var.get(), self.booktitle_var.get(),
self.auther_var.get(), self.dateborrowed_var.get(), self.datedue_var.get(),
self.daysonbook.get(), self.lateratefine_var.get(), self.dateoverdue.get(), self.finallprice.get()))
conn.commit()
self.fetch_data()
conn.close()
def fetch_data(self):
conn = mysql.connector.connect(host="localhost", username="root", password="LFCOMP@105", database="librarymanagementsystem")
my_cursor = conn.cursor()
my_cursor.execute("SELECT * FROM newlibrary")
rows = my_cursor.fetchall()
if len(rows) != 0:
self.Library_table.delete(*self.Library_table.get_children())
for i in rows:
self.Library_table.insert("", END, values=i)
conn.commit()
conn.close()
def get_cursor(self, event=""):
cursor_row = self.Library_table.focus()
content = self.Library_table.item(cursor_row)
row = content["values"]
self.member_var.set(row[0])
self.prn_var.set(row[1])
self.id_var.set(row[2])
self.firstname_var.set(row[3])
self.lastname_var.set(row[4])
self.address1_var.set(row[5])
self.address2_var.set(row[6])
self.postcode_var.set(row[7])
self.mobile_var.set(row[8])
self.bookid_var.set(row[9])
self.booktitle_var.set(row[10])
self.auther_var.set(row[11])
self.dateborrowed_var.set(row[12])
self.datedue_var.set(row[13])
self.daysonbook.set(row[14])
self.lateratefine_var.set(row[15])
self.dateoverdue.set(row[16])
self.finallprice.set(row[17])
if __name__ == "__main__":
root = Tk()
obj = LibraryManagementSystem(root)
root.mainloop()
Annual Project
import tkinter as tk
def update_scores():
# Get Team A information
team_a_name = entry_team_a_name.get()
team_a_runs = int(entry_team_a_runs.get())
team_a_wickets = int(entry_team_a_wickets.get())
# Get Team B information
team_b_name = entry_team_b_name.get()
team_b_runs = int(entry_team_b_runs.get())
team_b_wickets = int(entry_team_b_wickets.get())
# Get additional information
current_bowler = entry_current_bowler.get()
striker = entry_striker.get()
non_striker = entry_non_striker.get()
total_runs = team_a_runs if team_a_name == "Team A" else team_b_runs
total_wickets = team_a_wickets if team_a_name == "Team A" else team_b_wickets
overs_passed = float(entry_overs_passed.get())
run_rate = 0.0 if overs_passed == 0 else total_runs / overs_passed
# Update labels with the entered values
label_team_a.config(text=f"{team_a_name} | Runs: {team_a_runs} | Wickets: {team_a_wickets}", bg='lightblue', font=('Arial', 12))
label_team_b.config(text=f"{team_b_name} | Runs: {team_b_runs} | Wickets: {team_b_wickets}", bg='lightgreen', font=('Arial', 12))
label_current_bowler.config(text=f"Current Bowler: {current_bowler}", font=('Arial', 10))
label_striker.config(text=f"Striker: {striker}", font=('Arial', 10))
label_non_striker.config(text=f"Non Striker: {non_striker}", font=('Arial', 10))
label_total_runs_wickets.config(text=f"Total Runs: {total_runs} | Total Wickets: {total_wickets}", font=('Arial', 10))
label_overs_passed.config(text=f"Overs Passed: {overs_passed}", font=('Arial', 10))
label_run_rate.config(text=f"Run Rate: {run_rate:.2f}", font=('Arial', 10))
root = tk.Tk()
root.title("Cricket Scoreboard")
# Team entries
frame_teams = tk.Frame(root)
frame_teams.pack()
label_team_a_name = tk.Label(frame_teams, text="Team A:", font=('Arial', 12))
label_team_a_name.grid(row=0, column=0)
entry_team_a_name = tk.Entry(frame_teams)
entry_team_a_name.grid(row=0, column=1)
label_team_a_runs = tk.Label(frame_teams, text="Runs:", font=('Arial', 12))
label_team_a_runs.grid(row=1, column=0)
entry_team_a_runs = tk.Entry(frame_teams)
entry_team_a_runs.grid(row=1, column=1)
label_team_a_wickets = tk.Label(frame_teams, text="Wickets:", font=('Arial', 12))
label_team_a_wickets.grid(row=2, column=0)
entry_team_a_wickets = tk.Entry(frame_teams)
entry_team_a_wickets.grid(row=2, column=1)
label_team_b_name = tk.Label(frame_teams, text="Team B:", font=('Arial', 12))
label_team_b_name.grid(row=0, column=2)
entry_team_b_name = tk.Entry(frame_teams)
entry_team_b_name.grid(row=0, column=3)
label_team_b_runs = tk.Label(frame_teams, text="Runs:", font=('Arial', 12))
label_team_b_runs.grid(row=1, column=2)
entry_team_b_runs = tk.Entry(frame_teams)
entry_team_b_runs.grid(row=1, column=3)
label_team_b_wickets = tk.Label(frame_teams, text="Wickets:", font=('Arial', 12))
label_team_b_wickets.grid(row=2, column=2)
entry_team_b_wickets = tk.Entry(frame_teams)
entry_team_b_wickets.grid(row=2, column=3)
# Additional information entries
frame_additional_info = tk.Frame(root)
frame_additional_info.pack()
label_current_bowler = tk.Label(frame_additional_info, text="Current Bowler:", font=('Arial', 12))
label_current_bowler.grid(row=0, column=0)
entry_current_bowler = tk.Entry(frame_additional_info)
entry_current_bowler.grid(row=0, column=1)
label_striker = tk.Label(frame_additional_info, text="Striker:", font=('Arial', 12))
label_striker.grid(row=1, column=0)
entry_striker = tk.Entry(frame_additional_info)
entry_striker.grid(row=1, column=1)
label_non_striker = tk.Label(frame_additional_info, text="Non Striker:", font=('Arial', 12))
label_non_striker.grid(row=2, column=0)
entry_non_striker = tk.Entry(frame_additional_info)
entry_non_striker.grid(row=2, column=1)
label_overs_passed = tk.Label(frame_additional_info, text="Overs Passed:", font=('Arial', 12))
label_overs_passed.grid(row=3, column=0)
entry_overs_passed = tk.Entry(frame_additional_info)
entry_overs_passed.grid(row=3, column=1)
# Update button
update_button = tk.Button(root, text="Update Scores", command=update_scores, bg='orange', fg='white', font=('Arial', 12))
update_button.pack()
# Labels for information display
label_team_a = tk.Label(root, text="Team A | Runs: 0 | Wickets: 0", bg='lightblue', font=('Arial', 12))
label_team_a.pack()
label_team_b = tk.Label(root, text="Team B | Runs: 0 | Wickets: 0", bg='lightgreen', font=('Arial', 12))
label_team_b.pack()
label_current_bowler = tk.Label(root, text="Current Bowler: ", font=('Arial', 10))
label_current_bowler.pack()
label_striker = tk.Label(root, text="Striker: ", font=('Arial', 10))
label_striker.pack()
label_non_striker = tk.Label(root, text="Non Striker: ", font=('Arial', 10))
label_non_striker.pack()
label_total_runs_wickets = tk.Label(root, text="Total Runs: 0 | Total Wickets: 0", font=('Arial', 10))
label_total_runs_wickets.pack()
label_overs_passed = tk.Label(root, text="Overs Passed: 0.0", font=('Arial', 10))
label_overs_passed.pack()
label_run_rate = tk.Label(root, text="Run Rate: 0.0", font=('Arial', 10))
label_run_rate.pack()
root.mainloop()
Annual Exam Project Computer
import tkinter as tkdef update_scores(): # Get Team A information team_a_name = entry_team_a_name.get() team_a_runs = int(entry_team_a_runs.get()) team_a_wickets = int(entry_team_a_wickets.get()) # Get Team B information team_b_name = entry_team_b_name.get() team_b_runs = int(entry_team_b_runs.get()) team_b_wickets = int(entry_team_b_wickets.get()) # Get additional information current_bowler = entry_current_bowler.get() striker = entry_striker.get() non_striker = entry_non_striker.get() total_runs = team_a_runs if team_a_name == "Team A" else team_b_runs total_wickets = team_a_wickets if team_a_name == "Team A" else team_b_wickets overs_passed = float(entry_overs_passed.get()) run_rate = 0.0 if overs_passed == 0 else total_runs / overs_passed # Update labels with the entered values label_team_a.config(text=f"{team_a_name} | Runs: {team_a_runs} | Wickets: {team_a_wickets}", bg='lightblue', font=('Arial', 12)) label_team_b.config(text=f"{team_b_name} | Runs: {team_b_runs} | Wickets: {team_b_wickets}", bg='lightgreen', font=('Arial', 12)) label_current_bowler.config(text=f"Current Bowler: {current_bowler}", font=('Arial', 10)) label_striker.config(text=f"Striker: {striker}", font=('Arial', 10)) label_non_striker.config(text=f"Non Striker: {non_striker}", font=('Arial', 10)) label_total_runs_wickets.config(text=f"Total Runs: {total_runs} | Total Wickets: {total_wickets}", font=('Arial', 10)) label_overs_passed.config(text=f"Overs Passed: {overs_passed}", font=('Arial', 10)) label_run_rate.config(text=f"Run Rate: {run_rate:.2f}", font=('Arial', 10))root = tk.Tk()root.title("Cricket Scoreboard")# Team entriesframe_teams = tk.Frame(root)frame_teams.pack()label_team_a_name = tk.Label(frame_teams, text="Team A:", font=('Arial', 12))label_team_a_name.grid(row=0, column=0)entry_team_a_name = tk.Entry(frame_teams)entry_team_a_name.grid(row=0, column=1)label_team_a_runs = tk.Label(frame_teams, text="Runs:", font=('Arial', 12))label_team_a_runs.grid(row=1, column=0)entry_team_a_runs = tk.Entry(frame_teams)entry_team_a_runs.grid(row=1, column=1)label_team_a_wickets = tk.Label(frame_teams, text="Wickets:", font=('Arial', 12))label_team_a_wickets.grid(row=2, column=0)entry_team_a_wickets = tk.Entry(frame_teams)entry_team_a_wickets.grid(row=2, column=1)label_team_b_name = tk.Label(frame_teams, text="Team B:", font=('Arial', 12))label_team_b_name.grid(row=0, column=2)entry_team_b_name = tk.Entry(frame_teams)entry_team_b_name.grid(row=0, column=3)label_team_b_runs = tk.Label(frame_teams, text="Runs:", font=('Arial', 12))label_team_b_runs.grid(row=1, column=2)entry_team_b_runs = tk.Entry(frame_teams)entry_team_b_runs.grid(row=1, column=3)label_team_b_wickets = tk.Label(frame_teams, text="Wickets:", font=('Arial', 12))label_team_b_wickets.grid(row=2, column=2)entry_team_b_wickets = tk.Entry(frame_teams)entry_team_b_wickets.grid(row=2, column=3)# Additional information entriesframe_additional_info = tk.Frame(root)frame_additional_info.pack()label_current_bowler = tk.Label(frame_additional_info, text="Current Bowler:", font=('Arial', 12))label_current_bowler.grid(row=0, column=0)entry_current_bowler = tk.Entry(frame_additional_info)entry_current_bowler.grid(row=0, column=1)label_striker = tk.Label(frame_additional_info, text="Striker:", font=('Arial', 12))label_striker.grid(row=1, column=0)entry_striker = tk.Entry(frame_additional_info)entry_striker.grid(row=1, column=1)label_non_striker = tk.Label(frame_additional_info, text="Non Striker:", font=('Arial', 12))label_non_striker.grid(row=2, column=0)entry_non_striker = tk.Entry(frame_additional_info)entry_non_striker.grid(row=2, column=1)label_overs_passed = tk.Label(frame_additional_info, text="Overs Passed:", font=('Arial', 12))label_overs_passed.grid(row=3, column=0)entry_overs_passed = tk.Entry(frame_additional_info)entry_overs_passed.grid(row=3, column=1)# Update buttonupdate_button = tk.Button(root, text="Update Scores", command=update_scores, bg='orange', fg='white', font=('Arial', 12))update_button.pack()# Labels for information displaylabel_team_a = tk.Label(root, text="Team A | Runs: 0 | Wickets: 0", bg='lightblue', font=('Arial', 12))label_team_a.pack()label_team_b = tk.Label(root, text="Team B | Runs: 0 | Wickets: 0", bg='lightgreen', font=('Arial', 12))label_team_b.pack()label_current_bowler = tk.Label(root, text="Current Bowler: ", font=('Arial', 10))label_current_bowler.pack()label_striker = tk.Label(root, text="Striker: ", font=('Arial', 10))label_striker.pack()label_non_striker = tk.Label(root, text="Non Striker: ", font=('Arial', 10))label_non_striker.pack()label_total_runs_wickets = tk.Label(root, text="Total Runs: 0 | Total Wickets: 0", font=('Arial', 10))label_total_runs_wickets.pack()label_overs_passed = tk.Label(root, text="Overs Passed: 0.0", font=('Arial', 10))label_overs_passed.pack()label_run_rate = tk.Label(root, text="Run Rate: 0.0", font=('Arial', 10))label_run_rate.pack()root.mainloop()
