作业要求:购物车程序:
1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表
2、允许用户根据商品编号购买商品
3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
4、可随时退出,退出时,打印已购买商品和余额
5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
7、允许查询之前的消费记录
1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表
2、允许用户根据商品编号购买商品
3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
4、可随时退出,退出时,打印已购买商品和余额
5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
7、允许查询之前的消费记录
1 #先预定义工资及购物车列表 2 salary =0 3 sh_list=[] 4 #打开用户信息文件、购物车文件,将信息读取成字典。 5 with open("u_info","r",encoding="utf-8") as f: 6 u_d=eval("{{{}}}".format(f.read())) 7 with open("sh_list","r",encoding="utf-8") as f: 8 sh_d=eval('{{{}}}'.format(f.read())) 9 #定义商品列表 10 product_list=[("iphonex",8000),("tea",200),("pen",80),("computer",6000),("TV",3000),] 11 12 #判断用户是否存在,如果存在就读取salary 记录和之前的购物记录。, 13 while True: 14 username = input("pls input your username:") 15 password = input("pls input your password:") 16 if username in u_d.keys(): 17 if password == u_d[username][0]: 18 salary = u_d[username][1] 19 if username in sh_d.keys(): 20 sh_list=sh_d[username] 21 print("\033[5;35;42m欢迎登陆,购物愉快!\033[0m") 22 break 23 else: 24 print("\033[5;35;42m欢迎登陆,购物愉快!\033[0m") 25 sh_list=[] 26 break 27 else: 28 print("密码错误,请重新输入") 29 else: #如果用户不存在,就将用户输入的账号及密码记录到用户信息文件中,并提示用户输入工资,做快速注册。 30 #print("用户第一次登陆,请输入工资") 31 salary = input("用户第一次登陆,请输入工资:") 32 if salary.isdigit(): 33 with open("u_info","a",encoding="utf-8") as f1: 34 f1.write("\n'{}':['{}',{}],".format(username, password, salary)) 35 print("欢迎新用户{}登陆,购物愉快!".format(username)) 36 break 37 else: 38 print("输入错误,请输入正确的数字") 39 while True: #开始购物流程,根据商品提示输入对应的编号。 40 41 print("使用说明: 1.按‘q’ 退出 2.按‘s’显示购物记录 3.输入商品编号进行购物。") 42 for index,i in enumerate(product_list): 43 print(index,i) 44 #print(product_list.index(i),i) 45 user_choice = input("\033[1;35;40m请选择你要买的商品:\033[0m\n") 46 #如果用户的工资大于,等于商品价格,将商品添加到购物车中,并将余额减去商品价格 47 if user_choice.isdigit(): 48 user_choice = int(user_choice) 49 if user_choice < len(product_list) and user_choice>=0: 50 p_item = product_list[user_choice] 51 if int(p_item[1])<= int(salary): 52 sh_list.append(p_item) 53 (salary) = int(salary) -int(p_item[1]) 54 print("你选择的商品是\033[1;35;40m{},\033[0m 你的余额是\033[1;35;40m{}\033[0m".format(p_item[0],salary)) 55 else:#如果余额小于商品价格,提示余额不足。 56 print("余额不足,你的余额是\033[1;35;40m{}\033[0m请充值".format(salary)) 57 else:#如果用户输入错误的商品编号,提示商品编号不存在,让用户重新输入。 58 print("你输入的商品编号不存在,请重新输入!") 59 elif user_choice == "q": #当用户按推出的时候,将购物记录保存到文件中,余额信息保存到文件中,并打印购物记录 60 print("你购买了如下商品,欢迎下次惠顾!") 61 for index,p in sh_list: 62 print("\033[1;35;40m{} {}\033[0m".format(index,p)) 63 with open("sh_list", "a", encoding="utf-8") as f: 64 f.write("\n'{}':{},".format(username, sh_list)) 65 print("你的余额是:\033[1;35;40m{}\033[0m".format(salary)) 66 with open("u_info", "r", encoding="utf-8") as f: 67 f_u_d = eval("{{{}}}".format(f.read())) 68 if username in f_u_d.keys(): 69 f_u_d[username][1] = salary 70 with open("u_info", "w", encoding="utf-8") as f: 71 f_s = str(f_u_d)[1:-1] 72 f.write("{},".format(f_s)) 73 exit() 74 elif user_choice == "s":#用户输入S,可以查询是有购物记录 75 while True: 76 if len(sh_list) ==0: 77 print("你没有购物记录!") 78 break 79 else: 80 print("你的购物记录如下:") 81 for index,i in enumerate(sh_list): 82 print("\033[1;35;40m{} {}\033[0m".format(index,i)) 83 break 84 else: #如果用户没有按照操作说明输入选项,则提示输入的选项错误,让用户重新输入。 85 print("invalid option")
u_info 内容如下
'keven': ['abc123', 100000], 'tom': ['123abc', 10000], 'zhangsan': ['zhangsan', 8000],