码迷,mamicode.com
首页 > 编程语言 > 详细

python 实现普通用户和管理员用户不同角色登录不同功能小程序

时间:2017-10-17 16:34:00      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:span   odi   style   信息   exit   登录失败   join   return   sample   

程序功能描述如下:不同角色登录,普通用户可以查看商品购买商品、查看购物车和余额、退出;管理员可以充值,可以添加商品、退出

用户信息字典格式:

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

程序实现如下:
# 登录
def login(u_name, u_pass):
    "用户登录"
    u_name = str(u_name)
    u_pass = str(u_pass)
    if not u_name or not u_pass:
        print("error,用户名或密码不能为空!")
    else:
        user_data = {}  # 个人账户信息,用于登录成功后返回
        with open(users.txt, r, encoding=utf-8) as fr:
            fr.seek(0)
            user_info = eval(fr.read())
            fr.close()
            if u_name not in user_info:
                print("error,用户名不存在!")
            elif u_pass != user_info[u_name][passwd]:
                print("error,输入密码错误!")
            else:
                user_data[u_name] = user_info[u_name]
                print(success,登录成功,用户信息:, user_data)
                return user_data

# 查看所有商品
def get_goods():
    "查询所有商品"
    with open(goods.txt, r, encoding=utf-8) as fr:
        fr.seek(0)
        goods_info = eval(fr.read())
        fr.close()
        print(success,查询所有商品成功,商品信息:, goods_info)
        return goods_info

# 购买商品
def bug_goods(u_name, g_name):
    "用户购买商品"
    g_name = str(g_name)
    u_name = str(u_name)
    if not g_name or not u_name:
        return error,用户名或商品名称不能为空
    goods_info = get_goods()
    if g_name not in goods_info:
        return error,商品%s不存在 % g_name
    else:
        with open(users.txt, a+, encoding=utf-8) as fa:
            fa.seek(0)
            user_info = eval(fa.read())
            if user_info[u_name][money] - goods_info[g_name][price] < 0:
                return error,用户余额不足
            u_pass = user_info[u_name][passwd]
            u_role = user_info[u_name][role]
            u_money = user_info[u_name][money] - goods_info[g_name][price]
            u_money = round(u_money, 2)
            u_carts = user_info[u_name][carts]
            u_carts.append(g_name)
            user_info[u_name] = {passwd: u_pass, role: u_role, money: u_money, carts: u_carts}
            fa.seek(0)
            fa.truncate()
            fa.flush()
            fa.write(str(user_info))
            fa.close()
            return success,购买:{goods} 成功,购物车商品:{carts}.format(goods=g_name, carts=u_carts)

# 查询用户购物车和余额
def get_carts_money(u_name):
    "查询用户购物车、余额"
    u_name = str(u_name)
    if not u_name:
        return error,用户名不能为空
    else:
        with open(users.txt, encoding=utf-8) as f:
            f.seek(0)
            user_info = eval(f.read())
            f.close()
            u_carts = user_info[u_name][carts]
            u_money = user_info[u_name][money]
        return success,查询用户购物车和余额成功,用户名:{name},购物车:{carts} ,账户余额:{money}元.format(name=u_name, carts=u_carts, money= u_money)

# 添加商品
def add_goods(g_name, g_price):
    "添加商品"
    import string, random
    src_id = string.digits
    g_id = ‘‘.join(random.sample(src_id, 7))
    g_name = str(g_name)
    if not g_name:
        return error,添加商品失败,商品名称必须输入
    try:
        price = round(float(g_price), 2)
        if price <= 0:
            return error,添加商品失败,商品价格须大于0
        with open(goods.txt, a+, encoding=utf-8) as fa:
            fa.seek(0)
            goods_info = eval(fa.read())
            goods_data = {g_name: {id: g_id, price: price}}
            goods_info.update(goods_data)
            fa.seek(0)
            fa.truncate()
            fa.flush()
            fa.write(str(goods_info))
            fa.close()
        return success,添加商品:{goods}成功.format(goods=goods_data)
    except ValueError:
        return error,添加商品失败,商品价格输入格式错误

# 用户充值
def recharge(u_name, amount):
    "输入用户名给用户充值"
    u_name = str(u_name)
    try:
        u_amount = round(float(amount), 2)
        if u_amount <= 0:
            return error,充值金额须大于0
        with open (users.txt, a+, encoding=utf-8) as f:
            f.seek(0)
            user_info = eval(f.read())
            if u_name not in user_info:
                return error,用户名不存在
            u_pass = user_info[u_name][passwd]
            u_role = user_info[u_name][role]
            u_money = user_info[u_name][money]+u_amount
            u_carts = user_info[u_name][carts]
            user_data = {u_name: {passwd: u_pass, role: u_role, money: u_money, carts: u_carts}}
            user_info.update(user_data)
            f.seek(0)
            f.truncate()
            f.flush()
            f.write(str(user_info))
            f.close()
        return success,给用户:{user}充值成功,账户余额:{amount}元.format(user=u_name, amount=user_data[u_name][money])
    except ValueError:
        return error,充值金额输入格式错误

# 退出程序
def exit_sys():
    exit(退出程序)

