需求:
1.用户接口
#1.启动程序后,让用户输入工资,然后打印商品列表 #2.商品信息,工资余额写在文件里 #3.允许用户根据上编号购买商品。 #4.用选择上商品,检测与额是否够,够就直接扣款,不够就提醒 #5.可随时退出,退出时,打印已购买商品和余额
2.商家接口
#1.商家可用添加商品 #2.修改商品价格
1 # -*- coding:utf-8 -*- 2 # Author: JACK ZHAO 3 4 #程序:购物车程序 5 #需求: 6 #1.启动程序后,让用户输入工资,然后打印商品列表 7 #2.商品信息,工资余额写在文件里 8 #3.允许用户根据上编号购买商品。 9 #4.用选择上商品,检测与额是否够,够就直接扣款,不够就提醒10 #5.可随时退出,退出时,打印已购买商品和余额11 #salary_residue:工资余额记录文件12 #produce_list:商品列表文件13 #cart_list:购物车列表文件14 15 import os16 import time17 import linecache18 19 if os.path.exists("salary_residue"): #判断工资记录文件是否存在20 with open("salary_residue", "rU", encoding="utf-8") as salary_residue:21 count = len(salary_residue.readlines()) #统计文件行数22 salary=linecache.getline("salary_residue", count) #linecache模块读取文件最后一行23 salary=int(salary.split("=")[1]) #匹配出工资余额24 else:25 with open("salary_residue","a+",encoding="utf-8") as salary_residue:26 salary = input("第一次登陆,请输入工资:")27 if salary.isdigit():28 salary=int(salary)29 else:30 print("请输入一个正整数.")31 exit()32 produce_list=[]33 with open("produce_list","r",encoding="utf-8") as produce: #读取商品列表文件34 for line in produce.readlines(): #每读取一行添加到列表35 produce_list_item=[line.split()[0],line.split()[1]]36 produce_list.append(produce_list_item)37 while True:38 print("欢迎来我的购物商城".center(50,'#'))39 for index,i in enumerate(produce_list): #遍历列表40 print(index,i)41 choice = input("请选择商品对应的数字编号(或q退出):")42 if choice.isdigit():43 choice = int(choice)44 if choice >=0 and choice < len(produce_list):45 produce_price = int(produce_list[choice][1])46 if salary >= produce_price:47 with open("cart_list", "a+", encoding="utf-8") as cart_list:48 cart_list.write("%s\n" % produce_list[choice]) #将购买商品写入到购物车文件49 salary = salary - produce_price50 with open("salary_residue", "a+", encoding="utf-8") as salary_residue:51 time_format = '%Y-%m-%d %X' #格式化时间52 time_current = time.strftime(time_format)53 salary_residue.write("%s\n"%time_current) # 记录消费时间54 salary_residue.write("salary=%s\n" % salary) #记录工资余额55 print("%s 已添加到购物车.工资余额:\033[32;1m%s\033[0m" % (produce_list[choice][0], salary))56 else:57 print("你的余额不足, 工资余额:\033[31;1m%s\033[0m" % salary)58 else:59 print("你选择的商品编号不在列表内,请重新选择.")60 elif choice == "q":61 print("你已经退出,购物车清单".center(50, "#"))62 with open("cart_list", "r", encoding="utf-8") as cart_list:63 for index,line in enumerate(cart_list.readlines()): #遍历购物车清单64 print(index,line.strip())65 print("工资余额:\033[31;1m%s\033[0m" % salary)66 exit()67 else:68 print("请商品列表中的对应的数字.")
1 # -*- coding:utf-8 -*- 2 # Author: JACK ZHAO 3 #1.用户可用添加商品 4 #2.修改商品价格 5 6 #produce_list:商品列表文件 7 # 获取已有商品列表 8 produce_list = [] 9 with open("produce_list", "r", encoding="utf-8") as produce: # 读取商品列表文件10 for line in produce.readlines(): # 每读取一行添加到列表11 produce_list.append(line.split()[0])12 13 menu = '''14 **********后台添加商品接口**********15 1.添加商品16 2.修改商品价格17 '''18 19 status_flag = False20 while not status_flag:21 print(menu)22 choice = input("请选择对应数字操作:")23 if choice.isdigit():24 choice = int(choice)25 if choice == 1:26 #####用户添加商品#####27 while not status_flag:28 produce_name = input("请输入添加商品的名称【b|返回,q|退出】:")29 if produce_name in produce_list:30 print("\033[31;1m%s添加失败,此商品已存在\033[0m" % produce_name)31 continue32 if produce_name == "b":33 break34 elif produce_name == "q":35 print("你已经退出.")36 status_flag = True37 break38 produce_price = input("请输入添加商品的价格【b|返回,q|退出】:")39 if produce_price.isdigit():40 produce_price = int(produce_price)41 with open("produce_list", "a+", encoding="utf-8") as produce_list1:42 produce_list1.write("\n{_produce_name}\t{_produce_price}".format(_produce_name=produce_name,43 _produce_price=produce_price))44 produce_list.append(produce_name)45 print("\033[32;1m%s添加成功.\033[0m" % produce_name)46 produce_list1.close()47 elif produce_price == "q":48 print("你已经退出.")49 status_flag = True50 break51 elif produce_price == "b":52 break53 else:54 print("商品的价格只能是一个整数.")55 elif choice ==2:56 #####用户修改密码#####57 while not status_flag:58 produce_name = input("请输入要修改价格商品的名称【b|返回,q|退出】:")59 if produce_name == "b":60 break61 if produce_name == "q":62 print("你已经退出.")63 status_flag = True64 break65 if produce_name not in produce_list:66 print("\033[31;1m%s修改失败,此商品不存在\033[0m" % produce_name)67 continue68 produce_price = input("请输入修改后的价格【b|返回,q|退出】:")69 if produce_price.isdigit():70 produce_price = int(produce_price)71 # 将文件读取到内存中72 with open("produce_list", "r", encoding="utf-8") as produce_r:73 lines = produce_r.readlines()74 # 写的方式打开文件75 with open("produce_list", "w", encoding="utf-8") as produce_w:76 for line in lines:77 if produce_name in line:78 # 替换79 line = "{name}\t {price}\n".format(name=produce_name,price=produce_price)80 produce_w.write(line)81 print("\033[32;1m%s修改成功.\033[0m" % produce_name)82 elif produce_price == "q":83 print("你已经退出.")84 status_flag = True85 elif produce_price == "b":86 break87 else:88 print("商品的价格只能是一个整数.")89 else:90 print("只能选择1或者2.")91 continue92 elif choice == "q":93 print("你已经退出.")94 status_flag = True95 else:96 print("必须输入一个数字.")