day2 作业

  1 #!/usr/bin/env python
  2 # -*- coding:utf-8 -*-
  3 # Author:kiko0o0
  4 
  5 import os
  6 import sys
  7 #import getpass
  8 
  9 LOCAL_DIR = os.path.dirname(os.path.abspath(__file__))
 10 USER_DB = "%s/%s" % (LOCAL_DIR,"Userinfo.db")
 11 PRODUCT_DB = "%s/%s" % (LOCAL_DIR,"Product.db")
 12 
 13 # 初始化用户[当用户文件不存在时生效]
 14 if os.path.exists(USER_DB):
 15     pass
 16 else:
 17     Userinfo = "admin 123456 0 null 0\nqianwei qian123 0 null 0\nwanli wan123 0 null 0\ntotal 0 0 0 0"
 18     with open(USER_DB,"w") as w_file:
 19         w_file.write(Userinfo)
 20 
 21 # 初始化产品信息[当产品文件不存在时生效]
 22 if os.path.exists(PRODUCT_DB):
 23     pass
 24 else:
 25     Product = "Iphone 5800\nMacbook 12000\nBike 800\nWatch 3500\nCoffee 32\nBook 80\n"
 26     with open(PRODUCT_DB,"w") as w_file1:
 27         w_file1.write(Product)
 28 
 29 # 将用户信息生成一个字典
 30 user_info = dict()
 31 with open(USER_DB,"r") as read_file:
 32     for line in read_file:
 33 
 34         if len(line) !=0:
 35             username, password, times, product, balance = line.split()
 36             if username == "total":
 37                 user_info[username] = {"times":int(times)}
 38             else:
 39                 user_info[username] = {"password":password,"times":int(times),"product":product,"balance":int(balance)}
 40 
 41 # 将产品信息生成一个字典
 42 product_info = dict()
 43 with open(PRODUCT_DB,"r") as read_file1:
 44     for line1 in read_file1:
 45         if len(line1) !=0:
 46             product_name,price = line1.split()
 47             product_info[product_name] = {"product_name":product_name,"price":int(price)}
 48 
 49 def write_Productinfo():
 50     global  Productinfo
 51     Productinfo = ""
 52     for product_name in product_info.keys():
 53         productinfo = "%s %s\n" % (product_name,product_info[product_name]["price"])
 54         Productinfo = "%s%s" % (Productinfo,productinfo)
 55     with open(PRODUCT_DB,'w') as w_file1:
 56         w_file1.write(Productinfo)
 57 
 58 def write_userinfo():
 59     global Userinfo
 60     Userinfo = ""
 61     #字符串拼接用户信息
 62     for info in user_info.keys():
 63         if info == "total":
 64             userinfo = "%s %s %s %s %s\n" % (info,0,user_info["total"]["times"],0,0)
 65         else:
 66             userinfo = "%s %s %s %s %s\n" % (info,user_info[info]["password"],user_info[info]["times"],user_info[info]["product"],user_info[info]["balance"])
 67         Userinfo = "%s%s" % (Userinfo,userinfo)
 68     with open(USER_DB,"w") as w_file:
 69         w_file.write(Userinfo)
 70 
 71 def temp_menu_list():
 72     global temp_menu
 73     temp_menu = ""
 74     temp_menu_list_id = []
 75     temp_menu_list_name = []
 76     temp_menu_list_price = []
 77     for item in enumerate(sorted(product_info)):
 78         l_id = item[0]
 79         l_name = item[1]
 80         l_price = product_info[item[1]]["price"]
 81         temp_menu_list_id.append(l_id)
 82         temp_menu_list_name.append(l_name)
 83         temp_menu_list_price.append(l_price)
 84         print(l_id, l_name, l_price)
 85     temp_menu = list(zip(temp_menu_list_id, temp_menu_list_name, temp_menu_list_price))
 86 
 87 def rechange():
 88     print("您的账户余额为:\033[1;32m %s \033[0m" % user_info[username]["balance"])
 89     yn = input("请确认本次是否充值,y/n\n>>>:").strip()
 90     flag_salay = False
 91     while not flag_salay:
 92         if yn == "y" or yn == "Y":
 93             while not flag_salay:
 94                 salay = input("请输入本次充值金额:\n>>>:").strip()
 95                 if salay.isdigit():
 96                     salay = int(salay)
 97                     user_info[username]["balance"] += salay
 98                     write_userinfo()
 99                     print("充值成功!您现在的账户余额为:\033[1;32m %s \033[0m" % user_info[username]["balance"])
