购物车(分页浏览/历史记录查询)
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