python实现商品进销存管理系统

本文实例为大家分享了python实现商品进销存管理系统,基于python,MySQL,tkinter

import pymysql #导入数据库模块
import tkinter #导入相关的窗体模块
import os #利用os模块可以方便定义完整路径
import  tkinter.messagebox#实现提示框的组件
import  tkinter.simpledialog#简单对话框
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import threading
import pandas as pd  #对数据进行访问
import  sys  #与操作系统交互
def get_resources_path(relative_path):#利用此函数实现资源路径的定位
    if getattr(sys,\"frozen\",False):
        base_path=sys._MEIPASS #获取临时资源
    else:
        base_path=os.path.abspath(\".\") #获取当前路径
    return os.path.join(base_path,relative_path)  #获得绝对路径
LOGO_PATH=get_resources_path(os.path.join(\"resources\",\'shop_logo.ico\'))  #\'resources\'+os.sep + \'shop_logo.ico\'#logo文件路径
IMAGES_PATH=get_resources_path(os.path.join(\"resources\",\'background.png\'))#\'resources\' +os.sep+ \'background.png\'#图像文件路径
Warehouse_PATH=get_resources_path(os.path.join(\"resources\",\'店铺.png\'))#\'resources\' +os.sep+ \'店铺.png\'#图像文件路径
COMMODITY_DELETE_PATH=get_resources_path(os.path.join(\"resources\",\'店铺修改背景图.png\'))#\'resources\' +os.sep+ \'店铺修改背景图.png\'#图像文件路径
WORDCLOUD_PATH=\'词云图.png\'
EXCEL_COMMODITY=get_resources_path(os.path.join(\"resources\",\'商品数据.xlsx\'))#\'resources\'+ os.sep + \'商品数据.xlsx\'#商品数据的路径
EXCEL_STORE=get_resources_path(os.path.join(\"resources\",\'店铺.xlsx\'))#\'resources\'+ os.sep + \'店铺.xlsx\'#店铺数据的路径
EXCEL_WAREHOUSE=get_resources_path(os.path.join(\"resources\",\'库房.xlsx\'))#\'resources\'+ os.sep + \'库房.xlsx\'#库房数据的路径
EXCEL_CUSTOMER=get_resources_path(os.path.join(\"resources\",\'顾客数据.xlsx\'))#\'resources\'+ os.sep + \'顾客数据.xlsx\'#顾客数据的路径
class MainForm: #定义窗体类,父类
    def __init__(self):#构造窗体
        self.root=tkinter.Tk()#创建一个窗体
        self.root.title(\"露露小卖店\")#设置标题
        self.root.iconbitmap(LOGO_PATH)#设置logo资源
        self.root.geometry(\'680x500+150+50\')#初始化窗口大小
        self.root.resizable(False,False) #固定窗口大小
    def worcloud_s(self,text):    #生产词云图片
        wc= WordCloud(
            collocations=False,
            font_path=r\"C:/Windows/Fonts/simfang.ttf\",
            background_color=\"black\",
            width=600,
            height=300,
            max_words=50).generate(text)
        wc.to_image()
        wc.to_file(\"词云图.png\")
class The_login(MainForm):  #登录窗口
    def __init__(self):
        super().__init__()
        photo = tkinter.PhotoImage(file=IMAGES_PATH)  # 设置图像资源
        tkinter.Label(self.root, image=photo,width=680,height=500).place(x=0,y=0)
        tkinter.Label(self.root, text=\"用户名\", font=(\"黑体\", 20)).place(x=150,y=200)
        self.entry1 = tkinter.Entry(self.root,font=(\"黑体\", 20))
        self.entry1.place(x=300,y=200)
        tkinter.Label(self.root, text=\"密码\", font=(\"黑体\", 20)).place(x=150,y=250)
        self.entry2 = tkinter.Entry(self.root,font=(\"黑体\", 20),show=\"*\")
        self.entry2.place(x=300,y=250)
        tkinter.Button(self.root, text=\"店铺登录\",command=self.bidui, width=15, font=(\"微软雅黑\", 10)).place(x=150,y=300)
        tkinter.Button(self.root, text=\"退出\", command=self.root.quit, width=15, font=(\"微软雅黑\", 10)).place(x=450, y=300)
        tkinter.Button(self.root, text=\"导入店铺信息\", command=self.store_in, width=10, font=(\"微软雅黑\", 10)).place(x=550, y=450)
        tkinter.Button(self.root, text=\"店铺注册\", command=self.Registered, width=10, font=(\"微软雅黑\", 10)).place(x=0, y=450)
        self.root1=self.root.mainloop()
      #对用户账号,密码进行查询,比对
    def bidui(self):
        global global_id
        def find_store():#查找店铺账号和密码数据
            cursor=conn.cursor()
            sql=\'select * from store where store_id=\"%s\" and store_password=\"%s\"\'%(self.entry1.get(),self.entry2.get())
            cursor.execute(sql)
            conn.commit()
            cursor.close()
            return cursor.fetchone()
        try :
            if bool(find_store())==1:
                print(\"登录成功\")
                global_id=self.entry1.get()
                self.root.destroy()
                The_store()
            else:
                labell = tkinter.Label(self.root, text=\'登陆失败!\', font=(\"黑体\", 10))  ##
                labell.place(x=300, y=0)
        except:
            pass
    def store_in(self):
        def remove_store_all():  # 清除店铺中的数据表数据
            cursor = conn.cursor()  # 创建游标
            cursor.execute(\'delete from store\')
            conn.commit()  # 提交
            cursor.close()  # 关闭游标
        def store_Add():  # 向店铺的表中导入数据
            cursor = conn.cursor()  # 创建游标
            for co in range(len(df[\"店铺账号\"])-1):
                print(co)
                try:
                    sql = \'insert into store values (%s,%s,%s,%s,%s,%s,%s);\'  # 添加数据
                    cursor.execute(sql,(
                        df[\"店铺账号\"][co],
                        df[\"店铺密码\"][co],
                        df[\"店铺名称\"][co],
                        df[\"店铺地址\"][co],
                        df[\"店铺电话\"][co],
                        df[\"店主\"][co],
                        df[\"盈亏\"][co]))  # 执行添加数据
                    conn.commit()  # 提交
                except:
                    print(df[\"店铺名称\"][co])
            cursor.close()  # 关闭游
        df = pd.read_excel(EXCEL_STORE)
        remove_store_all()
        store_Add()
        #——————————————————————-——————————店铺注册------------------------------
    def Registered(self):  #店铺注册信息
        def remove_prompt():  # 清空提示信息
            Entry_prompt.delete(0.0, tkinter.END)
            Entry_prompt.update()
            Entry_prompt.insert(tkinter.INSERT,\"———————————店铺注册——————————\")
        def store_add():#添加店铺信息
            if Entry_user.get()==\'\':  #用户名不能为空
                remove_prompt()
                Entry_prompt.insert(tkinter.INSERT, \"用户名输入为空\\n\")
            elif Entry_password.get()==\'\': #密码不能为空
                remove_prompt()
                Entry_prompt.insert(tkinter.INSERT, \"密码输入为空\\n\")
            elif Entry_name.get() == \'\':  # 名称不能为空
                remove_prompt()
                Entry_prompt.insert(tkinter.INSERT, \"店铺名称输入为空\\n\")
            elif Entry_address.get() == \'\':  # 地址不能为空
                remove_prompt()
                Entry_prompt.insert(tkinter.INSERT, \"店铺地址输入为空\\n\")
            elif Entry_phon.get() == \'\':  # 电话不能为空
                remove_prompt()
                Entry_prompt.insert(tkinter.INSERT, \"店铺电话输入为空\\n\")
            elif Entry_master.get() == \'\':  # 店主不能为空
                remove_prompt()
                Entry_prompt.insert(tkinter.INSERT, \"店主输入为空\\n\")
            else:
                remove_prompt()
                cursor = conn.cursor()  # 创建游标
                try:
                    sql = \'insert into store values (%s,%s,%s,%s,%s,%s,%s);\'  # 添加数据
                    cursor.execute(sql, (
                        Entry_user.get(),  #账号
                        Entry_password.get(),#密码
                        Entry_name.get(),#名称
                        Entry_address.get(),#地址
                        Entry_phon.get(),#电话
                        Entry_master.get(),#店主
                        0       )#盈亏
                                   )  # 执行添加数据
                    conn.commit()  # 提交
                    cursor.execute(\'select * from store where store_id=\"%s\";\'%(Entry_user.get()))
                    conn.commit()
                    Entry_prompt.insert(tkinter.INSERT, \"店铺注册成功\\n\")
                    Entry_prompt.insert(tkinter.INSERT, cursor.fetchall())
                except:
                    Entry_prompt.insert(tkinter.INSERT, \"店铺账号已存在,请从新输入:\\n\")
                cursor.close()  # 关闭游
        root=tkinter.Toplevel()   #创建一个附属窗口
        root.title(\"露露小卖店\")   #标题
        root.iconbitmap(LOGO_PATH)  # 设置logo资源
        root.geometry(\'380x400+150+50\')  # 初始化窗口大小
        root.resizable(False, False)  # 固定窗口大小
        tkinter.Button(root,text=\"确认添加\",command=store_add,font=(\"微软雅黑\", 10)).place(x=30,y=360)
        tkinter.Button(root, text=\"退出\", command=root.destroy, font=(\"微软雅黑\", 10)).place(x=320, y=360)
       #店铺账号    店铺密码    店铺名称    店铺地址    店铺电话    店主
        tkinter.Label(root,text=\"店铺账号\",font=(\"微软雅黑\", 10)).place(x=60,y=120)
        tkinter.Label(root, text=\"店铺密码\", font=(\"微软雅黑\", 10)).place(x=60, y=160)
        tkinter.Label(root, text=\"店铺名称\", font=(\"微软雅黑\", 10)).place(x=60, y=200)
        tkinter.Label(root, text=\"店铺地址\", font=(\"微软雅黑\", 10)).place(x=60, y=240)
        tkinter.Label(root, text=\"店铺电话\", font=(\"微软雅黑\", 10)).place(x=60, y=280)
        tkinter.Label(root, text=\"店    主\", font=(\"微软雅黑\", 10)).place(x=60, y=320)
        Entry_prompt = tkinter.Text(root, width=44,height=5,font=(\"微软雅黑\", 10))
        Entry_prompt.place(x=12, y=10)
        Entry_user=tkinter.Entry(root,font=(\"微软雅黑\", 10))
        Entry_user.place(x=120,y=120)
        Entry_password = tkinter.Entry(root, font=(\"微软雅黑\", 10))
        Entry_password.place(x=120, y=160)
        Entry_name = tkinter.Entry(root, font=(\"微软雅黑\", 10))
        Entry_name.place(x=120, y=200)
        Entry_address = tkinter.Entry(root, font=(\"微软雅黑\", 10))
        Entry_address.place(x=120, y=240)
        Entry_phon = tkinter.Entry(root, font=(\"微软雅黑\", 10))
        Entry_phon.place(x=120, y=280)
        Entry_master = tkinter.Entry(root, font=(\"微软雅黑\", 10))
        Entry_master.place(x=120, y=320)
        remove_prompt()
class The_store(MainForm):#主页面设置
    def __init__(self):
        super().__init__()
        self.Label=tkinter.Label(self.root,text=\"欢迎光临露露小卖店\",bg=\'#233233\',width=32,height=10,
                                     fg=\'#ffffff\',font=(\"黑体\",30))
        self.Label.place(x=20,y=0)
        self.button1 = tkinter.Button(self.root, text=\"初始化\", command=self.Ininia, height=3, width=10).place(x=0,y=430)
        self.button2 = tkinter.Button(self.root, text=\"商品\", command=self.Commodity_switch, height=3, width=10).place(x=150,y=430)
        self.button3 = tkinter.Button(self.root, text=\"店铺\", command=self.Shop_switch, height=3, width=10).place(x=300,y=430)
        self.button4 = tkinter.Button(self.root, text=\"库房\", command=self.Warehouse_switch, height=3, width=10).place(x=450,y=430)
        self.button1 = tkinter.Button(self.root, text=\"退出\", command=quit, height=3, width=10).place(x=600,y=430)
        self.root.mainloop()
    def  Commodity_switch(self):  #商品
        self.root.destroy()  #关闭主界面
        Commodity_From()   #进入商品界面
    def Shop_switch(self):   #店铺
        self.root.destroy()  # 关闭主界面
        Shop_From()
    def Warehouse_switch(self):  #库房
        self.root.destroy()  # 关闭主界面
        Warehouse()
    def Ininia(self):   #具体初始化
        self.Label.place_forget()
        text=tkinter.Text(self.root,width=80,height=20,font=(\'微软雅黑\', 10))
        scroll = tkinter.Scrollbar()
        scroll.pack(side=tkinter.RIGHT, fill=tkinter.Y)
        text.place(x=20, y=20)
        scroll.config(command=text.yview)
        text.config(yscrollcommand=scroll.set)
        text.insert(tkinter.INSERT,\"----------数据加载开始---------\\n\")
        INn=Initialize()
        def After_xx():
            for i in INn.Accord():
               text.insert(tkinter.INSERT,i)
               text.insert(tkinter.INSERT, \'\\n\')
            text.insert(tkinter.END,\"数据加载完毕\")
        self.root.after(100,After_xx())
class Initialize:  #对数据库进行初始化
    def __init__(self):
        self.df_commodity=pd.read_excel(EXCEL_COMMODITY)
        self.df_warehouse = pd.read_excel(EXCEL_WAREHOUSE)
        self.df_customer = pd.read_excel(EXCEL_CUSTOMER)
        self.remove_all()
        self.all_refresh()
    def remove_all(self):  #清除数据表数据
        cursor = conn.cursor()   #创建游标
        cursor.execute(\'delete from commodity;\')   #清除商品数据
        cursor.execute(\'delete from warehouse;\')       #清除库房信息
        cursor.execute(\'delete from customer\') #清除顾客信息
        conn.commit()    #提交
        cursor.close()  #关闭游标
    def all_refresh(self):
        def commodity_Add():#向商品commodity的表中导入数据\'DW-1201090311\',\'其它蔬菜\',4,2,20210101,\'2年\',1,8
            global global_id
            cursor = conn.cursor()   #创建游标
            for co in range(len(self.df_commodity[\"商品编码\"])):
                try:
                    sql = \'insert into commodity values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);\'#添加数据
                    cursor.execute(sql, (
                    self.df_commodity[\"商品编码\"][co],
                    self.df_commodity[\"商品名称\"][co],
                    self.df_commodity[\"商品售价\"][co],
                    self.df_commodity[\"商品进价\"][co],
                    self.df_commodity[\"生产日期\"][co],
                    self.df_commodity[\"保质期\"][co],
                    self.df_commodity[\"商品规格\"][co],
                    self.df_commodity[\"销售数量\"][co],
                    global_id,
                    self.df_commodity[\"库房编号\"][co],
                    None)
                                   )  # 执行添加数据
                except:
                    print(self.df_commodity[\"商品编码\"][co])
            conn.commit()  # 提交
            cursor.close()  # 关闭游标
        def warehouse_Add():#向库房的表中导入数据\'DW-1201090311\',\'其它蔬菜\',4,2,20210101,\'2年\',1,8
            global global_id
            cursor = conn.cursor()   #创建游标
            for co in range(len(self.df_warehouse[\"库房编号\"])):
                try:
                    sql = \'insert into warehouse values (%s,%s,%s,%s,%s,%s,%s);\'#添加数据
                    cursor.execute(sql, (
                    self.df_warehouse[\"库房编号\"][co],
                    self.df_warehouse[\"库房密码\"][co],
                    self.df_warehouse[\"库房名称\"][co],
                    self.df_warehouse[\"库房地址\"][co],
                    self.df_warehouse[\"库房电话\"][co],
                    self.df_warehouse[\"库房管理人\"][co],
                    global_id     )
                                   )  # 执行添加数据
                except:
                    print(self.df_warehouse[\"库房编号\"][co])
            conn.commit()  # 提交
            cursor.close()  # 关闭游标
        def customer_Add():#向顾客的表中导入数据
            global global_id
            def go_shopping():  #查看购物情况
                sql=\' select sum(commodity_amount) from commodity GROUP BY customer_id;\'
                cursor.execute(sql)
                conn.commit()
                return  cursor.fetchall()
            cursor = conn.cursor()  # 创建游标
            for co in range(len(self.df_customer[\"用户账号\"])):
                try:
                    sql = \'insert into customer values (%s,%s,%s,%s,%s,%s);\'#添加数据
                    cursor.execute(sql, (
                    self.df_customer[\"用户账号\"][co],
                    self.df_customer[\"密码\"][co],
                    self.df_customer[\"用户名\"][co],
                    self.df_customer[\"电话\"][co],
                    go_shopping(),
                    global_id  )
                                   )  # 执行添加数据
                except:
                    print(self.df_customer[\"用户账号\"][co])
            conn.commit()  # 提交
            cursor.close()  # 关闭游标
        commodity_Add()
        warehouse_Add()
        customer_Add()
    def Accord(self):
        cursor = conn.cursor()  #创建游标
        a=[]
        for co1 in range(len(self.df_commodity[\"商品编码\"])):
            try:
                sql=\'select * from commodity where commodity_id=\"%s\"\'%(self.df_commodity[\"商品编码\"][co1])
                cursor.execute(sql)
                a.append(cursor.fetchall())   #结果导出
            except:
                continue
        for co2 in range(len(self.df_warehouse[\"库房编号\"])):
            try:
                sql=\'select * from warehouse where warehouse_id=\"%s\"\'%(self.df_warehouse[\"库房编号\"][co2])
                cursor.execute(sql)
                a.append(cursor.fetchall())   #结果导出
            except:
                continue
        for co in range(len(self.df_customer[\"用户账号\"])):
            try:
                sql=\'select * from customer where customer_id=\"%s\"\'%(self.df_customer[\"用户账号\"][co])
                cursor.execute(sql)
                a.append(cursor.fetchall())   #结果导出
            except:
                continue
        conn.commit()        #提交
        cursor.close()    #关闭游标
        return a
class Commodity_From(MainForm):  #商品界面设置
    def __init__(self):
        super().__init__()
        self.Commodity_select_photo()
        photo_word = tkinter.PhotoImage(file=WORDCLOUD_PATH)
        tkinter.Label(self.root, image=photo_word, width=600, height=400).place(x=30, y=0)
        tkinter.Label(self.root,text=\"------------你的年度销量---------\",font=(\"微软雅黑\", 20)).place(x=100,y=0)
        self.button1 = tkinter.Button(self.root, text=\"增加\", command=self.Commodity_add_s, height=3, width=10).place(x=0, y=430)
        self.button2 = tkinter.Button(self.root, text=\"删除\", command=self.Commodity_drop_s, height=3, width=10).place(x=150, y=430)
        self.button3 = tkinter.Button(self.root, text=\"修改\", command=self.Commodity_delente_s, height=3, width=10).place(x=300, y=430)
        self.button4 = tkinter.Button(self.root, text=\"查询\", command=self.Commodity_select_s, height=3, width=10).place(x=450, y=430)
        self.button1 = tkinter.Button(self.root, text=\"返回\", command=self.The_store_power, height=3, width=10).place(x=600, y=430)
        self.root.mainloop()
    def Commodity_add_s(self):#  进入增加界面
        self.root.destroy()  # 关闭商品界面
        Commodity_add()    #进入增加界面
    def Commodity_drop_s(self):#进入删除界面
        self.root.destroy()
        Commodity_drop()
    def Commodity_delente_s(self): #进去修改界面
        self.root.destroy()
        Commodity_delente()
    def Commodity_select_s(self): #进入查询界面
        self.root.destroy()
        Commodity_select()
    def The_store_power(self): #进入主界面
        self.root.destroy()
        The_store()
    def Commodity_select_photo(self):#查询所有的商品信息commodity_name
        global global_id
        a=[]
        cursor=conn.cursor()
        sql=\'select commodity_name from commodity where store_id=\"%s\"\'%(global_id)
        cursor.execute(sql)
        conn.commit()
        cursor.close()
        for i in cursor.fetchall():
            a.append(i[0])
        self.worcloud_s(str(a))   #生成图片
class Commodity_add(MainForm):# 商品类,,增删除,改,查
    def __init__(self):
        super().__init__()
        tkinter.Label(self.root,text=\"增加商品信息\",font=(\"微软雅黑\", 20)).place(x=260,y=0)
        tkinter.Label(self.root, text=\"商品编码\", font=(\"微软雅黑\", 10)).place(x=0,y=200)
        self.entryss1 = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))
        self.entryss1.place(x=60,y=200)
        tkinter.Label(self.root, text=\"商品名称\", font=(\"微软雅黑\", 10)).place(x=200,y=200)
        self.entryss2 = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))
        self.entryss2.place(x=260,y=200)
        self.Text_1 = tkinter.Text(self.root, height=6, width=80,font=(\"微软雅黑\", 10))   #输出标注框
        self.Text_1.place(x=20,y=50)
        tkinter.Label(self.root, text=\"商品售价\", font=(\"微软雅黑\", 10)).place(x=0,y=270)
        self.entryss3 = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))
        self.entryss3.place(x=60,y=270)
        tkinter.Label(self.root, text=\"商品进价\", font=(\"微软雅黑\", 10)).place(x=0,y=350)
        self.entryss4 = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))
        self.entryss4.place(x=60,y=350)
        tkinter.Label(self.root, text=\"生产日期\", font=(\"微软雅黑\", 10)).place(x=200,y=270)
        self.entryss5 = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))
        self.entryss5.place(x=260,y=270)
        tkinter.Label(self.root, text=\"保质期\", font=(\"微软雅黑\", 10)).place(x=200,y=350)
        self.entryss6 = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))
        self.entryss6.place(x=260,y=350)
        tkinter.Label(self.root, text=\"商品规格\", font=(\"微软雅黑\", 10)).place(x=400,y=270)
        self.entryss7 = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))
        self.entryss7.place(x=460,y=270)
        tkinter.Label(self.root, text=\"销售数量\", font=(\"微软雅黑\", 10)).place(x=400,y=350)
        self.entryss8 = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))
        self.entryss8.place(x=460,y=350)
        tkinter.Label(self.root, text=\"仓库编号\", font=(\"微软雅黑\", 10)).place(x=400, y=200)
        self.entryss9 = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))
        self.entryss9.place(x=460, y=200)
        tkinter.Button(self.root,text=\"确认添加\",command=self.add_s,font=(\"微软雅黑\", 15)).place(x=200,y=420)
        tkinter.Button(self.root, text=\"取消   \", command=self.add_Cancel, font=(\"微软雅黑\",15)).place(x=400,y=420)
        tkinter.Button(self.root, text=\"返回主菜单\", command=self.The_store_1, font=(\"微软雅黑\", 15)).place(x=0, y=450)
        tkinter.Button(self.root, text=\"返回     \", command=self.Commodity_From_1, font=(\"微软雅黑\", 15)).place(x=600, y=450)
        self.root.mainloop()
    def The_store_1(self):#返回主菜单
        self.root.destroy()
        The_store()
    def Commodity_From_1(self):    #返回商品菜单
        self.root.destroy()
        Commodity_From()
    def drop_Text_1(self):#清除显示信息
        self.Text_1.delete(0.0, tkinter.END)
        self.Text_1.update()
    def add_s(self):  #处理增加
        global global_id
        cursor = conn.cursor()  # 创建sql游标
        if self.entryss1.get() ==\'\':
            self.drop_Text_1()
            self.Text_1.insert(tkinter.INSERT,\"你的商品编码输入为空\")
        elif self.entryss2.get() ==\'\':
            self.drop_Text_1()
            self.Text_1.insert(tkinter.INSERT,\"你的商品名称输入为空\")
        elif self.entryss3.get() == \'\':
            self.drop_Text_1()
            self.Text_1.insert(tkinter.INSERT, \"你的商品售价输入为空\")
        elif self.entryss4.get() == \'\':
            self.drop_Text_1()
            self.Text_1.insert(tkinter.INSERT, \"你的商品进价输入为空\")
        elif self.entryss5.get() == \'\':
            self.drop_Text_1()
            self.Text_1.insert(tkinter.INSERT, \"你的生产日期输入为空\")
        elif self.entryss6.get() == \'\':
            self.drop_Text_1()
            self.Text_1.insert(tkinter.INSERT, \"你的保质期输入为空\")
        elif self.entryss7.get() == \'\':
            self.drop_Text_1()
            self.Text_1.insert(tkinter.INSERT, \"你的商品规格输入为空\")
        elif self.entryss8.get() == \'\':
            self.drop_Text_1()
            self.Text_1.insert(tkinter.INSERT, \"你的销售数量输入为空\")
        elif self.entryss9.get() == \'\':
            self.drop_Text_1()
            self.Text_1.insert(tkinter.INSERT, \"你的仓库编号输入为空\")
        else:
            try:
                sql = \"insert into commodity values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)\"  # 添加数据
                cursor.execute(sql,(
                        self.entryss1.get(),  #商品编号
                        self.entryss2.get(),  #商品名称
                        self.entryss3.get(),  #商品售价
                        self.entryss4.get(),  #商品进价
                        self.entryss5.get(), #生产日期
                        self.entryss6.get(),  #保质期
                        self.entryss7.get(),  #商品规格
                        self.entryss8.get(),  #销售数量
                        global_id,           #店铺编号
                        self.entryss9.get(),  #库房编号
                        None                        #顾客编号为空
                                            ))
                conn.commit()   #提交
                cursor.execute(\'select * from commodity where commodity_id=\"%s\"\' % (self.entryss1.get()))
                conn.commit()
                cursor.close()  #关闭游标
                self.drop_Text_1()
                self.Text_1.insert(tkinter.INSERT, \"数据添加成功\")
                self.Text_1.insert(tkinter.INSERT,cursor.fetchall())
 
            except:
                try:
                    sql = \'select * from commodity where commodity_id=\"%s\"\' % (self.entryss1.get())
                    cursor.execute(sql)
                    conn.commit()
                    self.drop_Text_1()
                    self.Text_1.insert(tkinter.INSERT, \"数据存在:\")
                    self.Text_1.insert(tkinter.INSERT, cursor.fetchall())
                    cursor.close()
                except:
                    self.drop_Text_1()
                    self.Text_1.insert(tkinter.INSERT, \"商品数据不符合类型,从新添加:\")
    def add_Cancel(self):   #取消输入的信息
        self.entryss1.delete(0, tkinter.END)
        self.entryss2.delete(0, tkinter.END)
        self.entryss3.delete(0, tkinter.END)
        self.entryss4.delete(0, tkinter.END)
        self.entryss5.delete(0, tkinter.END)
        self.entryss6.delete(0, tkinter.END)
        self.entryss7.delete(0, tkinter.END)
        self.entryss8.delete(0, tkinter.END)
        self.entryss9.delete(0, tkinter.END)
        self.Text_1.delete(0.0, tkinter.END)
        self.entryss1.update()
        self.entryss2.update()
        self.entryss3.update()
        self.entryss4.update()
        self.entryss5.update()
        self.entryss6.update()
        self.entryss7.update()
        self.entryss8.update()
        self.entryss9.update()
        self.Text_1.update()
        self.Text_1.insert(tkinter.INSERT,\"请选择其他\")
        #————————————————————————————店铺————————————————————————————————,
class Commodity_drop(MainForm):  #删除界面
    def __init__(self):
        super().__init__()
        self.Textw = tkinter.Text(self.root, height=18, width=80, font=(\"微软雅黑\", 10))
        self.Textw.place(x=15, y=0)
        tkinter.Label(self.root,text=\"输入需要删除的商品编号或商品名称\",font=(\"微软雅黑\", 20)).place(x=100,y=350)
        self.Entry_1=tkinter.Entry(self.root,font=(\"微软雅黑\", 20))
        self.Entry_1.place(x=20,y=400)
        tkinter.Button(self.root,text=\"查询\",command=self.commodity_select_drop,font=(\"微软雅黑\", 10)).place(x=380,y=400)
        tkinter.Button(self.root, text=\"返回\", command=self.commodity_return, font=(\"微软雅黑\", 10)).place(x=600, y=450)
        tkinter.Button(self.root, text=\"确定清除\", command=self.commodity_confirm, font=(\"微软雅黑\", 10)).place(x=450, y=400)
        tkinter.Button(self.root, text=\"取消清除\", command=self.commodity_confirm, font=(\"微软雅黑\", 10)).place(x=550, y=400)
        self.commodity_refersh()   #显示提示页面
        self.commodity_select()  #显示所有的商品信息
        self.root.mainloop()
    def commodity_return(self): #返回商品菜单
        self.root.destroy()
        Commodity_From()
    def commodity_confirm(self):  #提示确认查询
        self.commodity_refersh()
        self.Textw.insert(tkinter.INSERT,\"请先查询\\n\")
        self.commodity_select()
    def commodity_refersh(self):  #刷新界面
        self.Textw.delete(0.0,tkinter.END)
        self.Textw.update()
        self.Textw.insert(tkinter.INSERT,
                          \"----------------------------------请输入你要删除的商品编号,或商品名称----------------------------------\\n\")
    def commodity_select(self):  #查询所有的商品
        cursor = conn.cursor()  # 创建sql游标
        sql = \'select * from commodity \'   # 查询所有商品的信息
        cursor.execute(sql)
        self.Textw.insert(tkinter.INSERT, \"你的商品信息为:\\n\")
        for fetchone in cursor.fetchall():
            self.Textw.insert(tkinter.INSERT, fetchone)
            self.Textw.insert(tkinter.INSERT, \'\\n\')
    #——————————————————————————————————————————————————————删除页面————————————————————————————————————————————————————
    def commodity_select_drop(self):  #查询需要删除的商品信息
        if self.Entry_1.get() == \'\':
            self.commodity_refersh()
            self.Textw.insert(tkinter.INSERT, \"你的输入为空:\\n\")
            self.commodity_select()
        else:
            try:
                def selecte_id_look():
                    cursor = conn.cursor()  # 创建sql游标
                    sql1 = \'select * from commodity where commodity_id=\"%s\"\' % (self.Entry_1.get())  # 查询需要删除的信息
                    cursor.execute(sql1)
                    conn.commit()  # 提交
                    cursor.close()  # 关闭游标
                    self.commodity_refersh()
                    self.Textw.insert(tkinter.INSERT, \"你输入的的商品编号查询的信息为:\\n\")
                    return cursor.fetchall()
                def selecte_name_look():
                    cursor = conn.cursor()  # 创建sql游标
                    sql2 = \'select * from commodity where commodity_name=\"%s\"\' % (self.Entry_1.get())  # 查询需要删除的信息
                    cursor.execute(sql2)
                    conn.commit()  # 提交
                    cursor.close()  # 关闭游标
                    self.commodity_refersh()
                    self.Textw.insert(tkinter.INSERT, \"你输入的的商品名称查询的信息为:\\n\")
                    return cursor.fetchall()
                def button_id():
                    tkinter.Button(self.root, text=\"确定清除\", command=delete_id,
                                   font=(\"微软雅黑\", 10)).place(x=450, y=400)
                    tkinter.Button(self.root, text=\"取消清除\", command=self.commodity_select, font=(\"微软雅黑\", 10)).place(
                        x=550, y=400)
                def button_name():
                    tkinter.Button(self.root, text=\"确定清除\", command=delete_name,
                                   font=(\"微软雅黑\", 10)).place(x=450, y=400)
                    tkinter.Button(self.root, text=\"取消清除\", command=self.commodity_select, font=(\"微软雅黑\", 10)).place(
                        x=550, y=400)
                def delete_id():
                    cursor = conn.cursor()  # 创建sql游标
                    sql = \'delete from commodity where commodity_id=\"%s\"\' % (self.Entry_1.get())
                    cursor.execute(sql)
                    conn.commit()  # 提交
                    cursor.close()  # 关闭游标
                    self.Textw.insert(tkinter.INSERT, \"数据删除成功\\n\")
                def delete_name():
                    cursor = conn.cursor()  # 创建sql游标
                    sql = \'delete from commodity where commodity_name=\"%s\"\' % (self.Entry_1.get())
                    cursor.execute(sql)
                    conn.commit()  # 提交
                    cursor.close()  # 关闭游标
                    self.Textw.insert(tkinter.INSERT, \"数据删除成功\\n\")
                if bool(selecte_id_look())==True:
                    for fetchone in selecte_id_look():
                        self.Textw.insert(tkinter.INSERT, fetchone)
                        self.Textw.insert(tkinter.INSERT, \'\\n\')
                    button_id()
                elif bool(selecte_name_look())==True:
                    for fetchone in selecte_name_look():
                        self.Textw.insert(tkinter.INSERT, fetchone)
                        self.Textw.insert(tkinter.INSERT, \'\\n\')
                    button_name()
                else:
                    self.commodity_refersh()
                    self.Textw.insert(tkinter.INSERT, \"你输入的的商品信息错误或没有此商品:\\n\")
            except:
                self.Textw.insert(tkinter.INSERT, \"程序运行故障:\\n\")
        #_____________________________________修改页面————————————————————————————————————————————————————————————
class Commodity_delente(MainForm): #修改
    def __init__(self):
        super().__init__()
        photo=tkinter.PhotoImage(file=COMMODITY_DELETE_PATH)
        tkinter.Label(self.root, image=photo, width=680, height=500).place(x=0, y=0)
        tkinter.Label(self.root,text=\"修改商品信息\",font=(\"黑体\",20)).place(x=250,y=0)
        tkinter.Label(self.root, text=\"所有商品信息\", font=(\"微软雅黑\", 10)).place(x=110, y=30)
        self.Text_select=tkinter.Text(self.root,width=40,height=13,font=(\"微软雅黑\", 10))  #显示所有商品信息
        self.Text_select.place(x=10,y=50)
        tkinter.Label(self.root, text=\"修改商品信息\", font=(\"微软雅黑\", 10)).place(x=110, y=300)  #显示查询和修改的商品信息
        self.Text_delete = tkinter.Text(self.root, width=40, height=8,font=(\"微软雅黑\", 10))
        self.Text_delete.place(x=10, y=320)
        tkinter.Label(self.root, text=\"查询商品信息\", font=(\"微软雅黑\", 10)).place(x=500, y=30)
        tkinter.Label(self.root, text=\"输入商品编号:\", font=(\"微软雅黑\", 10)).place(x=350, y=50)
        self.Entry_id = tkinter.Entry(self.root,font=(\"微软雅黑\", 10))   #输入商品编号
        self.Entry_id.place(x=450, y=50)
        tkinter.Button(self.root, text=\"查询\",command=self.select_id_commodity, font=(\"微软雅黑\", 7)).place(x=630, y=50)
        tkinter.Label(self.root, text=\"修改商品内容:\", font=(\"微软雅黑\", 10)).place(x=350, y=100)
        self.Entry_update = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))  #输入修改的商品信息
        self.Entry_update.place(x=450, y=100)
        tkinter.Button(self.root,text=\"商品名称\",command=self.update_name,font=(\"微软雅黑\",10)).place(x=450,y=150)
        tkinter.Button(self.root, text=\"商品售价\", command=self.update_price, font=(\"微软雅黑\", 10)).place(x=550, y=150)
        tkinter.Button(self.root, text=\"商品进价\", command=self.update_pur_price, font=(\"微软雅黑\", 10)).place(x=450, y=200)
        tkinter.Button(self.root, text=\"生产日期\", command=self.update_production, font=(\"微软雅黑\", 10)).place(x=550, y=200)
        tkinter.Button(self.root, text=\"保质期\", command=self.update_life, font=(\"微软雅黑\", 10)).place(x=450, y=250)
        tkinter.Button(self.root, text=\"商品规格\", command=self.update_speci, font=(\"微软雅黑\", 10)).place(x=550, y=250)
        tkinter.Button(self.root,text=\"库房编号\",command=self.warehouse_id,font=(\"微软雅黑\",10)).place(x=450,y=300)
        tkinter.Button(self.root, text=\"返回\", command=self.commodity_return, font=(\"微软雅黑\", 10)).place(x=600, y=450)
        self.selecte_Text_query()   #跟新并查询商品信息
        self.root.mainloop()
    def commodity_return(self):  #返回商品菜单
        self.root.destroy()
        Commodity_From()
    def selecte_Text_query(self):  # 更新并查询商品信息
        self.Text_select.delete(0.0, tkinter.END)
        self.Text_select.update()
        try:
            cursor=conn.cursor()
            sql=\'select * from commodity \'
            cursor.execute(sql)
            conn.commit()
            cursor.close()
            for i in cursor.fetchall():
                self.Text_select.insert(tkinter.INSERT,i)
                self.Text_select.insert(tkinter.INSERT,\'\\n\')
        except:
            pass
    def delete_Text_query(self): #跟新输出显示框的信息
        self.Text_delete.delete(0.0,tkinter.END)
        self.Text_delete.update()
        self.Text_delete.insert(tkinter.INSERT,\"你查询到的商品为:\\n\")
    def select_id_commodity(self):   #根据id查询信息
        def commodity_select_id():  #查询商品信息
            def select_id():
                cursor = conn.cursor()  # 创建sql游标
                sql = \'select * from commodity where commodity_id=\"%s\"\' % (self.Entry_id.get())
                cursor.execute(sql)
                conn.commit()  # 提交
                cursor.close()  # 关闭游标
                return cursor.fetchall()
            if bool(select_id())==True:
                for i in select_id():
                    self.Text_delete.insert(tkinter.INSERT, i)
                    self.Text_delete.insert(tkinter.INSERT,\'\\n\')
            else:
                self.Text_delete.insert(tkinter.INSERT,\"没有该商品信息:\\n\")
        if self.Entry_id.get()==\'\':
            self.delete_Text_query()
            self.Text_delete.insert(tkinter.INSERT,\"你的输入为空:\\n请从新输入;\\n\")
        else:
            commodity_select_id()
    def update_name(self):
        self.delete_Text_query()
        try:
            cursor=conn.cursor()
            sql=\'update commodity set commodity_name=\"%s\" where commodity_id=\"%s\"\'%(self.Entry_update.get(),self.Entry_id.get())
            cursor.execute(sql)
            conn.commit()
            sql2 = \'select * from commodity where commodity_id=\"%s\"\' % (self.Entry_id.get())
            cursor.execute(sql2)
            conn.commit()
            self.Text_delete.insert(tkinter.INSERT,cursor.fetchall())
            cursor.close()
            self.Text_delete.insert(tkinter.INSERT, \"\\n你的商品名称修改成功;\\n\")
        except:
            pass
    def update_price(self):
        self.delete_Text_query()
        try:
            cursor=conn.cursor()
            sql=\'update commodity set commodity_price=\"%s\" where commodity_id=\"%s\"\'%(self.Entry_update.get(),self.Entry_id.get())
            cursor.execute(sql)
            conn.commit()
            sql2 = \'select * from commodity where commodity_id=\"%s\"\' % (self.Entry_id.get())
            cursor.execute(sql2)
            conn.commit()
            self.Text_delete.insert(tkinter.INSERT,cursor.fetchall())
            cursor.close()
            self.Text_delete.insert(tkinter.INSERT, \"\\n你的商品售价修改成功;\\n\")
        except:
            pass
    def update_pur_price(self):
        self.delete_Text_query()
        try:
            cursor=conn.cursor()
            sql=\'update commodity set commodity_pur_price=\"%s\" where commodity_id=\"%s\"\'%(self.Entry_update.get(),self.Entry_id.get())
            cursor.execute(sql)
            conn.commit()
            sql2 = \'select * from commodity where commodity_id=\"%s\"\' % (self.Entry_id.get())
            cursor.execute(sql2)
            conn.commit()
            self.Text_delete.insert(tkinter.INSERT,cursor.fetchall())
            cursor.close()
            self.Text_delete.insert(tkinter.INSERT, \"\\n你的商品进价修改成功;\\n\")
        except:
            pass
    def update_production(self):
        self.delete_Text_query()
        try:
            cursor=conn.cursor()
            sql=\'update commodity set commodity_production=\"%s\" where commodity_id=\"%s\"\'%(self.Entry_update.get(),self.Entry_id.get())
            cursor.execute(sql)
            conn.commit()
            sql2 = \'select * from commodity where commodity_id=\"%s\"\' % (self.Entry_id.get())
            cursor.execute(sql2)
            conn.commit()
            self.Text_delete.insert(tkinter.INSERT,cursor.fetchall())
            cursor.close()
            self.Text_delete.insert(tkinter.INSERT, \"\\n你的生产日期修改成功;\\n\")
        except:
            pass
    def update_life(self):
        self.delete_Text_query()
        try:
            cursor=conn.cursor()
            sql=\'update commodity set commodity_life=\"%s\" where commodity_id=\"%s\"\'%(self.Entry_update.get(),self.Entry_id.get())
            cursor.execute(sql)
            conn.commit()
            sql2 = \'select * from commodity where commodity_id=\"%s\"\' % (self.Entry_id.get())
            cursor.execute(sql2)
            conn.commit()
            self.Text_delete.insert(tkinter.INSERT,cursor.fetchall())
            cursor.close()
            self.Text_delete.insert(tkinter.INSERT, \"\\n你的保质期修改成功;\\n\")
        except:
            pass
    def update_speci(self):
        self.delete_Text_query()
        try:
            cursor=conn.cursor()
            sql=\'update commodity set commodity_speci=\"%s\" where commodity_id=\"%s\"\'%(self.Entry_update.get(),self.Entry_id.get())
            cursor.execute(sql)
            conn.commit()
            sql2 = \'select * from commodity where commodity_id=\"%s\"\' % (self.Entry_id.get())
            cursor.execute(sql2)
            conn.commit()
            self.Text_delete.insert(tkinter.INSERT,cursor.fetchall())
            cursor.close()
            self.Text_delete.insert(tkinter.INSERT, \"\\n你的商品规格修改成功;\\n\")
        except:
            pass
    def warehouse_id(self):
        self.delete_Text_query()
        try:
            cursor=conn.cursor()
            sql=\'update commodity set warehouse_id=\"%s\" where commodity_id=\"%s\"\'%(self.Entry_update.get(),self.Entry_id.get())
            cursor.execute(sql)
            conn.commit()
            sql2 = \'select * from commodity where commodity_id=\"%s\"\' % (self.Entry_id.get())
            cursor.execute(sql2)
            conn.commit()
            self.Text_delete.insert(tkinter.INSERT,cursor.fetchall())
            cursor.close()
            self.Text_delete.insert(tkinter.INSERT, \"\\n你的库房修改成功;\\n\")
        except:
            pass
class Commodity_select(MainForm) :  #查询
    def __init__(self):
        super().__init__()
        tkinter.Label(self.root, text=\"查询商品信息\", font=(\"黑体\", 20)).place(x=250, y=0)
        tkinter.Label(self.root, text=\"所有商品信息\", font=(\"微软雅黑\", 10)).place(x=110, y=30)
        self.Text_select = tkinter.Text(self.root, width=40, height=13, font=(\"微软雅黑\", 10))  # 显示所有商品信息
        self.Text_select.place(x=10, y=50)
        tkinter.Label(self.root, text=\"查询商品信息\", font=(\"微软雅黑\", 10)).place(x=500, y=30)
        #商品编号
        tkinter.Label(self.root, text=\"输入商品编号查询:\", font=(\"微软雅黑\", 10)).place(x=350, y=50)
        self.Entry_id = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))  # 输入商品编号
        self.Entry_id.place(x=450, y=50)
        tkinter.Button(self.root, text=\"查询\",command=self.selecte_id_commodity ,font=(\"微软雅黑\", 7)).place(x=630, y=50)
        tkinter.Label(self.root, text=\"所有商品编号信息\", font=(\"微软雅黑\", 10)).place(x=100, y=300)  # 显示查询和修改的商品信息
        self.Text_id = tkinter.Text(self.root, width=30, height=8, font=(\"微软雅黑\", 10))
        self.Text_id.place(x=10, y=320)
        # 商品名称
        tkinter.Label(self.root, text=\"输入商品名称查询:\", font=(\"微软雅黑\", 10)).place(x=350, y=100)
        self.Entry_name = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))  # 输入修改的商品信息
        self.Entry_name.place(x=450, y=100)
        tkinter.Button(self.root, text=\"查询\",command=self.selecte_name_commodity, font=(\"微软雅黑\", 7)).place(x=630, y=100)
        tkinter.Label(self.root, text=\"所有商品名称信息\", font=(\"微软雅黑\", 10)).place(x=300, y=300)  # 显示查询和修改的商品信息
        self.Text_name = tkinter.Text(self.root, width=30, height=8, font=(\"微软雅黑\", 10))
        self.Text_name.place(x=210, y=320)
        #商品库房名称
        tkinter.Label(self.root, text=\"输入库房名称查询:\", font=(\"微软雅黑\", 10)).place(x=350, y=150)
        self.Entry_warehouse = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))  # 输入修改的商品信息
        self.Entry_warehouse.place(x=450, y=150)
        tkinter.Button(self.root, text=\"查询\",command=self.selecte_warehouse_commodity, font=(\"微软雅黑\", 7)).place(x=630, y=150)
        tkinter.Label(self.root, text=\"库房所有商品信息\", font=(\"微软雅黑\", 10)).place(x=500, y=300)  # 显示查询和修改的商品信息
        self.Text_warehouse = tkinter.Text(self.root, width=30, height=8, font=(\"微软雅黑\", 10))
        self.Text_warehouse.place(x=410, y=320)
        tkinter.Button(self.root, text=\"返回\", command=self.commodity_return, font=(\"微软雅黑\", 10)).place(x=600, y=450)
        self.selecte_Text_query()  # 跟新并查询商品信息
        self.root.mainloop()
    def commodity_return(self): #返回商品界面
        self.root.destroy()
        Commodity_From()
    def selecte_Text_query(self):  # 更新并查询商品信息
        self.Text_select.delete(0.0, tkinter.END)
        self.Text_select.update()
        try:
            cursor = conn.cursor()
            sql = \'select * from commodity \'
            cursor.execute(sql)
            conn.commit()
            cursor.close()
            for i in cursor.fetchall():
                self.Text_select.insert(tkinter.INSERT, i)
                self.Text_select.insert(tkinter.INSERT, \'\\n\')
        except:
            pass
    def selecte_id_commodity(self): #根据商品id查询商品信息
        def text_id_query():  #清空text里面的信息
            self.Text_id.delete(0.0,tkinter.END)
            self.Text_id.update()
        if self.Entry_warehouse.get()==\'\':
            text_id_query()
            self.Text_id.insert(tkinter.INSERT,\"你输入的库房账号为空\\n\")
        else:
            text_id_query()
            def select_id():
                cursor=conn.cursor()
                sql=\'select * from commodity where warehouse_id=\"%s\"\'%(self.Entry_warehouse.get())
                cursor.execute(sql)
                conn.commit()
                cursor.close()
                return cursor.fetchall()
            if bool(select_id())==True:
                for i in select_id():
                    self.Text_id.insert(tkinter.INSERT,i)
                    self.Text_id.insert(tkinter.INSERT,\'\\n\')
            else:
                self.Text_id.insert(tkinter.INSERT,\"你输入的商品不在店铺\\n\")
    def selecte_name_commodity(self): #根据商品name查询商品信息
        def text_name_query():  #清空text里面的信息
            self.Text_name.delete(0.0,tkinter.END)
            self.Text_name.update()
        if self.Entry_name.get()==\'\':
            text_name_query()
            self.Text_name.insert(tkinter.INSERT,\"你输入的商品名称为空\\n\")
        else:
            text_name_query()
            def select_name():
                cursor=conn.cursor()
                sql=\'select * from commodity where commodity_name=\"%s\"\'%(self.Entry_name.get())
                cursor.execute(sql)
                conn.commit()
                cursor.close()
                return cursor.fetchall()
            if bool(select_name())==True:
                for i in select_name():
                    self.Text_name.insert(tkinter.INSERT,i)
                    self.Text_name.insert(tkinter.INSERT,\'\\n\')
            else:
                self.Text_name.insert(tkinter.INSERT,\"你输入的商品名称查询不在店铺\\n\")
    def selecte_warehouse_commodity(self): #根据商品id查询商品信息
        def text_warehouse_query():  #清空text里面的信息
            self.Text_warehouse.delete(0.0,tkinter.END)
            self.Text_warehouse.update()
        if self.Entry_warehouse.get()==\'\':
            text_warehouse_query()
            self.Text_warehouse.insert(tkinter.INSERT,\"你输入的库房为空\\n\")
        else:
            text_warehouse_query()
            def select_warehouse():
                cursor=conn.cursor()
                sql=\'select * from commodity where commodity_id=\"%s\"\'%(self.Entry_id.get())
                cursor.execute(sql)
                conn.commit()
                cursor.close()
                return cursor.fetchall()
            if bool(select_warehouse())==True:
                for i in select_warehouse():
                    self.Text_warehouse.insert(tkinter.INSERT,i)
                    self.Text_warehouse.insert(tkinter.INSERT,\'\\n\')
            else:
                self.Text_warehouse.insert(tkinter.INSERT,\"你输入的库房查询不在店铺\\n\")
class Shop_From(MainForm):  #店铺界面设置,店铺可以查询,修改,导出仓库信息全部商品
    def __init__(self):
        super().__init__()
        self.button1 = tkinter.Button(self.root, text=\"顾客\", command=self.Customer, height=3, width=10).place(x=0, y=430)
        self.button2 = tkinter.Button(self.root, text=\"商品\", command=self.Commodiyt_from_1, height=3, width=10).place(x=150, y=430)
        self.button3 = tkinter.Button(self.root, text=\"库房\", command=self.Warehouse_1, height=3, width=10).place(x=300, y=430)
        self.button4 = tkinter.Button(self.root, text=\"导入导出\", command=self.export_1, height=3, width=10).place(x=450, y=430)
        self.button1 = tkinter.Button(self.root, text=\"返回\", command=self.The_store_1, height=3, width=10).place(x=600, y=430)
        self.root.mainloop()
    def Commodiyt_from_1(self):#进入商品界面
        self.root.destroy()
        Commodity_From()
    def The_store_1(self):#进入主界面
        self.root.destroy()
        The_store()
    def Warehouse_1(self):  # 进入库房界面
        self.root.destroy()
        Warehouse()
    def export_1(self):#进入导出界面
        self.root.destroy()
        Shop_export()
    def Customer(self):#  顾客管理
        def remove_Text_purint():  #清空Customer_Text_purint数据
            Customer_Text_purint.delete(0.0, tkinter.END)
            Customer_Text_purint.update()
        def import_user():  #导出所有用户信息到Customer_Text中
            cursor = conn.cursor()
            sql = \'select * from customer\'
            cursor.execute(sql)
            Customer_Text.delete(0.0, tkinter.END)
            Customer_Text.update()
            Customer_Text.insert(tkinter.INSERT, \'你的所有商品信息\\n\')
            for x in cursor.fetchall():
                Customer_Text.insert(tkinter.INSERT,x)
                Customer_Text.insert(tkinter.INSERT, \'\\n\')
            conn.commit()
            cursor.close()
        def query_user():# 查询用户信息
            cursor=conn.cursor()
            sql=\'select * from customer where customer_id=\"%s\" and customer_password=\"%s\"\'%(Customer_Entry_user.get(),Customer_Entry_password.get())
            cursor.execute(sql)
            conn.commit()
            cursor.close()
            return cursor.fetchall()
        #....................修改用户名.........................
        def delete_user():#  修改用户信息
            def delete_user_od() : #修改
                cursor = conn.cursor()
                sql=\'update customer set customer_name=\"%s\" where customer_id=\"%s\"\'%(Customer_Entry_name.get(),Customer_Entry_user.get())
                cursor.execute(sql)
                conn.commit()
                cursor.close()
            if Customer_Entry_user.get()==\'\':
                remove_Text_purint()
                Customer_Text_purint.insert(tkinter.INSERT, \"用户名输入为空\\n\")
            elif Customer_Entry_password.get()==\'\':
                remove_Text_purint()
                Customer_Text_purint.insert(tkinter.INSERT, \"密码输入为空\\n\")
            else:
                try:
                    remove_Text_purint()   #清空
                    Customer_Text_purint.insert(tkinter.INSERT,\'你原用户信息\\n\')  # 提示信息
                    Customer_Text_purint.insert(tkinter.INSERT, query_user())  #查询
                    Customer_Text_purint.insert(tkinter.INSERT, \"\\n你修改后用户信息\\n\")  # 查询
                    delete_user_od()  #进行修改
                    Customer_Text_purint.insert(tkinter.INSERT, query_user())  # 在查询
                except:
                    remove_Text_purint()
                    Customer_Text_purint.insert(tkinter.INSERT, \"用户修改失败\\n\")
        # ....................修改密码.........................
        def delete_password():#修改密码
            def delete_user_od() : #对密码修改
                cursor = conn.cursor()
                sql=\'update customer set customer_password=\"%s\" where customer_id=\"%s\"\'%(Customer_Entry_password.get(),Customer_Entry_user.get())
                cursor.execute(sql)
                conn.commit()
                cursor.close()
            def query_user():  # 查询用户信息
                cursor = conn.cursor()
                sql = \'select * from customer where customer_id=\"%s\"\'% (
                Customer_Entry_user.get())
                cursor.execute(sql)
                conn.commit()
                cursor.close()
                return cursor.fetchall()
            if Customer_Entry_user.get()==\'\':
                remove_Text_purint()
                Customer_Text_purint.insert(tkinter.INSERT, \"用户名输入为空\\n\")
            elif Customer_Entry_password.get()==\'\':
                remove_Text_purint()
                Customer_Text_purint.insert(tkinter.INSERT, \"密码输入为空\\n\")
            else:
                try:
                    remove_Text_purint()   #清空
                    Customer_Text_purint.insert(tkinter.INSERT,\'你原用户信息\\n\')  # 提示信息
                    Customer_Text_purint.insert(tkinter.INSERT, query_user())  #查询
                    Customer_Text_purint.insert(tkinter.INSERT, \"\\n你修改后的用户信息\\n\")  # 查询
                    delete_user_od()  #进行修改
                    Customer_Text_purint.insert(tkinter.INSERT, query_user())  # 在查询
                except:
                    remove_Text_purint()
                    Customer_Text_purint.insert(tkinter.INSERT, \"用户修改失败\\n\")
            # ....................增加用户.........................
        def add_user():  #增加用户
            def delete_user_add() : #增加修改
                cursor = conn.cursor()
                sql=\'insert into customer values(%s,%s,%s,0)\'%(Customer_Entry_user.get(),Customer_Entry_name.get(),Customer_Entry_password.get())
                cursor.execute(sql)
                conn.commit()
                cursor.close()
            def query_user():  # 查询用户信息
                cursor = conn.cursor()
                sql = \'select * from customer where customer_id=\"%s\"\'% (
                Customer_Entry_user.get())
                cursor.execute(sql)
                conn.commit()
                cursor.close()
                return cursor.fetchall()
            if Customer_Entry_user.get()==\'\':
                remove_Text_purint()
                Customer_Text_purint.insert(tkinter.INSERT, \"用户名输入为空\\n\")
            elif Customer_Entry_password.get()==\'\':
                remove_Text_purint()
                Customer_Text_purint.insert(tkinter.INSERT, \"密码输入为空\\n\")
            else:
                try:
                    remove_Text_purint()   #清空
                    Customer_Text_purint.insert(tkinter.INSERT, \"你增加的用户信息\\n\")  # 查询
                    delete_user_add()  #进行修改
                    Customer_Text_purint.insert(tkinter.INSERT, query_user())  # 在查询
                except:
                    remove_Text_purint()
                    Customer_Text_purint.insert(tkinter.INSERT, \"用户已存在,用户添加失败\\n\")
                    Customer_Text_purint.insert(tkinter.INSERT, query_user())  # 在查询
            # ....................删除用户.........................
        def drop_user():  #删除用户
            def delete_user_drop() : #删除修改
                cursor = conn.cursor()
                sql=\'delete from customer where customer_id=\"%s\" and customer_password=\"%s\"\'%(Customer_Entry_user.get(),Customer_Entry_password.get())
                cursor.execute(sql)
                conn.commit()
                cursor.close()
            def query_user():  # 查询用户信息
                cursor = conn.cursor()
                sql = \'select * from customer where customer_id=\"%s\"\'% (
                Customer_Entry_user.get())
                cursor.execute(sql)
                conn.commit()
                cursor.close()
                return cursor.fetchall()
            if Customer_Entry_user.get()==\'\':
                remove_Text_purint()
                Customer_Text_purint.insert(tkinter.INSERT, \"用户名输入为空\\n\")
            elif Customer_Entry_password.get()==\'\':
                remove_Text_purint()
                Customer_Text_purint.insert(tkinter.INSERT, \"密码输入为空\\n\")
            else:
                try:
                    remove_Text_purint()   #清空
                    Customer_Text_purint.insert(tkinter.INSERT, \"你删除的用户信息\\n\")  # 查询
                    delete_user_drop()  #删除
                    Customer_Text_purint.insert(tkinter.INSERT, query_user())  # 在查询
                except:
                    remove_Text_purint()
                    Customer_Text_purint.insert(tkinter.INSERT, \"用户输入不对,用户删除失败\\n\")
        tkinter.Label(self.root, text=\"顾客信息\", font=(\"黑体\", 20)).place(x=260, y=0)
        Customer_Text=tkinter.Text(self.root,width=50,height=20,font=(\"微软雅黑\",10))
        Customer_Text.place(x=0,y=30)
        import_user()
        tkinter.Label(self.root, text=\"用户信息修改\", font=(\"黑体\", 10)).place(x=500, y=10)
        tkinter.Label(self.root, text=\"用户账号\", font=(\"黑体\", 10)).place(x=420, y=50)
        tkinter.Label(self.root, text=\"密    码\", font=(\"黑体\", 10)).place(x=420, y=100)
        tkinter.Label(self.root, text=\"用 户 名\", font=(\"黑体\", 10)).place(x=420, y=150)
        tkinter.Label(self.root, text=\"电    话\", font=(\"黑体\", 10)).place(x=420, y=200)
        Customer_Entry_user = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))  # 显示框
        Customer_Entry_user.place(x=500,y=50)
        Customer_Entry_password = tkinter.Entry(self.root, font=(\"微软雅黑\", 10),show=\'*\')  # 显示框
        Customer_Entry_password.place(x=500,y=100)
        Customer_Entry_name = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))  # 显示框
        Customer_Entry_name.place(x=500, y=150)
        Customer_Entry_phon = tkinter.Entry(self.root, font=(\"微软雅黑\", 10))  # 显示框
        Customer_Entry_phon.place(x=500, y=200)
        tkinter.Button(self.root,text=\"修改用户信息\",command=delete_user,font=(\'微软雅黑\',10)).place(x=420,y=250)
        tkinter.Button(self.root, text=\"修改密码\", command=delete_password, font=(\'微软雅黑\', 10)).place(x=420, y=300)
        tkinter.Button(self.root, text=\"添加用户\", command=add_user, font=(\'微软雅黑\', 10)).place(x=560, y=250)
        tkinter.Button(self.root, text=\"删除用户\", command=\'1111\', font=(\'微软雅黑\', 10)).place(x=560, y=300)
        Customer_Text_purint=tkinter.Text(self.root,width=30,height=3,font=(\"微软雅黑\",10))
        Customer_Text_purint.place(x=420, y=350)
        Customer_Text_purint.insert(tkinter.INSERT,\"输入正确的账号密码可以修改用户名\\n输入正确的账号可以修改密码\\n\"
                                                   \"输入没有的账号,用户名,密码可以添加账号\\n输入正确的账号,密码可以删除账号\")
class Shop_export(MainForm):#导入导出
    def __init__(self):
        super().__init__()
        tkinter.Label(self.root, text=\"导入导出顾客商品信息\", font=(\"黑体\", 20)).place(x=200, y=0)
        self.prompt=tkinter.Text(self.root,width=55,height=5,font=(\"微软雅黑\",15))
        self.prompt.place(x=10,y=50)
        #————————————————导入————————————————————————
        tkinter.Label(self.root,text=\"输入导入的绝对地址:\",font=(\"微软雅黑\",15)).place(x=70,y=200)
        self.leading_in=tkinter.Entry(self.root,font=(\"黑体\",15))
        self.leading_in.place(x=50,y=250)
        tkinter.Button(self.root, text=\"导入顾客\", command=self.leading_in_customer,font=(\"微软雅黑\",15)).place(x=100, y=300)
        tkinter.Button(self.root, text=\"导入商品\", command=self.leading_in_commodity, font=(\"微软雅黑\",15)).place(
            x=100, y=350)
        #————————————————导出————————————————
        tkinter.Label(self.root, text=\"输入导出的绝对地址:\", font=(\"微软雅黑\", 15)).place(x=420, y=200)
        self.leading_out = tkinter.Entry(self.root, font=(\"黑体\", 15))
        self.leading_out.place(x=400, y=250)
        tkinter.Button(self.root, text=\"导出顾客\", command=self.leading_out_customer, font=(\"微软雅黑\",15)).place(x=450, y=300)
        tkinter.Button(self.root, text=\"导出商品\", command=self.leading_out_commodity,font=(\"微软雅黑\",15)).place(
            x=450, y=350)
        tkinter.Button(self.root, text=\"查看顾客\", command=self.look_customer, font=(\"微软雅黑\", 15)).place(x=0, y=430)
        tkinter.Button(self.root, text=\"查看商品\", command=self.look_commodity, font=(\"微软雅黑\", 15)).place(x=300, y=430)
        tkinter.Button(self.root, text=\"返回商品\", command=self.The_store_1,font=(\"微软雅黑\",15)).place(x=600,y=430)
        self.root.mainloop()
    def The_store_1(self): #返回商品
        self.root.destroy()
        The_store()
    def clean_prompt(self):  #清除提示框
        self.prompt.delete(0.0,tkinter.END)
        self.prompt.update()
    def look_customer(self): #查看顾客
        cursor=conn.cursor()
        cursor.execute(\"select * from customer\")
        conn.commit()
        cursor.close()
        self.clean_prompt()
        for i in cursor.fetchall():
            self.prompt.insert(tkinter.INSERT,i)
    def look_commodity(self): #查看商品
        cursor=conn.cursor()
        cursor.execute(\"select * from commodity\")
        conn.commit()
        cursor.close()
        self.clean_prompt()
        for i in cursor.fetchall():
            self.prompt.insert(tkinter.INSERT,i)
    def leading_in_customer(self):  #导入顾客信息
        global global_id
        self.clean_prompt()
        address=self.leading_in.get()
        df_customer=pd.read_excel(address)
        def go_shopping():  # 查看购物情况
            sql = \' select sum(commodity_amount) from commodity GROUP BY customer_id;\'
            cursor.execute(sql)
            conn.commit()
            return cursor.fetchone()
        cursor = conn.cursor()  # 创建游标
        try:
            for co in range(len(df_customer[\"用户账号\"])):
                try:
                    sql = \'insert into customer values (%s,%s,%s,%s,%s,%s);\'  # 添加数据
                    cursor.execute(sql, (
                        df_customer[\"用户账号\"][co],
                        df_customer[\"密码\"][co],
                        df_customer[\"用户名\"][co],
                        df_customer[\"电话\"][co],
                        go_shopping(),
                        global_id)
                                   )  # 执行添加数据
                    conn.commit()  # 提交
                except:
                    self.prompt.insert(tkinter.INSERT,\"你的用户账号已导入\\n\")
                    self.prompt.insert(tkinter.INSERT,df_customer[\"用户账号\"][co])
                    self.prompt.insert(tkinter.INSERT, \"\\n\")
        except:
            self.prompt.insert(tkinter.INSERT, \"错误:你导入的信息不符合导入格式\\n\")
        cursor.close()  # 关闭游标
    def leading_in_commodity(self):  #导入顾客信息
        global global_id
        self.clean_prompt()
        address = self.leading_in.get()
        df_commodity = pd.read_excel(address)
        cursor = conn.cursor()  # 创建游标
        try:
            for co in range(len(df_commodity[\"商品编码\"])):
                try:
                    sql = \'insert into commodity values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);\'  # 添加数据
                    cursor.execute(sql, (
                        df_commodity[\"商品编码\"][co],
                        df_commodity[\"商品名称\"][co],
                        df_commodity[\"商品售价\"][co],
                        df_commodity[\"商品进价\"][co],
                        df_commodity[\"生产日期\"][co],
                        df_commodity[\"保质期\"][co],
                        df_commodity[\"商品规格\"][co],
                        df_commodity[\"销售数量\"][co],
                        global_id,
                        df_commodity[\"库房编号\"][co],
                        df_commodity[\"顾客编号\"][co])
                                   )  # 执行添加数据
                    conn.commit()  # 提交
                except:
                    self.prompt.insert(tkinter.INSERT, \"你的商品账号已导入\\n\")
                    self.prompt.insert(tkinter.INSERT, df_commodity[\"商品编码\"][co])
                    self.prompt.insert(tkinter.INSERT, \"\\n\")
        except:
            self.prompt.insert(tkinter.INSERT, \"错误:你导入的信息不符合导入格式\\n\")
        cursor.close()  # 关闭游标
    def leading_out_customer(self): #导出顾客
        def select_():
            cursor = conn.cursor()
            cursor.execute(\"select * from customer\")
            conn.commit()
            cursor.close()
            return cursor.fetchall()
        b=[\'顾客帐号\',\'顾客密码\',\'顾客名称\',\'顾客电话\',\'消费情况\',\'店铺帐号\']
        c=self.leading_out.get()
        df=pd.DataFrame(select_(),columns=b)
        try:
            df.to_excel(c,index=0)
        except:
            self.prompt.insert(tkinter.INSERT,\"地址格式错误:\")
    def leading_out_commodity(self): #导出顾客
        def select_commoidty():
            cursor = conn.cursor()
            cursor.execute(\"select * from commodity\")
            conn.commit()
            cursor.close()
            return cursor.fetchall()
        b=[\'商品编号\',\'商品名称\',\'商品售价\',\'商品进价\',\'生产日期\',\'保质期\',\'商品规格\',\'销售数量\',\'店铺编号\',\'库房编号\',\'顾客编号\']
        c=self.leading_out.get()
        df=pd.DataFrame(select_commoidty(),columns=b)
        try:
            df.to_excel(c,index=0)
        except:
            self.prompt.insert(tkinter.INSERT,\"地址格式错误:\")
class Warehouse(MainForm):#库房
    def __init__(self):
        super().__init__()
        tkinter.Label(self.root, text=\"库房\", font=(\"黑体\", 20)).place(x=300, y=0)
        #库房统计查询
        tkinter.Button(self.root, text=\"库存情况\", command=self.Warehouse_situation, height=3, width=10).place(x=0, y=430)
        tkinter.Button(self.root, text=\"库存导出\", command=self.leading_out_warehouse, height=3, width=10).place(x=300, y=430)
        tkinter.Button(self.root, text=\"返回菜单\", command=self.The_store_1, height=3, width=10).place(x=600, y=430)
        self.root.mainloop()
    def The_store_1(self):  #返回菜单
        self.root.destroy()
        The_store()
    def Warehouse_situation(self):  #库存情况
        tkinter.Label(self.root, text=\"店铺帐号:\", font=(\"微软雅黑\", 15)).place(x=100,y=200)
        self.entry_warehouse = tkinter.Entry(self.root, font=(\"微软雅黑\", 15))
        self.entry_warehouse.place(x=250, y=200)
        tkinter.Label(self.root, text=\"店铺密码:\", font=(\"微软雅黑\", 15)).place(x=100, y=250)
        self.entry_password = tkinter.Entry(self.root, font=(\"微软雅黑\", 15))
        self.entry_password.place(x=250, y=250)
        tkinter.Button(self.root, text=\"查询\", command=self.Warehouse_confirm,font=(\"微软雅黑\", 10)).place(x=600, y=200)
        self.Text_warehouse=tkinter.Text(self.root,width=80,height=7,font=(\"微软雅黑\", 10))
        self.Text_warehouse.place(x=12,y=30)
        tkinter.Label(self.root, text=\"导出地址:\", font=(\"微软雅黑\", 15)).place(x=100, y=300)
        self.leading_warehouse_Entry = tkinter.Entry(self.root, font=(\"微软雅黑\", 15))
        self.leading_warehouse_Entry.place(x=250, y=300)
    def remove_Text_warehouse(self):
        self.Text_warehouse.delete(0.0,tkinter.END)
        self.Text_warehouse.update()
    def Warehouse_confirm(self):  #执行查询结果
        self.remove_Text_warehouse()
        def selecte_warehouse():
            try:
                cursor = conn.cursor()
                sql=\' select commodity_name,count(*),warehouse_id from commodity GROUP BY commodity_name having \' \\
                    \'warehouse_id=(select warehouse_id from warehouse where warehouse_id=\"%s\"\' \\
                    \' and warehouse_password=\"%s\")\'%(self.entry_warehouse.get(),self.entry_password.get())
                cursor.execute(sql)
                conn.commit()
                cursor.close()
                self.remove_Text_warehouse()
                return cursor.fetchall()
            except:
                pass
        if bool(selecte_warehouse())==True:
            self.Text_warehouse.insert(tkinter.INSERT, \"商品名称,库存,库房号:\\n\")
            for i in selecte_warehouse():
                self.Text_warehouse.insert(tkinter.INSERT,i)
                self.Text_warehouse.insert(tkinter.INSERT,\'\\n\')
        else:
            self.Text_warehouse.insert(tkinter.INSERT,\"库房账号,或密码输入不对\\n\")
    def leading_out_warehouse(self):  #导出库存
        self.remove_Text_warehouse()
        try:
            def selecte_warehouse():
                cursor = conn.cursor()
                sql = \'select commodity_name,count(*),warehouse_id from commodity group by commodity_name having warehouse_id=\"%s\"\'%(self.entry_warehouse.get())
                cursor.execute(sql)
                conn.commit()
                cursor.close()
                return cursor.fetchall()
            if bool(selecte_warehouse())==True:
                df=pd.DataFrame(selecte_warehouse(),columns=[\"商品名称\",\"剩余数量\",\"库房名称\"])
                df.to_excel(self.leading_warehouse_Entry.get(),index=0)
                self.Text_warehouse.insert(tkinter.INSERT, \"库存导出成功\\n\")
            else:self.Text_warehouse.insert(tkinter.INSERT,\"请先查库存\\n\")
        except:
            self.Text_warehouse.insert(tkinter.INSERT,\"程序运行错误:\\n\")
if __name__==\"__main__\":
    conn=pymysql.connect(   #连接MySQL
        host=\'localhost\',   #本地服务器
        port=3306, #服务器端口
        user=\'root\', #用户名
        password=\'123456\',
        db=\'cpsim\',
        charset=\'utf8\'
        )
    global_id = 0
    The_login()
    conn.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容