国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實現(xiàn)圖書管理系統(tǒng)

2020-01-04 15:42:49
字體:
供稿:網(wǎng)友

本文實例為大家分享了python/304204.html">python/294021.html">python實現(xiàn)圖書管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

import mysql.connectorimport sys, osimport timeimport datetimefrom tkinter import *from tkinter.messagebox import *class Libop: user = 'root' pwd = '' host = 'localhost' db = 'library' data_file = 'mysql-test.dat' def __init__(self):  print("init")  try:   self.library=mysql.connector.connect(user=Libop.user,password=Libop.pwd,host=Libop.host,database=Libop.db)   self.cursor=self.library.cursor()   print("Connect successfully")  except mysql.connector.Error as err:   print("WTF! initial wrong")   print("Error: {}".format(err.msg))   sys.exit() def select(self,str):  try:   self.cursor.execute(str)   return self.cursor.fetchall()  except mysql.connector.Error as err:   print("WTF! select wrong")   print("Error:{}".format(err.msg))   print(str)   showinfo("ERROR","Please input the parameter correctly") def update(self,str):  try:   self.cursor.execute(str)   self.library.commit()   return 1  except mysql.connector.Error as err:   print("WTF! update wrong")   print("Error:{}".format(err.msg))   return 0 def delete(self,str):  try:   self.cursor.execute(str)   self.library.commit()  except mysql.connector.Error as err:   print("WTF! delete wrong")   print("Error:{}".format(err.msg)) def insert(self,str):  try:   self.cursor.execute(str)   self.library.commit()   return 1  except mysql.connector.Error as err:   print("WTF! insert wrong")   print("Error:{}".format(err.msg))   return 0LIB = Libop()   root=Tk()root.wm_title("Library System")str1=str2=''book_type=name=year=publisher=writer=price1=price2=order=''cardid=''def call_rent(en1,en2,brok): st1=en1.get() st2=en2.get() rent(st1,st2,brok)def call_return(en1,en2): st1=en1.get() st2=en2.get() back(st1,st2)def login(): str1=ide.get() str2=pwde.get() curs=LIB.select("select manage_id,pswd from managers where manage_id='{}' and pswd='{}'".format(str1,str2)) if ((str1,str2) in curs):   showinfo('message','login success')  label_book_id=Label(root,text='BookID:').grid(row=0,column=4,sticky=W)  label_card_id=Label(root,text='CardID:').grid(row=1,column=4,sticky=W)  entry_book_id=Entry(root)  entry_book_id.grid(row=0,column=5,sticky=W)  entry_card_id=Entry(root)  entry_card_id.grid(row=1,column=5,sticky=W)  entry_cardid=Entry(root)  entry_cardid.grid(row=5,column=0,sticky=W)  #buttons  button_insert=Button(root,text='insert book',command=inbook)  button_insert.grid(row=0,column=2,sticky=W)  button_return=Button(root,text='rent book')  button_return.bind("<ButtonRelease-1>",lambda z:call_rent(entry_book_id,entry_card_id,str1))  button_return.grid(row=0,column=3,sticky=W)  button_rent=Button(root,text='return book')  button_rent.bind("<ButtonRelease-1>",lambda l:call_return(entry_book_id,entry_card_id))  button_rent.grid(row=1,column=2,sticky=W)  button_delete=Button(root,text='delete card')  button_delete.bind("<ButtonRelease-1>",lambda j:deletecard(entry_cardid))  button_delete.grid(row=5,column=2,sticky=W)  button_add=Button(root,text='add card',command=addwindow)  button_add.grid(row=5,column=3,sticky=W)  button_display=Button(root,text='display books')  button_display.bind("<ButtonRelease-1>",lambda y:display_rent(entry_cardid))  button_display.grid(row=5,column=1,sticky=W) else:   showinfo(title='login failure',message="WRONG ID OR PASSWORD!")#add a carddef addwindow(): top=Toplevel(root) label_card_id=Label(top,text='card id:').grid(row=0,column=0,sticky=W) label_name=Label(top,text='Name:').grid(row=1,column=0,sticky=W) label_unit=Label(top,text='Units:').grid(row=2,column=0,sticky=W) label_type=Label(top,text='type:').grid(row=3,column=0,sticky=W) entry_card_id=Entry(top) entry_card_id.grid(row=0,column=1,sticky=W) entry_name=Entry(top) entry_name.grid(row=1,column=1,sticky=W) entry_unit=Entry(top) entry_unit.grid(row=2,column=1,sticky=W) entry_type=Entry(top) entry_type.grid(row=3,column=1,sticky=W) button_constructe=Button(top,text='Add') button_constructe.bind("<ButtonRelease-1>",lambda q:addcard(entry_card_id,entry_name,entry_unit,entry_type)) button_constructe.grid(row=4)def addcard(en1,en2,en3,en4): cardid=en1.get() name=en2.get() unit=en3.get() c_type=en4.get() select="select card_id from lib_card where card_id='{}'".format(cardid) if (c_type not in ('T','S','O')):   showinfo('error',"NO SUCH TYPE")  return 0 line=LIB.select(select) if (len(line)!=0):  showinfo('addition failure',"Already have this ID!") else:  insert="insert into lib_card values('{}','{}','{}','{}')".format(cardid,name,unit,c_type)  LIB.insert(insert)  showinfo('ok','addition success') return 1#insert bookdef inbook(): insert_book=Toplevel(root) insert_book.title('insert book') text_insert=Text(insert_book) text_insert.pack() button_confirm=Button(insert_book,text='confirm') button_confirm.bind("<ButtonRelease-1>",lambda x:booksin(text_insert)) button_confirm.pack()def booksin(text_insert): string=text_insert.get('0.0',END) string=string.split('/n') print(string) for line in string:  if line=='':   break  lines=line.split(',')  bookid=lines[0][1:]  t=lines[1]  name=lines[2]  publisher=lines[3]  year=lines[4]  writer=lines[5]  price=lines[6]  total=lines[7]  stock=lines[8][:-1]  if (int(stock)>int(total) or int(price)<0):    showinfo('insert error!','stock wrong or price is below 0!')   continue  #print("insert into book values('{}','{}','{}','{}',{},'{}',{},{},{})".format(bookid,t,name,publisher,year,writer,price,total,stock))  t=LIB.insert("insert into book values('{}','{}','{}','{}',{},'{}',{},{},{})".format(bookid,t,name,publisher,year,writer,price,total,stock))  if (t==0):   showinfo('error','book {} has been inserted'.format(bookid)) showinfo('success','insert has been done')#original windowlabel_type=Label(root,text='TYPE').grid(row=3,sticky=W,column=0)label_name=Label(root,text='NAME').grid(row=3,sticky=W,column=1)label_year=Label(root,text='YEAR(XXXX-XXXX)').grid(row=3,sticky=W,column=2)label_publisher=Label(root,text='PUBLISHER').grid(row=3,sticky=W,column=3)label_writer=Label(root,text='WRITER').grid(row=3,sticky=W,column=4)label_lowprice=Label(root,text='lowestprice').grid(row=3,sticky=W,column=5)label_highprice=Label(root,text='highestprice').grid(row=3,sticky=W,column=6)label_order=Label(root,text='order by').grid(row=0,sticky=W,column=6)entry_type=Entry(root)entry_type.grid(row=4,column=0,sticky=W)entry_name=Entry(root)entry_name.grid(row=4,column=1,sticky=W)entry_year=Entry(root)entry_year.grid(row=4,column=2,sticky=W)entry_publisher=Entry(root)entry_publisher.grid(row=4,column=3,sticky=W)entry_writer=Entry(root)entry_writer.grid(row=4,column=4,sticky=W)entry_price1=Entry(root)entry_price1.grid(row=4,column=5,sticky=W)entry_price2=Entry(root)entry_price2.grid(row=4,column=6,sticky=W)#order the resultorder_index=0Lb_order=Listbox(root,selectmode=SINGLE,height=6)order='name','book_type','T','writer','price','publisher'Lb_order.insert(0,order[0])Lb_order.insert(1,"type")Lb_order.insert(2,"year")Lb_order.insert(3,order[3])Lb_order.insert(4,order[4])Lb_order.insert(5,order[5])Lb_order.grid(row=0,column=7,sticky=W)Lb_order.selection_set(0)def booksearch(): select="select BookID,book_type,name,publisher,T,writer,price,total,stock from book" order_index=Lb_order.curselection() if (len(order_index)!=0):  order_index=order_index[0] else:  order_index=0; orders=order[order_index] name=entry_name.get() book_type=entry_type.get() publisher=entry_publisher.get() year=entry_year.get() writer=entry_writer.get() price1=entry_price1.get() price2=entry_price2.get() year1=year[0:4] year2=year[5:9] count=0 if name!='':  if count!=0:   select+=" and"  else:select+=" where"  count+=1  select+=" name='{}'".format(name) if book_type!='':  if count!=0:   select+=" and"  else:select+=" where"  count+=1  select+=" book_type='{}'".format(book_type) if publisher!='':  if count!=0:   select+=" and"  else:select+=" where"  count+=1  select+=" publisher='{}'".format(publisher) if year1!='':  if year2=='':   if count!=0:    select+=" and"   else:select+=" where"   count+=1   select+=" t={}".format(year1)  else:   if count!=0:    select+=" and"   else:select+=" where"   count+=1   select+=" T between {} and {}".format(year1,year2) if writer!='':  if count!=0:   select+=" and"  else:select+=" where"  count+=1  select+=" writer='{}'".format(writer) if price1!='':  if price2!='':   if count!=0:    select+=" and"   else:select+=" where"   count+=1   select+=" price between {} and {}".format(price1,price2)  else:   if count!=0:    selece+="and"   else:select+=" where"   count+=1   select+=" price={}".format(price1) if orders=='':  select+=" order by name" else:  select+=" order by {}".format(orders) print(select) curs=LIB.select(select) searchresult=Toplevel(root) searchresult.title('result') text=Text(searchresult) text.insert(INSERT,"BookID/ttype/tname/tpublish/tyear/twriter/tprice/ttotal/tstock/n") for (BookIDs,book_types,names,publishers,years,writers,prices,totals,stocks) in curs:  text.insert(INSERT,"{}/t{}/t{}/t{}/t{}/t{}/t{}/t{}/t{}/n".format(BookIDs,book_types,names,publishers,years,writers,prices,totals,stocks)) text.pack()def display_rent(en_cardid): cardid=en_cardid.get() select="select card_id from lib_card where card_id='{}'".format(cardid) curs=LIB.select(select) order_index=Lb_order.curselection() if len(order_index)!=0 :  order_index=order_index[0] else:  order_index=0; orders=order[order_index] if ((cardid,) in curs):  select="select card_id,name,unit,c_type from lib_card where card_id='{}'".format(cardid)  curs=LIB.select(select)  top=Toplevel(root)  text=Text(top)  for (card_id,name,unit,c_type) in curs:   text.insert(INSERT,"card_id:{}/n".format(card_id))   text.insert(INSERT,"name:{}/n".format(name))   text.insert(INSERT,"unit:{}/n".format(unit))   text.insert(INSERT,"c_type:{}/n".format(c_type))  select="select BookID,book_type,name,publisher,t,writer,price,total,stock from book natural join record where card_id='{}' and still=1 order by {}".format(cardid,orders)  curs=LIB.select(select)  text.insert(INSERT,"BookID/ttype/tname/tpublish/tyear/twriter/tprice/ttotal/tstock/n")  for (BookID,book_type,name,publisher,t,writer,price,total,stock) in curs:   text.insert(INSERT,"{}/t{}/t{}/t{}/t{}/t{}/t{}/t{}/t{}/n".format(BookID,book_type,name,publisher,t,writer,price,total,stock))  text.pack() else:  showinfo('Error',"NO SUCH CARD")def checkcard(cardid): select="select card_id from lib_card where card_id='{}'".format(cardid) curs=LIB.select(select) if (cardid,) in curs:  return 1 else:  return 0def rent(BookID,cardid,brokerage): if not (checkcard(cardid)):   showinfo('error','no such card')  return 0 select="select stock from book where BookID='{}'".format(BookID) stocks=LIB.select(select) #stocks=curs.fetchall() stock=stocks[0] if (stock>(0,)):  update="update book set stock=stock-1 where BookID='{}'".format(BookID)  flag=LIB.update(update)  if flag:   insert="insert into record values('','{}','{}',CURDATE(),DATE_ADD(CURDATE(),INTERVAL 1 MONTH),'{}',1)".format(cardid,BookID,brokerage)   LIB.insert(insert)   showinfo('rent success','OK')  else:   showinfo('rent failure',"stock wrong") else:  select="select return_time from record where BookID='{}' and return_time>=all(select return_time from record where BookID='{}')".format(BookID,BookID)  date=LIB.select(select)  #date=curs.fetchall()  date=str (date)  showinfo('Out of stock',"There are no more such book,The recent returning will be at:{}-{}-{}".format(date[16:20],date[22:23],date[26:27]))   return 1def back(BookID,cardid): if not(checkcard(cardid)): return 0 select="select BookID from record where BookID='{}' and card_id='{}' and still=1".format(BookID,cardid) curs=LIB.select(select) if (BookID,) in curs:  select="select record_id from record where BookID='{}' and card_id='{}' and still=1 order by rent_time".format(BookID,cardid)  cur=LIB.select(select)  #cur=curss.fetchall()  for record in cur:   recordid=str (record)   recordid=recordid[1:]   recordid=recordid[:-2]   update="update record set still=0 where record_id='{}'".format(recordid)   LIB.update(update)   update="update book set stock=stock+1 where BookID='{}'".format(BookID)   LIB.update(update)   break  showinfo('message',"Return Success!")  return 1 else:  showinfo('error',"You can't return the book!")  return 1def deletecard(card): cardid=card.get() if not (checkcard(cardid)):  showinfo('error',"NO SUCH CARD")  return 0 select="select record_id from record where card_id='{}' and still=1".format(cardid) curs=LIB.select(select) for record_id in curs:  showinfo('error',"Some books this card rented haven't been returned")  return 0 delete="delete from lib_card where card_id='{}'".format(cardid) LIB.delete(delete) showinfo('ok','success') return 1label_id=Label(root,text='ID: ')label_id.grid(row=0,sticky=W)ide=Entry(root)ide.grid(row=0,column=1,sticky=E)label_psw=Label(root,text='PassWord: ').grid(row=1,sticky=W)pwde=Entry(root,show='*')pwde.grid(row=1,column=1,sticky=E)log_button=Button(root,text='Login',command=login)log_button.grid(row=2,column=1)button_search=Button(root,text='Search Book',command=booksearch)button_search.grid(row=4,column=7,sticky=W)print("all done")root.mainloop()

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 修武县| 邢台市| 张家口市| 奉贤区| 阳高县| 鄂伦春自治旗| 崇州市| 阜宁县| 亳州市| 习水县| 射阳县| 红安县| 泰来县| 广安市| 大同县| 西乌珠穆沁旗| 吉隆县| 荣昌县| 湖州市| 涿州市| 北京市| 宜兰市| 乳山市| 保德县| 墨竹工卡县| 上犹县| 分宜县| 凤城市| 五台县| 富民县| 射阳县| 滨州市| 闽侯县| 琼结县| 方城县| 梧州市| 农安县| 永顺县| 益阳市| 达州市| 遂宁市|