购物车程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了购物车程序相关的知识,希望对你有一定的参考价值。
购物车程序
要求:
- 有存放用户信息的文件,三次登录判断用户锁定
- 有商品列表文件,历史记录问题,购物车文件
- 查看商品时要求分页显示,每页显示数量自定义
- 可以查看购物记录
思路:
-----------------------------------------------------------------
购物车程序BUG:
1,程序执行完成后,文件没有被更新;
2,在查看历史记录的时候,提示的当前页码数,显示为0,不得不+1
3,没有实现根据关键字搜索功能
代码:
#!/usr/bin/env python # -*- coding:utf-8 -*- # # 读取用户信息 d1 = open(‘user_db‘, ‘r‘, encoding=‘UTF-8‘) d2 = d1.read() d1.close() v1 = d2.split(‘\n‘) user_list = [] user_balance = [] for i in v1: v2 = i.split(‘|‘) user_list.append({ ‘name‘: v2[0], ‘pwd‘: v2[1], ‘t‘: v2[2], ‘balance‘: v2[3] }) flag = True while flag: in_user = input(‘请输入用户名(q退出程序):‘) if in_user != ‘q‘: for item in user_list: if in_user == item[‘name‘]: if int(item[‘t‘]) < 3: in_pwd = input(‘请输入密码:‘) if in_pwd == item[‘pwd‘]: item[‘t‘] = 0 user_balance.append(item[‘balance‘]) print(‘登录成功,您的账户余额为:%s‘ % (item[‘balance‘])) flag = False break else: nt = 2 - int(item[‘t‘]) print(‘密码错误,还剩%s尝试次数‘ % nt) item[‘t‘] = int(item[‘t‘]) + 1 break else: print(‘此用户已被锁定‘) exit(‘程序退出‘) else: print(‘用户不存在,请重新输入:(q退出程序)‘) else: flag = False # 读取商品文件信息 a1 = open(‘goods‘, ‘r‘, encoding=‘UTF-8‘) a2 = a1.read() a1.close() # 读取历史文件信息 b1 = open(‘history‘, ‘r‘, encoding=‘UTF-8‘) b2 = b1.read() b1.close() history_list = [] # 读取购物车文件信息 c1 = open(‘cart‘, ‘r‘, encoding=‘UTF-8‘) c2 = c1.read() c1.close() cart_list = [] # 将读取到的商品列表信息转换为一个列表 goods_list = [] goods_1 = a2.split(‘\n‘) for item_1 in goods_1: item_2 = item_1.split(‘:‘) goods_list.append({ ‘name‘: item_2[0], ‘price‘: item_2[1] }) # 判断当前商品列表页码范围 a = int(len(goods_list)) b = int(a % 10) c = a // 10 if b != 0: d = c + 1 else: d = c # 判断当前历史记录页码范围 e = int(len(history_list)) f = int(e % 10) g = e // 10 if f != 0: h = g + 1 else: h = g # 分页显示列表 flag = True while flag: choice = input(‘1:选购商品;2:删除购物车商品;3:结算购物车商品;4:查看购买记录;q:退出程序\n你的选择是:‘) while flag: if choice == ‘1‘: x = input(‘请输入页码查看商品列表(共%s页;b返回;q退出):‘ % (d,)) if x.isdecimal(): x = int(x) start = (x - 1) * 10 end = x * 10 goods_a = goods_list[start:end] goods_list_1 = [] for i in goods_a: goods_list_1.append(i) for j, k in enumerate(goods_list_1, 1): print(j, k) while flag: buy_choice = input(‘请选择要购买的商品序号:‘) buy_choice = int(buy_choice) - 1 cart_list.append(goods_list_1[buy_choice]) print(‘已添加到购物车列表\n已选%s‘ % (cart_list,)) break elif x == ‘b‘: break elif x == ‘q‘: print(‘程序退出‘) exit(‘bye‘) elif choice == ‘2‘: print(‘当前购物车商品:‘) for o, p in enumerate(cart_list, 1): print(o, p) cart_list_sum1 = 0 for k in cart_list: cart_list_sum1 += int(k[‘price‘]) print(‘当前购物车商品总金额%s:‘ % (cart_list_sum1,)) del_choice = input(‘请选择要删除的商品序号(b返回):‘) if del_choice != ‘b‘ and int(del_choice) >= 0: del_choice = int(del_choice) - 1 cart_list.remove(cart_list[del_choice]) print(cart_list) else: print(‘输入有误‘) break elif choice == ‘3‘: cart_list_sum2 = 0 for k in cart_list: cart_list_sum2 += int(k[‘price‘]) history_list.append(k) print(‘当前购物车商品总金额:%s\n您的账户余额:%s‘ % (cart_list_sum2, user_balance)) user_balance_int = int(user_balance[0]) if user_balance_int >= cart_list_sum2: user_balance_int -= cart_list_sum2 print(‘结算成功,当前余额:%s‘ % (user_balance_int,)) break else: print(‘余额不足‘) break elif choice == ‘4‘: x1 = input(‘请输入页码查看商品列表(共%s页;b返回;q退出):‘ % (h,)) if x1.isdecimal(): x1 = int(x1) start = (x1 - 1) * 10 end = x1 * 10 history_a = history_list[start:end] history_list_1 = [] for i1 in history_a: history_list_1.append(i1) for j1, k1 in enumerate(history_list_1, 1): print(j1, k1) #print(history_list) break elif choice == ‘q‘: print(‘一路顺风‘) exit(‘bye‘) else: print(‘抱歉,输入有误‘) break # 更新用户登录信息文件 user_list_new = [] for m in user_list: v3 = ‘%s|%s|%s‘ % (m[‘name‘], m[‘pwd‘], m[‘t‘]) user_list_new.append(v3) v4 = user_list_new[0] + ‘\n‘ + user_list_new[1] d3 = open(‘db‘, ‘w‘) d3.write(v4) d3.close() # 更新历史记录文件 history_list_new = [] for n in history_list: b3 = ‘%s:%s‘ % (n[‘name‘], n[‘price‘]) history_list_new.append(b3) b4 = history_list_new[0] + ‘\n‘ + history_list_new[1] b5 = open(‘history‘, ‘w‘) b5.write(b4) b5.close() # 更新购物车文件 cart_list_new = [] for o in cart_list: c3 = ‘%s:%s‘ % (o[‘name‘], o[‘price‘]) cart_list_new.append(c3) c4 = cart_list_new[0] + ‘\n‘ + cart_list_new[1] c5 = open(‘cart‘, ‘w‘) c5.write(c4) c5.close()
--------
附商品列表信息文件goods
USP.45:500 DesertEagle 沙漠之鹰:650 M3 Super90 Combat:1700 AK47:2500 M4A1:3100 AUG A1:3500 ScoutSniperRifle:2750 AWP:4750 M249:5750 Glock18:400 SIG P228:600 M4 Super90 xm1014:3000 MP5 Navy:1500 Steyr TMP:1250 Fabrique Nationale:2350 UMP 45:3500 Mac 10 乌兹:1400 SG-552:3500 SIG 550:4200 Scout:3200
以上是关于购物车程序的主要内容,如果未能解决你的问题,请参考以下文章