python3 從零單排3_函數(購買商品小程序)
阿新 • • 發佈:2018-01-02
pan encoding txt 初始 函數 read odin tro and
題目如下:
商品文件products.txt裏存的內容如下:
{‘mac‘: 6500, ‘被子‘: 100.0, ‘手機‘: 1.0, ‘寶馬‘: 100}
用戶文件user.txt裏存的內容如下:
{‘dalei‘: {‘money‘: 1003.0, ‘role‘: 2, ‘pass‘: ‘123456‘, ‘products‘: [‘mac‘]},‘xg‘: {‘money‘: 1000, ‘role‘: 1, ‘pass‘: ‘123456‘, ‘products‘: [‘mac‘]}}
管理員可以操作:
1.給用戶充值,輸入用戶名,修改money,100000
2.添加商品
3.logout
普通用戶可以操作:
1.看商品信息
2.買東西,a.東西加products,money要修改
3.查看自己的商品和余額
4.退出
需求分析:
1.商品、用戶文件 初始化數據
2.登錄 讀取用戶文件
3.登錄獲取角色,給出相應菜單 字典獲取用戶角色,定義字典 給用戶選擇相應的操作
4.管理員
1.給用戶充值,輸入用戶名,修改money,100000
2.添加商品
3.logout
5.用戶
1.看商品信息
2.買東西,a.東西加products,money要修改
3.查看自己的商品和余額
4.退出
代碼如下:
#定義讀寫文件 def op_file(filename,content=None): if content: with open(filename,‘w‘,encoding=‘utf-8‘) as f: f.write(str(content)) else: with open(filename,‘r‘,encoding=‘utf-8‘) as f: res=eval(f.read()) return res #定義校驗money的輸入合法性 def checkmoney(money): if money.isdigit(): return True elif money.count(‘.‘)==1:if money.split(‘.‘)[0].isdigit() and money.split(‘.‘)[1].isdigit(): return True return False #定義登錄 def login(): username=input(‘用戶名:‘) password=input(‘密碼:‘) users=op_file(‘user.txt‘) if username in users and users[username][‘pass‘]==password: print(‘歡迎【%s】登錄‘%username) return username,users[username][‘role‘] else: print(‘登錄失敗!‘) #管理員 #1.給用戶充值,輸入用戶名,修改money,100000 def charge(): username = input(‘用戶名:‘).strip() money = input(‘金額:‘).strip() users = op_file(‘user.txt‘) if username in users and checkmoney(money): users[username][‘money‘]+=float(money) op_file(‘user.txt‘,content=users) # 2.添加商品 def add(): sp_name = input(‘商品名稱:‘).strip() sp_money = input(‘金額:‘).strip() sp = op_file(‘products.txt‘) if checkmoney(sp_money): sp[sp_name]=float(sp_money) op_file(‘products.txt‘, content=sp) # 3.logout def logout(): exit(‘退出程序‘) #5.用戶 # 1.看商品信息 def show(): sp = op_file(‘products.txt‘) for i in sp: print(‘商品:%s,價錢:%s‘%(i,sp[i])) # 2.買東西,a.東西加products,money要修改 def buy(user): pro=input(‘買的商品migncheng:‘) sp = op_file(‘products.txt‘) users = op_file(‘user.txt‘) if pro in sp: if users[user][‘money‘]>=sp[pro]: users[user][‘money‘] -= sp[pro] users[user][‘products‘].append(pro) op_file(‘user.txt‘, content=users) else: print(‘請聯系管理員充值!‘) else: print(‘商品未上架!‘) buy(user) # 3.查看自己的商品和余額 def look(user): users = op_file(‘user.txt‘) print(‘您的購物車有:%s‘%str(users[user][‘products‘])) print(‘您余額為:%.2f‘%users[user][‘money‘]) choice_admin={‘1‘:charge,‘2‘:add,‘3‘:logout} choice_user={‘1‘:show,‘2‘:buy,‘3‘:look,‘4‘:logout} def run(): user,role=login() if role==1: while True: choice=input(‘請輸入您的選擇:1.充值;2.添加商品;3.退出‘) if choice==‘1‘ or choice==‘2‘ or choice==‘3‘: choice_admin[choice]() else: print(‘輸入有誤!‘) else: while True: choice=input(‘請輸入您的選擇:1.查看商品;2.購買;3.查詢購物車和余額;4.退出‘) if choice==‘1‘ or choice==‘4‘: choice_user[choice]() elif choice==‘2‘ or choice==‘3‘: choice_user[choice](user) else: print(‘輸入有誤!‘) if __name__==‘__main__‘: run()
python3 從零單排3_函數(購買商品小程序)