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

Posted 無碼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了家康粮油蔬菜水果超市--用户管理系统相关的知识,希望对你有一定的参考价值。

from tkinter import *
from tkinter import ttk
import time
from tkinter import messagebox
win = 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 userList


Button(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 resList

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

 

以上是关于家康粮油蔬菜水果超市--用户管理系统的主要内容,如果未能解决你的问题,请参考以下文章

水果识别自助水果超市matlab源码含 GUI

JavaWeb SSM SpringBoot+Redis网上水果超市商城(源码+论文可运行《精品毕设》)主要实现登录注册商品分类浏览订单评论收藏购物车个人信息地址管理后台管理

基于HTML(蔬菜水果超市)电商项目项目的设计与实现.rar(html前端源码)毕业设计.rar

蓝桥杯选拔赛真题36Scratch水果超市小程序 少儿编程scratch蓝桥杯选拔赛真题讲解

水果系统(面向过程,面向对象)

水果系统(面向过程,面向对象)