kongzhi.py#主控模块from socket import *
from tkinter import *
from ts_denglu import *s = socket()
s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)def main():root = Tk()  sw = root.winfo_screenwidth()#屏幕宽度sh = root.winfo_screenheight()#屏幕高度ww = 450wh = 250x = (sw-ww)/2y = (sh-wh)/2root.geometry("%dx%d+%d+%d"%(ww,wh,x,y))                root.title('图书管理系统')  root.resizable(width=False, height=False)denglu = DengLu(root,s)root.mainloop()
if __name__ == '__main__':main()
ts_denglu.py #登录模块'''
name : fushibo
date : 2018-5-30
图书管理系统登录页面
'''
from tkinter import *
from tkinter import messagebox
from main_ye import *
import sys
class DengLu(object):def __init__(self,m=None,s=None):self.root = m       self.s = swhile True:try:self.s.connect(('127.0.0.1',9028)) break            except:messagebox.showwarning('error','无网络链接!')self.deng()def deng(self):  self.frame = Frame(width=450,height=250)self.frame.pack()Label(self.frame).grid(row=0,sticky=W)Label(self.frame, text='管理员账号:', fg='blue', font=15)\.grid(row = 3, sticky=W,pady=10)Label(self.frame, text='管理员密码:', fg='blue', font=15)\.grid(row = 4, sticky=W,pady=10)Label(self.frame, text='管理员类别:', fg='blue', font=15)\.grid(row = 5, sticky=W,pady=10)self.a1 = StringVar()self.a2 = StringVar()self.b1 = Entry(self.frame, textvar=self.a1,width=25)self.b2 = Entry(self.frame, textvar=self.a2,width=25,show='*')self.b1.grid(row = 3,column=1,sticky=E)self.b2.grid(row = 4,column=1,sticky=E)self.w = ttk.Combobox(self.frame,width=23,values=['普通管理员','高级管理员','超级管理员'])self.w.grid(row = 5,column=1,sticky=E)self.w.current(0)self.c1 = Button(self.frame, text='登录',font=15,background='#C6D6A7',activebackground='#1AD8E8',width=10, command=self.deng_lu).\grid(row = 6, sticky=W,pady=10)self.c2 = Button(self.frame, text='退出', font=15,background='#C6D6A7',activebackground='#1AD8E8', width=10, command=self.root.quit).\grid(row = 6,column=1,sticky=E)def deng_lu(self):try:usr_name = self.a1.get()usr_pwd = self.a2.get()usr_class = self.w.get()if len(usr_name) < 1 or len(usr_pwd) < 1  or len(usr_class) < 1:messagebox.showerror('图书管理系统','您输入的内容不能为空!')returnself.b1.delete(0,END)self.b2.delete(0,END)if usr_class == '普通管理员':usr_class = 1elif usr_class == '高级管理员':usr_class = 2elif usr_class == '超级管理员':usr_class = 3msg = 'X {} {} {}'.format(usr_name,usr_pwd,usr_class)self.s.send(msg.encode())except:messagebox.showerror('图书管理系统','无网络链接!')               data = self.s.recv(128).decode()if data == 'OK':self.root.destroy()Ye_mian()    else:messagebox.showerror('图书管理系统','用户名或密码错误!')return
main_ye.py#主页面模块#!/usr/bin/env python3
# coding=utf-8
'''
name : fushibo
date : 2018-5-30
图书管理系统主页面
'''from tkinter import *
from zi_yemian01 import *
import sys
from PIL import Image,ImageTk class Ye_mian():def __init__(self):    self.root = Tk()canvas = Canvas(self.root,width = 890,height = 670, bg = 'white')  self.image = Image.open("./image/ssss.jpg")  self.im = ImageTk.PhotoImage(self.image)        canvas.create_image(450,280,image = self.im)     canvas.pack() self.sw = self.root.winfo_screenwidth()#屏幕宽度self.sh = self.root.winfo_screenheight()#屏幕高度self.x = (self.sw-890)/2self.y = (self.sh-670)/2self.root.geometry("%dx%d+%d+%d"%(890,670,self.x,self.y))  self.root.resizable(False,False)self.root.title('欢迎进入图书管理系统--菜单')Label(self.root,background='#FFFFFF',text='三更灯火五更鸡',font=('楷体',16,"normal"),fg='#2CEAE0',justify=LEFT).place(x=250,y=55)Label(self.root,background='#FFFFFF',text='正是男儿读书时',font=('楷体',16,"normal"),fg='#24ED76',justify=LEFT).place(x=400,y=190)Label(self.root,background='#FFFFFF',text='黑发不知勤学早',font=('楷体',16,"normal"),fg='#08D6E8',justify=LEFT).place(x=550,y=320)Label(self.root,background='#FFFFFF',text='白首方悔读书迟',font=('楷体',16,"normal"),fg='#D8BC2E',justify=LEFT).place(x=700,y=445)Button(self.root,text='日常工作',command=self.gongzuo,font=("黑体",16,"normal"),background='#D2FCFB',activebackground='#1AD8E8')\.place(x=40,y=10,width=160,height=130)Button(self.root,text='资料维护',command=self.ziliao,font=("黑体",16,"normal"),background='#DAF4E6',activebackground='#1AD8E8')\.place(x=200,y=140,width=160,height=130)Button(self.root,text='历史查询',command=self.lishi,font=("黑体",16,"normal"),background='#E2EFD3',activebackground='#1AD8E8')\.place(x=360,y=270,width=160,height=130)Button(self.root,text='系统管理',command=self.xitong,font=("黑体",16,"normal"),background='#F0E4B2',activebackground='#1AD8E8')\.place(x=520,y=400,width=160,height=130)Button(self.root,text='安全退出',command=self.tuichu,font=("黑体",16,"normal"),background='#7EE8A7',activebackground='#1AD8E8')\.place(x=680,y=530,width=160,height=130)self.root.mainloop()def gongzuo(self):self.root.destroy()Main01_ye()def ziliao(self):self.root.destroy()Main02_ye()def lishi(self):self.root.destroy()Main03_ye()def xitong(self):self.root.destroy()Main04_ye()def tuichu(self):sys.exit('欢迎再次使用!')class Main01_ye(object):#日常工作def __init__(self):self.root = Tk() sw = self.root.winfo_screenwidth()#屏幕宽度sh = self.root.winfo_screenheight()#屏幕高度image = Image.open(r'./image/ffff.jpg')background_image = ImageTk.PhotoImage(image)ww = background_image.width()wh = background_image.height()x = (sw-ww)/2y = (sh-wh)/2self.root.geometry("%dx%d+%d+%d"%(ww,wh,x,y))self.root.title('欢迎进入图书管理系统--日常工作')background_label = Label(self.root, image=background_image)background_label.place(x=0, y=0, relwidth=1, relheight=1)self.root.resizable(False,False)self.guanli() self.root.mainloop()    def guanli(self):self.ts_jieyue = Ts_JYFrame(self.root)self.ts_guihuan = Ts_GHFrame(self.root)self.ts_fanjin = Ts_FJFrame(self.root)self.ts_xiaoshou = Ts_XSFrame(self.root)self.ts_chongzhi = Ts_CZFrame(self.root)self.ts_guanyu = Ts_GYFrame(self.root)self.ts_fanhui = Ts_FHFrame(self.root)self.ts_jieyue.pack()#默认显示menubar = Menu(self.root,background='#C6D6A7')menubar.add_command(label='图书借阅',font=18,activebackground='#9BD6CB',command=self.jieyue_data)menubar.add_command(label='图书归还',font=18,activebackground='#9BD6CB',command=self.guihuan_data)menubar.add_command(label='缴纳罚金',font=18,activebackground='#9BD6CB',command=self.fajin_data)menubar.add_command(label='图书销售',font=18,activebackground='#9BD6CB',command=self.xiaoshou_data)menubar.add_command(label='信用充值',font=18,activebackground='#9BD6CB',command=self.chongzhi_data)menubar.add_command(label='关于我们',font=18,activebackground='#9BD6CB',command=self.guanyu_data)menubar.add_command(label='返回主页',font=18,activebackground='#C90000',command=self.fanhui_data)self.root['menu'] = menubar#设置菜单def jieyue_data(self):     self.ts_jieyue.pack()self.ts_guihuan.pack_forget()self.ts_fanjin.pack_forget()self.ts_xiaoshou.pack_forget()self.ts_chongzhi.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def guihuan_data(self):self.ts_jieyue.pack_forget()self.ts_guihuan.pack()self.ts_fanjin.pack_forget()self.ts_xiaoshou.pack_forget()self.ts_chongzhi.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def fajin_data(self):self.ts_jieyue.pack_forget()self.ts_guihuan.pack_forget()self.ts_fanjin.pack()self.ts_xiaoshou.pack_forget()self.ts_chongzhi.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def xiaoshou_data(self):self.ts_jieyue.pack_forget()self.ts_guihuan.pack_forget()self.ts_fanjin.pack_forget()self.ts_xiaoshou.pack()self.ts_chongzhi.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def chongzhi_data(self):self.ts_jieyue.pack_forget()self.ts_guihuan.pack_forget()self.ts_fanjin.pack_forget()self.ts_xiaoshou.pack_forget()self.ts_chongzhi.pack()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def guanyu_data(self):self.ts_jieyue.pack_forget()self.ts_guihuan.pack_forget()self.ts_fanjin.pack_forget()self.ts_xiaoshou.pack_forget()self.ts_chongzhi.pack_forget()self.ts_guanyu.pack()self.ts_fanhui.pack_forget()def fanhui_data(self):self.ts_jieyue.pack_forget()self.ts_guihuan.pack_forget()self.ts_fanjin.pack_forget()self.ts_xiaoshou.pack_forget()self.ts_chongzhi.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack() self.root.destroy() Ye_mian()class Main02_ye(object):#资料维护def __init__(self):self.root = Tk()sw = self.root.winfo_screenwidth()#屏幕宽度sh = self.root.winfo_screenheight()#屏幕高度image = Image.open(r'./image/ffff.jpg')background_image = ImageTk.PhotoImage(image)ww = background_image.width()wh = background_image.height()x = (sw-ww)/2y = (sh-wh)/2self.root.geometry("%dx%d+%d+%d"%(ww,wh,x,y))self.root.title('欢迎进入图书管理系统--资料维护')background_label = Label(self.root, image=background_image)background_label.place(x=0, y=0, relwidth=1, relheight=1)self.root.resizable(False,False)self.guanli() self.root.mainloop() def guanli(self):self.ts_caigou = Ts_CGFrame(self.root)self.ts_baosun = Ts_BSFrame(self.root)self.ts_duzhe = Ts_DZFrame(self.root)   self.ts_guanyu = Ts_GYFrame(self.root)self.ts_fanhui = Ts_FHFrame(self.root)self.ts_caigou.pack()#默认显示menubar = Menu(self.root,background='#C6D6A7')menubar.add_command(label='图书采购',font=18,activebackground='#9BD6CB',command=self.CG_data)menubar.add_command(label='图书报损',font=18,activebackground='#9BD6CB',command=self.baosun_data)menubar.add_command(label='读者管理',font=18,activebackground='#9BD6CB',command=self.duzhe_data)menubar.add_command(label='关于我们',font=18,activebackground='#9BD6CB',command=self.guanyu_data)menubar.add_command(label='返回主页',font=18,activebackground='#C90000',command=self.fanhui_data)self.root['menu'] = menubar#设置菜单def CG_data(self):     self.ts_caigou.pack()self.ts_baosun.pack_forget()self.ts_duzhe.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def baosun_data(self):self.ts_caigou.pack_forget()self.ts_baosun.pack()       self.ts_duzhe.pack_forget()    self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def duzhe_data(self):self.ts_caigou.pack_forget()self.ts_baosun.pack_forget()self.ts_duzhe.pack()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def guanyu_data(self):self.ts_caigou.pack_forget()self.ts_baosun.pack_forget()self.ts_duzhe.pack_forget()self.ts_guanyu.pack()self.ts_fanhui.pack_forget()def fanhui_data(self):self.ts_caigou.pack_forget()self.ts_baosun.pack_forget()self.ts_duzhe.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack()self.root.destroy() Ye_mian()class Main03_ye(object):#历史查询def __init__(self):self.root = Tk()sw = self.root.winfo_screenwidth()#屏幕宽度sh = self.root.winfo_screenheight()#屏幕高度image = Image.open(r'./image/ffff.jpg')background_image = ImageTk.PhotoImage(image)ww = background_image.width()wh = background_image.height()x = (sw-ww)/2y = (sh-wh)/2self.root.geometry("%dx%d+%d+%d"%(ww,wh,x,y))self.root.title('欢迎进入图书管理系统--历史查询')background_label = Label(self.root, image=background_image)background_label.place(x=0, y=0, relwidth=1, relheight=1)self.root.resizable(False,False)self.guanli() self.root.mainloop() def guanli(self):self.ts_chaxun = Ts_TCFrame(self.root)self.ts_ducha = Ts_DCFrame(self.root)self.ts_jiecha = Ts_JCFrame(self.root)self.ts_facha = Ts_FCFrame(self.root)self.ts_xiaocha = Ts_XCFrame(self.root)self.ts_guanyu = Ts_GYFrame(self.root)self.ts_fanhui = Ts_FHFrame(self.root)self.ts_chaxun.pack()#默认显示menubar = Menu(self.root,background='#C6D6A7')menubar.add_command(label='图书查询',font=18,activebackground='#9BD6CB',command=self.chaxun_data)menubar.add_command(label='读者查询',font=18,activebackground='#9BD6CB',command=self.ducha_data)menubar.add_command(label='借阅查询',font=18,activebackground='#9BD6CB',command=self.jiecha_data)menubar.add_command(label='罚金查询',font=18,activebackground='#9BD6CB',command=self.facha_data)menubar.add_command(label='销售查询',font=18,activebackground='#9BD6CB',command=self.xiaocha_data)menubar.add_command(label='关于我们',font=18,activebackground='#9BD6CB',command=self.guanyu_data)menubar.add_command(label='返回主页',font=18,activebackground='#C90000',command=self.fanhui_data)self.root['menu'] = menubar#设置菜单def chaxun_data(self):     self.ts_chaxun.pack()self.ts_ducha.pack_forget()self.ts_jiecha.pack_forget()self.ts_facha.pack_forget()self.ts_xiaocha.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def ducha_data(self):self.ts_chaxun.pack_forget()self.ts_ducha.pack()self.ts_jiecha.pack_forget()self.ts_facha.pack_forget()self.ts_xiaocha.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def jiecha_data(self):self.ts_chaxun.pack_forget()self.ts_ducha.pack_forget()self.ts_jiecha.pack()self.ts_facha.pack_forget()self.ts_xiaocha.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def facha_data(self):self.ts_chaxun.pack_forget()self.ts_ducha.pack_forget()self.ts_jiecha.pack_forget()self.ts_facha.pack()self.ts_xiaocha.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def xiaocha_data(self):self.ts_chaxun.pack_forget()self.ts_ducha.pack_forget()self.ts_jiecha.pack_forget()self.ts_facha.pack_forget()self.ts_xiaocha.pack()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def guanyu_data(self):self.ts_chaxun.pack_forget()self.ts_ducha.pack_forget()self.ts_jiecha.pack_forget()self.ts_facha.pack_forget()self.ts_xiaocha.pack_forget()self.ts_guanyu.pack()self.ts_fanhui.pack_forget()def fanhui_data(self):self.ts_chaxun.pack_forget()self.ts_ducha.pack_forget()self.ts_jiecha.pack_forget()self.ts_facha.pack_forget()self.ts_xiaocha.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack()self.root.destroy() Ye_mian()class Main04_ye(object):#系统管理def __init__(self):self.root = Tk()sw = self.root.winfo_screenwidth()#屏幕宽度sh = self.root.winfo_screenheight()#屏幕高度image = Image.open(r'./image/ffff.jpg')background_image = ImageTk.PhotoImage(image)ww = background_image.width()wh = background_image.height()x = (sw-ww)/2y = (sh-wh)/2self.root.geometry("%dx%d+%d+%d"%(ww,wh,x,y))self.root.title('欢迎进入图书管理系统--系统管理')background_label = Label(self.root, image=background_image)background_label.place(x=0, y=0, relwidth=1, relheight=1)self.root.resizable(False,False)self.guanli() self.root.mainloop() def guanli(self):self.ts_yuangong = Ts_YGFrame(self.root)self.ts_zhuxiao = Ts_ZXFrame(self.root)self.ts_shezhi = Ts_SZFrame(self.root)self.ts_guanyu = Ts_GYFrame(self.root)self.ts_fanhui = Ts_FHFrame(self.root)self.ts_yuangong.pack()#默认显示menubar = Menu(self.root,background='#C6D6A7')menubar.add_command(label='员工管理',font=18,activebackground='#9BD6CB',command=self.yuangong_data)menubar.add_command(label='账户管理',font=18,activebackground='#9BD6CB',command=self.zhuxiao_data)menubar.add_command(label='系统设置',font=18,activebackground='#9BD6CB',command=self.shezhi_data)menubar.add_command(label='关于我们',font=18,activebackground='#9BD6CB',command=self.guanyu_data)menubar.add_command(label='返回主页',font=18,activebackground='#C90000',command=self.fanhui_data)self.root['menu'] = menubar#设置菜单def yuangong_data(self):     self.ts_yuangong.pack()    self.ts_zhuxiao.pack_forget()self.ts_shezhi.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def zhuxiao_data(self):self.ts_yuangong.pack_forget()self.ts_zhuxiao.pack()self.ts_shezhi.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def shezhi_data(self):self.ts_yuangong.pack_forget()self.ts_zhuxiao.pack_forget()self.ts_shezhi.pack()self.ts_guanyu.pack_forget()self.ts_fanhui.pack_forget()def guanyu_data(self):self.ts_yuangong.pack_forget()self.ts_zhuxiao.pack_forget()self.ts_shezhi.pack_forget()self.ts_guanyu.pack()self.ts_fanhui.pack_forget()def fanhui_data(self):self.ts_yuangong.pack_forget()self.ts_zhuxiao.pack_forget()self.ts_shezhi.pack_forget()self.ts_guanyu.pack_forget()self.ts_fanhui.pack()self.root.destroy()      Ye_mian()
zi_yemian.py#子页面模块#!/usr/bin/env python3
# coding=utf-8
'''
name : fushibo
date : 2018-5-30
图书管理系统子页面
'''
from tkinter import *
from tkinter import messagebox
from kongzhi import s
from tkinter import ttk
import re
import sys
from PIL import Image,ImageTk try:s.connect(('127.0.0.1',9028))
except:root = Tk()sw = root.winfo_screenwidth()#屏幕宽度sh = root.winfo_screenheight()#屏幕高度ww = 450wh = 250x = (sw-ww)/2y = (sh-wh)/2root.geometry("%dx%d+%d+%d"%(ww,wh,x,y))                root.title('图书管理系统')  root.resizable(width=False, height=False)messagebox.showwarning('error','无网络链接!')sys.exit()#第一部分
class Ts_JYFrame(Frame):#图书借阅def __init__(self,m=None):Frame.__init__(self,m,background='#FFFFFF')self.s = s      self.root = m   self.jieyueren_id = StringVar()self.book_id = StringVar()self.jieyue_date = StringVar()self.guihuan_date = StringVar()self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=40)Label(self,background='#FFFFFF',text='身份证号码',font=18,fg='#353E40').grid(row=4,sticky=W,pady=10)self.a1=Entry(self,textvariable=self.jieyueren_id)self.a1.grid(row=4,column=1,sticky=E)Label(self,background='#FFFFFF',text='图书ID',font=18,fg='#353E40').grid(row=6,sticky=W,pady=10)self.a2=Entry(self,textvariable=self.book_id)self.a2.grid(row=6,column=1,sticky=E)Label(self,background='#FFFFFF',text='归还时间',font=18,fg='#353E40').grid(row=8,sticky=W,pady=10)self.a3=Entry(self,textvariable=self.guihuan_date)self.a3.grid(row=8,column=1,sticky=E)      Button(self,text='确定',command=self.luru,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=10,column=0,sticky=W,pady=10)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=10,column=1,sticky=W,pady=10)def luru(self):try:jieyueren_id = self.jieyueren_id.get().strip()book_id =  self.book_id.get().strip()        guihuan_date = self.guihuan_date.get().strip()         self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)msg = 'A {} {} {}'.format(jieyueren_id,book_id,guihuan_date)if re.search('[~`,*!%);@\:\\\(#$^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif 1 <= len(jieyueren_id) and len(jieyueren_id) != 18:messagebox.showerror('图书管理系统','您输入的身份证有误!')returnelif len(jieyueren_id) < 1 or len(book_id) < 1  or len(guihuan_date) < 1:messagebox.showerror('图书管理系统','您输入的内容不能为空!')returnelse:self.s.send(msg.encode())except:messagebox.showerror('图书管理系统','无网络链接!')data = self.s.recv(128).decode()if data == 'OK':messagebox.showerror('图书管理系统','借书成功!')elif data =='OUT':messagebox.showerror('图书管理系统','没有库存,请及时采购!') elif data =='SAS':messagebox.showerror('图书管理系统','您已借过该书!')else:messagebox.showerror('图书管理系统','借书失败!')def quxiao(self):self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)class Ts_GHFrame(Frame):#归还图书def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.s = sself.root = mself.jieyueren_id = StringVar()self.book_name = StringVar()self.guihuan_date = StringVar()self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=40)Label(self,background='#FFFFFF',text='借阅人身份证号码',font=18,fg='#353E40').grid(row=2,sticky=W,pady=10)self.a1=Entry(self,textvariable=self.jieyueren_id)self.a1.grid(row=2,column=1,sticky=E)Label(self,background='#FFFFFF',text='图书ID',font=18,fg='#353E40').grid(row=4,sticky=W,pady=10)self.a2=Entry(self,textvariable=self.book_name)self.a2.grid(row=4,column=1,sticky=E)Label(self,background='#FFFFFF',text='借书时间',font=18,fg='#353E40').grid(row=6,sticky=W,pady=10)self.a3=Entry(self,textvariable=self.guihuan_date)self.a3.grid(row=6,column=1,sticky=E)     Button(self,text='确认',command=self.luru,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=8,column=0,sticky=W,pady=5)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=8,column=1,sticky=W,pady=10)def luru(self):try:jieyueren_id =  self.jieyueren_id.get().strip()book_name = self.book_name.get().strip()guihuan_date = self.guihuan_date.get().strip()self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)    msg = 'B {} {} {}'.format(jieyueren_id,book_name,guihuan_date)if re.search('[~`,*!%);@\:\\\(#$^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif 1 <= len(jieyueren_id) and len(jieyueren_id) != 18:messagebox.showerror('图书管理系统','您输入的身份证有误!')returnelif len(jieyueren_id) < 1 or len(book_name) < 1 or len(guihuan_date) < 1 :messagebox.showerror('图书管理系统','您输入的内容不能为空!')returnelse:self.s.send(msg.encode())except Exception as e:print(e)messagebox.showerror('图书管理系统','无网络链接!')data = self.s.recv(128).decode()data = data.split(' ')print(data)if data[0] == 'OK':messagebox.showerror('图书管理系统','还书成功!')elif data[0] == 'OC':print(data[0])messagebox.showerror('图书管理系统','还书成功,但超时还书,\n请缴纳罚款%s元'%data[1])elif data[0] =='OUT':messagebox.showerror('图书管理系统','借书记录不存在!')                       else:messagebox.showerror('图书管理系统','还书失败!')def quxiao(self):self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)class Ts_FJFrame(Frame):#缴纳罚金def __init__(self,m=None):Frame.__init__(self,m,background='#FFFFFF')self.s = sself.root = mself.jieyueren_id = StringVar()self.fajin_class = StringVar()self.fajin_money = StringVar()self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=40)Label(self,background='#FFFFFF',text='借阅人身份证号码',font=18,fg='#353E40').grid(row=2,sticky=W,pady=10)self.a1=Entry(self,textvariable=self.jieyueren_id)self.a1.grid(row=2,column=1,sticky=E)Label(self,background='#FFFFFF',text='罚金类型',font=18,fg='#353E40').grid(row=4,sticky=W,pady=10)self.w = ttk.Combobox(self,width=18,values=['超时','人为'])self.w.grid(row = 4,column=1,sticky=E)Label(self,background='#FFFFFF',text='罚金金额',font=18,fg='#353E40').grid(row=6,sticky=W,pady=10)self.a3=Entry(self,textvariable=self.fajin_money)self.a3.grid(row=6,column=1,sticky=E)Button(self,text='确认',command=self.luru,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=8,column=0,sticky=W,pady=10)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=8,column=1,sticky=W,pady=10)def luru(self):try:jieyueren_id =  self.jieyueren_id.get().strip()fajin_class = self.w.get().strip()fajin_money = self.fajin_money.get().strip()self.a1.delete(0,END)self.w.delete(0,END)self.a3.delete(0,END)    msg = 'C {} {} {}'.format(jieyueren_id,fajin_class,fajin_money)if re.search('[~`,*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif 1 <= len(jieyueren_id) and len(jieyueren_id) != 18:messagebox.showerror('图书管理系统','您输入的身份证有误!')returnelif len(jieyueren_id) < 1 or len(fajin_class) < 1 or len(fajin_money) < 1 :messagebox.showerror('图书管理系统','您输入的内容不能为空!')returnelse:self.s.send(msg.encode())except:messagebox.showerror('图书管理系统','无网络链接!')data = self.s.recv(128).decode()print(data)if data == 'OK':messagebox.showerror('图书管理系统','缴纳成功!')elif data =='OUT':messagebox.showerror('图书管理系统','余额不足!请充值!')                       else:messagebox.showerror('图书管理系统','缴纳失败!')def quxiao(self):self.a1.delete(0,END)self.w.delete(0,END)self.a3.delete(0,END)       class Ts_XSFrame(Frame):#图书销售def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.root = mself.s = sself.goushuren_id = StringVar()self.book_id = StringVar()self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=40)Label(self,background='#FFFFFF',text='购书人身份证号码',font=18,fg='#353E40').grid(row=2,sticky=W,pady=10)self.a1 = Entry(self,textvariable=self.goushuren_id)self.a1.grid(row=2,column=1,sticky=E)Label(self,background='#FFFFFF',text='图书ID',font=18,fg='#353E40').grid(row=4,sticky=W,pady=10)self.a2 = Entry(self,textvariable=self.book_id)self.a2.grid(row=4,column=1,sticky=E) Button(self,text='确认',command=self.luru,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=8,column=0,sticky=W,pady=10)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=8,column=1,sticky=W,pady=10)def luru(self):try:goushuren_id =  self.goushuren_id.get().strip()book_id = self.book_id.get().strip()self.a1.delete(0,END)self.a2.delete(0,END)msg = 'D {} {}'.format(goushuren_id,book_id)if re.search('[~`,*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif 1 <= len(goushuren_id) and len(goushuren_id) != 18:messagebox.showerror('图书管理系统','您输入的身份证有误!')returnelif len(goushuren_id) < 1 or len(book_id) < 1 :messagebox.showerror('图书管理系统','您输入的内容不能为空!')returnelse:self.s.send(msg.encode())except:messagebox.showerror('图书管理系统','无网络链接!')data = self.s.recv(128).decode()if data == 'OK':messagebox.showerror('图书管理系统','购书成功!')       elif data =='Did':messagebox.showerror('图书管理系统','库存不足!\n请及时进货!')  elif data =='OUT':messagebox.showerror('图书管理系统','余额不足!请充值!')                       else:messagebox.showerror('图书管理系统','购书失败!')def quxiao(self):self.a1.delete(0,END)self.a2.delete(0,END)class Ts_CZFrame(Frame):#充值def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.root = mself.s = sself.chongzhiren_id = StringVar()self.chongzhi_money = StringVar()self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=40)Label(self,background='#FFFFFF',).grid(column=0,sticky=W,pady=5)Label(self,background='#FFFFFF',text='充值人身份证号码',font=18,fg='#353E40').grid(row=2,sticky=W,pady=5)self.a1 = Entry(self,textvariable=self.chongzhiren_id)self.a1.grid(row=2,column=1,sticky=E) Label(self,background='#FFFFFF',text='充值金额',font=18,fg='#353E40').grid(row=4,sticky=W,pady=5)self.a2 = Entry(self,textvariable=self.chongzhi_money)self.a2.grid(row=4,column=1,sticky=E) Button(self,text='确认',command=self.luru,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=6,column=0,sticky=W,pady=10)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=6,column=1,sticky=W,pady=10)def luru(self):try:chongzhiren_id =  self.chongzhiren_id.get().strip()chongzhi_money = self.chongzhi_money.get().strip()self.a1.delete(0,END)self.a2.delete(0,END)msg = 'E {} {}'.format(chongzhiren_id,chongzhi_money)if re.search('[~`,*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif 1 <= len(chongzhiren_id) and len(chongzhiren_id) != 18:messagebox.showerror('图书管理系统','您输入的身份证有误!')returnelif len(chongzhiren_id) < 1 or len(chongzhi_money) < 1 :messagebox.showerror('图书管理系统','您输入的内容不能为空!')returnelse:self.s.send(msg.encode())except:messagebox.showerror('图书管理系统','无网络链接!')data = self.s.recv(128).decode()if data == 'OK':messagebox.showerror('图书管理系统','充值成功!')else:messagebox.showerror('图书管理系统','充值失败!')def quxiao(self):self.a1.delete(0,END)self.a2.delete(0,END)#第二部分class Ts_CGFrame(Frame):#图书采购def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.s = s       self.root = m   self.book_name = StringVar()self.book_class = StringVar()self.book_author = StringVar()self.book_price = StringVar()self.book_number = StringVar()self.start()def start(self):Label(self,background='#FFFFFF').grid(row=1,sticky=W,pady=40)Label(self,background='#FFFFFF',text='图书名称',font=18,fg='#353E40').grid(row=3,sticky=W,pady=10)self.a1=Entry(self,textvariable=self.book_name)self.a1.grid(row=3,column=1,sticky=E)Label(self,background='#FFFFFF',text='图书类别',font=18,fg='#353E40').grid(row=4,sticky=W,pady=10)self.a2=Entry(self,textvariable=self.book_class)self.a2.grid(row=4,column=1,sticky=E)Label(self,background='#FFFFFF',text='图书作者',font=18,fg='#353E40').grid(row=5,sticky=W,pady=10)self.a3=Entry(self,textvariable=self.book_author)self.a3.grid(row=5,column=1,sticky=E)Label(self,background='#FFFFFF',text='图书单价',font=18,fg='#353E40').grid(row=6,sticky=W,pady=10)self.a4=Entry(self,textvariable=self.book_price)self.a4.grid(row=6,column=1,sticky=E)Label(self,background='#FFFFFF',text='图书数量',font=18,fg='#353E40').grid(row=7,sticky=W,pady=10)self.a5=Entry(self,textvariable=self.book_number)self.a5.grid(row=7,column=1,sticky=E)      Button(self,text='确定',command=self.luru,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=8,column=0,sticky=W,pady=10)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=8,column=1,sticky=W,pady=10)def luru(self):try:book_name =  self.book_name.get().strip()book_class = self.book_class.get().strip()book_author = self.book_author.get().strip()book_price = self.book_price.get().strip()book_number = self.book_number.get().strip()self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)self.a4.delete(0,END)self.a5.delete(0,END)msg = 'F {} {} {} {} {}'.format(book_name,book_class,book_author,book_price,book_number)if re.search('[~`,*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif len(book_name) < 1 or len(book_class) < 1 or len(book_author) < 1\or len(book_price) < 1 or len(book_number) < 1:messagebox.showerror('图书管理系统','您输入的内容不能为空!')returnelse:self.s.send(msg.encode())except:messagebox.showerror('图书管理系统','无网络链接!')data = self.s.recv(128).decode()if data == 'OK':messagebox.showerror('图书管理系统','采购成功!')else:messagebox.showerror('图书管理系统','采购失败!')def quxiao(self):self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)self.a4.delete(0,END)self.a5.delete(0,END)class Ts_BSFrame(Frame):#图书报损def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.s = sself.root = m   self.book_name = StringVar()self.book_class = StringVar()self.book_author = StringVar()self.book_number = StringVar()self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=40)Label(self,background='#FFFFFF',text='图书名称',font=18,fg='#353E40').grid(row=1,sticky=W,pady=10)self.a1=Entry(self,textvariable=self.book_name)self.a1.grid(row=1,column=1,sticky=E)Label(self,background='#FFFFFF',text='图书类别',font=18,fg='#353E40').grid(row=2,sticky=W,pady=10)self.a2=Entry(self,textvariable=self.book_class)self.a2.grid(row=2,column=1,sticky=E)Label(self,background='#FFFFFF',text='图书作者',font=18,fg='#353E40').grid(row=3,sticky=W,pady=10)self.a3=Entry(self,textvariable=self.book_author)self.a3.grid(row=3,column=1,sticky=E)Label(self,background='#FFFFFF',text='报损数量',font=18,fg='#353E40').grid(row=4,sticky=W,pady=10)self.a4=Entry(self,textvariable=self.book_number)self.a4.grid(row=4,column=1,sticky=E)      Button(self,text='确定',command=self.luru,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=7,column=0,sticky=W,pady=10)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=7,column=1,sticky=W,pady=10)def luru(self):try:book_name =  self.book_name.get().strip()book_class = self.book_class.get().strip()book_author = self.book_author.get().strip()book_number = self.book_number.get().strip()self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)self.a4.delete(0,END)msg = 'G {} {} {} {}'.format(book_name,book_class,book_author,book_number)if re.search('[~`,*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif len(book_name) < 1 or len(book_class) < 1 or len(book_author) < 1\or len(book_number) < 1:messagebox.showerror('图书管理系统','您输入的内容不能为空!')returnelse:self.s.send(msg.encode())except:messagebox.showerror('图书管理系统','无网络链接!')data = self.s.recv(128).decode()if data == 'OK':messagebox.showerror('图书管理系统','图书已报损!')elif data =='OUT':messagebox.showerror('图书管理系统','该图书不存在!')                       else:messagebox.showerror('图书管理系统','报损失败!')def quxiao(self):self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)self.a4.delete(0,END)class Ts_DZFrame(Frame):#读者管理def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.root = mself.s = sself.duzhe_name = StringVar()self.duzhe_id = StringVar()self.duzhe_money = StringVar()self.zhuxiao_name = StringVar()self.zhuxiao_id = StringVar()self.zhuxiao_money = StringVar()self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=40)Label(self,background='#FFFFFF').grid(column=0,sticky=W,pady=5)Label(self,background='#FFFFFF',text='注册人姓名',font=18,fg='#353E40').grid(row=1,sticky=W,pady=5)self.a1 = Entry(self,textvariable=self.duzhe_name)self.a1.grid(row=1,column=1,sticky=E) Label(self,background='#FFFFFF',text='身份证号码',font=18,fg='#353E40').grid(row=2,sticky=W,pady=5)self.a2 = Entry(self,textvariable=self.duzhe_id)self.a2.grid(row=2,column=1,sticky=E) Label(self,background='#FFFFFF',text='充值金额',font=18,fg='#353E40').grid(row=3,sticky=W,pady=5)self.a3 = Entry(self,textvariable=self.duzhe_money)self.a3.grid(row=3,column=1,sticky=E)Button(self,text='注册账户',command=self.zhu_ce,font=18,background='#C6D6A7',activebackground='#1AD8E8').\grid(row=4,columnspan=2,pady=5)Label(self,background='#FFFFFF',text='注销人名称',font=18,fg='#353E40').grid(row=6,sticky=W,pady=10)self.b1 = Entry(self,textvariable=self.zhuxiao_name)self.b1.grid(row=6,column=1,sticky=E) Label(self,background='#FFFFFF',text='注销人身份证号码',font=18,fg='#353E40').grid(row=7,sticky=W,pady=5)self.b2 = Entry(self,textvariable=self.zhuxiao_id)self.b2.grid(row=7,column=1,sticky=E) Button(self,text='注销账户',command=self.zhu_xiao,font=18,background='#C6D6A7',activebackground='#1AD8E8').\grid(row=10,columnspan=2,pady=5)def zhu_ce(self):try:duzhe_name =  self.duzhe_name.get().strip()duzhe_id = self.duzhe_id.get().strip()duzhe_money = self.duzhe_money.get().strip()self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)    msg = 'H {} {} {}'.format(duzhe_name,duzhe_id,duzhe_money)if re.search('[~`,*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif 1 <= len(duzhe_id) and len(duzhe_id) != 18:messagebox.showerror('图书管理系统','您输入的身份证有误!')returnelif len(duzhe_name) < 1 or len(duzhe_id) < 1 or len(duzhe_money) < 1:messagebox.showerror('图书管理系统','您输入的内容不能为空!')returnelse:self.s.send(msg.encode())except:messagebox.showerror('图书管理系统','无网络链接!')data = self.s.recv(128).decode()if data == 'OK':messagebox.showerror('图书管理系统','读者添加成功!')elif data =='SSS':messagebox.showerror('图书管理系统','您输入的内容不规范!')elif data =='SFZ':messagebox.showerror('图书管理系统','您输入的身份证有误!')elif data =='OUT':messagebox.showerror('图书管理系统','该读者已存在!')                       else:messagebox.showerror('图书管理系统','读者添加失败!')def zhu_xiao(self):b = messagebox.askyesno('图书管理系统','是否注销?')if bool(b) is True:try:zhuxiao_name =  self.zhuxiao_name.get().strip()zhuxiao_id = self.zhuxiao_id.get().strip()self.b1.delete(0,END)self.b2.delete(0,END)msg = 'I {} {}'.format(zhuxiao_name,zhuxiao_id)if re.search('[~`,*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif 1 <= len(zhuxiao_id) and len(zhuxiao_id) != 18:messagebox.showerror('图书管理系统','您输入的身份证有误!')returnelif len(zhuxiao_name) < 1 or len(zhuxiao_id) < 1:messagebox.showerror('图书管理系统','您输入的内容不能为空!')returnelse:self.s.send(msg.encode())except:messagebox.showerror('图书管理系统','无网络链接!')data = self.s.recv(128).decode()if data == 'OK':messagebox.showerror('图书管理系统','该读者注销成功!')elif data =='OUT':messagebox.showerror('图书管理系统','该读者不存在!')                       else:messagebox.showerror('图书管理系统','该读者注销失败!')else:self.b1.delete(0,END)self.b2.delete(0,END)#第三部分
class Ts_TCFrame(Frame):#图书查询def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.root = mself.s = sself.book_class = StringVar()self.book_name = StringVar()self.book_author = StringVar()self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=60)Label(self,background='#FFFFFF',text='图书类别',font=18,fg='#353E40').grid(row=2,sticky=W,pady=10)self.a1=Entry(self,textvariable=self.book_class)self.a1.grid(row=2,column=1,sticky=E)Label(self,background='#FFFFFF',text='图书名称',font=18,fg='#353E40').grid(row=4,sticky=W,pady=10)self.a2=Entry(self,textvariable=self.book_name)self.a2.grid(row=4,column=1,sticky=E)Label(self,background='#FFFFFF',text='图书作者',font=18,fg='#353E40').grid(row=6,sticky=W,pady=10)self.a3=Entry(self,textvariable=self.book_author)self.a3.grid(row=6,column=1,sticky=E)     Button(self,text='查询',command=self.cha_xun,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=7,column=0,sticky=W,pady=10)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=7,column=1,sticky=W,pady=10)def cha_xun(self):book_class =  self.book_class.get().strip()book_name = self.book_name.get().strip()book_author = self.book_author.get().strip()self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)msg = 'J {} {} {}'.format(book_class,book_name,book_author)if re.search('[~`,*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')return else:self.s.send(msg.encode())ck = Toplevel()canvas = Canvas(ck,width = 910,height = 570, bg = 'white')  image = Image.open("./image/chaxun.jpg")  im = ImageTk.PhotoImage(image)        canvas.create_image(450,280,image = im)     canvas.place(x=0, y=0, relwidth=1, relheight=1) sw = ck.winfo_screenwidth()#屏幕宽度sh = ck.winfo_screenheight()#屏幕高度# self.ww = 800x = (sw-910)/2y = (sh-570)/2ck.geometry("%dx%d+%d+%d"%(910,570,x,y))  ck.resizable(False,False)ck.title('欢迎进入智达图书管理系统--图书查询')frame_top = Frame(ck,width=200,height=180,background='#FFFFFF')frame_top.grid(row=0,column=0,padx=140,pady=20)frame_center = Frame(ck,width=600,height=380,background='#FFFFFF')frame_center.grid(row=1,column=0,padx=140,ipady=1)frame_bottom = Frame(ck,width=200,height=180,background='#FFFFFF')frame_bottom.grid(row=2,column=0,padx=140)lb_tip = Label(frame_top,text='图书名称',font=18,fg='#353E40',background='#FFFFFF')string = StringVar()string.set('')a_name = Entry(frame_top,textvariable=string)b_qury = Button(frame_top,text='快速查询',font=18,fg='#353E40',background='#FFFFFF')lb_tip.grid(row=0,column=0,padx=15,pady=30)a_name.grid(row=0,column=1,padx=45,pady=30)b_qury.grid(row=0,column=2,padx=45,pady=30)b_delete = Button(frame_bottom,text='删除',font=18,fg='#353E40',background='#FFFFFF')b_update = Button(frame_bottom,text='修改',font=18,fg='#353E40',background='#FFFFFF')b_add = Button(frame_bottom,text='添加',font=18,fg='#353E40',background='#FFFFFF')b_delete.grid(row=0,column=0,padx=20,pady=30)b_update.grid(row=0,column=1,padx=13,pady=30)b_add.grid(row=0,column=2,padx=30,pady=30)scrollBar=Scrollbar(frame_center)scrollBar.pack(side=RIGHT,fill=Y)tree = ttk.Treeview(frame_center,columns=('a1','a2','a3','a4','a5','a6')\,show='headings',yscrollcommand=scrollBar.set)tree.column('a1',width=60,anchor='center')tree.column('a2',width=150,anchor='center')tree.column('a3',width=120,anchor='center')tree.column('a4',width=120,anchor='center')tree.column('a5',width=60,anchor='center')tree.column('a6',width=60,anchor='center')tree.heading('a1',text='图书ID')tree.heading('a2',text='图书名称')tree.heading('a3',text='图书类别')tree.heading('a4',text='图书作者')tree.heading('a5',text='图书单价')tree.heading('a6',text='图书数量')tree.pack(side=LEFT,fill=Y)scrollBar.config(command=tree.yview)def treeviewClick(event):passtree.bind("<Button-1>",treeviewClick)while True:data = (self.s.recv(1024)).decode()if data == '##':breakelif data =='OUT':messagebox.showerror('图书管理系统','您查找的内容为空!')ck.destroy()breaka = data.split(' ') n = len(a)     for i in range(0,n,6):   tree.insert("",0,i,values=(a[i:(i+6)]))mainloop()def quxiao(self):self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)class Ts_DCFrame(Frame):#读者查询def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.root = mself.s = sself.duzhe_name = StringVar()self.duzhe_id = StringVar()self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=60)Label(self,background='#FFFFFF').grid(column=0,sticky=W,pady=5)Label(self,background='#FFFFFF',text='账户姓名',font=18,fg='#353E40').grid(row=2,sticky=W,pady=5)self.a1 = Entry(self,textvariable=self.duzhe_name)self.a1.grid(row=2,column=1,sticky=E) Label(self,background='#FFFFFF',text='身份证号码',font=18,fg='#353E40').grid(row=4,sticky=W,pady=5)self.a2 = Entry(self,textvariable=self.duzhe_id)self.a2.grid(row=4,column=1,sticky=E) Button(self,text='查询',command=self.cha_xun,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=8,column=0,sticky=W,pady=10)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=8,column=1,sticky=W,pady=10)def cha_xun(self):duzhe_name =  self.duzhe_name.get().strip()duzhe_id = self.duzhe_id.get().strip()self.a1.delete(0,END)self.a2.delete(0,END)msg = 'K {} {}'.format(duzhe_name,duzhe_id)if re.search('[~`,*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif 1 <= len(duzhe_id) and len(duzhe_id) != 18:messagebox.showerror('图书管理系统','您输入的身份证有误!')returnelse:self.s.send(msg.encode())ck = Toplevel()canvas = Canvas(ck,width = 910,height = 570, bg = 'white')  image = Image.open("./image/chaxun.jpg")  im = ImageTk.PhotoImage(image)        canvas.create_image(450,280,image = im)     canvas.place(x=0, y=0, relwidth=1, relheight=1) sw = ck.winfo_screenwidth()#屏幕宽度sh = ck.winfo_screenheight()#屏幕高度# self.ww = 800x = (sw-910)/2y = (sh-570)/2ck.geometry("%dx%d+%d+%d"%(910,570,x,y))  ck.resizable(False,False)ck.title('欢迎进入智达图书管理系统--读者查询')frame_top = Frame(ck,width=200,height=180,background='#FFFFFF')frame_top.grid(row=0,column=0,padx=140,pady=20)frame_center = Frame(ck,width=600,height=380,background='#FFFFFF')frame_center.grid(row=1,column=0,padx=140,ipady=1)frame_bottom = Frame(ck,width=200,height=180,background='#FFFFFF')frame_bottom.grid(row=2,column=0,padx=140)lb_tip = Label(frame_top,text='图书名称',font=18,fg='#353E40',background='#FFFFFF')string = StringVar()string.set('')a_name = Entry(frame_top,textvariable=string)b_qury = Button(frame_top,text='快速查询',font=18,fg='#353E40',background='#FFFFFF')lb_tip.grid(row=0,column=0,padx=15,pady=30)a_name.grid(row=0,column=1,padx=45,pady=30)b_qury.grid(row=0,column=2,padx=45,pady=30)b_delete = Button(frame_bottom,text='删除',font=18,fg='#353E40',background='#FFFFFF')b_update = Button(frame_bottom,text='修改',font=18,fg='#353E40',background='#FFFFFF')b_add = Button(frame_bottom,text='添加',font=18,fg='#353E40',background='#FFFFFF')b_delete.grid(row=0,column=0,padx=20,pady=30)b_update.grid(row=0,column=1,padx=13,pady=30)b_add.grid(row=0,column=2,padx=30,pady=30)scrollBar=Scrollbar(frame_center)scrollBar.pack(side=RIGHT,fill=Y)tree = ttk.Treeview(frame_center,columns=('a1','a2','a3')\,show='headings',yscrollcommand=scrollBar.set)tree.column('a1',width=180,anchor='center')tree.column('a2',width=200,anchor='center')tree.column('a3',width=180,anchor='center')tree.heading('a1',text='姓名')tree.heading('a2',text='身份证号码')tree.heading('a3',text='账户余额')tree.pack(side=LEFT,fill=Y)scrollBar.config(command=tree.yview)def treeviewClick(event):passtree.bind("<Button-1>",treeviewClick)while True:data = self.s.recv(1024).decode()if data == '##':breakelif data =='OUT':messagebox.showerror('图书管理系统','您查找的内容为空!')ck.destroy()break         a = data.split(' ') n = len(a)     for i in range(0,n,3):   tree.insert("",0,i,values=(a[i:(i+3)]))mainloop()def quxiao(self):self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)class Ts_JCFrame(Frame):#借阅查询def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.root = mself.s = sself.book_id = StringVar()self.jieyueren_id = StringVar()    self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=60)Label(self,background='#FFFFFF').grid(column=0,sticky=W,pady=5)Label(self,background='#FFFFFF',text='图书ID',font=18,fg='#353E40').grid(row=4,sticky=W,pady=5)self.a1 = Entry(self,textvariable=self.book_id)self.a1.grid(row=4,column=1,sticky=E) Label(self,background='#FFFFFF',text='身份证号码',font=18,fg='#353E40').grid(row=6,sticky=W,pady=5)self.a2 = Entry(self,textvariable=self.jieyueren_id)self.a2.grid(row=6,column=1,sticky=E) Button(self,text='查询',command=self.cha_xun,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=8,column=0,sticky=W,pady=10)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=8,column=1,sticky=W,pady=10)def cha_xun(self):book_id =  self.book_id.get().strip()jieyueren_id = self.jieyueren_id.get().strip()self.a1.delete(0,END)self.a2.delete(0,END)msg = 'L {} {}'.format(book_id,jieyueren_id)if re.search('[~`,*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif 1 <= len(jieyueren_id) and len(jieyueren_id) != 18:messagebox.showerror('图书管理系统','您输入的身份证有误!')returnelse:self.s.send(msg.encode())ck = Toplevel()canvas = Canvas(ck,width = 910,height = 570, bg = 'white')  image = Image.open("./image/chaxun.jpg")  im = ImageTk.PhotoImage(image)        canvas.create_image(450,280,image = im)     canvas.place(x=0, y=0, relwidth=1, relheight=1) sw = ck.winfo_screenwidth()#屏幕宽度sh = ck.winfo_screenheight()#屏幕高度# self.ww = 800x = (sw-910)/2y = (sh-570)/2ck.geometry("%dx%d+%d+%d"%(910,570,x,y))  ck.resizable(False,False)ck.title('欢迎进入智达图书管理系统--借阅查询')frame_top = Frame(ck,width=200,height=180,background='#FFFFFF')frame_top.grid(row=0,column=0,padx=140,pady=20)frame_center = Frame(ck,width=600,height=380,background='#FFFFFF')frame_center.grid(row=1,column=0,padx=140,ipady=1)frame_bottom = Frame(ck,width=200,height=180,background='#FFFFFF')frame_bottom.grid(row=2,column=0,padx=140)lb_tip = Label(frame_top,text='图书名称',font=18,fg='#353E40',background='#FFFFFF')string = StringVar()string.set('')a_name = Entry(frame_top,textvariable=string)b_qury = Button(frame_top,text='快速查询',font=18,fg='#353E40',background='#FFFFFF')lb_tip.grid(row=0,column=0,padx=15,pady=30)a_name.grid(row=0,column=1,padx=45,pady=30)b_qury.grid(row=0,column=2,padx=45,pady=30)b_delete = Button(frame_bottom,text='删除',font=18,fg='#353E40',background='#FFFFFF')b_update = Button(frame_bottom,text='修改',font=18,fg='#353E40',background='#FFFFFF')b_add = Button(frame_bottom,text='添加',font=18,fg='#353E40',background='#FFFFFF')b_delete.grid(row=0,column=0,padx=20,pady=30)b_update.grid(row=0,column=1,padx=13,pady=30)b_add.grid(row=0,column=2,padx=30,pady=30)scrollBar=Scrollbar(frame_center)scrollBar.pack(side=RIGHT,fill=Y)tree = ttk.Treeview(frame_center,columns=('a1','a2','a3','a4','a5')\,show='headings',yscrollcommand=scrollBar.set)tree.column('a1',width=180,anchor='center')tree.column('a2',width=80,anchor='center')tree.column('a3',width=110,anchor='center')tree.column('a4',width=110,anchor='center')tree.column('a5',width=110,anchor='center')tree.heading('a1',text='身份证号')tree.heading('a2',text='图书ID')tree.heading('a3',text='借阅时间')tree.heading('a4',text='约定时间')tree.heading('a5',text='归还时间')      tree.pack(side=LEFT,fill=Y)scrollBar.config(command=tree.yview)def treeviewClick(event):passtree.bind("<Button-1>",treeviewClick)while True:data = self.s.recv(1024).decode()if data == '##':breakelif data =='OUT':messagebox.showerror('图书管理系统','您查找的内容为空!')ck.destroy()break         a = data.split(' ') n = len(a)     for i in range(0,n,5):   tree.insert("",0,i,values=(a[i:(i+5)]))mainloop()def quxiao(self):self.a1.delete(0,END)self.a2.delete(0,END)class Ts_FCFrame(Frame):#罚金查询def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.root = mself.s = sself.jieyueren_id = StringVar()self.fajin_class = StringVar()self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=60)Label(self,background='#FFFFFF',text='借阅人身份证号码',font=18,fg='#353E40').grid(row=1,sticky=W,pady=10)self.a1=Entry(self,textvariable=self.jieyueren_id)self.a1.grid(row=1,column=1,sticky=E)Label(self,background='#FFFFFF',text='罚金类型',font=18,fg='#353E40').grid(row=2,sticky=W,pady=10)self.a2=Entry(self,textvariable=self.fajin_class)self.a2.grid(row=2,column=1,sticky=E)     Button(self,text='查询',command=self.cha_xun,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=6,column=0,sticky=W,pady=10)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=6,column=1,sticky=W,pady=10)def cha_xun(self):jieyueren_id = self.jieyueren_id.get().strip()fajin_class =  self.fajin_class.get().strip()self.a1.delete(0,END)self.a2.delete(0,END)msg = 'M {} {}'.format(jieyueren_id,fajin_class)if re.search('[~`,*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif 1 <= len(jieyueren_id) and len(jieyueren_id) != 18:messagebox.showerror('图书管理系统','您输入的身份证有误!')returnelse:self.s.send(msg.encode())ck = Toplevel()canvas = Canvas(ck,width = 910,height = 570, bg = 'white')  image = Image.open("./image/chaxun.jpg")  im = ImageTk.PhotoImage(image)        canvas.create_image(450,280,image = im)     canvas.place(x=0, y=0, relwidth=1, relheight=1) sw = ck.winfo_screenwidth()#屏幕宽度sh = ck.winfo_screenheight()#屏幕高度# self.ww = 800x = (sw-910)/2y = (sh-570)/2ck.geometry("%dx%d+%d+%d"%(910,570,x,y))  ck.resizable(False,False)ck.title('欢迎进入智达图书管理系统--罚金查询')frame_top = Frame(ck,width=200,height=180,background='#FFFFFF')frame_top.grid(row=0,column=0,padx=140,pady=20)frame_center = Frame(ck,width=600,height=380,background='#FFFFFF')frame_center.grid(row=1,column=0,padx=140,ipady=1)frame_bottom = Frame(ck,width=200,height=180,background='#FFFFFF')frame_bottom.grid(row=2,column=0,padx=140)lb_tip = Label(frame_top,text='图书名称',font=18,fg='#353E40',background='#FFFFFF')string = StringVar()string.set('')a_name = Entry(frame_top,textvariable=string)b_qury = Button(frame_top,text='快速查询',font=18,fg='#353E40',background='#FFFFFF')lb_tip.grid(row=0,column=0,padx=15,pady=30)a_name.grid(row=0,column=1,padx=45,pady=30)b_qury.grid(row=0,column=2,padx=45,pady=30)b_delete = Button(frame_bottom,text='删除',font=18,fg='#353E40',background='#FFFFFF')b_update = Button(frame_bottom,text='修改',font=18,fg='#353E40',background='#FFFFFF')b_add = Button(frame_bottom,text='添加',font=18,fg='#353E40',background='#FFFFFF')b_delete.grid(row=0,column=0,padx=20,pady=30)b_update.grid(row=0,column=1,padx=13,pady=30)b_add.grid(row=0,column=2,padx=30,pady=30)scrollBar=Scrollbar(frame_center)scrollBar.pack(side=RIGHT,fill=Y)tree = ttk.Treeview(frame_center,columns=('a1','a2','a3')\,show='headings',yscrollcommand=scrollBar.set)tree.column('a1',width=180,anchor='center')tree.column('a2',width=180,anchor='center')tree.column('a3',width=180,anchor='center')    tree.heading('a1',text='姓名')tree.heading('a2',text='罚金类型')tree.heading('a3',text='罚金金额')     tree.pack(side=LEFT,fill=Y)scrollBar.config(command=tree.yview)   def treeviewClick(event):passtree.bind("<Button-1>",treeviewClick)while True:data = self.s.recv(1024).decode()if data == '##':breakelif data =='OUT':messagebox.showerror('图书管理系统','您查找的内容为空!')ck.destroy()breaka = data.split(' ') n = len(a)     for i in range(0,n,3):   tree.insert("",0,i,values=(a[i:(i+3)]))mainloop()def quxiao(self):self.a1.delete(0,END)self.a2.delete(0,END)class Ts_XCFrame(Frame):#销售查询def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.root = mself.s = sself.goushuren_id = StringVar()self.book_name = StringVar()self.book_price = StringVar()self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=60)Label(self,background='#FFFFFF',text='购书人身份证号码',font=18,fg='#353E40').grid(row=4,sticky=W,pady=10)self.a1=Entry(self,textvariable=self.goushuren_id)self.a1.grid(row=4,column=1,sticky=E)Label(self,background='#FFFFFF',text='销售图书名称',font=18,fg='#353E40').grid(row=6,sticky=W,pady=10)self.a2=Entry(self,textvariable=self.book_name)self.a2.grid(row=6,column=1,sticky=E)     Button(self,text='查询',command=self.cha_xun,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=8,column=0,sticky=W,pady=10)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8')\.grid(row=8,column=1,sticky=W,pady=10)def cha_xun(self):goushuren_id =  self.goushuren_id.get().strip()book_name = self.book_name.get().strip()self.a1.delete(0,END)self.a2.delete(0,END)msg = 'N {} {}'.format(goushuren_id,book_name)if re.search('[~`,*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif 1 <= len(goushuren_id) and len(goushuren_id) != 18:messagebox.showerror('图书管理系统','您输入的身份证有误!')returnelse:self.s.send(msg.encode())ck = Toplevel()canvas = Canvas(ck,width = 910,height = 570, bg = 'white')  image = Image.open("./image/chaxun.jpg")  im = ImageTk.PhotoImage(image)        canvas.create_image(450,280,image = im)     canvas.place(x=0, y=0, relwidth=1, relheight=1) sw = ck.winfo_screenwidth()#屏幕宽度sh = ck.winfo_screenheight()#屏幕高度# self.ww = 800x = (sw-910)/2y = (sh-570)/2ck.geometry("%dx%d+%d+%d"%(910,570,x,y))  ck.resizable(False,False)ck.title('欢迎进入智达图书管理系统--销售查询')frame_top = Frame(ck,width=200,height=180,background='#FFFFFF')frame_top.grid(row=0,column=0,padx=140,pady=20)frame_center = Frame(ck,width=600,height=380,background='#FFFFFF')frame_center.grid(row=1,column=0,padx=140,ipady=1)frame_bottom = Frame(ck,width=200,height=180,background='#FFFFFF')frame_bottom.grid(row=2,column=0,padx=140)lb_tip = Label(frame_top,text='图书名称',font=18,fg='#353E40',background='#FFFFFF')string = StringVar()string.set('')a_name = Entry(frame_top,textvariable=string)b_qury = Button(frame_top,text='快速查询',font=18,fg='#353E40',background='#FFFFFF')lb_tip.grid(row=0,column=0,padx=15,pady=30)a_name.grid(row=0,column=1,padx=45,pady=30)b_qury.grid(row=0,column=2,padx=45,pady=30)b_delete = Button(frame_bottom,text='删除',font=18,fg='#353E40',background='#FFFFFF')b_update = Button(frame_bottom,text='修改',font=18,fg='#353E40',background='#FFFFFF')b_add = Button(frame_bottom,text='添加',font=18,fg='#353E40',background='#FFFFFF')b_delete.grid(row=0,column=0,padx=20,pady=30)b_update.grid(row=0,column=1,padx=13,pady=30)b_add.grid(row=0,column=2,padx=30,pady=30)scrollBar=Scrollbar(frame_center)scrollBar.pack(side=RIGHT,fill=Y)tree = ttk.Treeview(frame_center,columns=('a1','a2','a3')\,show='headings',yscrollcommand=scrollBar.set)tree.column('a1',width=200,anchor='center')tree.column('a2',width=180,anchor='center')tree.column('a3',width=180,anchor='center')    tree.heading('a1',text='购书人身份证号码')tree.heading('a2',text='销售图书名称')tree.heading('a3',text='销售图书单价')     tree.pack(side=LEFT,fill=Y)scrollBar.config(command=tree.yview)def treeviewClick(event):passtree.bind("<Button-1>",treeviewClick)while True:data = self.s.recv(1024).decode()if data == '##':breakelif data =='OUT':messagebox.showerror('图书管理系统','您查找的内容为空!')ck.destroy()break         a = data.split(' ') n = len(a)     for i in range(0,n,3):   tree.insert("",0,i,values=(a[i:(i+3)]))mainloop()def quxiao(self):self.a1.delete(0,END)self.a2.delete(0,END)#第四部分
class Ts_YGFrame(Frame):#员工管理def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.root = mself.s = sself.yuangong_name = StringVar()self.yuangong_passwd = StringVar()self.yuangong_passwd1= StringVar()self.zhanghu_name = StringVar()self.zhanghu_passwd = StringVar()self.zhanghu_passwd1= StringVar()        self.zhanghu_passwd2= StringVar() self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=10)Label(self,background='#FFFFFF').grid(column=0,sticky=W,pady=5)Label(self,background='#FFFFFF',text='注册人姓名',font=18,fg='#353E40').grid(row=1,sticky=W,pady=5)self.a1 = Entry(self,textvariable=self.yuangong_name)self.a1.grid(row=1,column=1,sticky=E) Label(self,background='#FFFFFF',text='注册密码',font=18,fg='#353E40').grid(row=2,sticky=W,pady=5)self.a2 = Entry(self,textvariable=self.yuangong_passwd,show='*')self.a2.grid(row=2,column=1,sticky=E) Label(self,background='#FFFFFF',text='确认密码',font=18,fg='#353E40').grid(row=3,sticky=W,pady=5)self.a3 = Entry(self,textvariable=self.yuangong_passwd1,show='*')self.a3.grid(row=3,column=1,sticky=E)Button(self,text='注册',command=self.zhu_ce,font=18,background='#C6D6A7',activebackground='#1AD8E8').\grid(row=4,column=0,pady=5)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8').\grid(row=4,column=1,pady=5)Label(self,background='#FFFFFF',text='账户名称',font=18,fg='#353E40').grid(row=6,sticky=W,pady=5)self.b1 = Entry(self,textvariable=self.zhanghu_name)self.b1.grid(row=6,column=1,sticky=E) Label(self,background='#FFFFFF',text='请输入原密码',font=18,fg='#353E40').grid(row=7,sticky=W,pady=5)self.b2 = Entry(self,textvariable=self.zhanghu_passwd,show='*')self.b2.grid(row=7,column=1,sticky=E) Label(self,background='#FFFFFF',text='请输入新密码',font=18,fg='#353E40').grid(row=8,sticky=W,pady=5)self.b3 = Entry(self,textvariable=self.zhanghu_passwd1,show='*')self.b3.grid(row=8,column=1,sticky=E)Label(self,background='#FFFFFF',text='请确认新密码',font=18,fg='#353E40').grid(row=9,sticky=W,pady=5)self.b4 = Entry(self,textvariable=self.zhanghu_passwd2,show='*')self.b4.grid(row=9,column=1,sticky=E)Button(self,text='修改',command=self.xiu_gai,font=18,background='#C6D6A7',activebackground='#1AD8E8').\grid(row=10,column=0,pady=5)Button(self,text='清空',command=self.quxiao1,font=18,background='#C6D6A7',activebackground='#1AD8E8').\grid(row=10,column=1,pady=5)def zhu_ce(self):try:yuangong_name =  self.yuangong_name.get().strip()yuangong_passwd = self.yuangong_passwd.get().strip()yuangong_passwd1 = self.yuangong_passwd1.get().strip()self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)    msg = 'O {} {} {}'.format(yuangong_name,yuangong_passwd,yuangong_passwd1)if re.search('[~`*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif len(yuangong_name) < 1 or len(yuangong_passwd) < 1 or len(yuangong_passwd1) < 1:messagebox.showerror('图书管理系统','您输入的内容不能为空!')returnelif yuangong_passwd != yuangong_passwd1:messagebox.showerror('图书管理系统','您输入的密码不一致!')returnelse:self.s.send(msg.encode())except:messagebox.showerror('图书管理系统','无网络链接!')data = self.s.recv(128).decode()if data == 'OK':messagebox.showerror('图书管理系统','注册成功!')elif data =='OUT':messagebox.showerror('图书管理系统','该管理员已存在!')                       else:messagebox.showerror('图书管理系统','注册失败!')def xiu_gai(self):b = messagebox.askyesno('图书管理系统','是否修改?')if bool(b) is True:try:zhanghu_name =  self.zhanghu_name.get().strip()zhanghu_passwd = self.zhanghu_passwd.get().strip()zhanghu_passwd1 = self.zhanghu_passwd1.get().strip()zhanghu_passwd2 = self.zhanghu_passwd2.get().strip()     self.b1.delete(0,END)self.b2.delete(0,END)self.b3.delete(0,END)    self.b4.delete(0,END)msg = 'S {} {} {} {}'.format(zhanghu_name,zhanghu_passwd,zhanghu_passwd1,zhanghu_passwd2)if re.search('[~`*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif len(zhanghu_name) < 1 or len(zhanghu_passwd) < 1 or len(zhanghu_passwd1) < 1 or len(zhanghu_passwd2) < 1:messagebox.showerror('图书管理系统','您输入的内容不能为空!')returnelif zhanghu_passwd1 != zhanghu_passwd2:messagebox.showerror('图书管理系统','您输入的密码不一致!')returnelse:self.s.send(msg.encode())except:messagebox.showerror('图书管理系统','无网络链接!')data = self.s.recv(128).decode()if data == 'OK':messagebox.showerror('图书管理系统','修改成功!')elif data =='OUT':messagebox.showerror('图书管理系统','该管理员不存在!')else:messagebox.showerror('图书管理系统','修改失败!')else:self.b1.delete(0,END)self.b2.delete(0,END)self.b3.delete(0,END)self.b4.delete(0,END)def quxiao(self):self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)def quxiao1(self):self.b1.delete(0,END)self.b2.delete(0,END)self.b3.delete(0,END)self.b4.delete(0,END)class Ts_ZXFrame(Frame):#账户管理def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.root = mself.s = sself.guanliyuan_name = StringVar()self.guanliyuan_passwd = StringVar()self.yuangong_name= StringVar()self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=60)Label(self,background='#FFFFFF').grid(column=0,sticky=W,pady=5)Label(self,background='#FFFFFF',text='超级管理员',font=18,fg='#353E40').grid(row=4,sticky=W,pady=5)self.a1 = Entry(self,textvariable=self.guanliyuan_name)self.a1.grid(row=4,column=1,sticky=E) Label(self,background='#FFFFFF',text='管理员密码',font=18,fg='#353E40').grid(row=6,sticky=W,pady=5)self.a2 = Entry(self,textvariable=self.guanliyuan_passwd,show='*')self.a2.grid(row=6,column=1,sticky=E) Label(self,background='#FFFFFF',text='员工姓名',font=18,fg='#353E40').grid(row=8,sticky=W,pady=5)self.a3 = Entry(self,textvariable=self.yuangong_name)self.a3.grid(row=8,column=1,sticky=E)Button(self,text='删除',command=self.shan_qu,font=18,background='#C6D6A7',activebackground='#1AD8E8').\grid(row=10,column=0,pady=5)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8').\grid(row=10,column=1,pady=5)def shan_qu(self):b = messagebox.askyesno('图书管理系统','是否删除?')if bool(b) is True:try:guanliyuan_name =  self.guanliyuan_name.get().strip()guanliyuan_passwd = self.guanliyuan_passwd.get().strip()yuangong_name = self.yuangong_name.get().strip()self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)    msg = 'Q {} {} {}'.format(guanliyuan_name,guanliyuan_passwd,yuangong_name)if re.search('[~`*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif len(guanliyuan_name) < 1 or len(guanliyuan_passwd) < 1 or len(yuangong_name) < 1:messagebox.showerror('图书管理系统','您输入的内容不能为空!')returnelse:self.s.send(msg.encode())except:messagebox.showerror('图书管理系统','无网络链接!')data = self.s.recv(128).decode()if data == 'OK':messagebox.showerror('图书管理系统','删除成功!')elif data =='OUT':messagebox.showerror('图书管理系统','您的权限不够!')                       else:messagebox.showerror('图书管理系统','删除失败!')else:self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)      def quxiao(self):self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)class Ts_SZFrame(Frame):#系统设置def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.root = mself.s = sself.guanliyuan_name = StringVar()self.guanliyuan_passwd = StringVar()self.yuangong_name= StringVar()self.yuangong_power= StringVar()self.start()def start(self):Label(self,background='#FFFFFF').grid(row=0,sticky=W,pady=40)Label(self,background='#FFFFFF').grid(column=0,sticky=W,pady=5)Label(self,background='#FFFFFF',text='超级管理员',font=18,fg='#353E40').grid(row=2,sticky=W,pady=5)self.a1 = Entry(self,textvariable=self.guanliyuan_name)self.a1.grid(row=2,column=1,sticky=E) Label(self,background='#FFFFFF',text='管理员密码',font=18,fg='#353E40').grid(row=4,sticky=W,pady=5)self.a2 = Entry(self,textvariable=self.guanliyuan_passwd,show='*')self.a2.grid(row=4,column=1,sticky=E) Label(self,background='#FFFFFF',text='员工姓名',font=18,fg='#353E40').grid(row=6,sticky=W,pady=5)self.a3 = Entry(self,textvariable=self.yuangong_name)self.a3.grid(row=6,column=1,sticky=E)Label(self,background='#FFFFFF',text='管理员类别',fg='#353E40',font=15)\.grid(row = 8, sticky=W,pady=10)self.w = ttk.Combobox(self,width=18,values=['普通管理员','高级管理员','超级管理员'])self.w.current(0)self.w.grid(row = 8,column=1,sticky=E)Button(self,text='提交',command=self.ti_jiao,font=18,background='#C6D6A7',activebackground='#1AD8E8').\grid(row=10,column=0,pady=5)Button(self,text='清空',command=self.quxiao,font=18,background='#C6D6A7',activebackground='#1AD8E8').\grid(row=10,column=1,pady=5)def ti_jiao(self):b = messagebox.askyesno('图书管理系统','是否提交?')if bool(b) is True:try:guanliyuan_name =  self.guanliyuan_name.get().strip()guanliyuan_passwd = self.guanliyuan_passwd.get().strip()yuangong_name = self.yuangong_name.get().strip()yuangong_power = self.w.get().strip()self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)msg = 'R {} {} {} {}'.format(guanliyuan_name,guanliyuan_passwd,yuangong_name,yuangong_power)if re.search('[~`*!%);@\:\\\(#$\-^&_\'=+.>\|}\[{\]"?/<]', msg):messagebox.showerror('图书管理系统','您输入的内容不规范!')returnelif len(guanliyuan_name) < 1 or len(guanliyuan_passwd) < 1 or len(yuangong_name) < 1 or len(yuangong_power) < 1:messagebox.showerror('图书管理系统','您输入的内容不能为空!')returnelse:self.s.send(msg.encode())except:messagebox.showerror('图书管理系统','无网络链接!')data = self.s.recv(128).decode()if data == 'OK':messagebox.showerror('图书管理系统','修改成功!')elif data =='OUT':messagebox.showerror('图书管理系统','您的权限不够!')                       else:messagebox.showerror('图书管理系统','修改失败!')else:self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)def quxiao(self):self.a1.delete(0,END)self.a2.delete(0,END)self.a3.delete(0,END)class Ts_GYFrame(Frame):def __init__(self,m=None):Frame.__init__(self,background='#FFFFFF')self.root = mself.s = sself.start()def start(self):Label(self,background='#FFFFFF',).grid(row=0,sticky=W,pady=40)Label(self,background='#FFFFFF',text = '公司地址:北京市西城区广安门外中百A3507',font=16,fg='#353E40',justify=LEFT)\.grid(row=8,sticky=W,pady=10)Label(self,background='#FFFFFF',text = '联系方式:010-888888',font=16,fg='#353E40',justify=LEFT)\.grid(row=10,sticky=W,pady=10)Label(self,background='#FFFFFF',text = '公司邮箱:fushibo@163.com',font=16,fg='#353E40',justify=LEFT)\.grid(row=12,sticky=W,pady=10)class Ts_FHFrame(Frame):pass
ts_fuwuqi.py#服务器模块
#!/usr/bin/env python3
# coding=utf-8'''
name : fushibo
date : 2018-5-30
MOLULES : python3.5  mysql  pymysql
图书管理系统服务器
'''
from threading import Thread
from socket import *
import pymysql
import sys
import signal
import os
import datetime
import timeclass Fuwuqi(object):def __init__(self):self.s = socket()self.s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)def bind(self, addr):self.s.bind(addr)def start(self):self.s.listen(10)signal.signal(signal.SIGCHLD, signal.SIG_IGN)while True:try:c, addr = self.s.accept()except KeyboardInterrupt:os._exit(0)except Exception as e:print(e)# 创建子进程pid = os.fork()if pid < 0:print("Create child process failed")c.close()elif pid == 0:self.s.close()self.do_child(c)sys.exit(0)else:c.close()continuedef do_child(self, c):try:while True:data = c.recv(1024).decode()               if data[0] == 'X':self.do_denglu(c, data)elif data[0] == 'Z':c.close()break# 日常elif data[0] == 'A':  # 借阅self.jie_yue(c, data)elif data[0] == 'B':  # 归还self.gui_huan(c, data)elif data[0] == 'C':  # 罚款self.fa_jin(c,data)print('aa:',data[0])        elif data[0] == 'D':  # 买书self.buy(c, data)elif data[0] == 'E':  # 充值self.charge(c, data)# 图书维护和读者维护elif data[0] == 'F':self.book_Purchase(c, data)elif data[0] == 'G':self.book_loss(c, data)elif data[0] == 'H':self.reader_register(c, data)elif data[0] == 'I':self.reader_Cancellation(c, data)# 查询elif data[0] == 'J':self.book_data(c, data)elif data[0] == 'K':self.reader_data(c, data)elif data[0] == 'L':  # 借书记录self.cha_yue(c, data)elif data[0] == 'M':  # 罚款记录self.fine_data(c, data)elif data[0] == 'N':  # 购买记录self.purchase_data(c, data)# 系统管理elif data[0] == 'O':self.lu_ru(c, data)elif data[0] == 'Q':  # 删去self.shan_chu(c, data)elif data[0] == 'R':  # 权限self.power(c, data)elif data[0] == 'S':  # 修改密码self.change(c, data)except Exception as e:pass# 登录def do_denglu(self, c, data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ')name = l[1]passwd = l[2]power = l[3]cursor = db.cursor()try:sql = "select * from user where username='%s' and password='%s' and power = %s;"\% (name, passwd, power)cursor.execute(sql)r = cursor.fetchone()except Exception as e:print(e)returnif r == None:c.send(b'FALL')else:c.send(b'OK')db.close()
# 功能
# 日常工作# 借书 Adef jie_yue(self, c, data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ')reader_id = l[1]book_id = l[2]promise_date = l[3]cursor = db.cursor()year = datetime.datetime.now().yearmonth = datetime.datetime.now().monthday = datetime.datetime.now().daytry:# 查看库存sql = 'select balance from books where book_id="%s";' % book_idcursor.execute(sql)r = cursor.fetchone()if r[0] == 0:# 库存为0,告知没有库存c.send(b'OUT')return#查看是否借过该书sql = 'select * from borrow where reader_id = "%s" and book_id = "%s";'\% (reader_id,book_id,)cursor.execute(sql)r = cursor.fetchall()               for i in r:if i[4] == None:c.send(b'SAS')returnelse:# 如果有货继续sql = "insert into borrow values('%s','%s',\"%s-%s-%s\",'%s',null)"\% (reader_id, book_id, year,month,day,promise_date)cursor.execute(sql)sql = 'update books set balance=balance-1 where book_id="%s";' % book_idcursor.execute(sql)except Exception as e:print(e)c.send(b'No')  # 错误即为失败returnc.send(b'OK')db.commit()db.close()# 还书 Bdef gui_huan(self, c, data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ')reader_id = l[1]book_id = l[2]start_date = l[3]cursor = db.cursor()# 获取当前年月日year = datetime.datetime.now().yearmonth = datetime.datetime.now().monthday = datetime.datetime.now().daytry:# 查询是否有这条借书记录sql = 'select * from borrow where reader_id = "%s" and book_id = "%s" and start_date = "%s" \and comback_date is NULL;' % (reader_id, book_id, start_date)cursor.execute(sql)r = cursor.fetchone()if r:sql = "update borrow set comback_date=\"%s-%s-%s\"\where reader_id = '%s' and book_id = '%s' and start_date = '%s';"\% (year, month, day, reader_id, book_id, start_date)cursor.execute(sql)sql = 'update books set balance=balance+1 where book_id="%s";' % book_idcursor.execute(sql)else:# 如果不为空就是已经归还或者没有这条记录c.send(b'OUT')returnexcept Exception as e:print(e)c.send(b'No')  # 查询错误即为失败return# c.send(b'OK')db.commit()d1 = r[3]d2 = datetime.date(year, month, day)fine = (d2-d1).days# 判断两个时间的时间差,正数就是超时,负数或0则时限内归还if fine > 0:c.send(('OC '+str(fine)).encode())else:c.send(b'OK')db.close()# 缴纳罚金 Cdef fa_jin(self,c,data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ') reader_id = l[1]        class_fine = l[2]      fine_money = l[3]cursor = db.cursor()try:sql = 'select money from reader where reader_id="%s";' % reader_idcursor.execute(sql)r = cursor.fetchone()# 查看用户余额if r[0] < int(fine_money):# 如果余额为负提醒需要充值c.send(b'OUT')return# 插入罚款记录并扣款sql = 'insert into fine values("%s","%s","%s");' % (reader_id, class_fine, fine_money)cursor.execute(sql)sql = 'update reader set money=money-%s where reader_id="%s";' % (int(fine_money), reader_id)cursor.execute(sql)db.commit()except Exception as e:print(e)c.send(b'No')  # 错误即为失败returnc.send(b'OK')db.close()# 买书 Ddef buy(self, c, data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ')reader_id = l[1]book_id = l[2]cursor = db.cursor()try:sql = 'select balance,price from books where book_id="%s";' % book_idcursor.execute(sql)r = cursor.fetchone()money = r[1]if r[0] == 0:# 如果库存为0提醒需要进货c.send(b'Did')return# 查看用户余额sql = 'select money from reader where reader_id="%s";' % reader_idcursor.execute(sql)r = cursor.fetchone()if r[0] < money:# 如果余额为负提醒需要充值c.send(b'OUT')# 插入购买记录sql = 'insert into purchase values("%s","%s","%s");' % (reader_id, book_id, money)cursor.execute(sql)# 减少库存sql = 'update books set balance=balance-1 where book_id="%s";' % book_idcursor.execute(sql)# 减少金钱sql = 'update reader set money=money-"%s" where reader_id="%s";' % (money, reader_id)cursor.execute(sql)except Exception as e:print(e)c.send(b'No')  # 错误即为失败returndb.commit()c.send(b'OK')db.close()# 充值 Edef charge(self, c, data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ')reader_id = l[1]money = l[2]cursor = db.cursor()try:# 增加金钱sql = 'update reader set money=money+"%s" where reader_id="%s";' % (money, reader_id)cursor.execute(sql)except Exception as e:print(e)c.send(b'NO')  # 错误即为失败returndb.commit()c.send(b'OK')db.close()
# 资料维护# 图书进货def book_Purchase(self, c, data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ')book_name = l[1]class_name = l[2]author = l[3]price = l[4]balance = l[5]cursor = db.cursor()try:sql_book_id = 'select book_name from books where book_name="%s";' % book_namecursor.execute(sql_book_id)id_book = cursor.fetchone()# 如果没有则添加数据if id_book == None:sql_book_insert = 'insert into books values(null,"%s","%s","%s",%s,%s);' % (book_name, class_name, author, price, int(balance))cursor.execute(sql_book_insert)else:# 如果有则对balance进行修改# 对条件等于book_id 和 book_name的字段进行balance修改sql = 'update books set balance=%s+balance where book_name="%s";' % (balance, book_name)cursor.execute(sql)except Exception as e:print(e)c.send(b'OUT')  # 添加失败db.commit()c.send(b'OK')# 图书定损def book_loss(self, c, data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ')book_name = l[1]class_name = l[2]author = l[3]balance = l[4]cursor = db.cursor()try:sql_book_name = 'select book_name from books where book_name="%s";' % book_namecursor.execute(sql_book_name)  # 执行语句name_book = cursor.fetchone()sql_book_balance = 'select balance from books where book_name="%s";' % book_namecursor.execute(sql_book_balance)balance_book = cursor.fetchone()# 如果没有则添加数据if sql_book_name == None or balance_book == 0:c.send(b'OUT')returnelse:# 如果有则对balance进行修改# 对条件等于book_id 和 book_name的字段进行balance修改sql = 'update books set balance=balance-%s where  book_name="%s";' % (int(balance), book_name)cursor.execute(sql)except Exception as e:print(e)c.send(b'No')  # 删除失败returndb.commit()c.send(b'OK')db.close()# 用户注册def reader_register(self, c, data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ')reader_name = l[1]reader_id = l[2]money = l[3]cursor = db.cursor()try:sql_reader_id = 'select reader_id from reader where reader_id="%s";' % reader_idcursor.execute(sql_reader_id)id_reader = cursor.fetchone()# 如果没有则添加用户if id_reader == None:sql_reader_insert = 'insert into reader values("%s","%s","%s");' % (reader_name, reader_id, money)cursor.execute(sql_reader_insert)else:c.send(b'OUT')returnexcept Exception as e:print(e)c.send(b'No')  # 注册失败returndb.commit()c.send(b'OK')db.close()# 注销用户def reader_Cancellation(self, c, data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ')reader_name = l[1]reader_id = l[2]cursor = db.cursor()try:id_reader = 'select reader_id from reader where reader_id="%s" and reader_name="%s";' % (reader_id, reader_name)cursor.execute(id_reader)id_reader = cursor.fetchone()# 如果没有则添加用户if id_reader == None:c.send(b'OUT')returnelse:sql_reader_Cancellation = 'delete from reader where reader_id="%s";' % reader_idcursor.execute(sql_reader_Cancellation)except Exception as e:print(e)c.send(b'No')  # 注册失败returndb.commit()c.send(b'OK')db.close()
# 历史查询# 图书资料查询 Jdef book_data(self, c, data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ')class_name = l[1]book_name = l[2]author = l[3]cursor = db.cursor()try:if bool(l[1]) == False and bool(l[2]) == False and bool(l[3]) == False:sql = "select * from books;"cursor.execute(sql)r = cursor.fetchall()if r == None:c.send(b'OUT')while True:for x in r:a = '{} {} {} {} {} {}'.format(str(x[0]), x[1], x[2], x[3], str(x[4]), str(x[5]))c.send(a.encode())time.sleep(0.04)breakc.send(b'##')time.sleep(1)returnelif bool(l[1]) == True and bool(l[2]) == False and bool(l[3]) == False:sql = "select * from books where class_name ='%s'" % l[1]cursor.execute(sql)r = cursor.fetchall()if r == None:c.send(b'OUT')while True:for x in r:a = '{} {} {} {} {} {}'.format(str(x[0]), x[1], x[2], x[3], str(x[4]), str(x[5]))c.send(a.encode())time.sleep(0.04)breakc.send(b'##')time.sleep(1)returnelif bool(l[1]) == False and bool(l[2]) == True and bool(l[3]) == False:sql = "select * from books where book_name ='%s'" % l[2]cursor.execute(sql)r = cursor.fetchall()if r == None:c.send(b'OUT')while True:for x in r:a = '{} {} {} {} {} {}'.format(str(x[0]), x[1], x[2], x[3], str(x[4]), str(x[5]))c.send(a.encode())time.sleep(0.04)breakc.send(b'##')time.sleep(1)returnelif bool(l[1]) == False and bool(l[2]) == False and bool(l[3]) == True:sql = "select * from books where author ='%s'" % l[3]cursor.execute(sql)r = cursor.fetchall()if r == None:c.send(b'OUT')while True:for x in r:a = '{} {} {} {} {} {}'.format(str(x[0]), x[1], x[2], x[3], str(x[4]), str(x[5]))c.send(a.encode())time.sleep(0.04)breakc.send(b'##')time.sleep(1)returnelif bool(l[1]) == True and bool(l[2]) == True and bool(l[3]) == False:sql = "select * from books where class_name ='%s' and book_name = '%s'" % (l[1], l[2])cursor.execute(sql)r = cursor.fetchall()if r == None:c.send(b'OUT')while True:for x in r:a = '{} {} {} {} {} {}'.format(str(x[0]), x[1], x[2], x[3], str(x[4]), str(x[5]))c.send(a.encode())time.sleep(0.04)breakc.send(b'##')time.sleep(1)returnelif bool(l[1]) == True and bool(l[2]) == False and bool(l[3]) == True:sql = "select * from books where class_name ='%s' and author = '%s'" % (l[1], l[3])cursor.execute(sql)r = cursor.fetchall()if r == None:c.send(b'OUT')while True:for x in r:a = '{} {} {} {} {} {}'.format(str(x[0]), x[1], x[2], x[3], str(x[4]), str(x[5]))c.send(a.encode())time.sleep(0.04)breakc.send(b'##')time.sleep(1)returnelif bool(l[1]) == False and bool(l[2]) == True and bool(l[3]) == True:sql = "select * from books where book_name ='%s' and\author = '%s'" % (l[2], l[3])cursor.execute(sql)r = cursor.fetchall()if r == None:c.send(b'OUT')while True:for x in r:a = '{} {} {} {} {} {}'.format(str(x[0]), x[1], x[2], x[3], str(x[4]), str(x[5]))c.send(a.encode())time.sleep(0.04)breakc.send(b'##')time.sleep(1)returnelif bool(l[1]) == True and bool(l[2]) == True and bool(l[3]) == True:sql = "select * from books where class_name ='%s' and\book_name = '%s' and author = '%s'" % (l[1], l[2], l[3])cursor.execute(sql)r = cursor.fetchall()if r == None:c.send(b'OUT')while True:for x in r:a = '{} {} {} {} {} {}'.format(str(x[0]), x[1], x[2], x[3], str(x[4]), str(x[5]))c.send(a.encode())time.sleep(0.04)breakc.send(b'##')time.sleep(1)returnelse:c.send(b'OUT')except Exception as e:print(e)db.rollback()# 读者资料查询 Kdef reader_data(self, c, data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ')reader_name = l[1]reader_id = l[2]cursor = db.cursor()try:if reader_id == '' and reader_name == '':sql = "select * from reader;"else:sql = "select * from reader where \reader_id='%s' or reader_name='%s';"\% (reader_id, reader_name)cursor.execute(sql)r = cursor.fetchall()if r == None:c.send(b'OUT')returnelse:for x in r:a = '{} {} {}'.format(x[0], x[1], str(x[2]))c.send(a.encode())time.sleep(0.04)c.send(b'##')except Exception as e:print(e)db.close()# 借书历史记录 Ldef cha_yue(self, c, data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ')book_id = l[1]reader_id = l[2]cursor = db.cursor()try:if book_id == '' and reader_id == '':sql = "select * from borrow"else:sql = "select * from borrow where \reader_id='%s' or book_id='%s' "\% (reader_id, book_id)cursor.execute(sql)r = cursor.fetchall()if r == None:c.send(b'OUT')returnelse:for x in r:a = '{} {} {} {} {}'.format(x[0], x[1], x[2], x[3], x[4])c.send(a.encode())time.sleep(0.04)c.send(b'##')except Exception as e:print(e)returndb.close()# 罚款历史记录 Mdef fine_data(self, c, data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ')reader_id = l[1]class_fine = l[2]cursor = db.cursor()try:if reader_id == '' and class_fine == '':sql = "select * from fine"else:sql = "select * from fine where \reader_id='%s' or class_fine='%s' "\% (reader_id, class_fine)cursor.execute(sql)r = cursor.fetchall()if r == None:c.send(b'OUT')returnelse:for x in r:a = '{} {} {}'.format(x[0], x[1], x[2])c.send(a.encode())time.sleep(0.04)c.send(b'##')except Exception as e:print(e)returndb.close()# 购买记录 Ndef purchase_data(self, c, data):db = pymysql.connect('localhost', 'root', '123456','Library', charset='utf8')l = data.split(' ')reader_id = l[1]book_id = l[2]cursor = db.cursor()try:if reader_id == '' and book_id == '':sql = "select * from purchase"else:sql = "select * from purchase where \reader_id='%s' or book_id='%s' "\% (reader_id, book_id)cursor.execute(sql)r = cursor.fetchall()if r == None:c.send(b'OUT')returnelse:for x in r:a = '{} {} {}'.format(x[0], x[1], x[2])c.send(a.encode())time.sleep(0.04)c.send(b'##')except Exception as e:print(e)returndb.close()
# 系统管理# 注销 Z# logout# 员工增加 Odef lu_ru(self, c, data):db = pymysql.connect('localhost', 'root', '123456', 'Library')l = data.split(' ')username = l[1]password = l[2]rpw = l[3]cursor = db.cursor()sql = "select * from user where username ='%s'" % usernamecursor.execute(sql)r = cursor.fetchone()if r != None:c.send(b'OUT')returnelse:sql = "insert into user values ('%s','%s',1)"\% (username, password)try:cursor.execute(sql)db.commit()c.send(b'OK')except:c.send(b'FALL')db.rollback()returnelse:print("注册成功")db.close()def change(self, c, data):  # 修改密码db = pymysql.connect('localhost', 'root', '123456', 'Library')l = data.split(' ')username = l[1]password = l[2]npw = l[3]cursor = db.cursor()sql = "select * from user where username ='%s'" % usernamecursor.execute(sql)r = cursor.fetchone()if r == None:c.send(b'OUT')returnelse:sql = "update user set password='%s' where username='%s'"\% (npw, username)try:cursor.execute(sql)db.commit()c.send(b'OK')except:c.send(b'No')db.rollback()returnelse:print("修改成功")db.close()# 删除员工 Qdef shan_chu(self, c, data):db = pymysql.connect('localhost', 'root', '123456', 'Library')l = data.split(' ')supername = l[1]password = l[2]username = l[3]cursor = db.cursor()try:sql = "select power from user where username='%s' and password='%s';" % (supername, password)cursor.execute(sql)r = cursor.fetchone()if r[0] == '3':sql = "delete from user where username ='%s'" % usernamecursor.execute(sql)db.commit()else:c.send(b'OUT')returnexcept Exception as e:print(e)c.send(b'NO')db.rollback()returnc.send(b'OK')print("删除成功")db.close()# 改变权限 Rdef power(self,c,data):db = pymysql.connect('localhost', 'root', '123456', 'Library')l = data.split(' ')superuser = l[1]password = l[2]username = l[3]power = l[4]cursor = db.cursor()if power == '普通管理员':power = 1elif power == '高级管理员':power = 2elif power == '超级管理员':power = 3  try:sql = "select power from user where username = '%s' and password = '%s'" % (superuser, password)cursor.execute(sql)r = cursor.fetchone()print('r:',r)if r[0] == '3':sql = "update user set power='%s' where username ='%s'" % (power, username)cursor.execute(sql)db.commit()c.send(b'OK')print('hello')else:c.send(b'OUT')returnexcept Exception as e:print(e)c.send(b'FALL')db.rollback()returnprint("修改成功")db.close()def main():fuwuqi = Fuwuqi()fuwuqi.bind(('127.0.0.1', 9028))fuwuqi.start()if __name__ == '__main__':main()
-- MySQL dump 10.13  Distrib 5.7.22, for Linux (x86_64)
--
-- Host: localhost    Database: tushu
-- ------------------------------------------------------
-- Server version   5.7.22-0ubuntu0.16.04.1/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;--
-- Table structure for table `books`
--DROP TABLE IF EXISTS `books`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `books` (`book_id` int(11) NOT NULL AUTO_INCREMENT,`book_name` char(20) NOT NULL,`class_name` char(10) NOT NULL,`author` char(20) DEFAULT '不详',`price` int(11) NOT NULL,`balance` int(11) DEFAULT '0',PRIMARY KEY (`book_id`)
) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `books`
--LOCK TABLES `books` WRITE;
/*!40000 ALTER TABLE `books` DISABLE KEYS */;
INSERT INTO `books` VALUES (1,'三国演义','历史','罗贯中',99,12),(2,'水浒传','小说','爱谁谁',50,30),(3,'浮生六记','文学','沈夏',30,50),(4,'达芬奇密码','文学','丹·布朗',25,33),(5,'简·爱','文学','夏洛蒂·勃朗特',6,100),(6,'李鸿章传','传记','梁启超',25,33),(7,'名人传','传记','罗曼·罗兰',30,25),(8,'全球通史','历史','海斯',35,20),(9,'中国通史','历史','钱穆',12,50),(10,'资治通鉴','历史','司马光',135,15),(11,'吕氏春秋','历史','吕不韦',70,10),(12,'轻健身','体育','麦克尔·莫斯利',3,20),(13,'围棋入门','体育','李明',10,20),(14,'三国演义','小说','罗贯中',100,20),(15,'红楼梦','小说','曹雪芹',100,15),(16,'水浒传','小说','施耐庵',99,18),(17,'西游记','小说','吴承恩',80,99),(18,'聊斋志异','小说','蒲松龄',55,13),(19,'阿Q正传','小说','鲁迅',2,200),(20,'呐喊','小说','鲁迅',55,100),(21,'封神演义','小说','许仲琳',25,10),(22,'狐妖小红娘','动漫','小新',10,20),(23,'寄生少女','动漫','周志言',15,33),(24,'新版爆笑校园1','动漫','周斌',3,16),(25,'新版爆笑校园2','动漫','周斌',3,17),(26,'新版爆笑校园3','动漫','周斌',3,15),(27,'新版爆笑校园4','动漫','周斌',3,15),(28,'毛泽东选集1','文学','毛泽东',70,25),(29,'毛泽东选集2','文学','毛泽东',70,25),(30,'毛泽东选集3','文学','毛泽东',70,25),(31,'毛泽东选集4','文学','毛泽东',70,25),(32,'文学回忆录','文学','木心',70,35),(33,'北洋夜行记','文学','金醉',43,20),(34,'中国神话史','文学','袁珂',54,15),(35,'罗生门','文学','芥川龙之介',27,10),(36,'丝绸之路','历史','彼得·弗兰科潘',62,15),(37,'文明之光1','历史','吴军',50,18),(38,'文明之光2','历史','吴军',50,18),(39,'文明之光3','历史','吴军',50,18),(40,'文明之光4','历史','吴军',50,18),(41,'谁杀了他','小说','东野圭吾',40,3),(42,'局外人','文学','加缪',29,15),(43,'绿毛水怪','小说','史泰龙',32,5),(44,'三体1','小说','刘慈欣',22,11),(45,'三体2','小说','刘慈欣',22,11),(46,'三体3','小说','刘慈欣',25,11),(47,'我们都是孤独的行路人','哲学','学诚法师',29,15),(48,'简单的逻辑学','哲学','D.Q.麦克伦尼',26,5),(49,'天下·法学原论','法律','韩式元',104,3),(50,'中华人名共和国合同法','法律','法律出版社法规中心',19,18),(51,'中国兵器史','军事','周纬',35,11),(52,'隆美尔战时文件','军事','李德·哈特',34,8),(53,'阿登战役','军事','安东尼比夫',55,15),(54,'战争论','军事','卡尔',52,8),(55,'人工智能基础','教育','陈玉琨',35,1000),(56,'Python零基础入门学习','教育','小甲鱼',48,1000);
/*!40000 ALTER TABLE `books` ENABLE KEYS */;
UNLOCK TABLES;--
-- Table structure for table `borrow`
--DROP TABLE IF EXISTS `borrow`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `borrow` (`reader_id` char(18) NOT NULL,`book_id` int(11) NOT NULL,`start_date` date NOT NULL,`promise_date` date NOT NULL,`comback_date` date DEFAULT NULL,KEY `reader_id` (`reader_id`),CONSTRAINT `borrow_ibfk_1` FOREIGN KEY (`reader_id`) REFERENCES `reader` (`reader_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `borrow`
--LOCK TABLES `borrow` WRITE;
/*!40000 ALTER TABLE `borrow` DISABLE KEYS */;
INSERT INTO `borrow` VALUES ('110101199911113333',1,'2018-06-12','2018-07-01',NULL),('370211198106134550',18,'2018-06-19','2018-07-19',NULL),('370211198106130496',22,'2018-06-17','2018-08-01',NULL),('370211198106133419',8,'2018-06-22','2018-07-22',NULL),('370211198106133910',10,'2018-05-22','2018-07-29',NULL),('370211198106134438',21,'2018-06-10','2018-07-25',NULL),('370211198106134550',18,'2018-06-19','2018-07-19',NULL),('370211198106134817',3,'2018-06-12','2018-07-22',NULL),('370211198106135078',2,'2018-05-28','2018-09-01',NULL),('370211198106135297',3,'2018-06-09','2018-07-21',NULL),('370211198106135430',1,'2018-06-11','2018-07-10',NULL),('370211198106135756',18,'2018-05-22','2018-07-18',NULL),('370211198106136978',15,'2018-06-08','2018-06-30',NULL),('370211198106137532',6,'2018-05-11','2018-08-01',NULL),('370211198106137532',6,'2018-05-11','2018-08-01',NULL),('370211198106138017',20,'2018-05-17','2018-08-03','2018-07-01'),('370211198106138295',7,'2018-04-01','2018-06-10','2018-06-10'),('370211198106138711',2,'2018-06-13','2018-07-23',NULL),('37021119810613967X',18,'2018-04-07','2018-05-20','2018-05-20'),('370211198106139730',21,'2018-06-08','2018-08-15',NULL),('37021119870113967X',10,'2018-05-08','2018-07-28',NULL),('37021119970113967X',11,'2018-03-29','2018-06-10',NULL);
/*!40000 ALTER TABLE `borrow` ENABLE KEYS */;
UNLOCK TABLES;--
-- Table structure for table `fine`
--DROP TABLE IF EXISTS `fine`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `fine` (`reader_id` char(18) DEFAULT NULL,`class_fine` enum('超时','人为') DEFAULT NULL,`fine_money` int(11) DEFAULT NULL,KEY `reader_id` (`reader_id`),CONSTRAINT `fine_ibfk_1` FOREIGN KEY (`reader_id`) REFERENCES `reader` (`reader_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `fine`
--LOCK TABLES `fine` WRITE;
/*!40000 ALTER TABLE `fine` DISABLE KEYS */;
INSERT INTO `fine` VALUES ('110101199911113333','超时',50),('37021119970113967X','人为',150),('370211198106134438','超时',30),('370211198106138295','超时',30);
/*!40000 ALTER TABLE `fine` ENABLE KEYS */;
UNLOCK TABLES;--
-- Table structure for table `purchase`
--DROP TABLE IF EXISTS `purchase`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `purchase` (`reader_id` char(18) DEFAULT NULL,`book_id` int(11) DEFAULT NULL,`money` int(11) DEFAULT NULL,KEY `reader_id` (`reader_id`),CONSTRAINT `purchase_ibfk_1` FOREIGN KEY (`reader_id`) REFERENCES `reader` (`reader_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `purchase`
--LOCK TABLES `purchase` WRITE;
/*!40000 ALTER TABLE `purchase` DISABLE KEYS */;
INSERT INTO `purchase` VALUES ('110101199911113333',1,50),('37021119970113967X',44,22),('37021119970113967X',45,22),('37021119970113967X',46,22),('370211198106138017',55,35),('370211198106138017',56,48),('370211198106130496',28,70),('370211198106130496',29,70),('370211198106130496',30,70),('370211198106130496',31,70),('370211198106135430',15,100),('37021119810613009X',14,100),('370211198106134817',54,52),('370211198106133910',33,43),('370211198106133910',21,25),('370211198106133910',16,99);
/*!40000 ALTER TABLE `purchase` ENABLE KEYS */;
UNLOCK TABLES;--
-- Table structure for table `reader`
--DROP TABLE IF EXISTS `reader`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `reader` (`reader_name` char(20) NOT NULL,`reader_id` char(18) NOT NULL,`money` int(11) DEFAULT '0',PRIMARY KEY (`reader_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `reader`
--LOCK TABLES `reader` WRITE;
/*!40000 ALTER TABLE `reader` DISABLE KEYS */;
INSERT INTO `reader` VALUES ('root','110101199911113333',9999),('吕凤仙','37021119810613009X',158),('张果老','370211198106130496',620),('青莲','37021119810613299X',20),('白沙','370211198106133419',88),('矮富帅','370211198106133910',666),('张飞','370211198106134438',28),('黑风','370211198106134550',230),('黑旋风','370211198106134817',35),('小凤仙','370211198106135078',20),('青鱼','370211198106135297',222),('李刚','370211198106135430',88),('白鹿原','370211198106135756',355),('李小白','370211198106136978',99),('陆云','370211198106137532',90),('高富帅','370211198106138017',888),('百战照','370211198106138295',55),('及时雨','370211198106138711',28),('颜如玉','37021119810613967X',185),('王者荣耀','370211198106139730',98),('高富丑','37021119870113967X',888),('矮富丑','37021119970113967X',1888);
/*!40000 ALTER TABLE `reader` ENABLE KEYS */;
UNLOCK TABLES;--
-- Table structure for table `user`
--DROP TABLE IF EXISTS `user`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `user` (`username` char(20) NOT NULL,`password` char(20) NOT NULL,`power` enum('1','2','3') NOT NULL,PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `user`
--LOCK TABLES `user` WRITE;
/*!40000 ALTER TABLE `user` DISABLE KEYS */;
INSERT INTO `user` VALUES ('fushibo','123456','2'),('libo','123456','1'),('lijiang','123456','1'),('root','123456','3'),('shangjiale','123456','1'),('zangfujun','123456','2'),('zhaoran','123456','2'),('zhoulei','123456','1');
/*!40000 ALTER TABLE `user` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;-- Dump completed on 2018-06-15 12:07:57

用python3做一个图书管理系统(图形用户界面:tkinter)相关推荐

  1. hive导数据到mysql 自增主键出错_python+mysql做一个图书管理系统?

    开发一个图书管理系统,首先需要对此项目进行一个简单的需求分析: 主要功能包括: 图书信息 图书分类 用户信息 用户借阅统计 管理员 管理员权限 接下来可以进行数据库的设计,在这里我提供一个简单的数据库 ...

  2. 简单用java做一个图书管理系统

    简单用java做一个图书管理系统 首先,我们创建一个View类当做它的视图页 package view;import service.BookService; import service.UserS ...

  3. python做数据库管理系统_python+mysql做一个图书管理系统?

    开发一个图书管理系统,首先需要对此项目进行一个简单的需求分析: 主要功能包括:图书信息 图书分类 用户信息 用户借阅统计 管理员 管理员权限 接下来可以进行数据库的设计,在这里我提供一个简单的数据库表 ...

  4. 用链表做一个图书管理系统

    这几天一直尝试去用链表写这个图书管理系统,本来想在图书管理系统中写个文件管理操作,写了挺久也没写对,最后只能在用户登录操作中写了个简单的文件管理操作.如果有哪里写的不好还请大家见谅!继续加油! 目录 ...

  5. 用vb列表框做一个图书管理系统

    哈喽大家好,欢迎来到一起学VB课堂,今天我们将要学习列表框ListBox控件和组合框ComboBox控件,这两个控件在VB中是非常重要的控件,当然其难度也比前面学习的控件难度有所增加,这两个控件我会单 ...

  6. C语言做一个图书管理系统源码,使用txt文件保存数据

    我使用的IDE为 VS2022,仅实现对文件内容的的添加以及修改,一本书是否被删除,我这里是以图书的状态来划分,如果这本书的状态为删除,则不显示出来,但是存在文本里:并且我这里是退出程序才会进行修改文 ...

  7. 用java编码图书查询系统_用java做的一个图书管理系统的源代码

    <用java做的一个图书管理系统的源代码>由会员分享,可在线阅读,更多相关<用java做的一个图书管理系统的源代码(42页珍藏版)>请在人人文库网上搜索. 1.用java做的一 ...

  8. 用Mysql写一个图书管理系统并且可视化

    要用MySQL写一个图书管理系统需要先创建数据库和表,然后编写Java代码进行连接,查询,插入等操作.同时,为了方便用户操作,可以通过可视化工具将数据以表格或者图形的形式展示出来.以下是一个简单的My ...

  9. javaee实验:使用mvc模式 设计一个图书管理系统

    太多了把报告粘贴过来了,仅供参考 实习三 EL.JSTL及MVC 一.实习要求与目的 1.掌握标签库的使用 2.掌握EL及JSTL常用标签及方法 3.掌握MVC的编程模式,完成一个完整的信息管理系统 ...

最新文章

  1. Python基础学习之 函数
  2. 视频传输专线解决方案架构特点——Vecloud
  3. 如何使用数据库SCHEDULER来执行清归档脚本
  4. js对象与字符串相互转换
  5. stm32采集正弦波峰峰值_科研项目 | 基于STM32的永磁同步电机SVPWM控制设计
  6. CSS浮动(二)---Float
  7. python示例_Python中的缩进示例
  8. 企业管理器开启和关闭数据库时出现Error Messsage
  9. H.265编码和H.264编码的区别
  10. Linux低分辨率下时钟中断调用流程
  11. UE4如何使用下载的资源
  12. 进计算机本地安全策略的命令,Win10还原本地安全策略和使用命令行重置组策略方法...
  13. maya2018模型传递点序
  14. 授权服务器文件包,单包授权认证(SPA)fwknop之安装和演示
  15. JAVA SE (7)
  16. 创建证书与Xcode破解
  17. mybatis的left join多条件操作
  18. 释放让iBooks占用的冗余空间
  19. Google FCM推送集成及问题排查
  20. 基于逻辑回归算法的心脏病不平衡数据分类代码实现

热门文章

  1. 暗影格斗3服务器响应比预期长ios,《暗影格斗3》软登录加拿大iOS 2D剪影变3D写实人影...
  2. 大学生英文求职信 计算机,计算机专业毕业生英文求职信范文
  3. 短视频询盘系统源码,短视频系统源码,矩阵系统源码,源头源码技术
  4. 商汤被曝完成15亿美元新融资,去年营收7.2亿美元,最新估值85亿美元
  5. 先成为锦,然后才能添花
  6. 微型计算机i3,三款Core i3品牌台式电脑对比测试
  7. PC机串口调试助手与单片机通信字符问题
  8. lol国服维护可以玩别的服务器吗,LOL手游部分服务器可以裸连,国服确定6月1上线,美服直接哭出声!...
  9. 谈谈火星坐标与地图坐标的那点坑
  10. 一看就懂的vuex核心源码