python商城购物系统

  • List item代码实现了一个简单的购物系统,包含了用户注册、登录、添加余额、查看余额、查看购物车、查看商品列表、购买商品、移除购物车中的商品、结账等功能。

代码分为两个类:UserShoppingMarket

  1. User 类:

    • __init__ 方法初始化用户对象,接收用户名和密码作为参数,并设置初始余额为0,购物车为空列表,购物车总价为0。
    • display_info 方法用于显示用户信息,打印用户名和余额。
    • modify_info 方法用于修改用户信息,通过用户输入的新用户名和密码来更新用户对象的属性。
    • add_balance 方法用于添加余额,接收金额作为参数,并将金额累加到用户对象的余额上。
    • view_balance 方法用于查看当前余额,打印用户对象的余额。
    • view_cart 方法用于查看购物车,如果购物车为空,则打印提示信息;否则,逐个打印购物车中商品的名称、价格和数量。
    • add_to_cart 方法用于将商品加入购物车,接收商品名称、价格和数量作为参数,将商品信息以列表形式添加到购物车列表中,并更新购物车总价。
    • remove_from_cart 方法用于从购物车中移除商品,接收商品名称、价格和数量作为参数,遍历购物车列表找到对应商品,更新购物车总价和商品数量,并在数量为0时将商品从购物车列表中移除。
    • checkout 方法用于结账,接收收货地址和手机号作为参数,检查余额是否足够支付购物车中商品的总价,如果余额足够,则从余额中扣除总价,并打印结账成功的提示信息,同时打印购买的商品手机号和收货地址;清空购物车列表和购物车总价。
  2. ShoppingMarket 类:

    • __init__ 方法初始化购物市场对象,创建一个空的用户字典和一个商品字典,商品字典中包含一些示例商品及其对应的价格。
    • register 方法用于用户注册,接收用户名和密码作为参数,检查用户名是否已存在,如果存在则打印提示信息,否则创建一个新的 User 对象,并将其添加到用户字典中。
    • login 方法用于用户登录,接收用户名和密码作为参数,检查用户名是否存在于用户字典中,如果存在则检查密码是否匹配,如果匹配则打印欢迎信息并返回相应的用户对象,否则打印密码错误的提示信息;如果用户名不存在,则打印相应的提示信息。
  3. 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("无效的操作")

在这里插入图片描述

  • 9
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PhoenixRiser

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值