python实现一个简单的购物系统
代码功能还不够完善
"""
@name : 购物系统测试案例
@author : wangaokang
@projectname: python代码
"""
import sys
#定义一个采购清单,把购买物品的信息都写入进去
shopping_cart = {}
sum_price = 0
#定义一个终止程序
def exit():
if not shopping_cart:
print("\033[1;36m你的购物车为空哦,宝贝请加满你的购物车再来找我!!!\033[0m")
else:
print(f"\033[1;34m你的购物车里有{shopping_cart}接下来我将为你结算哦,宝!!!\033[0m")
print(f"宝先让我看看你要支付的金额为:{sum_price}元")
sys.exit(0)
#定义个用户列表
User = {'root': {'pas':'123456','余额':'4000'},
'wak': {'pas':'3211642176','余额':'500'}}
#定义一个商品列表
shop = {'F001': {'name':'苹果','price':1.2,'count':100},
'F002': {'name':'荔枝','price':5.5,'count':8},
'F003': {'name':'梨子','price':8.5,'count':200}
}
#登录系统函数
def Enter():
global user_name,passwd
print("\033[1;36m返回菜单请按r\033[0m")
user_name = input("请输入用户名:")
if user_name == 'r':
return menu()
elif user_name == 'exit':
exit()
else:
passwd = input("请输入用户密码:")
if passwd == 'exit':
exit()
else:
if user_name in User and passwd == User[user_name]['pas']:
print("\033[1;34m登陆成功!\033[0m")
print("余额:",User[user_name]['余额'])
print('''
-------商品信息--------
F001:{name:苹果,price:1.2,count:100},
F002:{name:荔枝,price:5.5,count:8},
F003:{name:梨子,price:8.5,count:200}
''')
return shopping()
else:
print("输入密码错误或用户不存在!"
"请重新输入!")
return Enter()
#用户注册系统
def register():
global user_name, passwd, money
user_name = input("请输入你的用户名:")
if user_name == 'exit':
exit()
else:
#判断用户名是否已经存在
if user_name in User.keys():
print("用户名已经存在请重新命名!")
return register()
else:
passwd = input("请输入你的密码:")
if passwd == 'exit':
exit()
else:
money = input("请输入你的充值金额:")
if money == 'exit':
exit()
else:
money = float(money)
#判断用户的充值金额是否大于50
if money <= 50:
print("注册失败!您存储的金额要大于50")
return register()
else:
User.update({user_name:{'pas': passwd, '余额': money}})
print("注册成功!"
"请选择你的操作选项")
return menu()
#购物函数
def shopping():
global sum_price
print("按Q结账".center(50,'*'))
while 1:
number = input("请输入你要购买的物品编号:")
if number == 'exit':
exit()
elif number == ('q' or 'Q'):
money = float(User[user_name]['余额']) - sum_price
print("购物结束!本次消费如下:")
print(shopping_cart)
print("已支付:", sum_price)
print("余额:", money)
print("\033[1;34m希望我的小宝本次购物愉快哟!\033[0m")
break
elif number in shop.keys():
amount = input("请输入你要采购的数量:")
sum_price = 0
if amount == 'exit':
exit()
# 判断输入是否为数字如果不是重新输入
elif amount.isdigit():
amount = float(amount)
if amount > (shop[number]['count']):
print(f"库存不足,目前库存为{shop[number]['count']}")
continue
else:
shop[number]['count'] -= amount
print(f"\033[1;34m当前{shop[number]['name']}剩余:{shop[number]['count']}\033[0m")
# 如果重复选中购物车中已有的商品
if shop[number]['name'] in shopping_cart.keys():
toal_price = float(shop[number]['price'] * amount)
# 因为是重复选购所以将两次购物信息合并为一个
shopping_cart.update({shop[number]['name']: {'单价': shop[number]['price'],
'数量': float(shopping_cart[shop[number]['name']][
'数量'] + amount),
'总价': float(shopping_cart[shop[number]['name']][
'总价'] + toal_price)}})
else:
toal_price = float(shop[number]['price'] * amount)
shopping_cart.update({shop[number]['name']: {'单价': shop[number]['price'],
'数量': amount,
'总价': toal_price}})
print("购物信息:", shopping_cart)
for i in shopping_cart.values():
sum_price = sum_price + float(i['总价'])
print("需要支付:", sum_price, "元")
money = float(User[user_name]['余额'])
print("卡内余额:", money, "元")
print("".center(50, '*'))
# money = float(User[user_name]['余额'])
if money - sum_price < 0:
print("你的余额不足!按1选择充值,按2选择放弃购物!")
option = input("请输入你的操作:")
if option == 'exit':
exit()
else:
option = int(option)
if option == 1:
return charge()
elif option == 2:
print("退出!")
break
else:
print("你的操作不合法!")
return shopping()
else:
print("输入错误!")
# continue
return shopping()
else:
print("输入编号不存在,请重新输入!")
return shopping()
# 充值金额
def charge():
charge_money = float(input("请输入要充值的金额:"))
User[user_name]['余额'] = float(User[user_name]['余额'])+charge_money
print("充值成功!")
print("余额为:",User[user_name]['余额'])
return shopping()
#
#主菜单界面
def menu():
print("欢迎来到三乐购物系统".center(100, "-"))
print("1.登录")
print("2.注册")
print("3.退出")
option = input("请输入你要执行的操作:")
if option == 'exit':
exit()
else:
if option == "1":
return Enter()
elif option == "2":
return register()
elif option == "3":
print("退出")
else:
print("\033[1;34m臭宝你又调皮了哟!!输入都不正确,要重新输入哦!\033[0m")
return menu()
menu()