失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python购物车系统模拟1

Python购物车系统模拟1

时间:2023-03-10 20:33:45

相关推荐

Python购物车系统模拟1

核心内容:

1、算法展示

2、代码展示

3、相关文件展示

算法示例:

代码示例:

#!/usr/bin/python# -*- coding:utf-8 -*-"""Author:ZmyDate:5月15日14:06:27Function:Shopping cart system simulation1、模拟用户3次验证登录2、通过分页的方式显示商品信息3、用户进行购物(加入到购物车)4、用户进行结账5、将用户的购物记录、登录次数、账户余额等同步到最新的文件中6、用户通过模糊匹配查询的方式查询相应的购物记录"""#读取个人账户的相关信息fr1 = open("personal_account","r",encoding="utf-8")personal_data = fr1.read()fr1.close()#将用户的完整信息存储到字典中user_info_dict = {}user_info = personal_data.split("\n")for item in user_info:temp = item.split("|")user_info_dict[temp[0]] = {"pass_wd": temp[1],"times" : temp[2],"salary" : temp[3]}#读取商品列表的相关信息fr2 = open("goods_information", "r", encoding="utf-8")goods_data = fr2.read()fr2.close()#将商品的完整信息存储到列表中good_info_list = []good_info = goods_data.split("\n")for item in good_info:temp = item.split("|")good_info_dict = {}good_info_dict = {"good_name" : temp[0],"good_salary" : temp[1]}good_info_list.append(good_info_dict)#读取用户之前的购物记录信息并存储到列表中(存储方式最简单的一种,没有涉及到字典)fr3 = open("shop_record", "r", encoding="utf-8")per_good_data = fr3.read()fr3.close()user_good_list = []per_good_info = per_good_data.split("\n")for item in per_good_info:user_good_list.append(item)#正式开始进入程序模块#function1:3次登录验证操作log_count = 0 #登录尝试的次数log_flag = 0 #若用户登录成功,则将相应的登录的状态log_flag置为1#通过search_info()查看用户之前对应的购物记录def search_info():#标志位的创建是一个创新search_flag = 0while True:if search_flag == 1:breakelse:good_info = input("请输入相关的商品信息:")print("与其相关的购物记录:")for item in user_good_list:if good_info in item:print(item)serch_lable = input("亲,是否继续查看? yes or no ?\n")if serch_lable == "no":search_flag = 1#通过shop_trade函数进行相应的购物操作shop_car_list = []page_sum = len(good_info_list)//10 + 1 #这里应该继续优化一下def shop_trade():#对于可能多次循环操作的设置一个标志位shop_status = 0print("您好,欢迎进入商品购物系统!")while True:if shop_status == 1:breakpage_num = input("您好,请输入需要查看的商品列表页码:\n")if page_num.isdecimal() and int(page_num) <= page_sum:page_num = int(page_num)#打印当前页的商品信息start = (page_num - 1)*10end = page_num * 10v1 = good_info_list[start:end]prompt_message = "编号"+"\t"+"单价"+"\t"+"商品名称"print(prompt_message.expandtabs(12))for index, value in enumerate(v1):line = str(index + 1) + "\t" + str(value["good_salary"]) + "\t" + value["good_name"]line = line.expandtabs(15)print(line)shop_mind = input("亲,是否将当前页的某件商品加入到购物车? yes or no ?\n")if shop_mind == "yes":id = int(input("请输入购买商品的编号:"))num = int(input("请输入相应商品的购买数量:"))good_info_dict = {"good_name": v1[id - 1]["good_name"],"good_salary": int(v1[id - 1]["good_salary"]),"good_num": num}shop_car_list.append(good_info_dict)print("当前购物车中含有的商品:")prompt_message = "单价" + "\t" + "购买数量" + "\t" + "商品名称"print(prompt_message.expandtabs(28))for item in shop_car_list:temp = str(item["good_salary"])+"\t"+str(item["good_num"])+"\t"+str(item["good_name"])print(temp.expandtabs(30))lable = input("是否继续在购买系统浏览商品 ? yes or no ?\n")if lable == "yes":continueelse:print("当前购物车中含有的商品:")prompt_message = "单价" + "\t" + "购买数量" + "\t" + "商品名称"print(prompt_message.expandtabs(28))for item in shop_car_list:temp = str(item["good_salary"]) + "\t" + str(item["good_num"]) + "\t" + str(item["good_name"])print(temp.expandtabs(30))#如果用户不想继续购买,则退出购买模式shop_status = 1else:passelse:print("对不起,请输入小于等于%d的页码!" % (int(page_sum)))log_status = 0while log_count < 3:if log_status != 0:breakuser_name = input("请输入您的用户名:")user_pass_wd = input("请输入您的密码:")#先判断用户输入的用户名是否存在if user_name in user_info_dict.keys():#若用户的账户存在,在判断personal_account中用户的登录次数times是否已经到达了3次#user_name已经是字符串,则无需再加双引号if int(user_info_dict[user_name]["times"]) < 3:#在账号和times都符合条件的情况下,在判断用户的密码是否正确if user_info_dict[user_name]["pass_wd"] == user_pass_wd:print("您好,登录成功")#将用户登录的次数times此时要重置为0user_info_dict[user_name]["times"] = 0log_flag = 1while True:#登录成功之后,进入到第二个模块:功能选择user_choice = input("亲你好,请输入指定的序号选择对应的服务,输入q表示退出购物车系统:\n""1、查看之前的购物记录\n""2、购买商品\n""q、退出当前购物提供\n")if user_choice == "1":#通过函数查看之前的购物状态search_info()lable = input("是否重新返回上一层目录? yes or no ")if lable == "yes":continueelse:exit(-1) #此处可以是exit(-1)elif user_choice == "2":#进入购物车系统进行购物shop_trade()#随后调用支付函数,进行支付,这里我没有用到函数处理,后续是个改进的地方label = input("您好,是否进行支付 ? yes or no ?")if label == "yes":print("您当前的账户余额为:%s" % user_info_dict[user_name]["salary"])consume_sum = 0for item in shop_car_list:good_salary = item["good_salary"]good_num = item["good_num"]good_name = item["good_name"]consume_sum += int(good_salary) * int(good_num)print("购物车中的商品需要支付%d元" % consume_sum)salary = int(user_info_dict[user_name]["salary"]) - consume_sumif salary < 0:print("对不起,你当前账户的余额不足,差%d元" % salary)else:print("OK,支付成功,账户剩余额度为%d元" % salary)# 在列表中更新用户的账户余额user_info_dict[user_name]["salary"] = str(salary)lable = input("是否重新返回上一层目录? yes or no ")if lable == "yes":continueelse:print("欢迎再次光临!")log_status = 1 #退出整个购物系统 跳出第一个whilebreak #跳出当前whileelse:print("亲,后期再见!")log_status = 1 # 退出整个购物系统 跳出第一个whilebreak # 跳出当前whileelif user_choice == "q":print("欢迎光临购物车系统,期望下次再见!")log_status = 1 # 退出整个购物系统 跳出第一个whilebreak # 跳出当前whileelse:print("您输入的信息有误,请重新输入!")else:print("对不起,您的密码输入有误.")#密码输入错误的时候登录尝试的次数也要加1user_info_dict[user_name]["times"] = str(int(user_info_dict[user_name]["times"])+1)log_count += 1else:print("对不起,您的账户已经锁定,请用其余的账号登录或者联系管理员进行解禁该账号")log_count += 1 #此时登录尝试次数加1else:print("对不起,您输入的用户账户不存在.")log_count += 1 #此时登录尝试次数加1#将用户购物车中的购物记录存储到文件shop_record中fr4 = open("shop_record", "a", encoding="utf-8")for item in shop_car_list:line = str(item["good_name"])+"|"+str(item["good_num"])+"|"+str(item["good_salary"])fr4.write(line+"\n")fr4.close()#最后将用户最新的个人信息同步到personal_account文件中fr5 = open("personal_account", "w")j = 1for key, item in user_info_dict.items():temp = key + "|" + item["pass_wd"] + "|" + str(item["times"])+"|" + str(item["salary"])if j != len(user_info_dict):fr5.write(temp + "\n")else:fr5.write(temp)j += 1