100                     flag_salay = True
101                     break
102                 else:
103                     print("请输入整数!!!")
104         elif yn == "n" or yn == "N":
105             break
106         else:
107             print("invalid option")
108 
109 print('-'*50)
110 
111 menu = ['购物中心','管理后台']
112 menu_up_list = ['修改商品','添加商品','删除商品']
113 flag_menu = False
114 flag_menu_list = False
115 flag_salay = False
116 flag_added = False
117 flag_add_p =False
118 flag_up = False
119 flag_del = False
120 global b
121 # shopping_list = []
122 temp_menu_list_id = []
123 temp_menu_list_name = []
124 temp_menu_list_price =[]
125 # TEMP_MENU =[]
126 
127 
128 
129 while not flag_menu:
130     for item,m in enumerate(menu):
131         item +=1
132         print("\t",item,m)
133     user_choice = input("请选择菜单\n>>>:").strip()
134     if user_choice == "1":
135         print("欢迎进入购物中心".center(50,'-'))
136         if user_info["total"]["times"] < 3:
137             username = input("input your username\n:>>>").strip()
138             password = input("input your password\n:>>>").strip()
139             if username in user_info:
140                 if user_info[username]["times"] == 3:
141                     exit("account is lock, Contact the administrator")
142                 elif password == user_info[username]["password"]:
143                     print("Good morning %s" % username)
144                     user_info[username]["times"] = 0
145                     user_info["total"]["times"] = 0
146                     write_userinfo()
147                     rechange()
148                     while not flag_added:
149                         print("新上架商品".center(50, '-'))
150                         temp_menu_list()
151                         if user_info[username]["product"] == 'null':
152                             print("目前没有购买物品")
153                         else:
154                             print("已经购买了 \033[1;32m %s \033[0m" % (user_info[username]["product"]))
155                         user_choice_num = input('选择要买的物品ID:\n>>>:').strip()
156                         if user_choice_num.isdigit():
157                             user_choice_num = int(user_choice_num)
158                             if user_choice_num < len(product_info) and user_choice_num >= 0:
159                                 p_item = temp_menu[user_choice_num]
160                                 if int(p_item[2]) < user_info[username]["balance"]:
161                                     shopping_list = user_info[username]["product"]
162                                     shopping_list = shopping_list.strip(',').split(',')
163                                     shopping_list.append(p_item[1])
164                                     if shopping_list[0] == 'null':
165                                         shopping_list.remove('null')
166                                     shopping_list = ','.join(shopping_list)
167                                     user_info[username]["product"] = shopping_list
168                                     user_info[username]["balance"] -=p_item[2]
169                                     write_userinfo()
170                                     print("已经购买了\033[1;32m %s \033[0m" % (user_info[username]["product"]))
171                                     print("Added \033[1;32m %s \033[0m into shopping cart, your current blance is \033[1;32m %s \033[0m" % (p_item[1],user_info[username]["balance"]))
172 
173                                 else:
174                                     print("余额不足!")
175                                     rechange()
176 
177                             else:
178                                 print("没有该商品,请重新选择!")
179 
180                         elif user_choice_num == 'q':
181                             if user_info[username]["product"] == 'null':
182                                 print("目前没有购买物品")
183                             else:
184                                 print("已经购买了 \033[1;32m %s \033[0m ,金额剩余 \033[1;32m %s \033[0m " %(user_info[username]["product"],user_info[username]["balance"]))
185                             break
186                         else:
187                             print("invalid option")
188                 else:
189                     input("Enter to wrong account password. (Any key to continue)")
190                     user_info[username]["times"] += 1
191                     user_info["total"]["times"] += 1
192                     print(user_info['total']['times'])
193                     write_userinfo()
194 
195             else:
196                 input("Enter to wrong account password. (Any key to continue)")
197                 user_info["total"]["times"] += 1
198                 write_userinfo()
199 
200 
201         else:
202             user_info["total"]["times"] = 0
203             write_userinfo()
204             input("Too many retries, please try again later. (Any key to continue)")
205             exit("88")
206     elif user_choice == "2":
207         print("欢迎进入管理后台!")
208         if user_info["total"]["times"] < 3:
209             username = input("input your username\n:>>>").strip()
210             password = input("input your password\n:>>>").strip()
211             if username in user_info:
212                 if user_info[username]["times"] == 3:
213                     exit("account is lock, Contact the administrator")
214                 elif password == user_info[username]["password"]:
215                     print("Good morning %s" % username)
216                     user_info[username]["times"] = 0
217                     user_info["total"]["times"] = 0
218                     write_userinfo()
219                     flag_menu_list = False
220                     while not flag_menu_list:
221                         for index,item in enumerate(menu_up_list):
222                             print('\t',index,item)
223                         menu_up = input('请选择操作项:\n>>>:').strip()
224                         if menu_up == '0':
225                             flag_added = False
226                             while not flag_added:
227                                 print("当前库存商品如下:")
228                                 temp_menu_list()
229                                 choice_up = input("要修改的商品序号:\n>>>:").strip()
230                                 if choice_up.isdigit():
231                                     choice_up = int(choice_up)
232                                     if choice_up < len(product_info) and choice_up >= 0:
233                                         up_item = temp_menu[choice_up]
234                                         print(up_item)
235                                         flag_up = False
236                                         while not flag_up:
237                                             choice_up1 = input("请输入修改为多少钱:\n>>>:")
238                                             if choice_up1.isdigit():
239                                                 choice_up1 = int(choice_up1)
240                                                 choice_up1_key = up_item[1]
241                                                 product_info[choice_up1_key]["price"] = choice_up1
242                                                 write_Productinfo()
243                                                 flag_up = True
244                                                 flag_added = True
245                                                 temp_menu_list()
246                                             else:
247                                                 print("请重新输入")
248                                     else:
249                                         print("没有该商品,请重新选择!")
250                                 else:
251                                     print("请输入编号!")
252 
253                         elif menu_up == '1':
254                             print("当前库存商品如下:")
255                             temp_menu_list()
256                             flag_add_p = False
257                             while not flag_add_p:
258                                 choice_add = input("请输入要添加的商品名称\n>>>:").strip()
259                                 choice_add1 = input("请输入要添加商品的价格\n>>>:").strip()
260                                 if choice_add1.isdigit():
261                                     choice_add1 = int(choice_add1)
262                                     product_info[choice_add] = {"product_name": choice_add, "price": int(choice_add1)}
263                                     write_Productinfo()
264                                     flag_add_p = True
265                                     temp_menu_list()
266                                 else:
267                                     print("请重新输入价格")
268                         elif menu_up == '2':
269                             flag_del = False
270                             while not flag_del:
271                                 print("当前库存商品如下:")
272                                 temp_menu_list()
273                                 choice_del = input("请选择要删除商品的序列号\n>>>:").strip()
274                                 if choice_del.isdigit():
275                                     choice_del = int(choice_del)
276                                     if choice_del < len(product_info) and choice_del >=0:
277                                         del_item = temp_menu[choice_del]
278                                         del product_info[del_item[1]]
279                                         write_Productinfo()
280                                         flag_del = True
281                                         temp_menu_list()
282                                     else:
283                                         print("没有该商品,请重新选择!")
284                         elif menu_up == 'q':
285                             break
286 
287                         else:
288                             print('请重新输入')
289                 else:
290                     input("Enter to wrong account password. (Any key to continue)")
291                     user_info[username]["times"] += 1
292                     user_info["total"]["times"] += 1
293                     print(user_info['total']['times'])
294                     write_userinfo()
295 
296             else:
297                 input("Enter to wrong account password. (Any key to continue)")
298                 user_info["total"]["times"] += 1
299                 write_userinfo()
300     elif user_choice == 'q':
301         break
302 
303     else:
304         print("参数不存在!!!")
View Code

 

posted @ 2018-01-08 22:04  kiko0o0  阅读(240)  评论(0编辑  收藏  举报