目录

* 一、文件处理实战之购物车系统
<https://www.cnblogs.com/nickchen121/p/11070005.html#一文件处理实战之购物车系统>
一、文件处理实战之购物车系统

*
用户名和密码存放于文件中,格式为:nick|nick123

*
启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序

*
允许用户根据商品编号购买商品

*
用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒

*
可随时退出,退出时,打印已购买商品和余额
import os product_list = [ ['Iphone7', 5800], ['Coffee', 30], ['疙瘩汤', 10],
['Python Book', 99], ['Bike', 199], ['ViVo X9', 2499], ] shopping_cart = {}
current_userinfo = [] db_file = r'db.txt' while True: print(''' 登陆 注册 购物 ''')
choice = input('>>: ').strip() if choice == '1': #1、登陆 tag = True count = 0
while tag: if count == 3: print('尝试次数过多,退出。。。') break uname =
input('用户名:').strip() pwd = input('密码:').strip() with open(db_file, 'r',
encoding='utf-8') as f: for line in f: line = line.strip('\n') user_info =
line.split(',') uname_of_db = user_info[0] pwd_of_db = user_info[1]
balance_of_db = int(user_info[2]) if uname == uname_of_db and pwd == pwd_of_db:
print('登陆成功') # 登陆成功则将用户名和余额添加到列表 current_userinfo = [uname_of_db,
balance_of_db] print('用户信息为:', current_userinfo) tag = False break else:
print('用户名或密码错误') count += 1 elif choice == '2': uname =
input('请输入用户名:').strip() while True: pwd1 = input('请输入密码:').strip() pwd2 =
input('再次确认密码:').strip() if pwd2 == pwd1: break else:
print('两次输入密码不一致,请重新输入!!!') balance = input('请输入充值金额:').strip() with
open(db_file, 'a', encoding='utf-8') as f: f.write('%s,%s,%s\n' % (uname, pwd1,
balance)) elif choice == '3': if len(current_userinfo) == 0: print('请先登陆...')
else: #登陆成功后,开始购物 uname_of_db = current_userinfo[0] balance_of_db =
current_userinfo[1] print('尊敬的用户[%s] 您的余额为[%s],祝您购物愉快' % (uname_of_db,
balance_of_db)) tag = True while tag: for index, product in
enumerate(product_list): print(index, product) choice =
input('输入商品编号购物,输入q退出>>: ').strip() if choice.isdigit(): choice = int(choice)
if choice < 0 or choice >= len(product_list): continue pname =
product_list[choice][0] pprice = product_list[choice][1] if balance_of_db >
pprice: if pname in shopping_cart: # 原来已经购买过 shopping_cart[pname]['count'] += 1
else: shopping_cart[pname] = { 'pprice': pprice, 'count': 1 } balance_of_db -=
pprice # 扣钱 current_userinfo[1] = balance_of_db # 更新用户余额 print( "Added product
" + pname + " into shopping cart,[42;1myour current balance " +
str(balance_of_db)) else: print("买不起,穷逼! 产品价格是{price},你还差{lack_price}".format(
price=pprice, lack_price=(pprice - balance_of_db))) print(shopping_cart) elif
choice == 'q': print("""
---------------------------------已购买商品列表--------------------------------- id 商品
数量 单价 总价 """) total_cost = 0 for i, key in enumerate(shopping_cart):
print('%22s%18s%18s%18s%18s' % (i, key, shopping_cart[key]['count'],
shopping_cart[key]['pprice'], shopping_cart[key]['pprice'] *
shopping_cart[key]['count'])) total_cost += shopping_cart[key][ 'pprice'] *
shopping_cart[key]['count'] print(""" 您的总花费为: %s 您的余额为: %s
---------------------------------end--------------------------------- """ %
(total_cost, balance_of_db)) while tag: inp = input('确认购买(yes/no?)>>:
').strip() if inp not in ['Y', 'N', 'y', 'n', 'yes', 'no']: continue if inp in
['Y', 'y', 'yes']: # 将余额写入文件 src_file = db_file dst_file = r'%s.swap' % db_file
with open(src_file,'r',encoding='utf-8') as read_f,\
open(dst_file,'w',encoding='utf-8') as write_f: for line in read_f: if
line.startswith(uname_of_db): l = line.strip('\n').split(',') l[-1] =
str(balance_of_db) line = ','.join(l) + '\n' write_f.write(line)
os.remove(src_file) os.rename(dst_file, src_file) print('购买成功,请耐心等待发货')
shopping_cart = {} current_userinfo = [] tag = False else: print('输入非法') elif
choice == 'q': break else: print('非法操作') 登陆 注册 购物 >>: 2 请输入用户名:nick 请输入密码:123
再次确认密码:123 请输入充值金额:10000 登陆 注册 购物 >>: 1 用户名:nick 密码:123 登陆成功 用户信息为: ['nick',
10000] 登陆 注册 购物 >>: 3 尊敬的用户[nick] 您的余额为[10000],祝您购物愉快 0 ['Iphone7', 5800] 1
['Coffee', 30] 2 ['疙瘩汤', 10] 3 ['Python Book', 99] 4 ['Bike', 199] 5 ['ViVo
X9', 2499] 输入商品编号购物,输入q退出>>: 0 Added product Iphone7 into shopping
cart,[42;1myour current balance 4200 {'Iphone7': {'pprice': 5800, 'count': 1}}
0 ['Iphone7', 5800] 1 ['Coffee', 30] 2 ['疙瘩汤', 10] 3 ['Python Book', 99] 4
['Bike', 199] 5 ['ViVo X9', 2499] 输入商品编号购物,输入q退出>>: 1 Added product Coffee into
shopping cart,[42;1myour current balance 4170 {'Iphone7': {'pprice': 5800,
'count': 1}, 'Coffee': {'pprice': 30, 'count': 1}} 0 ['Iphone7', 5800] 1
['Coffee', 30] 2 ['疙瘩汤', 10] 3 ['Python Book', 99] 4 ['Bike', 199] 5 ['ViVo
X9', 2499] 输入商品编号购物,输入q退出>>: q
---------------------------------已购买商品列表--------------------------------- id 商品
数量 单价 总价 0 Iphone7 1 5800 5800 1 Coffee 1 30 30 您的总花费为: 5830 您的余额为: 4170
---------------------------------end---------------------------------
确认购买(yes/no?)>>: yes 购买成功,请耐心等待发货 登陆 注册 购物 >>: q

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信