• 用python编写ATM+购物车程序


    购物车程序要求:

    1.允许用户根据商品编号购买商品。

    2.用户选择商品后,检测余额是否充足,够就直接扣款,不够就提醒。

    3.可随时推出,退出时打印以购买商品,购买商品数量及余额。

    ATM程序要求:

    1.管理账户,添加账户保存到文件。

    2.还款、查余额、提款、冻结账户。

    3.从购物车收到付款要求时付款。

    程序目录结构:

    ATM主程序:

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # Author:James Tao
     4 
     5 import os
     6 import sys
     7 import pickle
     8 
     9 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    10 
    11 while True:
    12     menu=input('''
    13 请选择功能:
    14 1.注册输入注册
    15 2.登陆输入登陆
    16 3.支付输入支付
    17 4.还款输入还款
    18 5.提款输入提款
    19 6.冻结账户输入冻结
    20 输入其它退出
    21     ''')
    22 
    23     if menu=='注册':
    24 
    25         #注册
    26         from atmfunction import register
    27         register()
    28 
    29     elif menu=='登陆':
    30         from atmfunction import login
    31 
    32         login()
    33 
    34 
    35     elif menu=='支付':
    36 
    37         r_money = open(BASE_DIR + '\' + 'docs' + '\' + 'money' + '.txt', 'rb')
    38         list_money = pickle.load(r_money)
    39         r_money.close()
    40 
    41         money=list_money[0]
    42         print('您需要支付的金额为:',money)
    43 
    44         from atmfunction import pay
    45         pay(money)
    46 
    47         exit()
    48 
    49     elif menu=='还款':
    50 
    51         repaymoney=int(input('请输入您要还款的金额:'))
    52 
    53         from atmfunction import repay
    54 
    55         repay(repaymoney)
    56 
    57     elif menu=='提款':
    58 
    59         drawmoney=int(input('请输入提款金额:'))
    60 
    61         from atmfunction import draw
    62 
    63         draw(drawmoney)
    64 
    65     elif menu=='冻结':
    66 
    67         from atmfunction import freeze
    68 
    69         freeze()
    70 
    71 
    72     else:
    73         exit()

    ATM功能程序:

      1 #!/usr/bin/env python
      2 # -*- coding:utf-8 -*-
      3 # Author:James Tao
      4 
      5 import os
      6 import sys
      7 import pickle
      8 
      9 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
     10 
     11 
     12 #注册装饰器
     13 def register_wrapper(func):
     14     def wrapper(*args, **kwargs):
     15 
     16         atmuser = input('请输入用户名(由字母数字下划线组成):')
     17         atmpasswd = input('请输入密码(由字母数字下划线组成):')
     18 
     19         # 将用户密码存入字典
     20         atm_passwd = {}
     21         atm_passwd[atmuser] = atmpasswd
     22 
     23         # 将用户密码字典写入文件
     24         w_atm_passwd = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt', 'wb')
     25         pickle.dump(atm_passwd, w_atm_passwd)
     26         w_atm_passwd.close()
     27 
     28         # 将用户信息存入字典
     29         atmuser_info = {}
     30         atmuser_info['balance'] = 50000
     31 
     32         print('''用户{_atmuser}恭喜您注册成功,您的信用卡账户余额为{_balance}。
     33                     '''.format(_atmuser=atmuser, _balance=atmuser_info['balance']))
     34 
     35         # 将用户信息字典写入文件
     36         w_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'wb')
     37         pickle.dump(atmuser_info, w_atmuser_info)
     38         w_atmuser_info.close()
     39 
     40     return wrapper
     41 
     42 @register_wrapper
     43 def register():
     44     pass
     45 
     46 
     47 #登陆装饰器
     48 def login_wrapper(func):
     49     def wrapper(*args,**kwargs):
     50 
     51         atmuser = input('请输入用户名:')
     52         atmpasswd = input('请输入密码:')
     53 
     54         #判断账户是否被冻结
     55         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt'):
     56 
     57             # 读取冻结账户文件内账户
     58             r_freezeuser = open(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt', 'rb')
     59             freezeuser = pickle.load(r_freezeuser)
     60             r_freezeuser.close()
     61 
     62             if atmuser in freezeuser:
     63                 print('该账户已被冻结')
     64                 return
     65 
     66 
     67         # 读出用户信息,登陆密码
     68         r_atmuser_passwd = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt', 'rb')
     69         read_atmuser_passwd = pickle.load(r_atmuser_passwd)
     70         r_atmuser_passwd.close()
     71 
     72         # 判断输入的账号是否存在密码是否正确
     73         if atmuser in read_atmuser_passwd and atmpasswd == read_atmuser_passwd[atmuser]:
     74             # 读出用户信息,显示账户余额
     75             r_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'rb')
     76             read_atmuser_info = pickle.load(r_atmuser_info)
     77             r_atmuser_info.close()
     78 
     79             # 显示账户余额
     80             print('''用户{_atmuser}登陆成功,您的账户余额为{_balance}。
     81                 '''.format(_atmuser=atmuser, _balance=read_atmuser_info['balance']))
     82 
     83 
     84     return wrapper
     85 
     86 @login_wrapper
     87 def login():
     88     pass
     89 
     90 #支付
     91 def pay_wrapper(func):
     92     def wrapper(*args,**kwargs):
     93 
     94         print('您好请先登录atm!')
     95         atmuser = input('请输入用户名:')
     96         atmpasswd = input('请输入密码:')
     97 
     98         # 判断账户是否被冻结
     99         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt'):
    100 
    101             # 读取冻结账户文件内账户
    102             r_freezeuser = open(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt', 'rb')
    103             freezeuser = pickle.load(r_freezeuser)
    104             r_freezeuser.close()
    105 
    106             if atmuser in freezeuser:
    107                 print('该账户已被冻结')
    108                 return
    109 
    110 
    111 
    112         #验证用户是否存在
    113         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt'):
    114 
    115 
    116             # 读出用户信息,登陆密码
    117             r_atmuser_passwd = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt', 'rb')
    118             read_atmuser_passwd = pickle.load(r_atmuser_passwd)
    119             r_atmuser_passwd.close()
    120 
    121             # 判断输入的账号是否存在密码是否正确
    122             if atmuser in read_atmuser_passwd and atmpasswd == read_atmuser_passwd[atmuser]:
    123                 # 读出用户信息,显示账户余额
    124                 r_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'rb')
    125                 read_atmuser_info = pickle.load(r_atmuser_info)
    126                 r_atmuser_info.close()
    127 
    128                 # 显示账户余额
    129                 print('''用户{_atmuser}登陆成功,您的账户余额为{_balance}。
    130                 '''.format(_atmuser=atmuser, _balance=read_atmuser_info['balance']))
    131 
    132                 paymoney = args[0]
    133                 print('您需要付款的金额为:', paymoney)
    134                 if paymoney <= read_atmuser_info['balance']:
    135 
    136                     pay_or_out = input('确定付款请输入Y:')
    137                     if pay_or_out=='Y':
    138 
    139                         #计算余额
    140                         balance=read_atmuser_info['balance']-paymoney
    141 
    142                         # 将用户信息存入字典
    143                         atmuser_info = {}
    144                         atmuser_info['balance'] = balance
    145 
    146                         #存入文件
    147                         w_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'wb')
    148                         pickle.dump(atmuser_info, w_atmuser_info)
    149                         w_atmuser_info.close()
    150 
    151                         #支付成功更改支付成功中间文件
    152                         pay_accomplished=['accomplished']
    153                         w_pay_accomplished=open(BASE_DIR + '\' + 'docs' + '\' + 'pay_accomplish' + '.txt', 'wb')
    154                         pickle.dump(pay_accomplished, w_pay_accomplished)
    155                         w_pay_accomplished.close()
    156 
    157                     else:
    158                         print('验证失败')
    159 
    160                 else:
    161                     print('余额不足')
    162 
    163             else:
    164                 print('密码错误')
    165 
    166         else:
    167             print('用户不存在')
    168 
    169     return wrapper
    170 
    171 @pay_wrapper
    172 def pay():
    173     pass
    174 
    175 #还款
    176 
    177 def repay_wrapper(func):
    178     def wrapper(*args,**kwargs):
    179         print('您好请先登录atm!')
    180         atmuser = input('请输入用户名:')
    181         atmpasswd = input('请输入密码:')
    182 
    183         # 判断账户是否被冻结
    184         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt'):
    185 
    186             # 读取冻结账户文件内账户
    187             r_freezeuser = open(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt', 'rb')
    188             freezeuser = pickle.load(r_freezeuser)
    189             r_freezeuser.close()
    190 
    191             if atmuser in freezeuser:
    192                 print('该账户已被冻结')
    193                 return
    194 
    195         # 验证用户是否存在
    196         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt'):
    197 
    198             # 读出用户信息,登陆密码
    199             r_atmuser_passwd = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt', 'rb')
    200             read_atmuser_passwd = pickle.load(r_atmuser_passwd)
    201             r_atmuser_passwd.close()
    202 
    203             # 判断输入的账号是否存在密码是否正确
    204             if atmuser in read_atmuser_passwd and atmpasswd == read_atmuser_passwd[atmuser]:
    205 
    206                 # 读出用户信息,显示账户余额
    207                 r_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'rb')
    208                 read_atmuser_info = pickle.load(r_atmuser_info)
    209                 r_atmuser_info.close()
    210 
    211                 # 显示账户余额和需还款金额
    212                 need_repaymoney=50000-read_atmuser_info['balance']
    213                 print('''用户{_atmuser}登陆成功,您的账户可用余额为{_balance},需还款金额为{_needrepaymoney}。
    214                         '''.format(_atmuser=atmuser, _balance=read_atmuser_info['balance'],_needrepaymoney=need_repaymoney))
    215 
    216 
    217                 repaymoney = args[0]
    218                 print('您将要还款的金额为:', repaymoney)
    219                 if repaymoney <= need_repaymoney:
    220 
    221                     repay_or_out = input('确定还款请输入Y:')
    222                     if repay_or_out == 'Y':
    223 
    224                         # 计算余额
    225                         balance = read_atmuser_info['balance'] + repaymoney
    226 
    227                         # 将用户信息存入字典
    228                         atmuser_info = {}
    229                         atmuser_info['balance'] = balance
    230 
    231                         # 存入文件
    232                         w_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'wb')
    233                         pickle.dump(atmuser_info, w_atmuser_info)
    234                         w_atmuser_info.close()
    235 
    236                         print('还款成功!')
    237 
    238                     else:
    239                         print('验证失败')
    240 
    241                 else:
    242                     print('超出需还款金额')
    243 
    244             else:
    245                 print('密码错误')
    246 
    247         else:
    248             print('用户不存在')
    249 
    250 
    251 
    252 
    253     return wrapper
    254 
    255 @repay_wrapper
    256 def repay():
    257     pass
    258 
    259 #提款
    260 def draw_wrapper(func):
    261     def wrapper(*args,**kwargs):
    262         print('您好请先登录atm!')
    263         atmuser = input('请输入用户名:')
    264         atmpasswd = input('请输入密码:')
    265 
    266         # 判断账户是否被冻结
    267         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt'):
    268 
    269             # 读取冻结账户文件内账户
    270             r_freezeuser = open(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt', 'rb')
    271             freezeuser = pickle.load(r_freezeuser)
    272             r_freezeuser.close()
    273 
    274             if atmuser in freezeuser:
    275                 print('该账户已被冻结')
    276                 return
    277 
    278         # 验证用户是否存在
    279         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt'):
    280 
    281             # 读出用户信息,登陆密码
    282             r_atmuser_passwd = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt', 'rb')
    283             read_atmuser_passwd = pickle.load(r_atmuser_passwd)
    284             r_atmuser_passwd.close()
    285 
    286             # 判断输入的账号是否存在密码是否正确
    287             if atmuser in read_atmuser_passwd and atmpasswd == read_atmuser_passwd[atmuser]:
    288 
    289                 # 读出用户信息,显示账户余额
    290                 r_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'rb')
    291                 read_atmuser_info = pickle.load(r_atmuser_info)
    292                 r_atmuser_info.close()
    293 
    294                 # 显示账户可提款金额
    295                 can_drawmoney = read_atmuser_info['balance']/2.00
    296                 print('''用户{_atmuser}登陆成功,您的账户可用余额为{_balance},可提款金额为{_candrawmoney}。
    297                          '''.format(_atmuser=atmuser, _balance=read_atmuser_info['balance'],_candrawmoney=can_drawmoney))
    298 
    299                 drawmoney = args[0]
    300                 print('您将要提款的金额为:', drawmoney)
    301                 if drawmoney <= can_drawmoney:
    302 
    303                     draw_or_out = input('确定提款请输入Y:')
    304                     if draw_or_out == 'Y':
    305 
    306                         # 计算余额
    307                         balance = read_atmuser_info['balance'] - drawmoney
    308 
    309                         # 将用户信息存入字典
    310                         atmuser_info = {}
    311                         atmuser_info['balance'] = balance
    312 
    313                         # 存入文件
    314                         w_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'wb')
    315                         pickle.dump(atmuser_info, w_atmuser_info)
    316                         w_atmuser_info.close()
    317 
    318                         print('提款成功!')
    319 
    320                     else:
    321                         print('验证失败')
    322 
    323                 else:
    324                     print('超出可提款金额')
    325 
    326             else:
    327                 print('密码错误')
    328 
    329         else:
    330             print('用户不存在')
    331 
    332 
    333     return wrapper
    334 
    335 @draw_wrapper
    336 def draw():
    337     pass
    338 
    339 #冻结账户
    340 def freeze_wrapper(func):
    341     def wrapper(*args,**kwargs):
    342         print('您好请先登录atm!')
    343         atmuser = input('请输入用户名:')
    344         atmpasswd = input('请输入密码:')
    345 
    346         # 验证用户是否存在
    347         if os.path.exists(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt'):
    348 
    349             # 读出用户信息,登陆密码
    350             r_atmuser_passwd = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atmpasswd' + '.txt', 'rb')
    351             read_atmuser_passwd = pickle.load(r_atmuser_passwd)
    352             r_atmuser_passwd.close()
    353 
    354             # 判断输入的账号是否存在密码是否正确
    355             if atmuser in read_atmuser_passwd and atmpasswd == read_atmuser_passwd[atmuser]:
    356                 # 读出用户信息,显示账户余额
    357                 r_atmuser_info = open(BASE_DIR + '\' + 'docs' + '\' + atmuser + 'atminfo' + '.txt', 'rb')
    358                 read_atmuser_info = pickle.load(r_atmuser_info)
    359                 r_atmuser_info.close()
    360 
    361                 print('''用户{_atmuser}登陆成功,您的账户可用余额为{_balance}。
    362                     '''.format(_atmuser=atmuser, _balance=read_atmuser_info['balance']))
    363 
    364                 freeze_or_not=input('是否确认冻结账户?输入Y确认')
    365                 if freeze_or_not=='Y':
    366 
    367                     # 将用户名写入文件,每次登陆读取该文件确认是否被冻结
    368 
    369                     #先判断冻结账户文件是否存在
    370                     if os.path.exists(BASE_DIR + '\' + 'docs' + '\' +  'atmfreezeuser' + '.txt'):
    371 
    372                         #读取冻结账户文件内账户
    373                         r_freezeuser = open(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt', 'rb')
    374                         freezeuser=pickle.load(r_freezeuser)
    375                         r_freezeuser.close()
    376 
    377                         freezeuser_list=freezeuser.append(atmuser)
    378 
    379                         #将用户写入冻结账户文件
    380                         w_freezeuser = open(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt', 'wb')
    381                         pickle.dump(freezeuser_list,w_freezeuser)
    382                         w_freezeuser.close()
    383 
    384                     else:
    385                         freezeuser_list=[atmuser]
    386 
    387                         # 将用户写入冻结账户文件
    388                         w_freezeuser = open(BASE_DIR + '\' + 'docs' + '\' + 'atmfreezeuser' + '.txt', 'wb')
    389                         pickle.dump(freezeuser_list, w_freezeuser)
    390                         w_freezeuser.close()
    391 
    392                     print('冻结成功!可联系银行工作人员解冻!')
    393 
    394     return wrapper
    395 
    396 @freeze_wrapper
    397 def freeze():
    398     pass

    购物车程序:

      1 #!/usr/bin/env python
      2 # -*- coding:utf-8 -*-
      3 # Author:James Tao
      4 
      5 #登陆
      6 import os
      7 import sys
      8 import pickle
      9 
     10 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
     11 
     12 #添加商品
     13 shoppinggoods=[
     14     ['iphone',5800],
     15     ['Mac',12000],
     16     ['Book',50],
     17     ['Bike',800],
     18     ['Coffee',30],
     19 ]
     20 
     21 w_seller_shoppinggoods = open(BASE_DIR+'\'+'docs'+'\'+'shoppinggoods.txt', 'wb')
     22 pickle.dump(shoppinggoods, w_seller_shoppinggoods)
     23 w_seller_shoppinggoods.close()
     24 
     25 new_or_existuser = input('注册or登陆(注册输入’注册‘登陆输入’登陆‘):')
     26 
     27 # --------------------------------新用户注册输入薪水---------------------------------
     28 if new_or_existuser == '注册':
     29     buyername = input('请输入用户名(由字母数字下划线组成):')
     30     buyerpasswd = input('请输入密码(由字母数字下划线组成):')
     31 
     32     # 将用户密码存入字典
     33     user_passwd = {}
     34     user_passwd[buyername] = buyerpasswd
     35 
     36     # 将用户密码字典写入文件
     37     w_user_passwd = open(BASE_DIR+'\'+'docs'+'\'+buyername + 'passwd' + '.txt', 'wb')
     38     pickle.dump(user_passwd, w_user_passwd)
     39     w_user_passwd.close()
     40 
     41     # 将用户信息存入字典
     42     user_info = {}
     43     user_info[buyername] = {'boughtgoods': []}
     44 
     45     # 将用户信息字典写入文件
     46     w_user_info = open(BASE_DIR+'\'+'docs'+'\'+buyername + 'info' + '.txt', 'wb')
     47     pickle.dump(user_info, w_user_info)
     48     w_user_info.close()
     49 
     50     # 将用户信息暂时导入到temp_user_info里
     51     temp_user_info = user_info
     52 
     53 
     54 
     55 # ------------------------------旧用户登陆并导入用户信息-------------------------------
     56 elif new_or_existuser == '登陆':
     57 
     58     while True:
     59         buyername = input('请输入用户名:')
     60         buyerpasswd = input('请输入密码:')
     61 
     62         # 读出用户信息,登陆密码
     63         r_user_passwd = open(BASE_DIR+'\'+'docs'+'\'+buyername + 'passwd' + '.txt', 'rb')
     64         read_user_passwd = pickle.load(r_user_passwd)
     65         r_user_passwd.close()
     66 
     67         # 判断输入的账号是否存在密码是否正确
     68         if buyername in read_user_passwd and buyerpasswd == read_user_passwd[buyername]:
     69 
     70             #判断用户是否购买过商品
     71 
     72             # 读出用户信息,已购买商品
     73             r_user_info = open(BASE_DIR+'\'+'docs'+'\'+buyername + 'info' + '.txt', 'rb')
     74             read_user_info = pickle.load(r_user_info)
     75             r_user_info.close()
     76 
     77             if read_user_info[buyername]['boughtgoods']:
     78                 # 打印用户信息,余额、已购买商品
     79                 print('用户%s您好' % buyername)
     80                 print('------您已够买以下商品------')
     81                 for i in read_user_info[buyername]['boughtgoods']:
     82                     print(i)
     83 
     84                 # 将用户信息暂时导入到temp_user_info里
     85                 temp_user_info = read_user_info
     86                 break
     87             else:
     88                 print('您还未购买任何商品')
     89                 temp_user_info={}
     90                 temp_user_info[buyername] = {'boughtgoods': []}
     91                 break
     92 
     93         else:
     94             print('用户名不存在或密码错误,请重新登录')
     95 
     96 # 用户注册或登陆之后已经有了用户信息,包括用户名、薪水或余额、已购买商品存在temp_user_info字典里
     97 
     98 # 从文件中读出商品信息
     99 r_shoppinggoods = open(BASE_DIR+'\'+'docs'+'\'+'shoppinggoods.txt', 'rb')
    100 read_shoppinggoods = pickle.load(r_shoppinggoods)
    101 r_shoppinggoods.close()
    102 
    103 dict_of_bought = {}
    104 
    105 # 从字典temp_user_info读出用户信息,包括用户名、薪水或余额、已购买商品(以购买商品用数列存储)
    106 list_of_bought = temp_user_info[buyername]['boughtgoods']  # 总购买商品用数列存储
    107 new_list_of_bought = []#此次购买商品用数列存储
    108 money=0
    109 
    110 # ---------------------------------开始购买流程-------------------------------------
    111 while True:
    112 
    113     # 输出商品及其编号
    114     print('--------支持购买的商品-------')
    115     for index, item in enumerate(read_shoppinggoods):  # enumerate取出下标
    116         print(index, item)
    117         # print(read_shoppinggoods.index(item),item)
    118     choice_of_user = input('选择购买商品编号输入q退出:')
    119 
    120     #判断输入是否合法
    121     if choice_of_user.isdigit():
    122         choice_of_user = int(choice_of_user)
    123 
    124         # 判断编号是否有对应商品
    125         if 0 <= choice_of_user < len(read_shoppinggoods):
    126 
    127             # 加入购物清单
    128             list_of_bought.append(read_shoppinggoods[choice_of_user][0])#总购买商品清单
    129             new_list_of_bought.append(read_shoppinggoods[choice_of_user][0])#此次购买商品清单
    130 
    131             # 计算余额`
    132             money += read_shoppinggoods[choice_of_user][1]
    133 
    134             print('''添加{_boughtgood}到您的购物车,该商品价格为{_price}元。
    135                 '''.format(_boughtgood=read_shoppinggoods[choice_of_user][0], _price=read_shoppinggoods[choice_of_user][1]))
    136 
    137         else:
    138             print('商品不存在')
    139 
    140     elif choice_of_user == 'q':
    141 
    142         # 统计购买的商品及数量
    143         category_of_bought = set(new_list_of_bought)
    144         for item in category_of_bought:
    145             dict_of_bought[item] = list_of_bought.count(item)
    146         print('您购买的商品及数量分别为', dict_of_bought)
    147 
    148         print('您已消费%s元。' % money)
    149 
    150         #判断new_list_of_bought内是否有商品
    151         if new_list_of_bought:
    152             #开始付款
    153             pay_trueorfalse=True
    154             payment = input('是否付款?(输入p付款输入其他退出):')
    155 
    156 
    157             while pay_trueorfalse:
    158 
    159                 if payment=='p':
    160 
    161                     #调用atm.py程序
    162                     bin_DIR = BASE_DIR + '\' + 'bin'
    163                     sys.path.append(bin_DIR)# 添加环境变量
    164                     from atmfunction import pay
    165                     pay(money)
    166 
    167                     # 判断支付是否成功
    168                     #读取中间文件
    169                     r_pay_accomplished = open(BASE_DIR + '\' + 'docs' + '\' + 'pay_accomplish' + '.txt', 'rb')
    170                     pay_accomplished=pickle.load(r_pay_accomplished)
    171                     r_pay_accomplished.close()
    172 
    173 
    174                     #若成功
    175                     if pay_accomplished[0]=='accomplished':
    176 
    177                         print('支付成功!')
    178 
    179                         #将用户余额和购买商品更新存入字典
    180                         temp_user_info[buyername] = {'boughtgoods': list_of_bought}
    181 
    182                         #将购买商品更新写入文件
    183                         w_user_userinfo = open(BASE_DIR+'\'+'docs'+'\'+buyername + 'info' + '.txt', 'wb')
    184                         pickle.dump(temp_user_info, w_user_userinfo)
    185                         w_user_userinfo.close()
    186 
    187                         #更改中间文件用于下次验证
    188                         pay_accomplished = ['un_accomplished']
    189                         w_pay_accomplished = open(BASE_DIR + '\' + 'docs' + '\' + 'pay_accomplish' + '.txt', 'wb')
    190                         pickle.dump(pay_accomplished,w_pay_accomplished)
    191                         w_pay_accomplished.close()
    192 
    193                         exit()
    194 
    195                     else:
    196                         payment = input('支付失败!(输入P重新付款输入其他退出):')
    197 
    198                 else:
    199                     print('验证失败!已退出支付!')
    200                     exit()
    201         else:
    202             exit()
    203 
    204     else:
    205         print('输入不合法')
  • 相关阅读:
    暴力字符串hash——cf1200E
    单调栈+线段树——cf1220F
    拆边+BFS队列骚操作——cf1209F
    控制器
    linux下安装配置jmeter
    docker-compose.yml配置jforum开源系统
    anyproxy
    docker搭建一键安装包lnmp
    docker tomcat,mysql 搭建开源项目jforum
    接口自动化测试-Mock Get和Post请求
  • 原文地址:https://www.cnblogs.com/BIT-taozhen/p/9851951.html
Copyright © 2020-2023  润新知