python库存管理

 利用sqlite3实现库存管理,用在和物料相关的可以看看,可以登记购买厂家,可以传入照片查看,时间,规格,名称,数量,以及备注信息,规格,名称,备注,不一样没法领用

代码包涵一张icon.ico图片

直接上代码

from tkinter import *
import tkinter.messagebox
import sqlite3
import os
import sys
import csv
import time
import socket
from tkinter import filedialog
from PIL import Image,ImageTk

class Main():
    def __init__(self):
        self.C_1()
        self.list=[]
        self.Shop=0
        self.S=0
        try:
            self.root.destroy()
        except:
            pass
        try:
            self.A()
        except:
            tkinter.messagebox.showerror("涛:","出错了,请联系制作者,即将提示错误信息,请谨记!")
            tkinter.messagebox.showerror("涛:",sys.exc_info())
            
    def destroy(self):
        try:
            self.root.destroy()
        except:
            pass    
    def A(self):
        self.root=Tk()
        self.root.title("CR多功能管理系统")
        self.root.geometry('460x200+700+250')
        mainmenu = Menu(self.root)
        mainmenu.add_command(label="退出",command=self.destroy)
        mainmenu.add_command(label="导出记录",command=self.Dc)
        self.root.config(menu = mainmenu)
        self.root.iconbitmap('.\\icon.ico')
        self.root.minsize(460,150)
        self.root.maxsize(460,150)
        we = Label(self.root,text='欢迎使用',font=("微软雅黑",18),fg="grey")
        we.grid(row=0,column=0 )
        welcome = Label(self.root,text='"CR多功能管理系统"',font=("微软雅黑",20),fg="grey")
        welcome.grid(row=2 ,column=5)
        Text = Label(self.root,text="Version:1.0",font=("微软雅黑",11),fg="red")
        Text.grid(row=3,column=7)
        button1=Button(self.root,text = "材料处理",command=self.B)
        button1.place(x=40,y=105)
        button2=Button(self.root,text = "材料查询",command=self.C)
        button2.place(x=200,y=105)
        button3=Button(self.root,text = "辅助功能",command=self.D)
        button3.place(x=380,y=105)
        self.root.mainloop()

    def B(self):
        self.destroy()
        self.root=Tk()
        mainmenu = Menu(self.root)
        mainmenu.add_command(label="返回主页面",command=self.__init__)
        mainmenu.add_command(label="退出",command=self.destroy)
        self.root.config(menu = mainmenu)
        self.root.iconbitmap('.\\icon.ico')
        self.root.title("CR多功能管理系统-材料处理")
        self.root.geometry('420x170+700+250')
        self.root.minsize(420,190)
        self.root.maxsize(420,190)
        label1 = Label(self.root,text="请输入申请材料:",font=("微软雅黑",15))
        label1.place(x=0,y=0)
        self.entry1=Entry(self.root,font=("微软雅黑",15))
        self.entry1.place(x=165,y=0)
        label2 = Label(self.root,text="请输入材料规格:",font=("微软雅黑",15))
        label2.place(x=0,y=40)
        self.entry2=Entry(self.root,font=("微软雅黑",15))
        self.entry2.place(x=165,y=40)
        label3 = Label(self.root,text="请输入材料数量:",font=("微软雅黑",15))
        label3.place(x=0,y=80)
        self.entry3=Entry(self.root,font=("微软雅黑",15))
        self.entry3.place(x=165,y=80)
        label4 = Label(self.root,text="备注信息Remarks:",font=("微软雅黑",15))
        label4.place(x=0,y=120)
        self.entry4=Entry(self.root,font=("微软雅黑",15))
        self.entry4.place(x=165,y=120)
        button1=Button(self.root,text="申请",command=self.SQ)
        button1.place(x=130,y=160)
        mainmenu = Menu(self.root)
        button1=Button(self.root,text="领取",command=self.LQ)
        button1.place(x=210,y=160)
        self.root.mainloop()

    def D(self):
        self.destroy()
        self.CJ()
        self.S=0
        self.root=Tk()
        mainmenu = Menu(self.root)
        mainmenu.add_command(label="返回主页面",command=self.__init__)
        mainmenu.add_command(label="物料图片",command=self.E)
        mainmenu.add_command(label="退出",command=self.destroy)
        mainmenu.add_command(label="导出全物料信息",command=self.BOM_Dc)
        mainmenu.add_command(label="帮助点这里",command=self.BOM_BZ)
        self.root.config(menu = mainmenu)
        self.root.iconbitmap('.\\icon.ico')
        self.root.title("CR多功能管理系统-辅助功能")
        self.root.geometry('420x170+700+250')
        self.root.minsize(380,320)
        self.root.maxsize(380,320)
        label01 = Label(self.root,text="物料名称:",font=("微软雅黑",15))
        label01.place(x=0,y=0)
        self.entry01=Entry(self.root,font=("微软雅黑",15))
        self.entry01.place(x=115,y=0)
        label02 = Label(self.root,text="物料规格:",font=("微软雅黑",15))
        label02.place(x=0,y=40)
        self.entry02=Entry(self.root,font=("微软雅黑",15))
        self.entry02.place(x=115,y=40)
        label03 = Label(self.root,text="是否网购:",font=("微软雅黑",15))
        label03.place(x=0,y=80)
        CheckVar1 = IntVar()
        C1 = Checkbutton(self.root, text = "否", variable = CheckVar1,onvalue = 1,offvalue=1,command=self.shop_F)
        C1.place(x=115,y=85)
        C2 = Checkbutton(self.root, text = "是", variable = CheckVar1,onvalue = 2,offvalue=2,command=self.shop_T)
        C2.place(x=155,y=85)
        CheckVar1.set(1)
        label04 = Label(self.root,text="购买平台:",font=("微软雅黑",15))
        label04.place(x=0,y=120)
        self.entry04=Entry(self.root,font=("微软雅黑",15),state='disabled')
        self.entry04.place(x=115,y=120)
        label05 = Label(self.root,text="   店铺名:",font=("微软雅黑",15))
        label05.place(x=0,y=160)
        self.entry05=Entry(self.root,font=("微软雅黑",15),state='disabled')
        self.entry05.place(x=115,y=160)
        label06 = Label(self.root,text="      链接:",font=("微软雅黑",15))
        label06.place(x=0,y=200)
        self.entry06=Entry(self.root,font=("微软雅黑",15),state='disabled')
        self.entry06.place(x=115,y=200)
        label07 = Label(self.root,text="选择照片:",font=("微软雅黑",15))
        label07.place(x=0,y=240)
        button1=Button(self.root,text="浏览",command=self.Liu)
        button1.place(x=120,y=240)
        self.entry07=Entry(self.root,font=("微软雅黑",15),width=15,state='disabled')
        self.entry07.place(x=175,y=240)
        button1=Button(self.root,text="图片变更",command=self.BOM_P)
        button1.place(x=45,y=280)
        button1=Button(self.root,text="资料登记",command=self.BOM_DJ)
        button1.place(x=120,y=280)
        button1=Button(self.root,text="取消登记",command=self.BOM_QX)
        button1.place(x=200,y=280)
        mainmenu = Menu(self.root)
        self.root.mainloop()

    def BOM_P(self):
        self.CJ()
        if self.entry01.get()=='':
            tkinter.messagebox.showerror("涛:","请输入料件名称")
            return
        if self.entry02.get()=='':
            tkinter.messagebox.showerror("涛:","请输入料件规格")
            return
        conn = sqlite3.connect("BOM.db")
        cu=conn.cursor()
        cu.execute('select * from BOM where Name="%s" and GuiGe="%s"'%(str(self.entry01.get()),str(self.entry02.get())))
        E=cu.fetchall()
        conn.commit()
        conn.close
        if E==[]:
            tkinter.messagebox.showerror("涛:","这个物料还没有登记过!")
            return
        if E[0][6]!=[]:
            try:
                f=open(self.path,'rb')
                Photoshop=f.read()
                f.close
                for i in range(len(self.path)):
                    if self.path[i]=='.':
                        path_n=i
                        path_number=int(i)
                while True:
                    if path_number<len(self.path):
                        if path_number==path_n:
                            N=self.path[path_number]
                            path_number=path_number+1
                        else:
                            N=str(N)+self.path[path_number]
                            path_number=path_number+1
                    else:
                        break
                L="./BOM/"+str(E[0][0])+str(N)
                if os.path.exists('./BOM/'):
                    pass
                else:
                    os.makedirs('./BOM/')
                f=open(L,'wb')
                f.write(Photoshop)
                f.close
            except:
                L='暂时没有照片'
            conn = sqlite3.connect("BOM.db")
            cu=conn.cursor()
            cu.execute('Update BOM set Photoshop="%s" where Name="%s" and GuiGe="%s"'%(L,E[0][1],E[0][2]))
            conn.commit()
            conn.close
            self.path=0
            self.S=0
            tkinter.messagebox.showinfo("涛:","名称:"+str(E[0][1])+"规格:"+str(E[0][2])+",图片已经更新")

    def BOM_BZ(self):
        tkinter.messagebox.showinfo("涛:","料件名称和规格请不要输入特殊符号")
    def BOM_Dc(self):
        self.JL()
        conn = sqlite3.connect("BOM.db")
        cu=conn.cursor()
        cu.execute('select * from BOM')
        Q=cu.fetchall()
        conn.commit()
        U=0
        try:
            f = open(r'物料信息.csv','w',encoding='GB2312',newline='' "")
            wt=csv.writer(f)
            T=range(len(Q))[-1]+1
            while True:
                if U < T:
                    if U == 0:
                        wt.writerow(['编号ID','物料名称','物料规格','是否网购','网购平台','店铺名称','链接','照片路径'])
                        wt.writerow([Q[U][0],Q[U][1],[Q[U][2]],Q[U][3],Q[U][4],Q[U][5],Q[U][6],Q[U][7]])
                    else:
                        wt.writerow([Q[U][0],Q[U][1],[Q[U][2]],Q[U][3],Q[U][4],Q[U][5],Q[U][6],Q[U][7]])
                    U=U+1
                elif U >= T:
                    tkinter.messagebox.showinfo("涛:","已经导出文件'物料信息.csv',在软件根目录下")
                    break
        except:
            tkinter.messagebox.showerror("涛:","出错了,请联系制作者,即将提示错误信息,请谨记!")
            tkinter.messagebox.showerror("涛:",sys.exc_info())

    def BOM_QX(self):
        self.CJ()
        if self.entry01.get()=='':
            tkinter.messagebox.showerror("涛:","请输入料件名称")
            return
        if self.entry02.get()=='':
            tkinter.messagebox.showerror("涛:","请输入料件规格")
            return
        conn = sqlite3.connect("BOM.db")
        cu=conn.cursor()
        cu.execute('select * from BOM where Name="%s" and GuiGe="%s"'%(str(self.entry01.get()),str(self.entry02.get())))
        E=cu.fetchall()
        conn.commit()
        conn.close
        if E==[]:
            tkinter.messagebox.showerror("涛:","这个物料还没有登记过!")
            return
        conn = sqlite3.connect("BOM.db")
        cu=conn.cursor()
        cu.execute('DELETE FROM BOM WHERE Name=\"%s\" and GuiGe=\"%s\"'%(str(self.entry01.get()),str(self.entry02.get())))
        conn.commit()
        conn.close
        try:
            os.remove(E[0][7])
        except:
            pass
        tkinter.messagebox.showinfo("涛:","取消登记成功")
        

    def BOM_DJ(self):
        self.CJ()
        self.info=0
        if self.entry01.get()=='':
            tkinter.messagebox.showerror("涛:","请输入料件名称")
            return
        if self.entry02.get()=='':
            tkinter.messagebox.showerror("涛:","请输入料件规格")
            return
        if self.Shop==0:
            shop='否'
            Terrace='未网购'
            Store='未网购'
            Link='未网购'
        else:
            shop='是'
            if self.entry04.get()=='':
                tkinter.messagebox.showerror("涛:","请输入平台名称")
                return
            if self.entry05.get()=='':
                tkinter.messagebox.showerror("涛:","请输入购买店铺")
                return
            if self.entry06.get()=='':
                tkinter.messagebox.showerror("涛:","请输入购买链接")
                return
            Terrace=self.entry04.get()
            Store=self.entry05.get()
            Link=self.entry06.get()
        conn = sqlite3.connect("BOM.db")
        cu=conn.cursor()
        cu.execute('select * from BOM where Name="%s" and GuiGe="%s"'%(str(self.entry01.get()),str(self.entry02.get())))
        E=cu.fetchall()
        conn.commit()
        if E!=[]:
            tkinter.messagebox.showerror("涛:","已经有过登记内容")
            return
        try:
            conn = sqlite3.connect("BOM.db")
            cu=conn.cursor()
            cu.execute('select * from BOM')
            E=cu.fetchall()
            conn.commit()
            N=[]
            for i in range(len(E)):
                N.append(int(E[i][0]))
            number=max(N)+1
        except:
            number=1

        try:
            f=open(self.path,'rb')
            Photoshop=f.read()
            f.close
            for i in range(len(self.path)):
                if self.path[i]=='.':
                    path_n=i
                    path_number=int(i)
            while True:
                if path_number<len(self.path):
                    if path_number==path_n:
                        N=self.path[path_number]
                        path_number=path_number+1
                    else:
                        N=str(N)+self.path[path_number]
                        path_number=path_number+1
                else:
                    break
            L="./BOM/"+str(number)+str(N)
            if os.path.exists('./BOM/'):
                pass
            else:
                os.makedirs('./BOM/')
            f=open(L,'wb')
            f.write(Photoshop)
            f.close
        except:
            L='暂时没有照片'
           
        conn = sqlite3.connect('BOM.db')
        cursor = conn.cursor()
        sq='INSERT INTO BOM (ID,Name,GuiGe,Show,Terrace,Store,Link,Photoshop) VALUES ("%s","%s","%s","%s","%s","%s","%s","%s")'%(number,self.entry01.get(),self.entry02.get(),shop,Terrace,Store,Link,L)
        cursor.execute(sq)
        conn.commit()
        cursor.close
        self.path=0
        self.S=0
        self.Shop=0
        
        self.entry04['state']='normal'
        self.entry04.delete(0,END)
        if self.Shop==0:
            self.entry04['state']='disabled'
        
        self.entry05['state']='normal'
        self.entry05.delete(0,END)
        if self.Shop==0:
            self.entry05['state']='disabled'
        
        self.entry06['state']='normal'
        self.entry06.delete(0,END)
        if self.Shop==0:
            self.entry06['state']='disabled'

        self.entry07['state']='normal'
        self.entry07.delete(0,END)
        self.entry07['state']='disabled'
        tkinter.messagebox.showinfo("涛:","登记成功")
    
    def Liu(self):
        if self.S != 0:
            if tkinter.messagebox.askokcancel("涛:","已经选过图片文件,是否重新选择") == False:
                return
        root = Tk()
        root.title("涛涛正在选取文件,别打扰")
        root.withdraw()
        self.path = filedialog.askopenfilename()
        number=0
        for i in range(len(self.path)):
            i=i-i-i
            if i != 0:
                if self.path[i] != '/':
                    if i < number:
                        number=i
                elif self.path[i] == '/':
                    break
        self.S=''
        N=number-number-number
        for i in range(N):
            if str(self.S)=='':
                self.S=str(self.path[number])
                number=number+1
            else:
                self.S=str(self.S)+str(self.path[number])
                number=number+1
        self.entry07['state']='normal'
        self.entry07.delete(0,END)
        self.entry07.insert(0,self.S)
        self.entry07['state']='disabled'

    def shop_F(self):
        self.entry04['state']='disabled'
        self.entry05['state']='disabled'
        self.entry06['state']='disabled'
        self.Shop=0
    
    def shop_T(self):
        self.entry04['state']='normal'
        self.entry05['state']='normal'
        self.entry06['state']='normal'
        self.Shop=1

    
    def E(self):
        if self.entry01.get()!='':
            N=self.entry01.get()
            if self.entry02.get()!='':
                G=self.entry02.get()
                conn = sqlite3.connect("BOM.db")
                cu=conn.cursor()
                cu.execute('select * from BOM where Name="%s" and GuiGe="%s"'%(N,G))
                E=cu.fetchall()
                conn.commit()
                if E==[]:
                    tkinter.messagebox.showerror("涛:","输入的物料没有查询到")
                    return
                if E[0][7]=='暂时没有照片':
                    tkinter.messagebox.showerror("涛:","输入的物料没有照片哦")
                    return
                L=E[0][7]
                self.destroy()
                self.root=Tk()
                mainmenu = Menu(self.root)
                mainmenu.add_command(label="返回主页面",command=self.__init__)
                mainmenu.add_command(label="返回上个页面",command=self.D)
                mainmenu.add_command(label="退出",command=self.destroy)
                mainmenu.add_command(label="此物料信息",command=self.BOM_Info)
                self.info=E[0]
                self.root.config(menu = mainmenu)
                self.root.iconbitmap('.\\icon.ico')
                self.root.title("CR多功能管理系统-辅助功能-物料图片")
                self.root.geometry('800x600')
                self.root.minsize(1000,800)
                self.root.maxsize(1000,800)
                try:
                    self.canvas_root = tkinter.Canvas(self.root,width=1000,height=800)
                    self.im_root= self.get_image(L,900,700)
                    self.canvas_root.create_image(500,300,image=self.im_root)
                    self.canvas_root.place(x=0,y=0)
                    txt='名称:'+E[0][1]+'    规格:'+E[0][2]+'    是否网购:'+E[0][3]
                    txt1='购买平台:'+E[0][4]+'    店铺名:'+E[0][5]+'    链接:'+E[0][6]
                    label1 = Label(self.root,text=txt,font=("微软雅黑",28))
                    label1.place(x=0,y=690)
                    label2= Label(self.root,text=txt1,font=("微软雅黑",20))
                    label2.place(x=0,y=750)
                except:
                    tkinter.messagebox.showerror("涛:","输入的物料的照片已经被异动过了,可能被删除或者重名!")
                    return
                self.root.mainloop()
                
            else:
                tkinter.messagebox.showerror("涛:","请输入物料规格!")
        else:
            tkinter.messagebox.showerror("涛:","请输入物料名称!")

    def BOM_Info(self):
        I=self.info[0]
        n=self.info[1]
        g=self.info[2]
        w=self.info[3]
        p=self.info[4]
        d=self.info[5]
        l=self.info[6]
        tkinter.messagebox.showinfo("涛:",'编号ID:  '+I+'\n'+'名称:'+n+'  规格:'+g+'\n'+'是否网购:'+w+'  购买平台:'+p+'  店铺名:'+d+'  链接:'+l)

    def get_image(self,filename,width,height):#变更图片尺寸
        im = Image.open(filename).resize((width,height))
        return ImageTk.PhotoImage(im)
    
    def C(self):
        self.destroy()
        self.root=Tk()
        mainmenu = Menu(self.root)
        mainmenu.add_command(label="返回主页面",command=self.__init__)
        mainmenu.add_command(label="退出",command=self.destroy)
        self.root.config(menu = mainmenu)
        self.root.iconbitmap('.\\icon.ico')
        self.root.title("CR多功能管理系统-材料查询")
        self.root.geometry('965x250+400+150')
        self.root.minsize(965,250)
        self.root.maxsize(965,250)
        label1 = Label(self.root,text="时间",font=("微软雅黑",15))
        label1.place(x=100,y=0)
        label2 = Label(self.root,text="名称",font=("微软雅黑",15))
        label2.place(x=285,y=0)
        label3 = Label(self.root,text="规格",font=("微软雅黑",15))
        label3.place(x=470,y=0)
        label4 = Label(self.root,text="数量",font=("微软雅黑",15))
        label4.place(x=655,y=0)
        label5 = Label(self.root,text="备注",font=("微软雅黑",15))
        label5.place(x=840,y=0)
        label1 = Label(self.root,text="1",font=("微软雅黑",15))
        label1.place(x=7,y=30)
        label1 = Label(self.root,text="2",font=("微软雅黑",15))
        label1.place(x=7,y=65)
        label1 = Label(self.root,text="3",font=("微软雅黑",15))
        label1.place(x=7,y=100)
        label1 = Label(self.root,text="4",font=("微软雅黑",15))
        label1.place(x=7,y=135)
        label1 = Label(self.root,text="5",font=("微软雅黑",15))
        label1.place(x=7,y=170)
        label15 = Label(self.root,text="/",font=("微软雅黑",26))
        label15.place(x=800,y=192)
        self.entry11=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry11.place(x=35,y=30)
        self.entry12=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry12.place(x=220,y=30)
        self.entry13=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry13.place(x=405,y=30)
        self.entry14=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry14.place(x=590,y=30)
        self.entry15=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry15.place(x=775,y=30)
        self.entry21=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry21.place(x=35,y=65)
        self.entry22=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry22.place(x=220,y=65)
        self.entry23=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry23.place(x=405,y=65)
        self.entry24=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry24.place(x=590,y=65)
        self.entry25=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry25.place(x=775,y=65)
        self.entry31=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry31.place(x=35,y=100)
        self.entry32=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry32.place(x=220,y=100)
        self.entry33=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry33.place(x=405,y=100)
        self.entry34=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry34.place(x=590,y=100)
        self.entry35=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry35.place(x=775,y=100)
        self.entry41=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry41.place(x=35,y=135)
        self.entry42=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry42.place(x=220,y=135)
        self.entry43=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry43.place(x=405,y=135)
        self.entry44=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry44.place(x=590,y=135)
        self.entry45=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry45.place(x=775,y=135)
        self.entry51=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry51.place(x=35,y=170)
        self.entry52=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry52.place(x=220,y=170)
        self.entry53=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry53.place(x=405,y=170)
        self.entry54=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry54.place(x=590,y=170)
        self.entry55=Entry(self.root,font=("微软雅黑",15),width=15,justify='center',state = "disabled")
        self.entry55.place(x=775,y=170)
        self.CheckVar1 = IntVar()
        C1 = Checkbutton(self.root, text = "全数据读取", variable = self.CheckVar1,onvalue = 1,offvalue=1,command=self.C_1)
        C1.place(x=35,y=208)
        C2 = Checkbutton(self.root, text = "名称", variable = self.CheckVar1,onvalue = 2,offvalue=2,command=self.C_2)
        C2.place(x=125,y=208)
        C3 = Checkbutton(self.root, text = "时间", variable = self.CheckVar1,onvalue = 3,offvalue=3,command=self.C_3)
        C3.place(x=245,y=208)
        C4 = Checkbutton(self.root, text = "备注", variable = self.CheckVar1,onvalue = 4,offvalue=4,command=self.C_4)
        C4.place(x=305,y=208)
        self.CheckVar1.set(1)
        self.CheckVar2 = IntVar()
        C2_1 = Checkbutton(self.root, text = "规格", variable = self.CheckVar2,onvalue = 1,offvalue=0,command=self.C_5)
        C2_1.place(x=185,y=208)
        label6 = Label(self.root,text="查询输入",font=("微软雅黑",15))
        label6.place(x=365,y=205)
        self.entry00=Entry(self.root,font=("微软雅黑",15),width=15,justify='center')
        self.entry00.place(x=455,y=205)
        button1=Button(self.root,text="读取",command=self.dq)
        button1.place(x=650,y=205)
        button1=Button(self.root,text="上一页",command=self.ye_s)
        button1.place(x=700,y=205)
        self.entry01=Entry(self.root,font=("微软雅黑",15),width=3,justify='center',state = "disabled")
        self.entry01.place(x=760,y=205)
        self.entry02=Entry(self.root,font=("微软雅黑",15),width=3,justify='center',state = "disabled")
        self.entry02.place(x=830,y=205)
        button1=Button(self.root,text="下一页",command=self.ye_x)
        button1.place(x=880,y=205)
        self.root.mainloop()


    def C_1(self):
        self.C_list='全数据'
        try:
            if self.CheckVar2.get() == 1:
                self.CheckVar2.set(0)
        except(AttributeError):
            pass

    def C_2(self):
        self.C_list='名称'

    def C_3(self):
        self.C_list='时间'
        if self.CheckVar2.get() == 1:
            self.CheckVar2.set(0)
    
    def C_4(self):
        self.C_list='备注'
        if self.CheckVar2.get() == 1:
            self.CheckVar2.set(0)

    def C_5(self):
        self.CheckVar1.set(2)
        if self.CheckVar2.get() != 1:
            self.CheckVar2.trace_info
        if self.CheckVar2.get() == 1:
            self.C_list='规格'
        if self.CheckVar2.get() == 0:
            self.C_list='名称'



    def dq(self):
        self.CJ()
        self.list=[]
        if self.C_list=='全数据':
            conn = sqlite3.connect("test.db")
            cu=conn.cursor()
            cu.execute('select * from Student')
            Q=cu.fetchall()
            cu.close
            T=range(len(Q))[-1]+1
            for i in range(T):
                self.list.append(Q[i])
            self.P=0
            self.dq_w()
        elif self.C_list=='名称':
            conn = sqlite3.connect("test.db")
            cu=conn.cursor()
            J=self.entry00.get()
            cu.execute('select * from Student where Name like \"%s\"'%('%'+J+'%'))
            Q=cu.fetchall()
            cu.close
            if Q==[]:
                tkinter.messagebox.showerror("涛:","没有查询到相关数据")
                return
            T=range(len(Q))[-1]+1
            for i in range(T):
                self.list.append(Q[i])
            self.P=0
            self.dq_w()
        elif self.C_list=='时间':
            conn = sqlite3.connect("test.db")
            cu=conn.cursor()
            J=self.entry00.get()
            cu.execute('select * from Student where Time like \"%s\"'%('%'+J+'%'))
            Q=cu.fetchall()
            cu.close
            if Q==[]:
                tkinter.messagebox.showerror("涛:","没有查询到相关数据")
                return
            T=range(len(Q))[-1]+1
            for i in range(T):
                self.list.append(Q[i])
            self.P=0
            self.dq_w()
        elif self.C_list=='备注':
            conn = sqlite3.connect("test.db")
            cu=conn.cursor()
            J=self.entry00.get()
            cu.execute('select * from Student where Remark like \"%s\"'%('%'+J+'%'))
            Q=cu.fetchall()
            cu.close
            if Q==[]:
                tkinter.messagebox.showerror("涛:","没有查询到相关数据")
                return
            T=range(len(Q))[-1]+1
            for i in range(T):
                self.list.append(Q[i])
            self.P=0
            self.dq_w()
        elif self.C_list=='规格':
            J=self.entry00.get()
            if '&' not in J:
                tkinter.messagebox.showerror("涛:","请确认输入格式是否正确,格式(名称&规格)")
                return
            TM=0
            J_mc=''
            J_gg=''
            for i in range(len(J)):
                if str(J[i]) == '&':
                    TM=1
                if TM==0:
                   J_mc=J_mc+J[i]
                if TM==1:
                    if J[i]=='&':
                        pass
                    else:
                        J_gg=J_gg+J[i]
            conn = sqlite3.connect("test.db")
            cu=conn.cursor()
            cu.execute('select * from Student where Name like \"%s\" and GuiGe like \"%s\"'%('%'+J_mc+'%','%'+J_gg+'%'))
            Q=cu.fetchall()
            cu.close
            if Q==[]:
                tkinter.messagebox.showerror("涛:","没有查询到相关数据")
                return
            T=range(len(Q))[-1]+1
            for i in range(T):
                self.list.append(Q[i])
            self.P=0
            self.dq_w()
        else:
            print('slef.C_list='+self.C_list)


    def ye_x(self):
        if self.list==[]:
            tkinter.messagebox.showerror("涛:","没有读取数据")
            return
        self.P=self.P+5
        self.dq_w()
    
    def ye_s(self):
        if self.list==[]:
            tkinter.messagebox.showerror("涛:","没有读取数据")
            return
        self.P=self.P-5
        self.dq_w()
        

    def dq_w(self):
        self.sx()
        number=0
        for i in range(len(self.list)):
            number=number+1
        M=N=number/5
        if '.2' in str(M):
            M=M+1
        if '.4' in str(M):
            M=M+1
        if '.6' in str(M):
            M=M+1
        if '.8' in str(M):
            M=M+1
        self.entry02['state'] = 'normal'
        self.entry02.delete(0,END)
        self.entry02.insert(0,int(M))
        self.entry02['state'] = 'disabled'
        K=int(self.P/5)+1
        self.entry01['state'] = 'normal'
        self.entry01.delete(0,END)
        self.entry01.insert(0,K)
        self.entry01['state'] = 'disabled' 
        while N > 1:
            N=N-1
        if self.P<0:
            tkinter.messagebox.showerror("涛:","页数不正确")
            self.P=0
            self.dq_w()
        try:
            TXT=self.list[self.P][0]
        except(IndexError):
            tkinter.messagebox.showerror("涛:","页数不正确")
            self.dq()
            return
        self.entry11['state'] = 'normal'
        self.entry11.delete(0,END)
        self.entry11.insert(0,self.list[self.P][0])
        self.entry11['state'] = 'disabled' 
        self.entry12['state'] = 'normal'
        self.entry12.delete(0,END)
        self.entry12.insert(0,self.list[self.P][1])
        self.entry12['state'] = 'disabled' 
        self.entry13['state'] = 'normal'
        self.entry13.delete(0,END)
        self.entry13.insert(0,self.list[self.P][2])
        self.entry13['state'] = 'disabled'
        self.entry14['state'] = 'normal'
        self.entry14.delete(0,END)
        self.entry14.insert(0,self.list[self.P][3])
        self.entry14['state'] = 'disabled' 
        self.entry15['state'] = 'normal'
        self.entry15.delete(0,END)
        self.entry15.insert(0,self.list[self.P][4])
        self.entry15['state'] = 'disabled' 
        self.entry15.delete(0,END)
        try:
            self.entry21['state'] = 'normal'
            self.entry21.delete(0,END)
            self.entry21.insert(0,self.list[self.P+1][0])
            self.entry21['state'] = 'disabled' 
            self.entry22['state'] = 'normal'
            self.entry22.delete(0,END)
            self.entry22.insert(0,self.list[self.P+1][1])
            self.entry22['state'] = 'disabled' 
            self.entry23['state'] = 'normal'
            self.entry23.delete(0,END)
            self.entry23.insert(0,self.list[self.P+1][2])
            self.entry23['state'] = 'disabled'
            self.entry24['state'] = 'normal'
            self.entry24.delete(0,END)
            self.entry24.insert(0,self.list[self.P+1][3])
            self.entry24['state'] = 'disabled' 
            self.entry25['state'] = 'normal'
            self.entry25.delete(0,END)
            self.entry25.insert(0,self.list[self.P+1][4])
            self.entry25['state'] = 'disabled' 
        except(IndexError):
            self.entry21['state'] = 'normal'
            self.entry21.delete(0,END)
            self.entry21['state'] = 'disabled' 
            self.entry22['state'] = 'normal'
            self.entry22.delete(0,END)
            self.entry22['state'] = 'disabled'
            self.entry23['state'] = 'normal'
            self.entry23.delete(0,END)
            self.entry23['state'] = 'disabled'
            self.entry24['state'] = 'normal'
            self.entry24.delete(0,END)
            self.entry24['state'] = 'disabled'
            self.entry25['state'] = 'normal'
            self.entry25.delete(0,END)
            self.entry25['state'] = 'disabled' 
        try:
            self.entry31['state'] = 'normal'
            self.entry31.delete(0,END)
            self.entry31.insert(0,self.list[self.P+2][0])
            self.entry31['state'] = 'disabled' 
            self.entry32['state'] = 'normal'
            self.entry32.delete(0,END)
            self.entry32.insert(0,self.list[self.P+2][1])
            self.entry32['state'] = 'disabled' 
            self.entry33['state'] = 'normal'
            self.entry33.delete(0,END)
            self.entry33.insert(0,self.list[self.P+2][2])
            self.entry33['state'] = 'disabled'
            self.entry34['state'] = 'normal'
            self.entry34.delete(0,END)
            self.entry34.insert(0,self.list[self.P+2][3])
            self.entry34['state'] = 'disabled' 
            self.entry35['state'] = 'normal'
            self.entry35.delete(0,END)
            self.entry35.insert(0,self.list[self.P+2][4])
            self.entry35['state'] = 'disabled'
        except(IndexError):
            self.entry31['state'] = 'normal'
            self.entry31.delete(0,END)
            self.entry31['state'] = 'disabled' 
            self.entry32['state'] = 'normal'
            self.entry32.delete(0,END)
            self.entry32['state'] = 'disabled'
            self.entry33['state'] = 'normal'
            self.entry33.delete(0,END)
            self.entry33['state'] = 'disabled'
            self.entry34['state'] = 'normal'
            self.entry34.delete(0,END)
            self.entry34['state'] = 'disabled'
            self.entry35['state'] = 'normal'
            self.entry35.delete(0,END)
            self.entry35['state'] = 'disabled'
        try:
            self.entry41['state'] = 'normal'
            self.entry41.delete(0,END)
            self.entry41.insert(0,self.list[self.P+3][0])
            self.entry41['state'] = 'disabled' 
            self.entry42['state'] = 'normal'
            self.entry42.delete(0,END)
            self.entry42.insert(0,self.list[self.P+3][1])
            self.entry42['state'] = 'disabled' 
            self.entry43['state'] = 'normal'
            self.entry43.delete(0,END)
            self.entry43.insert(0,self.list[self.P+3][2])
            self.entry43['state'] = 'disabled'
            self.entry44['state'] = 'normal'
            self.entry44.delete(0,END)
            self.entry44.insert(0,self.list[self.P+3][3])
            self.entry44['state'] = 'disabled' 
            self.entry45['state'] = 'normal'
            self.entry45.delete(0,END)
            self.entry45.insert(0,self.list[self.P+3][4])
            self.entry45['state'] = 'disabled'
        except(IndexError):
            self.entry41['state'] = 'normal'
            self.entry41.delete(0,END)
            self.entry41['state'] = 'disabled' 
            self.entry42['state'] = 'normal'
            self.entry42.delete(0,END)
            self.entry42['state'] = 'disabled'
            self.entry43['state'] = 'normal'
            self.entry43.delete(0,END)
            self.entry43['state'] = 'disabled'
            self.entry44['state'] = 'normal'
            self.entry44.delete(0,END)
            self.entry44['state'] = 'disabled'
            self.entry45['state'] = 'normal'
            self.entry45.delete(0,END)
            self.entry45['state'] = 'disabled'
        try:
            self.entry51['state'] = 'normal'
            self.entry51.delete(0,END)
            self.entry51.insert(0,self.list[self.P+4][0])
            self.entry51['state'] = 'disabled' 
            self.entry52['state'] = 'normal'
            self.entry52.delete(0,END)
            self.entry52.insert(0,self.list[self.P+4][1])
            self.entry52['state'] = 'disabled' 
            self.entry53['state'] = 'normal'
            self.entry53.delete(0,END)
            self.entry53.insert(0,self.list[self.P+4][2])
            self.entry53['state'] = 'disabled'
            self.entry54['state'] = 'normal'
            self.entry54.delete(0,END)
            self.entry54.insert(0,self.list[self.P+4][3])
            self.entry54['state'] = 'disabled' 
            self.entry55['state'] = 'normal'
            self.entry55.delete(0,END)
            self.entry55.insert(0,self.list[self.P+4][4])
            self.entry55['state'] = 'disabled' 
        except(IndexError):
            self.entry51['state'] = 'normal'
            self.entry51.delete(0,END)
            self.entry51['state'] = 'disabled' 
            self.entry52['state'] = 'normal'
            self.entry52.delete(0,END)
            self.entry52['state'] = 'disabled'
            self.entry53['state'] = 'normal'
            self.entry53.delete(0,END)
            self.entry53['state'] = 'disabled'
            self.entry54['state'] = 'normal'
            self.entry54.delete(0,END)
            self.entry54['state'] = 'disabled'
            self.entry55['state'] = 'normal'
            self.entry55.delete(0,END)
            self.entry55['state'] = 'disabled'



    def sx(self):
        self.entry11.delete(0,END)
        self.entry12.delete(0,END)
        self.entry13.delete(0,END)
        self.entry14.delete(0,END)
        self.entry15.delete(0,END)
        self.entry21.delete(0,END)
        self.entry22.delete(0,END)
        self.entry23.delete(0,END)
        self.entry24.delete(0,END)
        self.entry25.delete(0,END)
        self.entry31.delete(0,END)
        self.entry32.delete(0,END)
        self.entry33.delete(0,END)
        self.entry34.delete(0,END)
        self.entry35.delete(0,END)
        self.entry41.delete(0,END)
        self.entry42.delete(0,END)
        self.entry43.delete(0,END)
        self.entry44.delete(0,END)
        self.entry45.delete(0,END)
        self.entry51.delete(0,END)
        self.entry52.delete(0,END)
        self.entry53.delete(0,END)
        self.entry54.delete(0,END)
        self.entry55.delete(0,END)
            
    def CJ(self):
        if os.path.exists("test.db"):
            pass
        else:
            conn = sqlite3.connect('test.db')
            cursor = conn.cursor()
            sql = 'CREATE TABLE Student(Time TEXT NOT NULL,Name TEXT NOT NULL, GuiGe TEXT,Number INT Number NOT NULL,Remark TEXT)'
            cursor.execute(sql)
            conn.commit()
            cursor.close
        if os.path.exists("BOM.db"):
            pass
        else:
            conn = sqlite3.connect('BOM.db')
            cursor = conn.cursor()
            sql = 'CREATE TABLE BOM(ID TEXT NOT NULL,Name TEXT NOT NULL,GuiGe TEXT NOT NULL, Show TEXT,Terrace TEXT,Store TEXT,Link TXET,Photoshop TEXT)'
            cursor.execute(sql)
            conn.commit()
            cursor.close
            print('BOM已经创建')
            print(sql)

    def SQBJ(self):
        conn = sqlite3.connect("test.db")
        cu=conn.cursor()
        cu.execute('select * from Student')
        Q=cu.fetchall()
        conn.commit()
        U=-1
        i=self.entry1.get()
        n=self.entry2.get()
        r=self.entry3.get()
        R=self.entry4.get()
        self.number1 = ''
        self.Time1=time.strftime('%y-%m-%d')
        self.SQBJ_number=0
        try:
            T=range(len(Q))[-1]+1
            while True:
                U=U+1
                if U < T:
                    if Q[U][0] == self.Time1:
                        if Q[U][1] == str(i):
                            if Q[U][2] == str(n):
                                if Q[U][4] == str(R):
                                    self.number1 = int(Q[U][3])+int(r)
                                    self.Time1=Q[U][0]
                                    cu.execute('DELETE FROM Student WHERE Name=\"%s\" and GuiGe=\"%s\" and Remark=\"%s\"'%(i,n,R))
                                    conn.commit()
                                    self.SQBJ_number=int(Q[U][3])
                else:
                    break
        except:
            pass
        conn.close

    def LQBJ(self):
        conn = sqlite3.connect("test.db")#连接数据库
        cu=conn.cursor()#获取游标
        cu.execute('select * from Student')#执行查询
        Q=cu.fetchall()#获取查询记录
        conn.commit()#提交,也可以不提交
        conn.close
        U=-1#定义一个U
        i=self.entry1.get()#获取材料名
        n=self.entry2.get()#获取材料规格
        r=self.entry3.get()#获取材料数量
        R=self.entry4.get()#获取材料备注
        self.number1 = ''#定义材料最终数量
        try:#尝试运行
            T=range(len(Q))[-1]+1#获取查询记录多少条
            list=[]#定义一个列表存放符合条件的数据
            while True:#开启循环,查询到符合条件的记录
                U=U+1#下一条数据
                if U < T:#如果没有超出获取的查询条数
                    if Q[U][1] == str(i):#条件一:材料名称一致
                        if Q[U][2] == str(n):#条件二:材料规格一致
                            if Q[U][4] == str(R):#条件三:备注信息一致
                                list.append(Q[U])#将符合条件的记录到list里
                else:#当超出查询条数时
                    break#结束循环
            while True:#开启循环
                self.list_time=[0,0]#定义list_time,两个数据,左边表示定位数据位置,右边表示天数
                for i in range(len(list)):#第二次循环筛选,寻找时间距离最远的一条记录
                    s1=list[i][0]#定义s1,读取符合条数的时间,数据库时间
                    S1=time.strptime(s1,'%y-%m-%d')#读取记录,更改时间格式,方便后续比较
                    s2=time.strftime('%y-%m-%d')#定义s2,读取系统时间
                    S2=time.strptime(s2,'%y-%m-%d')#现在时间
                    day=0#定义天数
                    if S2[0] == S1[0]:#同年
                        if S2[1]!=S1[1]:#同年不同月
                            Ma = S1[1]#数据库月数
                            Ma=Ma+1#数据库月数加一
                            #记录时间和系统实际时间中间相差的月数,计算天数
                            while Ma < S2[1]:#加一后和现在系统时间的月数比较,小于的话开启循环
                                if Ma in [1,3,5,7,8,10,12]:#判断数据库月数+1后是否是31天
                                    day=day+31#天数加31
                                    Ma=Ma+1#月数+1,继续循环
                                elif Ma in [4,6,9,11]:#判断数据库月数+1后是否是30天
                                    day=day+30#天数加30
                                    Ma=Ma+1#月数+1,继续循环
                                elif Ma == str(2):#是不是2月
                                    day=day+28 #二月只有28天,不考虑29天
                                    Ma=Ma+1#月数+1
                            #记录时间到月末的剩余天数计算
                            if S1[1] in [1,3,5,7,8,10,12]:
                                day=31-S1[2]+day
                            elif S1[1] in [4,6,9,11]:
                                day=30-S1[2]+day
                            elif S1[1]==str(2):
                                day=28-S1[2]+day
                            #实际时间到月初的天数计算
                            if S2[1] in [1,3,5,7,8,10,12]:
                                day=S2[2]+day
                            elif S2[1] in [4,6,9,11]:
                                day=S2[2]+day
                            elif S2[1]==str(2):
                                day=S2[2]+day
                            #比较时间,谁更更远
                            if self.list_time[1]<day:#如果这条记录的时间更久
                                self.list_time=[i,day]#定位list的第几条数据,间隔多少天,覆盖旧记录
                                self.T=s1#组合成记录时间
                        elif S2[1]==S1[1]:#同年同月
                            if S2[2]==S1[2]:
                                s2=time.strftime('%y-%m-%d')#定义s2,读取系统时间
                                S2=time.strptime(s2,'%y-%m-%d')
                                self.T=s1
                                self.number1=list[i][3]-int(r)
                                return
                            day=int(S2[2])-int(S1[2])
                            if self.list_time[1]<day:
                                self.list_time=[i,day]
                                self.T=s1
                            
                    elif S2[0]>S1[0]:#不同年
                        if S1[1]==str(12):
                            Ma=S2[1]-1
                            while Ma > 0:
                                if Ma in [1,3,5,7,8,10,12]:
                                    day=31+day
                                    Ma=Ma-1
                                elif Ma in [4,6,9,11]:
                                    day=30+day
                                    Ma=Ma-1
                                elif Ma==str(2):
                                    day=28+day
                                    Ma=Ma-1
                            if S2[1] in [1,3,5,7,8,10,12]:
                                day=S2[2]+day
                            elif S2[1] in [4,6,9,11]:
                                day=S2[2]+day
                            elif S2[1]==str(2):
                                day=S2[2]+day
                            if S1[1] in [1,3,5,7,8,10,12]:
                                day=31-S1[2]+day
                            elif S1[1] in [4,6,9,11]:
                                day=31-S1[2]+day
                            elif S1[1]==str(2):
                                day=31-S1[2]+day
                            if self.list_time[1]<day:
                                self.list_time=[i,day]
                                self.T=s1
                        elif S1[1]!=str(12):
                            Ma=int(S2[1])-1
                            #while Ma > 0:
                            for Q in range((12-Ma)):
                                if Ma in [1,3,5,7,8,10,12]:
                                    day=31+day
                                elif Ma in [4,6,9,11]:
                                    day=30+day
                                elif Ma==str(2):
                                    day=28+day
                            Ma=int(S1[1])+1
                            time.sleep(10)
                            #while Ma <= 12:
                            for Q in range(Ma):
                                if Ma in [1,3,5,7,8,10,12]:
                                    day=31+day
                                    Ma=Ma+1
                                elif Ma in [4,6,9,11]:
                                    day=30+day
                                    Ma=Ma+1
                                elif Ma==str(2):
                                    day=28+day
                                    Ma=Ma+1
                            if S2[1] in [1,3,5,7,8,10,12]:
                                day=S2[2]+day
                            elif S2[1] in [4,6,9,11]:
                                day=S2[2]+day
                            elif S2[1]==str(2):
                                day=S2[2]+day
                            if S1[1] in [1,3,5,7,8,10,12]:
                                day=31-S1[2]+day
                            elif S1[1] in [4,6,9,11]:
                                day=31-S1[2]+day
                            elif S1[1]==str(2):
                                day=31-S1[2]+day
                            if self.list_time[1]<day:
                                self.list_time=[i,day]
                                self.T=s1
                self.number1 = int(list[self.list_time[0]][3])-int(r)#最终材料数量
                if self.number1 < 0:
                    tkinter.messagebox.showerror("涛:","领取后数量不正常,请查询后处理")
                    return
                break#结束循环
        except(IndexError):
            pass
        except:#如果报错
            conn.close
            tkinter.messagebox.showerror("涛:","出错了,请联系制作者,即将提示错误信息,请谨记!")
            tkinter.messagebox.showerror("涛:",sys.exc_info())


    def LQ(self):
        self.CJ()#如果不存在建立数据库
        self.LQBJ()#前置工作
        if self.entry3.get()!='':#材料数量不能为空
            if self.entry2.get()!='':#材料规格不能为空
                if self.entry1.get()!='':#材料名称不能为空
                    i=self.entry1.get()#获取材料名称
                    n=self.entry2.get()#获取材料规格
                    if self.entry4.get() == '':#如果没有备注
                        R=''
                    else: #如果有备注
                        R=self.entry4.get()
                    if self.number1 == '':#如果前置工作报错,这个就没有数据
                        tkinter.messagebox.showerror("涛:","库存没有相关材料,无法领用")
                        return#中断
                    else:
                        r = self.number1
                    Time1=self.T#获取时间
                    if self.number1 == 0:
                        conn = sqlite3.connect("test.db")#连接数据库
                        cu=conn.cursor()#获取游标
                        L=self.entry3.get()
                        cu.execute('DELETE FROM Student WHERE Time=\"%s\" and Name=\"%s\" and GuiGe=\"%s\" and Remark=\"%s\" and Number=\"%s\"'%(Time1,i,n,R,L))
                        conn.commit()#提交
                        conn.close#关闭数据库连接
                        self.JL_W(Time1,i,n,L,int(self.entry3.get()),R,'领取')
                        tkinter.messagebox.showinfo("涛:","领用登记成功")
                        return#结束
                    elif self.number1 < 0:
                        return
                    try:#不为0,开始尝试运行
                        conn = sqlite3.connect('test.db')#连接数据库
                        cursor = conn.cursor()#获取游标
                        #sq='INSERT INTO Student (Time,Name,GuiGe,Number,Remark) VALUES (\"%s\",\"%s\",\"%s\",\"%s\",\"%s\")'%(Time1,i,n,r,R)#插入最新数据
                        #sq='update Student set Number=\"%s\" where Time=\"%s\" and Name=\"%s\"and GuiGe=\"%s\" and Remark=\"%s\"'%(r,Time1,i,n,R)#更新数据
                        cursor.execute('DELETE FROM Student WHERE Time=\"%s\" and Name=\"%s\" and GuiGe=\"%s\" and Remark=\"%s\"'%(Time1,i,n,R))
                        conn.commit()#提交
                        sq='INSERT INTO Student (Time,Name,GuiGe,Number,Remark) VALUES (\"%s\",\"%s\",\"%s\",\"%s\",\"%s\")'%(Time1,i,n,r,R)
                        cursor.execute(sq)#执行数据库命令
                        conn.commit()#提交
                        cursor.close#关闭数据库连接
                        r=int(self.entry3.get())+r
                        self.JL_W(Time1,i,n,int(self.entry3.get()),r,R,'领取')
                        self.entry1.delete(0,END)#清空输入框
                        self.entry2.delete(0,END)
                        self.entry3.delete(0,END)
                        self.entry4.delete(0,END)
                        tkinter.messagebox.showinfo("涛:","领用登记成功")
                    except:
                        tkinter.messagebox.showerror("涛:","出错了,请联系制作者,即将提示错误信息,请谨记!")#报错
                        tkinter.messagebox.showerror("涛:",sys.exc_info())
                else:
                    tkinter.messagebox.showerror("涛:","请输入材料名称")
            else:
                tkinter.messagebox.showerror("涛:","请输入材料规格")
        else:
            tkinter.messagebox.showerror("涛:","请输入材料数量")

    def SQ(self):
        self.CJ()
        self.SQBJ()
        if self.entry3.get()!='':
            if self.entry2.get()!='':
                if self.entry1.get()!='':
                    i=self.entry1.get()
                    n=self.entry2.get()
                    if self.entry4.get() == '':
                        R=''
                    else: 
                        R=self.entry4.get()
                    if self.number1 == '':
                        r = self.entry3.get()
                    else:
                        r = self.number1
                    try:
                        conn = sqlite3.connect('test.db')
                        cursor = conn.cursor()
                        sq='INSERT INTO Student (Time,Name,GuiGe,Number,Remark) VALUES (\"%s\",\"%s\",\"%s\",\"%s\",\"%s\")'%(self.Time1,i,n,r,R)
                        cursor.execute(sq)
                        conn.commit()
                        cursor.close
                        self.JL_W(self.Time1,i,n,self.entry3.get(),self.SQBJ_number,R,'申请')
                        self.entry1.delete(0,END)
                        self.entry2.delete(0,END)
                        self.entry3.delete(0,END)
                        self.entry4.delete(0,END)
                        tkinter.messagebox.showinfo("涛:","申请登记成功")
                    except:
                        tkinter.messagebox.showerror("涛:","出错了,请联系制作者,即将提示错误信息,请谨记!")
                        tkinter.messagebox.showerror("涛:",sys.exc_info())
                else:
                    tkinter.messagebox.showerror("涛:","请输入材料名称")
            else:
                tkinter.messagebox.showerror("涛:","请输入材料规格")
        else:
            tkinter.messagebox.showerror("涛:","请输入材料数量")

    def ex(self):
        if tkinter.messagebox.askokcancel("涛:","确定退出?"):
            os._exit(0)
    def JL(self):
        if os.path.exists("JL.db"):
            conn = sqlite3.connect('JL.db')
        else:    
            conn = sqlite3.connect('JL.db')
            cursor = conn.cursor()
            sql = 'CREATE TABLE JL(date TEXT,time TEXT,Time1 TEXT,Name TEXT,Guige TEXT,Number1 TEXT,Number2 TEXT,Remark TEXT,Use TEXT,Host TEXT,IP TEXT)'
            cursor.execute(sql)
            conn.commit()
            cursor.close
    def JL_W(self,Time,Name,Guige,Number1,Number2,Remark='空',Use='未记录'):
        self.JL()
        hostname=socket.gethostname()
        IP=socket.gethostbyname(hostname)
        Time1=time.strftime('%y-%m-%d')
        Time2=time.strftime('%H:%M:%S')
        conn = sqlite3.connect("JL.db")
        cu=conn.cursor()
        R='INSERT INTO JL (date,time,Time1,Name,Guige,Number1,Number2,Remark,Use,Host,IP) VALUES (\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\")'%(Time1,Time2,Time,Name,Guige,Number1,Number2,Remark,Use,hostname,IP)
        cu.execute(R)
        conn.commit()
        cu.close

    def Dc(self):
        self.JL()
        conn = sqlite3.connect("JL.db")
        cu=conn.cursor()
        cu.execute('select * from JL')
        Q=cu.fetchall()
        conn.commit()
        U=0
        try:
            f = open(r'操作记录.csv','w',encoding='GBK',newline='' "")
            wt=csv.writer(f)
            T=range(len(Q))[-1]+1
            while True:
                if U < T:
                    if U == 0:
                        wt.writerow(['日期','时间','批次申请时间','材料名称','材料规格','操作数量','变更前数量','备注','操作类型','变更主机名称','变更主机IP'])
                        wt.writerow([Q[U][0],Q[U][1],Q[U][2],Q[U][3],Q[U][4],Q[U][5],Q[U][6],Q[U][7],Q[U][8],Q[U][9],Q[U][10]])
                    else:
                        wt.writerow([Q[U][0],Q[U][1],Q[U][2],Q[U][3],Q[U][4],Q[U][5],Q[U][6],Q[U][7],Q[U][8],Q[U][9],Q[U][10]])
                    U=U+1
                elif U >= T:
                    tkinter.messagebox.showinfo("涛:","已经导出文件'操作记录.csv',在软件根目录下")
                    break
        except:
            tkinter.messagebox.showerror("涛:","出错了,请联系制作者,即将提示错误信息,请谨记!")
            tkinter.messagebox.showerror("涛:",sys.exc_info())
        
        
T=Main()

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值