• 用python编写购物车程序(增加卖家入口,用户信息保存)


    要求:

    • 卖家入口:
    1. 商家先将添加商品
    2. 可以添加商品修改商品价格
    • 买家入口:
    1. 允许多个买家注册
    2. 第一次启动才需要输入工资,之后信息被存储,已购商品、余额长时间留存
    3. 启动程序后,打印用户已购买的商品列表
    4. 允许用户根据商品编号购买商品
    5. 用户选择商品后,检测余额是否充足,够就直接扣款,不够就提醒
    6. 可随时推出,退出时打印以购买商品,购买商品数量及余额
      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('用户名不存在或密码错误,请重新登录')
    
    
  • 相关阅读:
    算法时间复杂度、空间复杂度(大O表示法)
    六、Java“毒丸”使用示例,实现取消任务
    四、获取IP地址工具包
    SEDA架构程序实现
    二十一、curator recipes之TreeCache
    二十、curator recipes之NodeCache
    十九、curator recipes之PathChildrenCache
    十八、curator recipes之DistributedDelayQueue
    Mysql学习笔记【一、环境安装&配置】
    Go学习笔记【一、概述】
  • 原文地址:https://www.cnblogs.com/BIT-taozhen/p/9760948.html
Copyright © 2020-2023  润新知