首页 > 代码库 > 家康粮油蔬菜水果超市--用户管理系统

家康粮油蔬菜水果超市--用户管理系统

from tkinter import *from tkinter import ttkimport timefrom tkinter import messageboxwin = Tk()win.title(家康粮油蔬菜水果超市--用户管理系统)win.geometry(800x600+400+200)win.resizable(width=False,height=False)#win.attributes(‘-topmost‘,-1)#会员查询group1 = LabelFrame(win,text=查询,font=(None ,10),padx=5,pady=5)group1.grid(row=0,column = 0,padx=20,pady=3)Label(group1,text = 请输入用户姓名/卡号/手机号:,font=(None ,10)).grid(row=0,column = 0,padx=10,pady=10)Id = StringVar()Id.set(‘‘)user = Entry(group1,textvariable = Id,width = 35)user.grid(row=0,column = 1,padx=10,pady=10)    def clean():    user.delete(0,END)#会员信息group2 = LabelFrame(win,text=会员信息,font=(None ,10),padx=5,pady=5)group2.grid(row=1,column = 0,padx=10,pady=3)Label(group2,text = 卡号:,font=(None ,10)).grid(row=1,column = 0,padx=5,pady=5)varSid = StringVar()varSid.set(‘‘)sid = Entry(group2,width=10,state=disabled,textvariable = varSid)sid.grid(row=1,column = 1,padx=5,pady=5)Label(group2,text = 姓名:,font=(None ,10)).grid(row=1,column = 2,padx=5,pady=5)varName = StringVar()varName.set(‘‘)name = Entry(group2,width=10,state=disabled,textvariable = varName)name.grid(row=1,column = 3,padx=5,pady=5)Label(group2,text = 电话:,font=(None ,10)).grid(row=1,column = 4,padx=5,pady=5)varTel = StringVar()varTel.set(‘‘)tel = Entry(group2,width=20,state=disabled,textvariable = varTel)tel.grid(row=1,column = 5,padx=5,pady=5)Label(group2,text = 地址:,font=(None ,10)).grid(row=1,column = 6,padx=5,pady=5)varAdd = StringVar()varAdd.set(‘‘)adress = Entry(group2,width=30,state=disabled,textvariable = varAdd)adress.grid(row=1,column = 7,padx=5,pady=5)#消费记录group3 = LabelFrame(win,text=客户消费明细,font=(None ,10),padx=5,pady=5)group3.grid(row=3,column = 0,columnspan=3,padx=10,pady=1)tree = ttk.Treeview(group3,show=headings,columns=(col1,col2,col3,col4,                                                    col5,col6,col7,col8,))tree.column(col1,width=70,anchor=center)tree.heading(col1,text=卡号)tree.column(col2,width=80,anchor=center)tree.heading(col2,text=姓名)tree.column(col3,width=110,anchor=center)tree.heading(col3,text=最近消费金额)tree.column(col4,width=120,anchor=center)tree.heading(col4,text=最近消费时间)tree.column(col5,width=140,anchor=center)tree.heading(col5,text=消费总额)tree.column(col6,width=80,anchor=center)tree.heading(col6,text=可兑换次数)tree.column(col7,width=80,anchor=center)tree.heading(col7,text=已兑换次数)tree.column(col8,width=60,anchor=center)tree.heading(col8,text=备注)#加滚动条vbar = Scrollbar(group3, orient=VERTICAL)vbar.config(command = tree.yview)tree.configure(yscrollcommand=vbar.set)tree.grid(row=3)vbar.grid(row=3, column=1,sticky=NS)tree.grid()#积分兑换group4 = LabelFrame(win,text=积分兑换,font=(None ,10),padx=5,pady=5)group4.grid(row=2,column =0,padx=20,pady=3)Label(group4,text = 消费总额:,font=(None ,10)).grid(row=0,column = 0,padx=5,pady=5)varTot = StringVar()varTot.set(‘‘)total = Entry(group4,width=10,state=disabled,textvariable = varTot)total.grid(row=0,column = 1,padx=5,pady=5)Label(group4,text = 可兑换次数:,font=(None ,10)).grid(row=0,column = 2,padx=5,pady=5)varKe = StringVar()varKe.set(‘‘)total = Entry(group4,width=10,state=disabled,textvariable = varKe)total.grid(row=0,column = 3,padx=5,pady=5)Label(group4,text = 已兑换次数:,font=(None ,10)).grid(row=0,column = 4,padx=5,pady=5)varYi = StringVar()varYi.set(‘‘)total = Entry(group4,width=10,state=disabled,textvariable = varYi)total.grid(row=0,column = 5,padx=5,pady=5)#查询def chaXun():    userList = []    tag = False    file = open(Data.cyp,r)    for j in file:        userDict = {}        temp = []        temp.append(j.split(|))        userDict[卡号] = temp[0][0]        userDict[姓名] = temp[0][1]        userDict[最近消费金额] = temp[0][2]        userDict[最近消费时间] = temp[0][3]        userDict[消费总额] = temp[0][4]        userDict[可兑换次数] = temp[0][5]        userDict[已兑换次数] = temp[0][6]        userDict[备注] = temp[0][7]        userDict[电话] = temp[0][8]        userDict[地址] = temp[0][9][:-1]        userList.append(userDict)        #print(userList)        #print(len(Id.get()))    if Id.get()!=‘‘:        #加卡号和电话号        for i in range(len(userList)):            if Id.get() == userList[i][电话]:                varSid.set(userList[i][卡号])                varName.set(userList[i][姓名])                varTel.set(userList[i][电话])                varAdd.set(userList[i][地址])                varTot.set(userList[i][消费总额])                varKe.set(userList[i][可兑换次数])                varYi.set(userList[i][已兑换次数])                tag = True                break        for i in range(len(userList)):            #Id.get() == userList[i][‘姓名‘]            if Id.get() == userList[i][姓名]:                varSid.set(userList[i][卡号])                varName.set(userList[i][姓名])                varTel.set(userList[i][电话])                varAdd.set(userList[i][地址])                varTot.set(userList[i][消费总额])                varKe.set(userList[i][可兑换次数])                varYi.set(userList[i][已兑换次数])                tag = True                break                     #加电话号                    #print(userList)        for i in range(len(userList)):            if Id.get() == userList[i][卡号]:                varSid.set(userList[i][卡号])                varName.set(userList[i][姓名])                varTel.set(userList[i][电话])                varAdd.set(userList[i][地址])                varTot.set(userList[i][消费总额])                varKe.set(userList[i][可兑换次数])                varYi.set(userList[i][已兑换次数])                tag = True                break                          if tag == False:             messagebox.showinfo(提示,没有发现此用户!!)           else:        messagebox.showinfo(提示,请先输入卡号再继续操作!)                return userListButton(group1,text=查询,width = 15,command = chaXun).grid(row=0,column = 2,padx=10,pady=10)#相关操作group5 = LabelFrame(win,text=操作管理,font=(None ,10),padx=5,pady=5)group5.grid(row=4,column =0,padx=20,pady=5)#添加用户def add():    addWin = Tk()    addWin.geometry(300x350+500+250)    addWin.title(添加用户)    addWin.resizable(width=False,height=False)    #addWin.attributes(‘-topmost‘,-1)    Label(addWin,text = 卡号:,font=(None ,10)).grid(row=0,column = 0,padx=15,pady=15)    addId = Entry(addWin,width=30)    addId.grid(row=0,column = 1,padx=5,pady=5)    Label(addWin,text = 姓名:,font=(None ,10)).grid(row=1,column = 0,padx=15,pady=15)    addName = Entry(addWin,width=30)    addName.grid(row=1,column = 1,padx=5,pady=5)    Label(addWin,text = 手机:,font=(None ,10)).grid(row=2,column = 0,padx=15,pady=15)    addTel = Entry(addWin,width=30)    addTel.grid(row=2,column = 1,padx=5,pady=5)    Label(addWin,text = 地址:,font=(None ,10)).grid(row=3,column = 0,padx=15,pady=15)    addAdress = Entry(addWin,width=30)    addAdress.grid(row=3,column = 1,padx=5,pady=5)    Label(addWin,text = 备注:,font=(None ,10)).grid(row=4,column = 0,padx=15,pady=15)    addRemarks = Entry(addWin,width=30)    addRemarks.grid(row=4,column = 1,padx=5,pady=5)    def addUser():        resList = []        file = open(Data.cyp,r)        for j in file:            userDict = {}            temp = []            j = j.strip(\n)            temp.append(j.split(|))            if temp[0][0]!=\n:                userDict[卡号] = temp[0][0]                userDict[姓名] = temp[0][1]                userDict[最近消费金额] = temp[0][2]                userDict[最近消费时间] = temp[0][3]                userDict[消费总额] = temp[0][4]                userDict[可兑换次数] = temp[0][5]                userDict[已兑换次数] = temp[0][6]                userDict[备注] = temp[0][7]                userDict[电话] = temp[0][8]                userDict[地址] = temp[0][9]                                resList.append(userDict)        file.close()        atg = False        for i in range(len(resList)):            if addId.get() == resList[i][卡号]:                atg = True        if atg == True:            messagebox.showinfo(警告,你输入的卡号已经存在!!!)            addWin.destroy()        else:            r = messagebox.askyesno(提示,确定添加该用户吗?)            if addId.get()==‘‘or addName.get()==‘‘or addTel.get()==‘‘or addAdress.get()==‘‘or addRemarks==‘‘:                messagebox.showinfo(提示,您输入的信息不完整!)                addWin.destroy()             elif r == True:                file = open(Data.cyp,a+)                file.write(addId.get()+|)                file.write(addName.get()+|)                file.write(0+|)#最近消费金额                file.write(str(time.strftime(%d/%m/%Y))+|)#最近消费时间                file.write(0+|)#消费总额                file.write(0+|)#可兑换次数                file.write(0+|)#已兑换次数                file.write(addRemarks.get()+|)                file.write(addTel.get()+|)                file.write(addAdress.get())                                        file.write(\n)                file.close()                messagebox.showinfo(提示,添加成功!)                addWin.destroy()            else:                addWin.destroy()                Button(addWin,text=添加,width = 20,command = addUser).grid(row=5,column = 0,columnspan=2,padx=15,pady=15)#浏览用户def infoView():    items = tree.get_children()    for item in items:        tree.delete(item)    file = open(Data.cyp,r)    userList = []        for i in file:        t = i.split(|)        userList.append(t)    userList.sort(key=lambda x:x[4])        for i in range(len(userList)):        tree.insert(‘‘,0,values=(userList[i][0],userList[i][1],userList[i][2],userList[i][3],                                 userList[i][4],userList[i][5],userList[i][6],userList[i][7]))    file.close()#读取文件def read():    resList = []    file = open(Data.cyp,r)    for j in file:        userDict = {}        temp = []        j = j.strip(\n)        temp.append(j.split(|))        if temp[0][0]!=\n:            userDict[卡号] = temp[0][0]            userDict[姓名] = temp[0][1]            userDict[最近消费金额] = temp[0][2]            userDict[最近消费时间] = temp[0][3]            userDict[消费总额] = temp[0][4]            userDict[可兑换次数] = temp[0][5]            userDict[已兑换次数] = temp[0][6]            userDict[备注] = temp[0][7]            userDict[电话] = temp[0][8]            userDict[地址] = temp[0][9]                        resList.append(userDict)    file.close()    return resListdef delUser():     iids = tree.selection()    name = tree.item(iids,values)    resList = read()    #print(resList)    ‘‘‘    #读取文件    resList = []    file = open(‘Data.cyp‘,‘r‘)    for j in file:        userDict = {}        temp = []        temp.append(j.split(‘|‘))        userDict[‘序号‘] = temp[0][0]        userDict[‘姓名‘] = temp[0][1]        userDict[‘最近消费金额‘] = temp[0][2]        userDict[‘最近消费时间‘] = temp[0][3]        userDict[‘消费总额‘] = temp[0][4]        userDict[‘可兑换次数‘] = temp[0][5]        userDict[‘已兑换次数‘] = temp[0][6]        userDict[‘备注‘] = temp[0][7]        userDict[‘电话‘] = temp[0][8]        userDict[‘地址‘] = temp[0][9][:-1]        resList.append(userDict)    file.close()    ‘‘‘    if iids == ‘‘:        messagebox.showinfo(提示,请先选中您所要删除的用户!)    else:        r = messagebox.askyesno(提示,确定删除该用户吗?)        if r == True:            for i in range(len(resList)):                if name[1] == resList[i][姓名]:                    del resList[i]                    tree.delete(iids)                    messagebox.showinfo(提示,删除成功)                    break                    #写入文件            file = open(Data.cyp,w)            for j in range(len(resList)):                file.write( resList[j][卡号]+|)                file.write( resList[j][姓名]+|)                file.write( resList[j][最近消费金额]+|)                file.write(resList[j][最近消费时间]+|)                file.write( resList[j][消费总额]+|)                file.write( resList[j][可兑换次数]+|)                 #file.write( resList[j][‘可兑换次数‘]+‘|‘)                file.write( resList[j][已兑换次数]+|)                file.write( resList[j][备注]+|)                file.write( resList[j][电话]+|)                file.write( resList[j][地址])                file.write(\n)            file.close()    infoView()    def helpme():    messagebox.showinfo(提示,寒江独钓\nQQ:35959248!\n电话:13630622588)def winExit():    win.destroy()#消费记录def buy():    if Id.get()==‘‘:        messagebox.showinfo(提示,请先输入姓名再继续操作!)    else:        chaXun()        r = messagebox.askyesno(提示,确定是该用户吗?)        if r == True:                        buyWin = Tk()            buyWin.geometry(250x200+500+350)            buyWin.title(添加购物记录)            varTime = str(time.strftime(%d/%m/%Y))            Label(buyWin,text = 购物时间:,font=(None ,10)).grid(row=0,column = 0,padx=10,pady=30)            Label(buyWin,text=varTime,font=(None ,10)).grid(row=0,column = 1,padx=10,pady=10)            Label(buyWin,text = 消费金额:,font=(None ,10)).grid(row=1,column = 0,padx=10,pady=10)            varTot = StringVar()            buyNum = Entry(buyWin,width=15,textvariable = varTot)            buyNum.grid(row=1,column = 1,padx=10,pady=10)            #更新购物金额            def update():                resList = chaXun()                #print(resList)                for i in range(len(resList)):                    if varSid.get() == resList[i][卡号]:                        resList[i][最近消费金额]=buyNum.get()                        resList[i][消费总额]=str(int(resList[i][消费总额])+int(resList[i][最近消费金额]))                        messagebox.showinfo(提示,更新成功)                        #写入文件                        file = open(Data.cyp,w)                        for j in range(len(resList)):                            #print(resDict)                            file.write( resList[j][卡号]+|)                            file.write( resList[j][姓名]+|)                            file.write( resList[j][最近消费金额]+|)                            file.write(str(time.strftime(%d/%m/%Y))+|)                            file.write( resList[j][消费总额]+|)                            if ((int(resList[i][消费总额])-int(resList[i][已兑换次数])*500)/500) >=1:                                resList[i][可兑换次数] = str(int((int(resList[i][消费总额])-int(resList[i][已兑换次数])*500)/500))                            else:                               resList[i][可兑换次数] = 0                            #file.write( str(int(resList[j][‘消费总额‘])//500)+‘|‘)                            file.write( resList[j][可兑换次数]+|)                            file.write( resList[j][已兑换次数]+|)                            file.write( resList[j][备注]+|)                            file.write( resList[j][电话]+|)                            file.write( resList[j][地址])                            file.write(\n)                        #print( resList[i])                                                    file.close()                        buyWin.destroy()            infoView()            Button(buyWin,text=确定,width = 11,command = update).grid(row=2,column = 0,padx=10,pady=10)            Button(buyWin,text=取消,width = 11,command = lambda:buyWin.destroy()).grid(row=2,column = 1,padx=10,pady=10)def zzz():    messagebox.showinfo(提示,功能开发中)Button(group1,text=消费记录,width = 15,command = buy).grid(row=0,column = 3,padx=10,pady=10)#Button(group1,text=‘自定义‘,width = 7,command = zzz).grid(row=0,column = 4,padx=10,pady=10)def clean():    infoView()    Id.set(‘‘)    varSid.set(‘‘)    varName.set(‘‘)    varTel.set(‘‘)    varAdd.set(‘‘)    varTot.set(‘‘)    varKe.set(‘‘)    varYi.set(‘‘)    def menoyTotal():    menoySum = 0    resList = read()    for i in range(len(resList)):        menoySum = menoySum  + int(resList[i][消费总额])    messagebox.showinfo(恭喜,一共赚了+str(menoySum)+)Button(group5,text=刷新数据,width = 11,command = clean).grid(row=4,column = 0,padx=10,pady=10)Button(group5,text=添加用户,width = 11,command = add).grid(row=4,column = 1,padx=10,pady=10)Button(group5,text=浏览用户,width = 11,command = infoView).grid(row=4,column = 2,padx=10,pady=10)Button(group5,text=删除用户,width = 11,command = delUser).grid(row=4,column = 3,padx=10,pady=10)Button(group5,text=销售总额,width = 11,command = menoyTotal).grid(row=4,column = 4,padx=10,pady=10)Button(group5,text=帮助,width = 11,command = helpme).grid(row=4,column = 5,padx=10,pady=10)Button(group5,text=退出,width = 11,command = winExit).grid(row=4,column = 6,padx=10,pady=10)def duihuan():    resList = read()    if Id.get()==‘‘:        messagebox.showinfo(提示,请先输入姓名再继续操作!)    else:        r = messagebox.askyesno(提示,确定要兑换吗?)        if r == True:            for i in range(len(resList)):                if varSid.get() == resList[i][卡号]:# and resList[i][‘可兑换次数‘] > 0:                    if int(resList[i][可兑换次数]) > 0:                        resList[i][已兑换次数] = str(int(resList[i][已兑换次数]) + 1)                        if ((int(resList[i][消费总额])-int(resList[i][已兑换次数])*500)/500) >=1:                            resList[i][可兑换次数] = str(int((int(resList[i][消费总额])-int(resList[i][已兑换次数])*500)/500))                        else:                            resList[i][可兑换次数] = 0                        break                    else:                       messagebox.showinfo(提示,你的兑换次数已用完!)                       break                                                                                       #写入文件            file = open(Data.cyp,w)            for j in range(len(resList)):                file.write( resList[j][卡号]+|)                file.write( resList[j][姓名]+|)                file.write( resList[j][最近消费金额]+|)                file.write(resList[j][最近消费时间]+|)                file.write( resList[j][消费总额]+|)                #file.write( str(int(resList[j][‘可兑换次数‘])//500)+‘|‘)                file.write( resList[j][可兑换次数]+|)                file.write( resList[j][已兑换次数]+|)                file.write( resList[j][备注]+|)                file.write( resList[j][电话]+|)                file.write( resList[j][地址])                file.write(\n)            file.close()    infoView()    Button(group4,text=申请兑换,width = 13,command = duihuan).grid(row=0,column = 6,padx=10,pady=10)Button(group4,text=自定义,width = 12,command = duihuan).grid(row=0,column = 7,padx=10,pady=10)mainloop()

 

家康粮油蔬菜水果超市--用户管理系统