1 #!/usr/bin/python
  2 # -*- coding:utf-8 -*-
  3 #购物清单写在文件里,用户可以查询历史购买物品,用户有余额
  4 
  5 # ####################################读取文件列表####################################
  6 #   ###############读取用户信息###############
  7 f1 = open(\'user_info\',\'r\')
  8 data = f1.read()
  9 f1.close()
 10 
 11 user_info_list = []#用户信息列表
 12 user_str_list = [i for i in data.split(\'\n\') if i]  # 移除data.split()生成的空元素
 13 for item in user_str_list:
 14     temp = item.split(\'|\')
 15     v = {
 16         \'username\': temp[0],
 17         \'password\': temp[1],
 18         \'times\': temp[2],
 19         \'money\':int(temp[3])
 20     }
 21     user_info_list.append(v)
 22 # print(user_info_list)
 23 #   ####################读取商品列表###########
 24 f3 = open(\'goods_list\',\'r\',encoding=\'utf-8\')#需要转为utf-8
 25 data = f3.read()
 26 f3.close()
 27 goods_list = []#商品信息列表
 28 goods_str_list = [i for i in data.split(\'\n\') if i]  # 移除data.split()生成的空元素
 29 for goods_item in goods_str_list:
 30     temp = goods_item.split(\'|\')
 31     v = {
 32         \'goods_name\': temp[0],
 33         \'goods_price\': temp[1],
 34         }
 35     goods_list.append(v)
 36 # ###################################时间
 37 import datetime
 38 import time
 39 now_time = time.strftime("%Y-%m-%d  %X",time.localtime())
 40 # print(now_time)
 41 # #######################################用户登录##################################
 42 message_login = \'%s欢迎您,账户余额:%d\'#登录成功显示用户基本信息
 43 message_totle_price="账单总金额:%d"
 44 shopping_price_totle=0
 45 shopping_car=[]
 46 shopping_list = []
 47 history_shopping_list= []
 48 history_shopping_str=\'\'
 49 p = 1#购物列表初始页码
 50 state_login = 3
 51 while state_login > 0 :
 52     name = input("请输入用户名:")
 53     pwd = input("请输入密码:")
 54     for item in user_info_list :
 55         if name == item[\'username\'] :
 56             if int(item[\'times\']) > 0 :
 57                 if pwd == item[\'password\'] :
 58                     print(message_login %(name,item[\'money\']))#登录成功展示个人信息
 59                     #主菜单
 60                     while True :
 61                         print("***********************************************")
 62                         user_chose = input("请选择您要的操作:\n1-购物\n2-查询\n3-退出\n")
 63                         shopping_state = True
 64                         if user_chose == \'1\':
 65                             # print("**********************************************")
 66                             while True:
 67                                 print("*******商品列表如下:*******")
 68                                 if shopping_state==False:
 69                                     print("购物清单如下:\n")
 70                                     print(shopping_car)
 71                                     print(message_totle_price %(shopping_price_totle))
 72                                     if shopping_price_totle > int(item[\'money\']):
 73                                         print("余额不足,重新购买")
 74                                         shopping_car.clear()                #余额不足重新购买
 75                                         shopping_price_totle = 0
 76                                         shopping_state = True
 77                                     else:
 78                                         print("购买成功")
 79                                         item[\'money\']=int(item[\'money\'])-shopping_price_totle
 80                                         for shopping_car_item in shopping_car:
 81                                             shopping_list.append(shopping_car_item)
 82 #   ##################################把用户购物记录写入文件##################################
 83                                         shopping_line = \'\'
 84                                         # i = 1
 85                                         for item5 in shopping_list:
 86                                             shopping_line = \'\n\'+shopping_line + name + \'|\' + item5+"| "+now_time
 87                                         # 写入文件
 88                                         f4 = open("dodo_shopping_log", \'a\',encoding=\'utf-8\')
 89                                         f4.write(shopping_line)
 90                                         f4.close()
 91                                         ######################写入余额############
 92                                         line = \'\'
 93                                         i = 1
 94                                         for item2 in user_info_list:
 95                                             if i < user_info_list.__len__():
 96                                                 line = line + item2[\'username\'] + \'|\' + item2[\'password\'] + \'|\' + str(
 97                                                     item2[\'times\']) + \'|\' + str(item2[\'money\']) + \'\n\'
 98                                                 i = i + 1
 99                                             else:
100                                                 line = line + item2[\'username\'] + \'|\' + item2[\'password\'] + \'|\' + str(
101                                                     item2[\'times\']) + "|" + str(item2[\'money\'])
102 
103                                         # 写入文件
104                                         f2 = open("user_info", \'w\')
105                                         f2.write(line)
106                                         f2.close()
107                                         break
108                                 else:
109                                     #显示购物列表
110                                     if len(goods_list)%5 > 0 :
111                                         totle_page = str(int(len(goods_list) / 5) + 1)
112                                     else:
113                                         totle_page = str(int(len(goods_list) / 5) )
114                                     print("商品名称     " + "|" + "     商品价格     ")
115                                     print("--------------------------")
116                                     start = (p - 1) * 5
117                                     end = p * 5
118                                     for i in goods_list[start:end]:
119                                         v = i[\'goods_name\']
120                                         v1 = v.ljust(9)
121                                         v1 = v1.replace(\' \', \'  \')
122                                         v2 = i[\'goods_price\']
123                                         # 分页显示
124                                         print(v1, v2)
125                                     print(str(p) + \'/\' + totle_page)# 显示当前页数
126                                     shopping = input((\'请输入您想要购买物品的名称\n没有想要商品继续浏览请按任意键\n结账请按-0:\'))
127                                     if shopping == \'0\':
128                                         shopping_state  = False
129                                     else:
130                                         for items in goods_list:
131                                             if shopping == items[\'goods_name\'] :
132                                                 shopping_car.append(shopping)
133                                                 shopping_price_totle += int(items[\'goods_price\'])
134                                                 break
135                                         else:
136                                             pass
137                                         p = int(input("请输入页码(请输入整数):"))
138                         elif user_chose ==\'2\':
139                             # print(history_shopping)
140                             #把所有商品拼接成一个字符串
141                             #   #################读取用户历史购买记录###########
142                             f5 = open(\'dodo_shopping_log\', \'r\',encoding=\'utf-8\')
143                             history_data = f5.read()
144                             f5.close()
145 
146                             history_shopping_list = []  # 用户信息列表
147                             history_shopping_str = [i for i in history_data.split(\'\n\') if i]  # 移除data.split()生成的空元素
148                             for read_history_item in history_shopping_str:
149                                 temp = read_history_item.split(\'|\')
150                                 v = {
151                                     \'log_goods\': temp[1],
152                                     \'log_time\': temp[2],
153                                     \'log_username\': temp[0]
154                                     }
155                                 history_shopping_list.append(v)
156                             # print(history_shopping_list)
157                             history_state = input("1-查询所有记录     2-查询历史商品")
158                             if history_state == \'2\':
159                                 history_goods = input("请输入您要查询的商品:")
160                                 for item6 in history_shopping_list :
161                                     # print(item6[\'log_username\'])
162 
163                                     if history_goods == item6[\'log_goods\'] and name==item6[\'log_username\']:
164                                 # if history_goods in history_data :
165                                         print("您购买过!")
166                                         break
167                                 else:
168                                     print(\'您没有买过\')
169                             else:#查询所有记录
170                                 for item7 in history_shopping_list:
171                                     if name==item7[\'log_username\']:
172                                         print(item7[\'log_username\']+\'|\'+item7[\'log_goods\']+\'|\'+item7[\'log_time\'])
173                         else:
174                             print("欢迎下次再来!再见")
175                             break
176                     state_login =0
177                     item[\'times\']=3
178                     state_login = 0
179                     break
180 
181                 else:
182                     state_login -= 1
183                     if state_login == 0:
184                         print("尝试次数超限,登录失败")
185                     else:
186                         print("输入有误!,请重新输入")
187 
188                     item[\'times\']=int(item[\'times\'])-1
189                     break
190             else:
191                 print("用户已被锁定!")
192                 state_login = 0
193                 break
194     else :
195         state_login -= 1
196         if state_login == 0 :
197             print("尝试次数超限,登录失败")
198         else:
199             print("输入有误,请重新输入")
200 #print(db_list)
201 ########################################变成字符串##############################
202 line =\'\'
203 i = 1
204 for item2 in user_info_list :
205     if i<user_info_list.__len__():
206         line = line+item2[\'username\']+\'|\'+item2[\'password\']+\'|\'+str(item2[\'times\'])+\'|\'+str(item2[\'money\'])+\'\n\'
207         i=i+1
208     else :
209         line =line+item2[\'username\']+\'|\'+item2[\'password\']+\'|\'+str(item2[\'times\'])+"|"+str(item2[\'money\'])
210 # m ="zhi:%r"
211 # print(m %(line))
212 #写入文件
213 f2 = open("user_info",\'w\')
214 f2.write(line)
215 f2.close()

View Code

 

版权声明:本文为doudouzheng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/doudouzheng/p/6841667.html