1. 程式人生 > >python 實現普通用戶和管理員用戶不同角色登錄不同功能小程序

python 實現普通用戶和管理員用戶不同角色登錄不同功能小程序

amount 密碼錯誤 urn clas data cart passwd with open 密碼

程序功能描述如下:不同角色登錄,普通用戶可以查看商品購買商品、查看購物車和余額、退出;管理員可以充值,可以添加商品、退出

用戶信息字典格式:

{
"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 實現普通用戶和管理員用戶不同角色登錄不同功能小程序