# 普通用户
def user_role1(uName):
    choice = input(请输入你的选择:1:查看所有商品 2:购买商品 3:查看购物车和余额 4:退出\n).strip()
    if choice == 1:
        print(get_goods())
    elif choice == 2:
        goods_name = input("请输入要购买商品名称:\n").strip()
        print(bug_goods(uName, goods_name))
    elif choice == 3:
        print(get_carts_money(uName))
    elif choice == 4:
        exit_sys()
    user_role1(uName)

# 管理员用户
def user_role2():
    choice = input(请输入你的选择:1:添加商品 2:给用户充值 3:退出\n).strip()
    if choice == 1:
        goods_name = input("请输入你要添加的商品名称:\n").strip()
        goods_price = input("请输入添加商品价格:\n").strip()
        print(add_goods(goods_name, goods_price))
    elif choice == 2:
        u_name = input("请输入你要充值的用户名:\n").strip()
        amount = input("请输入充值金额:\n").strip()
        print(recharge(u_name, amount))
    elif choice == 3:
        exit_sys()
    user_role2()

# 主体部分
uName = input("请输入登录用户名:\n").strip()
uPass = input("请输入登录密码:\n").strip()
user = login(uName, uPass)
if user:  # 用户登录成功
    # 普通用户:
    if user[uName][role] == 1:
        user_role1(uName)
    # 管理员用户:
    elif user[uName][role] == 2:
        user_role2()
    else:
        print("用户角色不存在")
else:
    print("登录失败")
    exit_sys()

 

普通用户:

请输入登录用户名:
pp1
请输入登录密码:
123
success,登录成功,用户信息: {pp1: {passwd: 123, role: 1, money: 96737.28, carts: [MAC, MI, MAC, KKK, HHH, LLL, LLL, LLL, YYY]}}
请输入你的选择:1:查看所有商品 2:购买商品 3:查看购物车和余额 4:退出
asd
请输入你的选择:1:查看所有商品 2:购买商品 3:查看购物车和余额 4:退出
1
success,查询所有商品成功,商品信息: {MAC: {id: 3894710, price: 31233.22}, vivo: {id: 1762774, price: 1888.0}, MI: {id: 1762775, price: 2888.0}, HHH: {id: 7053921, price: 12312}, KKK: {id: 2789035, price: 123.22}, YYY: {id: 2936504, price: 254.22}, LLL: {id: 6091483, price: 231.2}}
{MAC: {id: 3894710, price: 31233.22}, vivo: {id: 1762774, price: 1888.0}, MI: {id: 1762775, price: 2888.0}, HHH: {id: 7053921, price: 12312}, KKK: {id: 2789035, price: 123.22}, YYY: {id: 2936504, price: 254.22}, LLL: {id: 6091483, price: 231.2}}
请输入你的选择:1:查看所有商品 2:购买商品 3:查看购物车和余额 4:退出
3
success,查询用户购物车和余额成功,用户名:pp1,购物车:[MAC, MI, MAC, KKK, HHH, LLL, LLL, LLL, YYY] ,账户余额:96737.28元
请输入你的选择:1:查看所有商品 2:购买商品 3:查看购物车和余额 4:退出
2
请输入要购买商品名称:
LLL
success,查询所有商品成功,商品信息: {MAC: {id: 3894710, price: 31233.22}, vivo: {id: 1762774, price: 1888.0}, MI: {id: 1762775, price: 2888.0}, HHH: {id: 7053921, price: 12312}, KKK: {id: 2789035, price: 123.22}, YYY: {id: 2936504, price: 254.22}, LLL: {id: 6091483, price: 231.2}}
success,购买:LLL 成功,购物车商品:[MAC, MI, MAC, KKK, HHH, LLL, LLL, LLL, YYY, LLL]
请输入你的选择:1:查看所有商品 2:购买商品 3:查看购物车和余额 4:退出
4
退出程序

Process finished with exit code 1

管理员用户:

请输入登录用户名:
pp2
请输入登录密码:
123
success,登录成功,用户信息: {pp2: {passwd: 123, role: 2, money: 14435.76, carts: [vivo, vivo, MAC]}}
请输入你的选择:1:添加商品 2:给用户充值 3:退出
g
请输入你的选择:1:添加商品 2:给用户充值 3:退出
1
请输入你要添加的商品名称:
LOVONO
请输入添加商品价格:
12321.22
success,添加商品:{LOVONO: {id: 7631802, price: 12321.22}}成功
请输入你的选择:1:添加商品 2:给用户充值 3:退出
2
请输入你要充值的用户名:
pp1
请输入充值金额:
321321。232
error,充值金额输入格式错误
请输入你的选择:1:添加商品 2:给用户充值 3:退出
2
请输入你要充值的用户名:
pp1
请输入充值金额:
1232.42
success,给用户:pp1充值成功,账户余额:97738.5元
请输入你的选择:1:添加商品 2:给用户充值 3:退出
3
退出程序

Process finished with exit code 1

 

python 实现普通用户和管理员用户不同角色登录不同功能小程序

标签:span   odi   style   信息   exit   登录失败   join   return   sample   

原文地址:http://www.cnblogs.com/wolfshining/p/7682238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!