<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了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()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45