''' 此模块需要使用用户登陆模块代码 用户入口: 1、输入用户名和密码 2、商品信息存在文件里 3、已购商品和余额记录在文件里 注:用户购买商品后退出,再次登陆会自动读取上次用户的余额 商户入口: 1、添加商品 2、修改商品名称和价格 3、删除商品 备注:需要新建shop文件和购物车文件,其中shop文件保存商品信息: '''
import os import userLogin import types def read_info(_name): if os.path.getsize("购物车"): remaining = 0 with open("购物车","r",encoding="utf-8") as f: for line in f: if line.strip() == "": continue line = eval(line) if line["name"] == _name: remaining = line["shopping"][2] if remaining > line["shopping"][2]: remaining = line["shopping"][2] if remaining == 0: return None else: return remaining else: return None def memu(num): if os.path.getsize("shop"): with open("shop","r",encoding="utf-8") as f: print("------------商品------------") for index,line in enumerate(f): if line.strip() == "": continue index -= 1 line = eval(line) info2 = ''' {_index}、{_goods},价格:{_price} '''.format(_index = index + 1, _goods = line["goods"], _price = line["price"]) print(info2) else: print("当前无商品") if num == 1: exit() def shopping_list(name): sum = 0 flag = 0 with open("购物车", "r+", encoding="utf-8") as f: for temp in f: if temp.strip() == "": continue temp = eval(temp) if temp["name"] == name: sum += temp["shopping"][1] info2 = ''' 商品:{_goods},价格:{_price} '''.format(_goods=temp["shopping"][0], _price=temp["shopping"][1]) if flag == 0: print("---------购物清单---------") print(info2) flag = 1 print("总计金额: %d" % sum) def user(_momey,name): choose = input("输入你要购买商品的编号 >>>:") if choose.isdigit(): choose = int(choose) elif choose == 'q': shopping_list(name) exit() else: print("输入错误") res = read_info(name) if res != None: _momey = res f = open("shop", "r", encoding="utf-8") content = f.readlines() for i in range(len(content)): if choose - 1 == i: content[i] = eval(content[i]) surplus = _momey - content[i]["price"] if surplus >= 0: _momey = surplus print("\033[33;1m %s \033[0m 已加入购物车,你的当前余额为:\033[32;1m %d \033[0m "%(content[i]["goods"],_momey)) save(content[i],name,_momey) return _momey else: print("\033[31;1m 你的余额不足,当前余额为:%d \033[0m"%_momey) return _momey f.close() def save(d,name,momey): dict = {} dict["name"] = name dict["shopping"] = [d["goods"],d["price"],momey] with open("购物车","a+",encoding="utf-8") as f: f.write(str(dict) + '\n') def deposit(name): while True: res = read_info(name) if res == None: momey = input("输入你的存款金额 >>>:") else: momey = res print("\033[34;1m %s你好,你的当前余额是:%d \033[0m"%(name,momey)) return momey if type(momey) != type(1): if momey.isdigit(): momey = int(momey) return momey elif momey == 'q': exit() else: print("存款输入错误") continue def add_shop(): with open("shop","a+",encoding="utf-8") as f: dict = {} goods = input("输入你要添加的商品名称 >>>") price = input("输入商品的价格(正整数) >>>") if price.isdigit(): price = int(price) dict["goods"] = goods dict["price"] = price f.write(str(dict) +'\n') print("\033[31;1m 添加商品成功 \033[0m") def modify_shop(): list = [] f = open("shop", "r+", encoding="utf-8") content = f.readlines() num = input("请输入你要修改的商品编号 >>>") if num.isdigit(): num = int(num) else: print("输入错误") for i in range(len(content)): if num - 1 == i: content[i] = eval(content[i]) choose = input("请输入你要修改商品的信息1、名称,2、价格 >>>") if choose.isdigit(): choose = int(choose) else: print("输入错误") if choose == 1: goods = input("请输入修改后的商品名称 >>>") content[i]["goods"] = goods elif choose == 2: price = input("请输入修改后的商品价格 >>>") if price.isdigit(): price = int(price) content[i]["price"] = price else: print("输入错误") list.append(content[i]) f.truncate(0) f.close() with open("shop", "a+", encoding="utf-8") as f1: for temp in list: f1.write(str(temp)) print("\033[31;1m 修改商品成功 \033[0m") def del_shop(): list = [] f = open("shop", "r+", encoding="utf-8") content = f.readlines() num = input("请输入你要删除的商品编号 >>>") if num.isdigit(): num = int(num) else: print("输入错误") for i in range(len(content)): if num - 1 == i: continue list.append(content[i]) f.truncate(0) f.close() with open("shop", "a+", encoding="utf-8") as f1: for temp in list: f1.write(temp) print("\033[31;1m 删除商品成功 \033[0m") def main1(name): res = input("请输入你的选择:1、用户,2、商户 >>>") if res.isdigit(): res = int(res) if res == 1: momey = deposit(name) while True: memu(res) momey = user(momey,name) elif res == 2: while True: memu(res) res1 = input("请输入你的选择:1、添加,2、修改,3、删除 >>>") if res1.isdigit(): res1 = int(res1) if res1 == 1: add_shop() elif res1 == 2: modify_shop() elif res1 == 3: del_shop() else: print("输入错误") elif res1 == 'q': exit() else: print("输入错误") elif res == 'q': exit() else: print("输入错误") if __name__ == "__main__": while True: userLogin.main()
''' -------用户登陆模块代码------ '''
''' 先创建user、lock文件,user存储账号密码,用于登录时判断,lock文件为账号错误3次后,冻结 user内容格式为: {'name':'zhangsan','passwd':'123'} {'name':'lisi','passwd':'123'} {'name':'wangwu','passwd':'123'} ''' import os import shopping def lock(_name): '''判断一个用户是否冻结''' if os.path.getsize("lock"): with open("lock","r") as f: for line in f: if line.strip() == "": continue line = eval(line) if line["name"] == _name and line["num"] == 3: return 0 else: return -1 else: return -1 def clear_lock(): '''当程序退出时,删除非冻结的账号信息''' list = [] with open("lock","r+") as f: for line in f: if line.strip() == "": continue line = eval(line) if line["num"] == 3: list.append(line) f.truncate(0) with open("lock","w") as f1: for i in list: f1.write(str(i) + '\n') def login(_name,_passwd): '''用户登陆''' with open("user","r") as f: flag = 0 for line in f: if line.strip() == "": continue line = eval(line) if line["name"] == _name: if line["name"] == _name and line["passwd"] == _passwd: return 0 else: return 1 return -1 def write_lock(_name): '''将输入错误的账号写入lock文件''' #文件不为空 if os.path.getsize("lock"): list = [] with open("lock","r+") as f: flag = 0 for line in f: if line.strip() == "": continue line = eval(line) #判断账号是否存在 if line["name"] == _name: line["num"] += 1 list.append(line) else: dict2 = {} dict2["name"] = _name dict2["num"] = 1 list.append(dict2) with open("lock","w") as f1: for i in list: f1.write(str(i) + '\n') #空文件直接写入 else: list1 = [] dict1 = {} dict1["name"] = _name dict1["num"] = 1 list1.append(str(dict1)) with open("lock","w") as f2: for j in list1: f2.write(str(j) + '\n') def main(): name = input("用户名:") res = lock(name) if res == 0: print("%s已被冻结,请联系管理员"%name) clear_lock() exit() passwd = input("密码:") res1 = login(name,passwd) if res1 == 0: print("欢迎%s登陆CBD购物中心"%name) while True: shopping.main1(name) elif res1 == 1: print("密码错误") write_lock(name) else: print("账号不存在") res2 = lock(name) if res2 == 0: print("%s已被冻结,请联系管理员" %name) clear_lock() exit() if __name__ == "__main__": while True: main()