• Python实现购物小程序


    一、需求

    1、登录
        {
        ‘xxx1’:{'passwd':'123','role':1,'moeny':10000,"carts":['mac']},
        'xxx1':{'passwd':'123','role':2,'moeny':10000,"carts":[]}
        }
        #role是1的话,代表管理员,2代表普通用户
    2、普通用户:
        #查看所有的商品
        #输入商品名称添加到购物车,减去对应余额
        #可以查看自己购物车和余额,你已经买了xx东西,你还xxx钱
        #退出
    3、管理员:
           #添加商品,商品名称,商品价格
           #充值,输入用户名,给他加钱
           #退出                

    二、全局变量和函数定义

    USER_FILE全局变量,保存用户信息
    GOODS_FILE全局变量,保存商品信息
    rw_file()读写文件
    isprice()判断输入金额是否合法
    login()用户登录:
        buyer()普通用户登录:
            find()查找所有商品
            buy()购买商品
            get()查询购物车和余额
            exit()退出
        admin()管理员登录:
            addgoods()添加商品
            recharge()充值
            exit()退出

    三、实现代码

    USER_FILE = 'users.txt'
    GOODS_FILE = 'goods.txt'
    
    
    def rw_file(filename, content=0): #读和写文件
        if content:  #若content不为空,则判定为写文件
            with open(filename,'w') as f:
                f.write(str(content))
        else:  #若content为空,则判定为读文件
            with open(filename,'r') as f:
                f = eval(f.read())
                return f
    
    
    def buyer(username):
        menu = {
            '1': find,
            '2': buy,
            '3': get,
            '4': exit
        }
        while True:
            choice = input("请输入你想执行的操作(输入【1】查看所有商品,输入【2】添加商品,输入【3】查询购物车和余额,输入【4】退出): ")
            if choice not in menu:
                print('输入错误,请重新输入')
            else:
                menu[choice](username)
    
    
    def admin():
        menu = {
            '1': addgoods,
            '2': recharge,
            '3': exit
        }  # role为1时,为管理员
        while True:
            choice = input('请输入你想执行的操作(输入【1】添加商品,输入【2】充值,输入【3】退出): ')
            if choice not in menu:
                print('输入错误,请重新输入')
            else:
                menu[choice]()
    
    
    def login(): #定义用户登录函数,根据用户角色提供指定操作
        users = rw_file(USER_FILE)
        for i in range(3):
            username = input("请输入账号: ")
            passwd = input("请输入密码: ")
            if username in users and passwd == users[username]['passwd'] :
                if users[username]['role'] == '2': #如果role为2,则为普通用户
                    print('欢迎光临')
                    buyer(username)
                else:
                    print('您已管理员身份登录')
                    admin( )
            else:
                print('账号或密码错误,还能尝试%d次'%(2-i))
                i += 1
    
    
    def find(*args): #普通查看所有商品
            with open('goods.txt') as f:
                print('所有商品和价格列表: ', f.read())
    
    
    def buy(username): #普通用户添加商品到购物车
        users = rw_file(USER_FILE)
        goods_all = rw_file(GOODS_FILE)
        goods = input('请输入你要添加的商品: ')
        if goods in goods_all:
            if goods not in users[username]['carts']:
                if users[username]['money'] >= goods_all[goods]:
                    users[username]['carts'].append(goods)
                    users[username]['money'] =float('%.2f'%(users[username]['money'] - goods_all[goods]))
                    with open('users.txt','w') as f2:
                        f2.write(str(users))
                        print('商品已成功添加到购物车')
                else:
                    print('您的余额不足,请充值')
            else:
                print('购物车中已添加该商品,无需重复添加')
        else:
            print('您输入的商品不存在')
    
    
    def get(username): #普通用户查询购物车中的商品和余额
        users = rw_file(USER_FILE)
        if len(users[username]['carts']) > 0:
            print('您的购物车中已有商品:{goods}'.format(goods = users[username]['carts']))
        else:
            print('您还未添加任何商品')
        print('您的余额:{money}'.format(money=users[username]['money']))
    
    
    def addgoods( ): #管理员添加商品
        goods_all = rw_file(GOODS_FILE)
        goods_name = input('请输入商品名称: ')
        goods_price = input('请输入商品价格: ')
        if len(goods_name.strip()) != 0:
            if goods_name not in goods_all:
                if isprice(goods_price):
                    goods_all[goods_name] = float('%.2f'%float(goods_price))
                    rw_file(GOODS_FILE,goods_all)
                    print('商品添加成功')
                else:
                    print('商品价格必须是正数,请重新输入')
            else:
                print('该商品已存在,无需重复添加')
        else:
            print('商品名称不能为空,请重新输入')
    
    
    def recharge(): #管理员给指定账号充值
        users = rw_file(USER_FILE)
        username = input('请输入要充值的账号: ')
        money = input('请输入要添加的金额: ')
        if username in users and isprice(money):
            users[username]['money'] = float('%.2f'%(users[username]['money'] + float(money)))
            rw_file(USER_FILE, users)
            print('操作成功')
        else:
            print('输入账号或金额有误,请重新输入')
    
    
    def isprice(price): #判断金额是否有效
        if price.count('.') == 1 and price.split('.')[0].isdigit() and price.split('.')[1].isdigit():
            return True
        elif price.count('.') == 0 and price.isdigit():
            return True
        else:
            return False
    
    login()
  • 相关阅读:
    夺命雷公狗---node.js---2node.js中的npm的常用命令
    nginx安装目录
    linux下安装nginx
    mui实现推送功能
    SpringBoot WebSocket实现
    发送短信验证码
    Vue在HTML页面中的脚手架
    SpringBoot邮件发送功能
    毕业设计功能
    毕业设计数据库
  • 原文地址:https://www.cnblogs.com/jessicaxu/p/7707975.html
Copyright © 2020-2023  润新知