- List item代码实现了一个简单的购物系统,包含了用户注册、登录、添加余额、查看余额、查看购物车、查看商品列表、购买商品、移除购物车中的商品、结账等功能。
代码分为两个类:User
和 ShoppingMarket
。
User
类:
-
__init__
方法初始化用户对象,接收用户名和密码作为参数,并设置初始余额为0,购物车为空列表,购物车总价为0。 -
display_info
方法用于显示用户信息,打印用户名和余额。 -
modify_info
方法用于修改用户信息,通过用户输入的新用户名和密码来更新用户对象的属性。 -
add_balance
方法用于添加余额,接收金额作为参数,并将金额累加到用户对象的余额上。 -
view_balance
方法用于查看当前余额,打印用户对象的余额。 -
view_cart
方法用于查看购物车,如果购物车为空,则打印提示信息;否则,逐个打印购物车中商品的名称、价格和数量。 -
add_to_cart
方法用于将商品加入购物车,接收商品名称、价格和数量作为参数,将商品信息以列表形式添加到购物车列表中,并更新购物车总价。 -
remove_from_cart
方法用于从购物车中移除商品,接收商品名称、价格和数量作为参数,遍历购物车列表找到对应商品,更新购物车总价和商品数量,并在数量为0时将商品从购物车列表中移除。 -
checkout
方法用于结账,接收收货地址和手机号作为参数,检查余额是否足够支付购物车中商品的总价,如果余额足够,则从余额中扣除总价,并打印结账成功的提示信息,同时打印购买的商品手机号和收货地址;清空购物车列表和购物车总价。
ShoppingMarket
类:
-
__init__
方法初始化购物市场对象,创建一个空的用户字典和一个商品字典,商品字典中包含一些示例商品及其对应的价格。 -
register
方法用于用户注册,接收用户名和密码作为参数,检查用户名是否已存在,如果存在则打印提示信息,否则创建一个新的User
对象,并将其添加到用户字典中。 -
login
方法用于用户登录,接收用户名和密码作为参数,检查用户名是否存在于用户字典中,如果存在则检查密码是否匹配,如果匹配则打印欢迎信息并返回相应的用户对象,否则打印密码错误的提示信息;如果用户名不存在,则打印相应的提示信息。
market
对象是一个ShoppingMarket
类的实例,用于实际运行购物市场系统。
代码主要部分是一个循环,用户可以根据提示选择不同的操作:
- 如果选择 “1”,则进行用户注册操作,输入用户名和密码后调用
register
方法进行注册。 - 如果选择 "2
",则进行用户登录操作,输入用户名和密码后调用 login
方法进行登录。如果登录成功,进入子菜单循环,可以进行余额管理、购物车操作、商品浏览、结账等操作。
- 如果选择 “3”,则退出系统。
- 如果输入的选项无效,则打印相应的提示信息。
子菜单循环中的操作包括:
- 添加余额:输入要添加的金额后调用
add_balance
方法进行余额增加操作。 - 查看余额:调用
view_balance
方法显示当前余额。 - 查看购物车:调用
view_cart
方法显示购物车中的商品信息。 - 查看所有商品:遍历商品字典并打印所有商品的名称和价格。
- 购买商品:根据商品编号、数量等信息调用
add_to_cart
方法将商品加入购物车。 - 移除购物车中的商品:根据商品编号、数量等信息调用
remove_from_cart
方法从购物车中移除商品。 - 结账:输入收货地址和手机号后调用
checkout
方法进行结账操作。 - 查询用户信息:调用
display_info
方法显示当前用户的信息。 - 修改用户信息:输入新的用户名和密码后调用
modify_info
方法进行用户信息修改。 - 返回上级菜单:跳出子菜单循环,返回到登录菜单。
class User:
def __init__(self, name, password):
self.name = name
self.password = password
self.balance = 0
self.cart = []
self.price = 0
# 添加新的方法用来显示用户信息
def display_info(self):
print(f"用户名:{self.name}")
print(f"余额:{self.balance}")
# 添加新的方法用来修改用户信息
def modify_info(self):
name = input("请输入新的用户名:")
password = input("请输入新的密码:")
self.name = name
self.password = password
print("用户信息修改成功")
def add_balance(self, amount):
self.balance += amount
print(f"成功添加余额:{amount},当前余额为:{self.balance}")
def view_balance(self):
print(f"当前余额为:{self.balance}")
def view_cart(self):
if not self.cart:
print("购物车为空")
else:
print("购物车内的商品有:")
for item in self.cart:
print(f"{item[0]} - 价格:{item[1]} - 数量:{item[2]}")
def add_to_cart(self, item, price, quantity):
self.cart.append([item, price, quantity])
self.price += price * quantity
print(f"成功将商品 {item} 加入购物车")
def remove_from_cart(self, item, price, quantity):
for cart_item in self.cart:
if cart_item[0] == item:
self.price -= price * quantity
cart_item[2] -= quantity
if cart_item[2] <= 0:
self.cart.remove(cart_item)
print(f"成功移除购物车中的商品:{item}")
return
print(f"购物车中没有商品:{item}")
def checkout(self, address, phone):
if self.price > self.balance:
print("余额不足,无法结账")
return
self.balance -= self.price
print("结账成功")
print(f"购买的商品的手机号:{phone}")
print(f"收货地址:{address}")
self.cart.clear()
self.price = 0
class ShoppingMarket:
def __init__(self):
self.users = {}
self.products = {'产品1': 10, '产品2': 20, '产品3': 30}
def register(self, name, password):
if name in self.users:
print("用户名已存在")
else:
self.users[name] = User(name, password)
print("注册成功")
def login(self, name, password):
if name in self.users:
user = self.users[name]
if user.password == password:
print(f"欢迎回来,{name}!")
return user
else:
print("密码错误")
return None
else:
print("用户名不存在")
return None
market = ShoppingMarket()
while True:
print("1. 注册")
print("2. 登录")
print("3. 退出系统")
choice = input("请选择操作:")
if choice == "1":
name = input("请输入用户名:")
password = input("请输入密码:")
market.register(name, password)
elif choice == "2":
name = input("请输入用户名:")
password = input("请输入密码:")
user = market.login(name, password)
if user:
while True:
print("1. 添加余额")
print("2. 查看余额")
print("3. 查看购物车")
print("4. 查看所有商品")
print("5. 购买商品")
print("6. 移除购物车中的商品")
print("7. 结账")
print("8. 查询用户信息") # 新增操作
print("9. 修改用户信息") # 新增操作
print("10. 返回上级菜单") # 编号改为10
sub_choice = input("请选择操作:")
if sub_choice == "1":
amount = float(input("请输入要添加的余额:"))
user.add_balance(amount)
elif sub_choice == "2":
user.view_balance()
elif sub_choice == "3":
user.view_cart()
elif sub_choice == "4":
print("所有商品列表:")
for i, (product, price) in enumerate(market.products.items(), start=1):
print(f"{i}. {product} - 价格:{price}")
elif sub_choice == "5":
item_num = int(input("请输入要购买的商品编号:"))
if 1 <= item_num <= len(market.products):
item = list(market.products.keys())[item_num - 1]
price = market.products[item]
quantity = int(input("请输入购买的数量:"))
user.add_to_cart(item, price, quantity)
else:
print("无效的商品编号")
elif sub_choice == "6":
item_num = int(input("请输入要移除的商品编号:"))
if 1 <= item_num <= len(market.products):
item = list(market.products.keys())[item_num - 1]
price = market.products[item]
quantity = int(input("请输入移除的数量:"))
user.remove_from_cart(item, price, quantity)
else:
print("无效的商品编号")
elif sub_choice == "7":
address = input("请输入收货地址:")
phone = input("请输入手机号:")
user.checkout(address, phone)
elif sub_choice == "8":
user.display_info() # 查询用户信息
elif sub_choice == "9":
user.modify_info() # 修改用户信息
elif sub_choice == "10":
break
else:
print("无效的操作")
else:
continue
elif choice == "3":
print("退出系统")
break
else:
print("无效的操作")