小程序交流群:528215729,加入和小伙伴们一起探讨开发疑难、运营idea吧

admin

admin

发表于 2018-04-14 16:29:22

摘要:Python实现购物小程序 (微信小程序开发 - 微信 小程序外包开发-微信小程序 开发教程-微信小程序开发者社区,尽在 www.mntuku.cn)

一、需求

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()

 

90阅读 | 0评论
你的回应