家康粮油蔬菜水果超市--用户管理系统
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()
以上是关于家康粮油蔬菜水果超市--用户管理系统的主要内容,如果未能解决你的问题,请参考以下文章
JavaWeb SSM SpringBoot+Redis网上水果超市商城(源码+论文可运行《精品毕设》)主要实现登录注册商品分类浏览订单评论收藏购物车个人信息地址管理后台管理
基于HTML(蔬菜水果超市)电商项目项目的设计与实现.rar(html前端源码)毕业设计.rar