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_iddef 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:passdef 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,8global global_idcursor = 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,8global global_idcursor = 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_iddef 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:continuefor 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:continuefor 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:continueconn.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_nameglobal global_ida=[]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_idcursor = 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:passdef 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:passdef 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:passdef 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:passdef 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:passdef 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:passdef 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:passdef 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:passdef 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_idself.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_idself.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:passif 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(   #连接MySQLhost='localhost',   #本地服务器port=3306, #服务器端口user='root', #用户名password='123456',db='cpsim',charset='utf8')global_id = 0The_login()conn.close()

python实现商品进销存管理系统相关推荐

  1. python django 商品进销存管理系统

    python django 商品进销存管理系统 pythondjango 进销存系统 python商品库存系统 后端:python django 数据库:MySQL 5.7 前端:html css j ...

  2. python新手案例——商品进销存管理系统(pymysql+xlwt)(一)

    一.pymysql和xlwt介绍 1.pymsq 此模块的作用是让python语言能够对数据库的表进行操作,在此,我们需要简单地了解以下pymysql最基础的操作. Python3 MySQL 数据库 ...

  3. php 进销存 spd,商品进销存管理系统PB

    商品进销存管理系统 商品进销存管理系统数据字典 系统运行环境: 操作系统:     Windows 2000 SP2 数据库系统:         Oracle 8.17 for NT 开发工具:   ...

  4. ASP.NET商品进销存管理系统【附项目下载地址】

    该项目为期末的一次大作业,整个项目功能完整,界面美观,设计齐全!!! 一.开发环境 操作系统:windows 10 浏览器:chrome浏览器 开发工具:Microsoft Visual Studio ...

  5. excel进销存管理系统_美萍商业进销存软件—库存了如指掌

    进销存软件是从商品的采购(进)到入库(存)到销售(销)进行管理的软件,随着信息技术的飞速发展,企业进销存的管理应用相应的软件使这一动态的进销存过程更加有条理,应用进销存管理软件,不仅使企业的进销存管理 ...

  6. C#毕业设计——基于C#+asp.net+sqlserver药店进销存管理系统设计与实现(毕业论文+程序源码)——进销存管理系统

    基于C#+asp.net+sqlserver药店进销存管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+sqlserver药店进销存管理系统设计与实现,文章末尾 ...

  7. java中为什么药导包,Java药品进销存管理系统

    需求分析 基于JavaWeb实现一个药品进销存管理系统, 也可以为其他类型的商品进销存管理系统, 该系统使用了jsp, struts2, mysql, bootstrap能技术, 能够为企业快速管理药 ...

  8. 【计算机毕业文章】中小连锁零食企业进销存管理系统的设计与实现

    中小连锁零食企业进销存管理系统的设计与实现 [摘 要]随着现代信息技术的高速发展,企业的信息化水平能力将直接影响着企业的管理效率.成本控制.企业的进货以及商品的销售等是企业重要的经营活动之一,采用适合 ...

  9. 商品销售统计系统java_IMS: 基于Java实现的InventoryManagementSystem进销存管理系统

    IMS-进销存管理系统 基于 Java 实现的进销存管理系统(Inventory Management System) 项目结构 系统功能设计 进货管理(Stock-In) 进货入库(StockIn) ...

  10. Java 超市管理系统、商品进销存系统 -窗体程序

    今天为大家分享一个java语言编写的超市管理系统,目前系统功能已经很全面,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步 开发环境 开发语 ...

最新文章

  1. linux命令之date
  2. 手机怎么解决同ip多账号_抖音被限流,作品被判搬运,账号被判搬运限流,Dou?被封怎么办?...
  3. WP7上Metro风格的程序栏图标汇总
  4. 高德技术开放日 | 聊聊技术与成长那些事,大量实习岗、社招岗开放
  5. PAT(乙级) 1002 写出这个数 (20point(s)) Python
  6. 吴恩达机器学习+林轩田机器学习+高等数学和线性代数等视频领取
  7. oracle中的自带函数,求完整的ORACLE自带函数文档
  8. OpenMV(三)--实时获取摄像头图片
  9. .htaccess文件玩转Rewrite
  10. 17. 促销,市场营销和内容页
  11. 虚拟人的手工前世和AI今生
  12. 【人脸识别】基于PCA实现ORL人脸识别附matlab代码和报告
  13. css3-pie,CSS3PIE
  14. mysql/hive求实际活动时间
  15. C语言实现矩阵的秩求解分析
  16. dpdk课程学习之练习笔记四(dns预备)
  17. linux如何kill僵尸进程,linux 如何杀死僵尸进程——原理及操作
  18. Kali Linux 2016.1 x86 x64 安装 wine QQ
  19. Matlab MEX
  20. 03-若依-数据库表分析

热门文章

  1. 关于用KMS的时候手欠把原装正版win11的激活卸载了怎么办
  2. 高通Camera驱动配置参考:dtsi、代码
  3. Linux傲腾DC128G内存设置,Intel傲腾DC可持续内存开放:单条512GB内存时代来临
  4. 学习笔记1-【计算机组成原理】-【计算机科学速成课】[40集全/精校] - Crash Course Computer Science
  5. Abaqus6.14.4 Linux详细图文安装教程
  6. 回归模型1:优化的灰色模型matlab实现
  7. RGB888和RGB565互相转换
  8. 安装tensorflow踩的那些坑
  9. 【javascript-基础小练习】跟随鼠标移动的提示框
  10. 智能门锁与网关:海康萤石智能门锁的网关分析(二)