运行结果:

请输入您的用户名:Alex请输入您的密码:1234567对不起,您的密码输入有误.请输入您的用户名:Alex请输入您的密码:123123您好,登录成功亲你好,请输入指定的序号选择对应的服务,输入q表示退出购物车系统:1、查看之前的购物记录2、购买商品q、退出当前购物提供1请输入相关的商品信息:旅游鞋与其相关的购物记录:镂空跑步鞋女透气网鞋运动鞋旅游鞋|1|69亲,是否继续查看? yes or no ?no是否重新返回上一层目录? yes or no yes亲你好,请输入指定的序号选择对应的服务,输入q表示退出购物车系统:1、查看之前的购物记录2、购买商品q、退出当前购物提供2您好,欢迎进入商品购物系统!您好,请输入需要查看的商品列表页码:2编号单价商品名称1 59 谷崎女鞋夏季新款网面2 69 镂空跑步鞋女透气网鞋运动鞋旅游鞋3 62 个人帆布鞋女百搭学生韩版4 38 小白鞋女春系带情侣平底板鞋女5 89 春秋新款真皮英伦风松糕底女鞋6 123 新款羊皮蛋卷鞋女真皮单鞋春夏7 89 圆头百搭蝴蝶结平底鞋女秋8 43 新款鱼嘴鞋9 39 防水台女单鞋春夏百搭真皮高跟鞋10 69 浅口粗跟单鞋女鞋子亲,是否将当前页的某件商品加入到购物车? yes or no ?yes请输入购买商品的编号:2请输入相应商品的购买数量:1当前购物车中含有的商品:单价购买数量 商品名称69 1 镂空跑步鞋女透气网鞋运动鞋旅游鞋是否继续在购买系统浏览商品 ? yes or no ?yes您好,请输入需要查看的商品列表页码:3编号单价商品名称1 69 懒人鞋春季女新款一脚蹬女鞋2 89 百搭小白鞋韩版帆布鞋学生板鞋子3 39 远步春季懒人低帮4 126 黑色韩版帆布鞋5 65 休闲单鞋女学生平底板鞋子学院潮6 48 男生圆领五分袖男装半袖薄款青年体恤衫学生夏季7 52 骆驼男装8 49 夏季短袖t恤男纯色V领半袖打底衫男士青年T恤薄款短9 38 拓路者短袖t恤10 49 男夏纯棉白色半袖男圆领宽松体恤亲,是否将当前页的某件商品加入到购物车? yes or no ?yes请输入购买商品的编号:2请输入相应商品的购买数量:2当前购物车中含有的商品:单价购买数量 商品名称69 1 镂空跑步鞋女透气网鞋运动鞋旅游鞋89 2 百搭小白鞋韩版帆布鞋学生板鞋子是否继续在购买系统浏览商品 ? yes or no ?no当前购物车中含有的商品:单价购买数量 商品名称69 1 镂空跑步鞋女透气网鞋运动鞋旅游鞋89 2 百搭小白鞋韩版帆布鞋学生板鞋子您好,是否进行支付 ? yes or no ?yes您当前的账户余额为:1493购物车中的商品需要支付247元OK,支付成功,账户剩余额度为1246元是否重新返回上一层目录? yes or no yes亲你好,请输入指定的序号选择对应的服务,输入q表示退出购物车系统:1、查看之前的购物记录2、购买商品q、退出当前购物提供q欢迎光临购物车,期望下次再见!Process finished with exit code 0

