要求:
- 卖家入口:
-
商家先将添加商品
-
可以添加商品修改商品价格
- 买家入口:
-
允许多个买家注册
-
第一次启动才需要输入工资,之后信息被存储,已购商品、余额长时间留存
-
启动程序后,打印用户已购买的商品列表
-
允许用户根据商品编号购买商品
-
用户选择商品后,检测余额是否充足,够就直接扣款,不够就提醒
-
可随时推出,退出时打印以购买商品,购买商品数量及余额
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:James Tao 4 5 import pickle 6 import os 7 8 buyer_or_seller=input('您好!请登录(买家输入’买家‘卖家输入’卖家‘):') 9 10 11 #--------------------------------买家入口---------------------------------------------- 12 if buyer_or_seller=='买家': 13 14 #判断是否是新用户 15 new_or_existuser=input('买家注册or登陆(注册输入’注册‘登陆输入’登陆‘):') 16 17 18 19 #--------------------------------新用户注册输入薪水--------------------------------- 20 if new_or_existuser=='注册': 21 buyername=input('请输入用户名(由字母数字下划线组成):') 22 buyerpasswd=input('请输入密码(由字母数字下划线组成):') 23 24 #输入初始工资 25 initial_salary=int(input('注册成功!请输入您的工资:')) 26 27 #将用户密码存入字典 28 user_passwd={} 29 user_passwd[buyername]=buyerpasswd 30 31 #将用户密码字典写入文件 32 w_user_passwd = open(buyername+'passwd'+'.txt', 'wb') 33 pickle.dump(user_passwd, w_user_passwd) 34 w_user_passwd.close() 35 36 37 #将用户信息存入字典 38 user_info = {} 39 user_info[buyername]={'balance':initial_salary,'boughtgoods':[]} 40 41 #将用户信息字典写入文件 42 w_user_info = open(buyername+'info'+'.txt', 'wb') 43 pickle.dump(user_info, w_user_info) 44 w_user_info.close() 45 46 # 将用户信息暂时导入到temp_user_info里 47 temp_user_info=user_info 48 49 50 51 #------------------------------旧用户登陆并导入用户信息------------------------------- 52 elif new_or_existuser=='登陆': 53 54 while True: 55 buyername = input('请输入用户名:') 56 buyerpasswd = input('请输入密码:') 57 58 #读出用户信息,登陆密码 59 r_user_passwd = open(buyername+'passwd'+'.txt', 'rb') 60 read_user_passwd = pickle.load(r_user_passwd) 61 r_user_passwd.close() 62 63 # 判断输入的账号是否存在密码是否正确 64 if buyername in read_user_passwd and buyerpasswd==read_user_passwd[buyername]: 65 66 # 读出用户信息,余额已购买商品 67 r_user_info = open(buyername+'info'+'.txt', 'rb') 68 read_user_info= pickle.load(r_user_info) 69 r_user_info.close() 70 71 # 打印用户信息,余额、已购买商品 72 print(''' 用户{_user}您好,您的余额为{_balance} 73 '''.format(_user=buyername,_balance=read_user_info[buyername]['balance'])) 74 print('------您已够买以下商品------') 75 for i in read_user_info[buyername]['boughtgoods']: 76 print(i) 77 78 #将用户信息暂时导入到temp_user_info里 79 temp_user_info=read_user_info 80 break 81 82 else: 83 print('用户名不存在或密码错误,请重新登录') 84 85 86 #用户注册或登陆之后已经有了用户信息,包括用户名、薪水或余额、已购买商品存在temp_user_info字典里 87 88 #从文件中读出商品信息 89 r_shoppinggoods = open('shoppinggoods.txt', 'rb') 90 read_shoppinggoods = pickle.load(r_shoppinggoods) 91 r_shoppinggoods.close() 92 93 dict_of_bought={} 94 95 #从字典temp_user_info读出用户信息,包括用户名、薪水或余额、已购买商品(以购买商品用数列存储) 96 balance=temp_user_info[buyername]['balance'] 97 list_of_bought=temp_user_info[buyername]['boughtgoods']#以购买商品用数列存储 98 99 100 101 102 #---------------------------------开始购买流程------------------------------------- 103 while True: 104 105 #输出商品及其编号 106 print('--------支持购买的商品-------') 107 for index,item in enumerate(read_shoppinggoods):#enumerate取出下标 108 print(index,item) 109 #print(read_shoppinggoods.index(item),item) 110 choice_of_user=input('选择购买商品编号输入q退出:') 111 112 #判断输入是否合法 113 if choice_of_user.isdigit(): 114 choice_of_user=int(choice_of_user) 115 116 #判断编号是否有对应商品 117 if 0<=choice_of_user<len(read_shoppinggoods): 118 119 #判断余额是否足够买此商品 120 if read_shoppinggoods[choice_of_user][1]<= balance: 121 122 #加入购物清单 123 list_of_bought.append(read_shoppinggoods[choice_of_user][0]) 124 125 #计算余额` 126 balance-=read_shoppinggoods[choice_of_user][1] 127 128 print('''添加{_boughtgood}到您的购物车,此刻您的余额为{_balance}. 129 '''.format(_boughtgood=read_shoppinggoods[choice_of_user][0],_balance=balance)) 130 else: 131 print('您的余额不足,此实余额为%s,不够购买此商品',balance) 132 else: 133 print('商品不存在') 134 135 elif choice_of_user=='q': 136 137 #统计购买的商品及数量 138 category_of_bought=set(list_of_bought) 139 for item in category_of_bought: 140 dict_of_bought[item]=list_of_bought.count(item) 141 print('您购买的商品及数量分别为',dict_of_bought) 142 143 print('您的余额为:',balance) 144 145 #将用户余额和购买商品更新存入字典 146 temp_user_info[buyername] = {'balance': balance, 'boughtgoods': list_of_bought} 147 148 #将用户余额和购买商品更新写入文件 149 w_user_userinfo = open(buyername+'info'+'.txt', 'wb') 150 pickle.dump(temp_user_info, w_user_userinfo) 151 w_user_userinfo.close() 152 153 exit() 154 else: 155 print('输入不合法') 156 157 158 159 160 161 162 163 164 #--------------------------------卖家入口---------------------------------------------- 165 elif buyer_or_seller=='卖家': 166 167 #卖家注册(因为只有一个店,所以只有一个卖家) 168 if os.path.getsize('sellerpasswd.txt') == 0: 169 print('新卖家请注册') 170 171 sellername = input('请输入用户名(由字母数字下划线组成):') 172 sellerpasswd = input('请输入密码(由字母数字下划线组成):') 173 174 #将卖家密码存入字典 175 seller_passwd = {} 176 seller_passwd[sellername] = sellerpasswd 177 178 # 将用户密码字典写入文件 179 w_seller_passwd = open('sellerpasswd.txt', 'wb') 180 pickle.dump(seller_passwd, w_seller_passwd) 181 w_seller_passwd.close() 182 183 print('恭喜!注册成功!请重新登录。') 184 185 #卖家登陆 186 while True: 187 print('请登录') 188 sellername = input('请输入用户名:') 189 sellerpasswd = input('请输入密码:') 190 191 # 读出卖家信息,登陆密码 192 r_seller_passwd = open('sellerpasswd.txt', 'rb') 193 read_seller_passwd = pickle.load(r_seller_passwd) 194 r_seller_passwd.close() 195 196 # 判断输入的账号是否存在密码是否正确 197 if sellername in read_seller_passwd and sellerpasswd == read_seller_passwd[sellername]: 198 print('欢迎') 199 200 #从商品文件中读出已添加商品,若文件中存在商品则打印提示是否添加,若文件中不存在商品则提示添加 201 if os.path.getsize('shoppinggoods.txt') > 0: 202 203 # 从文件中读出已添加商品 204 r_shoppinggoods = open('shoppinggoods.txt', 'rb') 205 read_shoppinggoods = pickle.load(r_shoppinggoods) 206 r_shoppinggoods.close() 207 208 temp_shoppinggoods=read_shoppinggoods 209 210 211 #显示出已添加商品 212 print('------您已添加商品及其价格如下------') 213 for i in read_shoppinggoods: 214 print(i) 215 else: 216 temp_shoppinggoods = [] 217 print('您还未添加任何商品') 218 219 #添加商品 220 add_or_not = input('是否添加商品?添加请输入A退出输入其它') 221 if add_or_not == 'A': 222 while True: 223 add_goodname = input('请输入您要添加的商品:') 224 add_goodprice = int(input('请输入您要添加的商品价格:')) 225 add_good = [add_goodname, add_goodprice] 226 227 temp_shoppinggoods.append(add_good) 228 229 continue_or_not = input('是否继续添加商品?继续请输入C') 230 if continue_or_not == 'C': 231 pass 232 else: 233 break 234 235 #将商品列表写入文件 236 print('已添加商品:',temp_shoppinggoods) 237 w_seller_shoppinggoods = open('shoppinggoods.txt', 'wb') 238 pickle.dump(temp_shoppinggoods, w_seller_shoppinggoods) 239 w_seller_shoppinggoods.close() 240 241 break 242 243 else: 244 print('用户名不存在或密码错误,请重新登录')