作者:大家庭方不_402 | 来源:互联网 | 2024-11-20 11:00
在本版本的购物车系统中,用户的账户信息(用户名和密码)存储在一个文本文件中,格式为:用户名|密码。系统启动后,首先要求用户进行登录操作。如果登录成功,系统会请求用户输入其工资金额,随后显示商品列表供用户选购。若登录失败,则允许用户重新尝试登录,但超过三次失败后,系统将自动退出。
用户可以通过输入商品编号来选择购买商品。系统会检查用户的余额是否足以支付所选商品的价格,如果余额充足,则从用户账户中扣除相应金额;如果余额不足,系统会提示用户并要求重新选择。此外,用户可以在任何时候选择退出程序,此时系统会显示用户已购买的商品列表及其剩余余额。
以下是具体的功能实现代码示例:
# 用户名和密码存储于指定文件中,格式为:username|password
# 系统启动后,首先需要用户登录。登录成功后,用户需输入工资金额,之后系统显示商品列表。
# 若登录失败,允许用户重试,但连续三次失败后,系统将自动退出。
def login(file):
'''
实现用户登录功能,验证用户提供的用户名和密码。
参数:file - 存储用户信息的文件路径。
返回值:无
'''
attempts = 0
while attempts <3:
username = input('请输入用户名:')
password = input('请输入密码:')
with open(file, 'r', encoding='utf-8') as f:
for line in f:
user, pwd = line.strip().split('|')
if username == user and password == pwd:
print('登录成功!')
return True
print(f'登录失败,您还有{2 - attempts}次机会。')
attempts += 1
print('已达到最大登录尝试次数,程序即将退出。')
return False
# 商品列表
products = [
['iPhone 7', 5800],
['Apple', 20],
['Tesla', 1000000]
]
# 用户购物车
cart = []
# 处理用户购物逻辑
def shop():
'''
处理用户的购物逻辑,包括输入工资、选择商品、结算等。
返回值:无
'''
if login('users.txt'):
salary = int(input('请输入您的工资:'))
while True:
print('商品列表:')
for index, (product, price) in enumerate(products):
print(f'{index} [{product}:{price}]')
choice = input('请选择商品编号购买或输入q退出:').strip()
if choice.lower() == 'q':
print('感谢您的访问,再见!')
if cart:
total_cost = sum(item['price'] * item['count'] for item in cart)
print(f'您已购买的商品为:{cart},总花费为:{total_cost},剩余工资为:{salary}')
else:
print('您的购物车为空。')
break
elif not choice.isdigit():
print('无效输入,请输入有效数字。')
continue
choice = int(choice)
if choice <0 or choice >= len(products):
print('无效的商品编号。')
continue
quantity = int(input('请输入购买数量:'))
cost = products[choice][1] * quantity
if salary print('余额不足,请选择其他商品或减少购买数量。')
continue
for item in cart:
if item['name'] == products[choice][0]:
item['count'] += quantity
break
else:
cart.append({'name': products[choice][0], 'price': products[choice][1], 'count': quantity})
salary -= cost
print(f'成功购买{quantity}个{products[choice][0]},总价{cost}元,当前余额{salary}元。')
shop()