项目练习
项目说明
用户数据采用json格式存储到文件目录db下 一个用户一个单独的文件
数据格式 {"name":"jason","pwd":123}
# ps:文件名可以直接用用户名便于校验
用户注册时给每个用户添加两个默认的键值对(账户余额 购物车)
{"balance":15000,"shop_car":{}}
添加购物车功能 商品列表可以自定义或者采用下列格式
good_list = [
['挂壁面',3],
['印度飞饼', 22],
['极品木瓜', 666],
['土耳其土豆', 999],
['伊拉克拌面', 1000],
['董卓戏张飞公仔', 2000],
['仿真玩偶', 10000],
]
用户可以反复添加商品,在购物车中记录数量
{'极品木瓜':[个数,单价]}
结算购物车
获取用户购物车中所有的商品计算总价并结算即可
针对添加购物车和结算只有登录的用户才可以执行
技术点
# 1. 装饰器+全局变量(小字典)实现登录校验
is_login = {
'username': '' # 一旦用户登录存储用户名 这样方便后续获取用户详细信息
}
# 2. 购物车数据结构:{'shop_car':{'印度飞饼':[2,22],'仿真玩偶':[10,10000]}},先将用户数据取出,添加修改好shop_car的值,再覆盖写入
# 3. 功能字典 func_dict 取代繁琐的分支结构
func_dict = {
'1': register,
'2': login,
'3': add_shop_car,
'4': pay_shop_car
}
# 4. ensure_ascii=False 参数 写入非acsii字符
with open(user_path, 'w', encoding='utf8') as f:
json.dump(user_data_dict, f, ensure_ascii=False)
# 5. 在添加购物车的函数内使用 临时字典 将用户添加购物车的信息存入临时字典 只有在退出时才写入到文件 尽可能减少文件读写的次数
临时字典数据结构:
temp_shop_car = {'印度飞饼':[10,22],'仿真玩偶':[2,10000]}
temp_shop_car = {'商品名':[数量,价格],... ,...}
# 5.1 核心代码:
temp_shop_car = {} # 构造临时小字典存储商品信息
good_list = [
['挂壁面', 3],
['印度飞饼', 22],
['极品木瓜', 666],
['土耳其土豆', 999],
['伊拉克拌面', 1000],
['董卓戏张飞公仔', 2000],
['仿真玩偶', 10000]
]
choice_num = input('请输入您想要购买的商品编号(q)>>>:').strip()
target_good_list = good_list[choice_num]
good_num = input(f'请输入您想要购买的{target_good_list[0]}的商品数量>>>:').strip()
good_name = target_good_list[0]
'''以下临时字典添加购物车 核心代码'''
if good_name in temp_shop_car: # 如果商品 已经在临时字典 存在
temp_shop_car.get(good_name)[0] += good_num # 那就在临时字典里 添加数量
else:
temp_shop_car[good_name] = [good_num, target_good_list[1]] # 如果不存在 就新增一个商品键值对
代码实现:
链接:https://pan.baidu.com/s/1RxH822a1qEj49lxpjjoHgg
提取码:s7a4