zoukankan      html  css  js  c++  java
  • python 简易购物车程序解析

    购物车程序需求:用户信息为:

    {'wyf':{'password': '12', 'role': '2', 'money': '100000', 'carts': ['iphone6', 'mi5']},
    'fei': {'password': '12', 'role': '2', 'money': '100000', 'carts': ['iphone6', 'mi5']}}
    用户角色role:1代表管理员,2,代表普通用户

    普通用户的权限有:

    1.查看所有商品;

    2.输入商品名称购买商品,购买后加入到购物车里面,钱要减去.购买后的商品追加到购物车里面。

    3.可以查看自己的余额,和 购物车商品

    4.退出

    管理员用户:

    1.添加商品,输入商品名称和余额

    2.充值,输入用户名,给他价钱

    3.退出

    思路解析:把每一个小的操作分枝封装成一个小函数,最后用户调用即可。本次运用到的知识点有:函数,文件修改,菜单。当前程序还有不足的地方,代码如下

    def op_file(file_name,content=None):
        f = open(file_name, 'a+')
        f.seek(0)
        if content:
            f.truncate()
            f.write(str(content))
            f.flush()
            res = None
        else:
            res = eval(f.read())
        f.close()
        return res
    
    def user_balance(name):#查询用户余额,以及购物车内商品
        # open_file("user.txt")
        op_file("user.txt",content=None)
        name = username
        print("您当前的余额为: " + str(user_info[name]["money"]))
        carts_list = user_info[name]["carts"]
        # print("购车内的商品有: " + str(user_info[name]["carts"]))
        print("您购物车包含的商品为:%s" % ','.join(carts_list))
    
    def use_user_balance():
        name = username
        user_balance(name)
    
    def add_product(inp_product,inp_price): #已存在的商品修改价格,不存在的商品以及价格直接添加.
        product_dict = op_file("product.txt")
        product_dict[inp_product] = {'price':inp_price}
        print(product_dict)
        product_list = list(product_dict)
        print("店铺商品共有:" + " , ".join(product_list))
        content = str(product_dict)
    
    
    
    def use_add_product():
        inp_product = input("请输入您要添加的商品:")
        inp_price = input("请输入您的商品价格:")
        add_product(inp_product,inp_price)
    
    def all_product():
        # product_list = open_file("product.txt")
        product_list = op_file("product.txt",content=None)
        print("店铺商品共有:" + " , ".join(product_list))
        print("商品&价格:" + str(product_list))
    
    
    def buy_product(inp_product,name): #用户购买商品,购买成功后写入购物车里面
        # f = open("user.txt","r+")
        # fw = open('product.txt')
        # user_info = eval(f.read())
        product_list = op_file('product.txt')
        user_info = op_file('user.txt')
    
        if inp_product not in product_list:
    
            print("对不起,您输入的商品不存在,请输入正确的商品")
    
        else:
            user_money = int(user_info[name]["money"])
            product_price = int(product_list[inp_product]["price"])
    
            if user_money >= product_price:
                print("购买成功!")
                balance = user_money - product_price
                # f.seek(0)
                user_info[name]['money'] = balance
                carts_list = user_info[name]['carts']
                carts_list.append(inp_product)
                print("您购物车包含的商品为:%s"% ','.join(carts_list))
                print("欢迎下次光临")
                # f.truncate()
                # f.write(str(user_info))
                # f.flush()
                content = str(user_info)
                # op_file(product.txt,content)
    
            else:
                print("对不起,您的账户余额不足,请联系管理员充值!")
    def use_buy_product():
        name = username
        all_product()
        inp_product = input("请输入您要购买的商品名称:")
        buy_product(inp_product, name)
    
    def user_add_money(name,inp_money):#输入用户名给用户充值
        f = open('user.txt','r+')
        f.seek(0)
        user_info = eval(f.read())
        # print(user_info)
        if name in user_info:
            new_money = int(user_info[name]['money']) + int(inp_money)
            user_info[name]['money'] = new_money
            print("当前用户余额为:",new_money)
            f.seek(0)
            f.truncate()
            f.write(str(user_info))
            f.flush()
        else:
            print("您输入的用户名不存在,请输入正确的用户名进行充值!")
    def use_user_add_money():
        name = input("需要充值的用户:").strip()
        # inp_money = input("本次充值多少元(请输入整数):")
        while True:
            inp_money = input("本次充值多少元:").strip()
            if inp_money.isdigit():
                break
            else:
                print("充值的金额必须为整数哦~")
        user_add_money(name, inp_money)
    
    def exit_sys():
        exit('退出程序')
    
    def admin_menu():
        admin_choice = input('请选择您的操作:【1】.添加商品 【2】.用户充值 【3】.退出
    请选择:')
    
        if admin_choice == '1':
            use_add_product()
            print("***************添加商品成功,即将返回上一级菜单***************")
    
        elif admin_choice == '2':
            use_user_add_money()
            print("**************用户充值成功,即将返回上一级菜单***************")
    
        elif admin_choice == '3':
            exit_sys()
        else:
            print("请选择正确的操作!")
    
        admin_menu()
    
    def user_menu():
        user_choice = input('请选择您的操作:【1】.查看所有商品 【2】.购买商品 【3】.查看余额以及已购商品 【4】.退出
    请选择:')
    
        if user_choice == '1':
            all_product()
            print("**************查看商品完毕,即将返回上一级菜单***************")
    
        elif user_choice == '2':
            use_buy_product()
            print("**************购买商品成功,即将返回上一级菜单***************")
    
        elif user_choice == '3':
            use_user_balance()
            print("**************账户信息查询成功,即将返回上一级菜单***************")
    
        elif user_choice == '4':
            exit_sys()
    
        else:
            print("操作异常,请选择正确的操作!")
        user_menu()
    # user_info = open_file('user.txt')
    user_info = op_file('user.txt',content=None)
    username = input("请输入您的用户名:").strip()
    password = input("请输入您的密码:").strip()
    
    if username not in user_info:
        print("用户名不正确,请重试")
    
    else:
        if password == user_info[username]["password"]:
            print("欢迎 " + username + " 进入店铺")
            if user_info[username]["role"] == '1':
                print("您好,您是管理员")
                admin_choice = input('请选择您的操作:【1】.添加商品 【2】.用户充值 【3】.退出
    请选择:')
    
                if admin_choice == '1':
                    use_add_product()
                    print("***************添加商品成功,即将返回上一级菜单***************")
                    admin_menu()
    
    
                elif admin_choice == '2':
                    use_user_add_money()
                    print("**************用户充值成功,即将返回上一级菜单***************")
                    admin_menu()
    
                elif admin_choice == '3':
                    exit_sys()
                else:
                    print("请选择正确的操作!")
    
            else:
                print("您好,您是普通用员")
                user_choice = input('请选择您的操作:【1】.查看所有商品 【2】.购买商品 【3】.查看余额以及已购商品 【4】.退出
    请选择:')
    
                if user_choice == '1':
                    all_product()
                    print("**************查看商品完毕,即将返回上一级菜单***************")
                    user_menu()
    
                elif user_choice == '2':
                    use_buy_product()
                    print("**************购买商品成功,即将返回上一级菜单***************")
                    user_menu()
    
                elif user_choice == '3':
                    use_user_balance()
                    print("**************账户信息查询成功,即将返回上一级菜单***************")
                    user_menu()
    
                elif user_choice == '4':
                    exit_sys()
    
                else:
                    print("操作异常,请选择正确的操作!")
    
        else:
            print("密码不正确!请重试")
    

      

  • 相关阅读:
    常用的正则表达式
    VScode格式化代码,开启ESlint代码检测方法,eslint代码配置
    git 常用的操作
    vscode 格式化的时候自动添加分号怎么去除
    echarts渐变色实现方法
    echart 柱状图 数值较小的时候,文字显示不全
    iview的Modal在提交表单时确认按钮loading状态冲突问题解决方案
    vue.js动态获取菜单
    12.18 webSocket消息推送
    12.18 微信模板消息推送
  • 原文地址:https://www.cnblogs.com/wmm007/p/7677017.html
Copyright © 2011-2022 走看看