from tkinter import *
from tkinter import ttk
import mysql.connector
import datetime
#from tkinter import messegebox
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 MANGEMENT 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)
#DATA FRAME RIGHT
DataFrameRight=LabelFrame(frame,text="SELECT BOOK",bg="powder blue",fg="green",bd=12,relief="ridge",font=("Times New Roman",12,"bold"))
DataFrameRight.place(x=1000,y=4,width=220,height=330)
listScrollBar=Scrollbar(DataFrameRight)
listScrollBar.grid(row=0,column=1,sticky="ns")
listBooks=["PYTHON BASICS","PYTHON IN DEEP","MODULES IN PYTHON","MACHINE PYTHON","FLUENT PYTHON","PYTHON IN DEEP","MODULES IN PYTHON","MACHINE PYTHON","FLUENT PYTHON","PYTHON IN DEEP","MODULES IN PYTHON","MACHINE PYTHON","FLUENT PYTHON","PYTHON IN DEEP","MODULES IN PYTHON","MACHINE PYTHON","FLUENT PYTHON","ELITE JUNGLE PYTHON",]
def SelectBook(event=" "):
value=str(listBox.get(listBox.curselection))
x=value
if (x=="PYTHON BASICS"):
self.bookid_var.set("PB12")
self.booktitle_var.set("Python Manual")
self.auther_var.set("Paul verry")
d1=datetime.datetime.today()
d2=datetime.timedelta(days=15)
d3=d1+d2
self.dateborrowed_var.set()
self.datedue_var.set(d3)
self.daysonbook.set(15)
self.lateratefine_var.set("Rs 50")
self.dateoverdue.set("NO")
self.finalprice.set("Rs 100")
elif(x=="ELITE JUNGLE PYTHON"):
self.bookid_var.set("ELP012")
self.booktitle_var.set("Python JUNGLE")
self.auther_var.set("Paul Junior")
d1=datetime.datetime.today()
d2=datetime.timedelta(days=15)
d3=d1+d2
self.dateborrowed_var.set()
self.datedue_var.set(d3)
self.daysonbook.set(15)
self.lateratefine_var.set("Rs 50")
self.dateoverdue.set("NO")
self.finalprice.set("Rs 180")
listBox=Listbox(DataFrameRight,font=("arial",11,"bold"),width=20,height=15)
listBox.bind("<<ListboxSelect>>",SelectBook)
listBox.grid(row=0,column=0,padx=4)
listScrollBar.config(command=listBox.yview)
for item in listBooks:
listBox.insert(END,item)
#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=ttk.Scrollbar(Table_frame,orient=HORIZONTAL)
yscroll=ttk.Scrollbar(Table_frame,orient=VERTICAL)
self.library_table=ttk.Treeview(Table_frame, column=("memebertype","prnno", "title","firtname", "lastname", "adress1", "adress2","postid","mobile", "bookid", "booktitle","auther","dateborrowed", "datedue", "days","latereturnfine", "dateoverdue", "finalprice"),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("memebertype", text="Member Type")
self.library_table.heading("prnno", text="PRN No." )
self.library_table.heading("title", text="Title")
self.library_table.heading("firtname", text="First Name")
self.library_table.heading("lastname", text="Last Name")
self.library_table.heading("adress1", text="Address1")
self.library_table.heading("adress2", text="Address2")
self.library_table.heading("postid", text="Post ID")
self.library_table.heading("mobile", text="Mobile Number")
self.library_table.heading("bookid", text="Book ID")
self.library_table.heading("booktitle", text="Book Title")
self.library_table.heading("auther", text="Auther")
self.library_table.heading("dateborrowed", text="Date Of Borrowed")
self.library_table.heading("datedue", text="Date Due")
self.library_table.heading("days", text="DaysOnBook")
self.library_table.heading("latereturnfine", text="LateReturnFine")
self.library_table.heading("dateoverdue", text="DateOverDue")
self.library_table.heading("finalprice", text="Final Price")
self.library_table["show"]="headings"
self.library_table.pack(fill=BOTH, expand=1)
self.library_table.column("memebertype", width=10)
self.library_table.column("prnno", width=10)
self.library_table.column("title", width=10)
self.library_table.column("firtname", width=10)
self.library_table.column("lastname", width=10)
self.library_table.column("adress1", width=10)
self.library_table.column("adress2", width=10)
self.library_table.column("postid", width=10)
self.library_table.column("mobile", width=10)
self.library_table.column("bookid", width=10)
self.library_table.column("booktitle", width=10)
self.library_table.column("auther", width=10)
self.library_table.column("dateborrowed", width=10)
self.library_table.column("datedue", width=10)
self.library_table.column("days", width=10)
self.library_table.column("latereturnfine", width=10)
self.library_table.column("dateoverdue", width=10)
self.library_table.column("finalprice", width=10)
self.member_var=StringVar()
self.fatch_data()
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 library 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.fatch_data()
conn.close()
#messegebox.showinfo("SUCCESS","MEMBER HAS BEEN INSETED SUCCESFULLY")
def fatch_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_itrm(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()