精华内容
下载资源
问答
  • python超市进销存管理系统 千次阅读 多人点赞
    2020-11-06 14:32:48

    面向对象程序设计

    python实现超市进销存管理系统

    系统包括7种操作,分别是:1.查询所有商品;2.添加商品;3.修改商品;4.删除商品;5.卖出商品;6.汇总;0.退出系统。

    定义一个商品类

    #定义一个商品类
    class Goods:
        def __init__(self,name,num,cin,cout):
            self.name = name
            self.num = num
            self.cin  = cin
            self.cout = cout
        def __str__(self):
            state = "已售罄"
            if self.num == 0:
                return '名称:%s , 数量:%d %s, 进货价格:%.2f ,售出价格:%.2f '%(self.name,self.num,state,self.cin,self.cout)
            else:
                return '名称:%s , 数量:%d , 进货价格:%.2f ,售出价格:%.2f '%(self.name,self.num,self.cin,self.cout)
    
    

    定义一个汇总类

    #定义一个汇总类
    class gGoods:
        def __init__(self,name,gnum,gcin,gcout):
            self.name = name
            self.gnum = gnum
            self.gcin = gcin
            self.gcout = gcout
        def __str__(self):
            return '名称:%s , 卖出数量:%d , 进货价格:%.2f ,卖出价格:%.2f '%(self.name,self.gnum,self.gcin,self.gcout)
    
    

    定义管理商品类

    #定义管理商品类
    class GoodsManager:
        go=[]
        js=[]
        #构造方法
        def init(self):
            self.go.append(Goods('牛奶',5,40,60))
            self.go.append(Goods('盒饭',5,10,60))
            self.js.append(gGoods('菇娘',1,30,60))
    
        #菜单
        def Menu(self):
            self.init()
            print('\"超市进销存管理系统\"菜单:')
            print("1.显示所有商品")
            print("2.添加新的商品")
            print("3.修改商品信息")
            print("4.删除商品")
            print("5.卖出商品")
            print("6.汇总")
            print("0.退出")
            print("***********************************")
            while True:
                
                SN=int(input("===请输入操作序号:"))            
                if SN in [0,1,2,3,4,5,6]:
                    if SN == 0:
                        print("已经退出")
                        break;
                    if SN == 1:
                        self.Show_all()
                    elif SN  == 2:
                        self.Add()
                    elif SN == 3:
                        self.Modify()
                    elif SN == 4:
                        self.Delete()
                    elif SN == 5:
                        self.Shop()
                    elif SN == 6:
                        self.Summary()
    
                else:
                    print("输入有误!")
        #显示
        def Show_all(self):
            for goods in self.go:
                print (str(goods))
        #添加
        def Add(self):
            goods_name = input("请输入商品名称:")
            ret = self.check(goods_name)
            if ret != None:
                print('商品已经存在')
                print('是否增加商品数量:(y/n)')
                while True:
                    pd = input()
                    if pd == 'y':
                        goods_num = int(input("请输入商品的数量:"))
                        old_goods = Goods(goods_name,goods_num+ret.num,ret.cin,ret.cout)
                        self.go.remove(ret)
                        self.go.append(old_goods)
                        print("增加成功")
                        break
                    elif pd == 'n':
                        print("已经返回")
                        break
                    else:
                        print("输入有误,重新输入:")
                
            else:
                goods_num = int(input("请输入商品的数量:"))
                goods_cin = float(input("请输入商品进货价格:"))
                goods_cout = float(input("请输入商品出货价格:"))
                if goods_num>0 and goods_cin>0 and goods_cout>0:
                    new_goods= Goods(goods_name,goods_num,goods_cin,goods_cout)
                    self.go.append(new_goods)
                    print("添加成功")
                else:
                    print("小可爱,输入错误!")
        #修改
        def Modify(self):
            goods_name = input("请输入需要修改的商品名称:")
            ret = self.check(goods_name)
            if ret != None:
                print(ret)
                goods_name1 = input("请输入修改后商品的名称:")
                goods_num = int(input("请输入修改后商品的数量:"))
                goods_cin = float(input("请输入修改后商品进货价格:"))
                goods_cout = float(input("请输入修改后商品出货价格:"))
                old_goods= Goods(goods_name1,goods_num,goods_cin,goods_cout)
                self.go.remove(ret)
                self.go.append(old_goods)    
                print("修改成功")
            else:
                print("小可爱,没有此商品!")
        #检查
        def check(self,goods_name):
            for goods in self.go:
                if goods.name == goods_name:
                    return goods
            else:
                return None
        #检查js
        def checkjs(self,goods_name):
            for goods in self.js:
                if goods.name ==goods_name:
                    return goods
            else:
                return None
        #删除
        def Delete(self):
            goods_name = input("请输入需要删除的商品名称:")
            ret = self.check(goods_name)
            if ret != None:
                print(ret)
                print('是否删除商品:(y/n)')
                while True:
                    pd = input()
                    if pd == 'y':
                        self.go.remove(ret)
                        print("删除成功")
                        break
                    elif pd == 'n':
                        print("已经返回")
                        break
                    else:
                        print("输入有误,重新输入:")
            else:
                print("小可爱,没有此商品!")
        #卖出
        def Shop(self):
            goods_name = input("请输入需要卖出的商品名称:")
            ret = self.check(goods_name)
            if ret != None:
                g_num=int(input("卖出个数:"))
                if ret.num-g_num<0:
                    print("该商品数量不足!请补充")
                else:
                    old_goods= Goods(ret.name,ret.num-g_num,ret.cin,ret.cout)
                    self.go.remove(ret)
                    self.go.append(old_goods)
                    gret = self.checkjs(goods_name)
                    if gret == None:
                        shop_goods = gGoods(ret.name,g_num,ret.cin*g_num,ret.cout*g_num)
                        self.js.append(shop_goods)
                    else:
                        shop_goods = gGoods(gret.name,g_num+gret.gnum,gret.gcin+ret.cin*g_num,gret.gcout+ret.cout*g_num)
                        self.js.remove(gret)
                        self.js.append(shop_goods)
                    print("卖出后:",end=' ')
                    old_goods= Goods(ret.name,ret.num-g_num,ret.cin*g_num,ret.cout*g_num)
                    print(old_goods)
                    
            else:
                print("小可爱,没有此商品!")
        #汇总当天卖出商品,包括每种销售商品名称、数量、进货总价、销售总价等。
        def Summary(self):
            for goods in self.js:
                print (str(goods))
            print("售出的物品进货总价:",end="")
            x=0
            for goods in self.js:
                x+=float(goods.gcin)
            print(x)
            print("售出的物品销售总价:",end="")
            y=0
            for goods in self.js:
                y+=float(goods.gcout)
            print(y)
            print("利润:",y-x);```
    
    
    更多相关内容
  • Python tkinter 进销存系统 Sql数据 非常简单的进销存系统,只写了个大体的框架,供大家学习交流。 如果有什么疑问可以留言
  • 通过PYTHON基本功能,实现仓库进销存系统
  • 1.本表由VBA编码制作而成,用户使用本模板时需启动宏...4.库存查询工作表中需要用户进行选择入库、出库或者库存,选完后系统会根据用户填写的日期和商品编码进行查询(可以单独按时间或产品编码查询也可以综合查询)。
  • python实现商品进销存管理系统

    千次阅读 2022-01-06 15:49:34
    商品进销存架构

    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()
    
    
    
    
    
    
    
    
    

    展开全文
  • python tkinter进销存系统源码

    python进销存系统源码tkinter python仓库管理系统源码!
    登录界面在这里插入图片描述
    主页
    在这里插入图片描述
    入库功能
    在这里插入图片描述

    卖出功能
    在这里插入图片描述
    销售数据查看
    在这里插入图片描述

    在这里插入图片描述
    客户数据查看
    在这里插入图片描述
    在这里插入图片描述
    设置密码修改
    在这里插入图片描述
    在这里插入图片描述
    完整源码可以运行
    网盘下载完整源码
    链接:https://pan.baidu.com/s/1voJ1pcdvZEUqI0u6FFnR7A?pwd=w1t6
    提取码:w1t6

    展开全文
  • 从0基础学习Python (Day21)[进销存管理系统[案例]](v2.0-完善版) 进销存管理系统[案例] 前言: ​ 在2020.08.02[进销存管理系统(v1.0版本)],(注:CSDN原创博客“从0基础学习Python(16)”)我们将进销存系统的整体...

    从0基础学习Python (Day21)[进销存管理系统[案例]](v2.0-完善版)

    进销存管理系统[案例]

    前言:

    ​ 在2020.08.02[进销存管理系统(v1.0版本)],(注:CSDN原创博客“从0基础学习Python(16)”)我们将进销存系统的整体框架实现了出来,明白了系统需要实现的功能,但是因为缺乏面向对象后续的相关知识,无法将现实生活中的问题在程序上解决,使得系统并不完善,这几天通过对“面向对象“完整的学习,我们对面向对象的编程思想有了一个更加系统的了解,今天我们将把这个进销存管理系统用这几天所学进行完善规整。

    案例的学习根本目的是为了将这一部分的知识整体的串联起来,
    实践是最好的学习方式,认真的完成案例会将自身整体的编程水平提高一个可观的高度

    程序主体分析

    1.第一步创建包

    ​ [包将有联系的模块组织在一起,放在同一个文件夹下面,并且在这个文件夹里面创建一个名字为_init_.py文件,那么这个文件夹就称为包]

    如图所示:本程序未使用_init_.py文件,图中不做体现
    在这里插入图片描述

    2.我们需要创建一个模块,来协助我们的功能实现

    ​ 这个模块的任务是帮我们判断输入的值是否正确,并且返回我们规定范围内的值

    ​ 我们进销存系统需要录入货物的id:编号 name:名称 count:数量 price:单价 unit:单位 type:种类

    ​ 编号id:编号必须是数字,而且是整数

    ​ 名称name:商品的名称不做要求,名字可以是任意的字符

    ​ 数量count:数量可以是浮点型,因为计量单位有斤,但是不能为负数,数量不能为负,要符合实际

    ​ 单价price:单价可以是浮点型,但不能为负数,可以为0,商品赠送价钱就可为0 但负数贴钱就不符合实际了

    ​ 单位unit:单位不做要求根据商品而定

    ​ 种类type:种类不做要求根据商品而定

    [Goods.py]内容

    class Good(object):
        def __init__(self, id, name, count, price, unit, type):
            # id:编号     name:名称     count:数量    price:单价    unit:单位     type:种类
            self.id = id
            self.name = name
            self.count = 0
            self.price = 0
            self.unit = unit
            self.type = type
            self.set_count(count)
            self.set_price(price)
    	
        #数量的限制,如果输入小于0,则返回0
        def set_count(self, count):
            if count > 0:
                self.count = count
            else:
                self.count = 0
    
        def get_count(self):
            return self.count
    
        ##单价的限制,如果输入小于0,则返回0
        def set_price(self, price):
            if price > 0:
                self.price = price
            else:
                self.price = 0
    
        def get_price(self):
            return self.price
    
        def __str__(self):
            return f"{self.id},{self.name},{self.price},{self.count},{self.unit},{self.type}"
    

    3.完成程序的主体部分,实现我们所需的功能

    ​ 以下七个功能为咱们主要功能,每一个功能都使用一个函数来完成,本次完善程序是在上次的程序基础上添了程序的异常检测等功能,使程序更加趋于完善

    ​ 1.录入货物:增加两个判断函数,第一点是判断你录入的货物编号在不在数据库中,第二点是判断输入的数据类型是否正确,如果不正确就循环输入

    ​ 2.添加货物 3.修改货物 4.取出货物 5.移除货物 6.查看货物 7.退出系统

    [Main.py]内容

    from GoodsSystem.Goods import Good
    #导入判断数据的模块
    
    class Wms(object):
        #[1]程序的准备工作,创建列表,输出程序功能框,将程序可以实现的功能展示给用户
        def __init__(self):
            self.good_data = []
    
        def sendout(self):
            print("=================================================")
            print("---------------阿里巴巴·进销存系统------------------")
            print("------------------1.录入货物----------------------")
            print("------------------2.添加货物----------------------")
            print("------------------3.修改货物----------------------")
            print("------------------4.取出货物----------------------")
            print("------------------5.移除货物----------------------")
            print("------------------6.查看货物----------------------")
            print("------------------7.退出系统----------------------")
        
        # aaa,bbb,ccc 完成了录入货物 [bbb,ccc为aaa的判断条件]
        def aaa_good(self):
            good_id = input("请输入货物编号:")
            while (not self.ccc_good(good_id, isint=True) or self.bbb_good(good_id)):
                if self.bbb_good(good_id):
                    print("该编号已占用")
                good_id = input("请输入货物编号:")
            good_name = input("请输入货物名称:")
            good_pirce = input("请输入货物单价:")
            while not self.ccc_good(good_pirce):
                good_pirce = input("请输入货物单价:")
            good_count = input("请输入货物数量:")
            while not self.ccc_good(good_count):
                good_count = input("请输入货物数量:")
            good_unit = input("请输入货物计量单位:")
            good_type = input("请输入货物类型:")
            good = Good(good_id, good_name, float(good_pirce), int(good_count), good_unit, good_type)
            self.good_data.append(good)
            print("添加货物成功!")
    
        # 判断条件,判断数据库中有没有你要添加ID
        def bbb_good(self, id):
            for item in self.good_data:
                if item.id == id:
                    return True
                else:
                    return False
    
        # 判断条件,判断输入的格式是否正确
        def ccc_good(self, str, isint=False):
            if isint:
                try:
                    res = int(str)
                except:
                    print("输入数据格式有误请从新输入")
                    return False
                else:
                    return True
            else:
                try:
                    res = float(str)
                except:
                    print("输入数据格式有误请从新输入")
                    return False
                else:
                    return True
    
        # 实现添加功能
        def ddd_good(self):
            while True:
                good_id = input("请输入货物编号:")
                for item in self.good_data:
                    if item.id == good_id:
                        aa = float(input("请输入添加的数量:"))
                        item.count += aa
                        print("添加成功")
                        print(item.count)
                        return
                    else:
                        pass
    
        # 实现修改功能
        def eee_good(self):
            while True:
                good_id = input("请输入货物编号:")
                for item in self.good_data:
                    if item.id == good_id:
                        good_name = input("请输入货物名称:")
                        item.name = good_name
                        good_pirce = input("请输入货物单价:")
                        while not self.ccc_good(good_pirce):
                            good_pirce = input("请输入货物单价:")
                        item.price = good_pirce
                        good_count = input("请输入货物数量:")
                        while not self.ccc_good(good_count):
                            good_count = input("请输入货物数量:")
                        item.count = good_count
                        good_unit = input("请输入货物计量单位:")
                        item.unit = good_unit
                        good_type = input("请输入货物类型:")
                        item.type = good_type
    
                        print("添加成功")
                        return
                    else:
                        pass
    
        # 实现取出功能
        def fff_good(self):
            while True:
                good_id = input("请输入货物编号:")
                for item in self.good_data:
                    if item.id == good_id:
                        aa = float(input("请输入取出货物的数量:"))
                        item.count -= aa
                        print("取出成功")
                        print(item.count)
                        return
                    else:
                        pass
    
        # 实现移除功能
        def ggg_good(self):
            while True:
                good_id = input("请输入货物编号")
                for item in self.good_data:
                    if item.id == good_id:
                        self.good_data.remove(item)
                        print("移除成功")
                        return
                    else:
                        pass
    
        # 查看货物
        def hhh_good(self):
            print("----货物信息如下---")
            for item in self.good_data:
                print(f"编号{item.id}  名称{item.name}    数量{item.count}    单价{item.price}    单位 {item.unit}    种类{item.type}")
    
        # 主循环【主程序】
        def run(self):
            while True:
                self.sendout()
                index = input("$$请输入操作指令$$:")
                if index == "1":
                    self.aaa_good()
                elif index == "2":
                    self.ddd_good()
                elif index == "3":
                    self.eee_good()
                elif index == "4":
                    self.fff_good()
                elif index == "5":
                    self.ggg_good()
                elif index == "6":
                    self.hhh_good()
                elif index == "7":
                    print("拜拜了您嘞奥里给")
                    return
                else:
                    print("你输的啥鬼玩意,再来一遍")
    

    4.调用整个程序,执行!

    [Wms.py]内容

    from GoodsSystem.Wms import Wms
    
    re=Wms()
    re.run()
    

    总结:

    ​ @通过案例的学习,我们对面向对象的思想有了更加深入的了解,也明白了面向对象和面向过程最本质的区别如下,学习程序要认真的去刨析,能坚持别人不能坚持的,才能拥有别人不能拥有的


    面向过程:—侧重于怎么做?
    1.把完的成某一个需求的 所有步骤 从头到尾 逐步实现
    2.根据开发要求,将某些功能独立的代码封装成一个又一个函数
    3.最后完成的代码,就是顺序的调用不同的函数
    【特点】:
    1.注重步骤与过程,不注重职责分工
    2.如果需求复杂,代码会变得很复杂
    3.开发复杂项目,没有固定的套路,开发难度很大
    面向对象:–谁来做?
    相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法
    1.在完成某一个需求前,首先确定职责–要做的事(方法)
    2.根据职责确定不同的对象,在对象内部封装不同的方法(多个)
    3.最后完成代码,就是顺序的让不同的对象调用不同的方法
    【特点】:
    1.注重对象和职责,不同的对象承担不同的职责
    2.更加适合对复杂的需求变化,是专门应对复杂项目的开发,提供的固定套路
    3.需要在面向过程的基础上,再学习一些面向对象的语法

    Day21-------END

    展开全文
  • 基于以上特点设计与实现基于Django框架的进销存系统平台,旨在方便商场管理进销存过程中产生的订单和仓库,商场的货物记录。 本系统的设计以pycharm作为开发工具,前端运用HTML5来设计基本结构,用css来
  • 仓存超市进销存管理系统python代码。
  • 主要为大家详细介绍了python实现超市商品销售管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 进销存管理后台系统 flask实现的进销存后台管理系统,包含一个模块:采购管理,销售管理,仓库管理,数据统计,管理员管理,系统管理。 效果图 技术栈 烧瓶 烧瓶相关发展 MySQL的 layui模板 运行项目 #clone项目到...
  • python django 商品进销存管理系统 python django 进销存系统 python 商品库存系统 后端:python django 数据库:MySQL 5.7 前端:html css js等 涉及功能: 登陆、退出、库存管理、商品入库出库、新增商品、出入库...
  • 本系统属于小型的超市进销存销售管理系统,可以有效地对中小型超市进行管理,本系统应达到以下目标:  系统采用人机交互的方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。  能够对进货信息进行有效...
  • python实现超市进销存管理系统 系统包括7种操作,分别是:1.查询所有商品;2.添加商品;3.修改商品;4.删除商品;5.卖出商品;6.汇总;0.退出系统。 定义一个商品类 #定义一个商品类 class Goods: def __init__...
  • 4个角色是登录后台用的,超级管理员拥有所有的权限,可以管理账号信息,可以查看员工的操作记录,按照各个超市统计销售情况,以图形显示最近7天销售分布图,发送系统通知等!采购员登录后负责商品信息的添加维护,...
  • 进销存是一种管理软件,它将为公司提供一个集成的应用程序框架,运行业务的所有可能方面。实施进销存的原因是显而易见的:企业核心功能的深度结合。进销存系统可以很容易地集成,并与公司的需求保持一致。  演示...
  • 一个超市进销存系统 目录 安装 下载项目并进入目录: git clone git@github.com:KZNS/scsx-market.git cd scsx-market 本项目初期使用Python3,您可以通过一下命令安装依赖: pip install -r requirements.txt ...
  • Python超市管理系统可实现下单商品,修改商品数量,删除商品,结算商品。 使用list列表来记录用户的购物清单,list的列表的元素代表购物明细项,每个明细项也是一个list列表。
  • 进销存管理系统详解(附代码),是一本很好的参考文档 用swing实现
  • 开源进销存管理系统学习教程

    千次阅读 2021-07-25 18:12:51
    开源进销存管理系统,该前后端分离,api使用restful协议,方便二次开发,后端使用Python,Django,DRF等技术,前端代码使用AntD进行构建,包含采购管理,销售管理,库存管理等业务管理流程 Gitee地址: Gitee Github...
  • 本文demo下载地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=1089实例使用C#实现了一个在线进销存管理系统, 系统的页面比较多,业务比较繁杂, 下载代码中包含相应的使用说明文档(见...
  • 用户可以注册登录系统,然后可以管理客户信息,管理服装信息,可以选择客户登记服装入库单和出库单,具体一个入库单或者出库单里面可以添加具体的多个服装记录,入库的时候服装的库存对应的增加,出库的时候服装的...
  • 用的是SQL 2005的数据库,把数据库导入到你的电脑后,把连接数据库的语句改一下就可以了。
  • python:(面向对象思想)实现进销存系统 目录:python:(面向对象思想)实现进销存系统要求:1、货物类2、系统类3、主函数 要求: ​ 使用面向对象的思想实现一个货物进销存系统。 ​ 1、属性: ​ 编号、名称...
  • python商品销售管理系统的设计与实现毕业论文.docx
  • 本文档资料适用于java php ssm springboot Vue python nodejs 微信小程序 Android app等,写文档不要纠结于是什么语言的 非常适合大专,本科等同学们作为参考资料使用只需要把文中的内容替换成你需要的就行了哦,最少...
  • django+mysql 药品管理系统
  • 本文档资料适用于java php ssm springboot Vue python nodejs 小程序等,非常适合大专,本科等同学们作为参考资料使用 只需要把文中的内容替换成你需要的就行了哦,最少文档的各种图,比如说功能模块图,流程图,用列图啊,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,521
精华内容 608
关键字:

python进销存管理系统

友情链接: jiadar.rar