相关文件展示:(goods_information)

英爵伦男士短袖T恤|48外套中老年人上衣|89骆驼牌男装|88男生新款潮流印花圆领半袖|69新款男士夏季短袖t恤韩版|39男生半袖夏装圆领体恤|42春夏季田园印花小衫女新款|100中年妇女装妈妈装棉短袖T恤|128秋季中老年人女装|59大码女装胖mm夏天短袖女士t恤|26谷崎女鞋夏季新款网面|59镂空跑步鞋女透气网鞋运动鞋旅游鞋|69个人帆布鞋女百搭学生韩版|62小白鞋女春系带情侣平底板鞋女|38春秋新款真皮英伦风松糕底女鞋|89新款羊皮蛋卷鞋女真皮单鞋春夏|123圆头百搭蝴蝶结平底鞋女秋|89新款鱼嘴鞋|43防水台女单鞋春夏百搭真皮高跟鞋|39浅口粗跟单鞋女鞋子|69懒人鞋春季女新款一脚蹬女鞋|69百搭小白鞋韩版帆布鞋学生板鞋子|89远步春季懒人低帮|39黑色韩版帆布鞋|126休闲单鞋女学生平底板鞋子学院潮|65男生圆领五分袖男装半袖薄款青年体恤衫学生夏季|48骆驼男装|52夏季短袖t恤男纯色V领半袖打底衫男士青年T恤薄款短|49拓路者短袖t恤|38男夏纯棉白色半袖男圆领宽松体恤|49夏季加大码男装短袖T恤|52V领打底衫半袖体恤|69青少年学生t桖男上衣服|49

相关文件展示:shop_record

英爵伦男士短袖T恤|2|48镂空跑步鞋女透气网鞋运动鞋旅游鞋|1|69新款羊皮蛋卷鞋女真皮单鞋春夏|2|123镂空跑步鞋女透气网鞋运动鞋旅游鞋|1|69百搭小白鞋韩版帆布鞋学生板鞋子|2|89

相关文件展示:personal_account

Eric|123123|0|1500Alex|123123|0|1246

如果觉得《Python购物车系统模拟1》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。