def repay(user_account): #定义一个用户存款函数 db_path_user = db_path + '\%s.json' % user_account["username"] with open(db_path_user, 'r', encoding='utf-8') as fh: fr = fh.read() fd = eval(fr) print("\033[33;1m您的当前存款为: ¥%s " % fd["balance"]) while True: repays = input('\033[33;1m请输入存款金额并确认存款,按Q取消存款>>>\033[0m') if repays.capitalize() == 'Q': exit() else: if repays.isdigit(): repays = int(repays) user_balance = fd["balance"] + repays #当前存款=原存款+存款金额 with open(db_path_user, 'w', encoding='utf-8') as fh: res = fr.replace(str(fd["balance"]), str(user_balance)) #修改用户文件操作 fh.write(res) print('\033[33;1m尊敬的用户已为您成功存入 %s 元,您当前存款金额为 %s 元!\033[0m' % (repays, user_balance)) break else: print('\033[31;1m请输入有效存款金额\033[0m') log = ('\033[31;1m尊敬的用户已为您成功存入: %s元,您当前存款金额: %s元!\033[0m' % (repays, user_balance)) loggers.card_log(user_account["username"], log)
def withdraw(user_account): ''' 定义一个用户提现函数 :param user_account: :return: ''' db_path_user = db_path + '\%s.json' % user_account["username"] with open(db_path_user, 'r', encoding='utf-8') as fh: fr = fh.read() fd = eval(fr) print("\033[33;1m您的当前存款为:【¥%s】" % fd["balance"]) print("\033[33;1m您可提现额度为:【¥%s】" % fd["credit"]) while True: repays = input('\033[33;1m请输入提现金额,按Q取消提现>>>\033[0m') if repays.capitalize() == 'Q': #判断用户输入 break else: if repays.isdigit(): repays = int(repays) if repays > fd["credit"]: #判断用户输入的提现金额是否大于现有存款 print('\033[31;1m提现金额不得大于可提现额度\033[0m') else: print('\033[31;1m提现金额:【¥%s】 手续费:【¥%s】\033[0m' % (repays, repays * 0.05)) user_balance = fd["balance"] - (repays + repays * 0.05 ) #提现后的用户余额 inputs = input('\033[33;1m请确认提现金额,按任意键提现>>>\033[0m') if user_balance <= 0: #判断结算后存款是否为负数,如结算后存款为负给出提示不让提现 print('\033[31;1m当前存款不足以提现\033[0m') else: user_credit = user_account[ "credit"] - repays #提现后的可提现额度 print('\033[31;1m尊敬的用户您已成功提现 %s 元!\033[0m' % repays) print("\033[33;1m您的当前存款为:【¥%s】" % user_balance) print("\033[33;1m您可提现额度为:【¥%s】" % user_credit) with open(db_path_user, 'w', encoding='utf-8') as fh: res1 = fr.replace(str(fd["balance"]), str(user_balance)) #先扣除用户的余额 res2 = res1.replace(str( fd["credit"]), str(user_credit)) #然后扣除用户的可提现额度 fh.write(res2) #将变更后的余额和提现额度重新写入json文本中 break else: print('\033[31;1m请输入有效提现金额\033[0m') log = ("\033[31;1m尊敬的用户您已成功提现: %s元 所剩存款: %s元 可提现金额为: %s元!\033[0m" % (repays, user_balance, user_credit)) #打印日志内容 loggers.card_log(user_account["username"], log) #传递参数给card_log日志主函数
def transfer(user_account): #定义一个用户转账的函数 count = 0 while count < 3: transfer = input('\033[33;1m请输入需转账人用户名>>>\033[0m') db_path_user1 = db_path + '\%s.json' % transfer #需被转账用户 db_path_user2 = db_path + '\%s.json' % user_account["username"] #当前用户 if transfer == user_account["username"]: print('\033[31;1m转账人不能是自己\033[0m') else: if os.path.isfile(db_path_user1): # 判断用户文件是否存在 with open(db_path_user1, 'r', encoding='utf-8') as fh: frh = fh.read() fd = eval(frh) #需被转账用户 with open(db_path_user2, 'r', encoding='utf-8') as fw: frw = fw.read() fc = eval(frw) #当前用户 print('\033[33;1m转账用户信用卡号为:\033[0m \033[32;1m %s \033[0m' % fd["cardid"]) while True: money = input('\033[33;1m请输入需转账金额:\033[0m') if money.isdigit(): money = int(money) if money > fc["balance"]: #判断转账金额是否大于存款 print('\033[31;1m对不起您的存款不足,无法转账\033[0m') else: print('\033[31;1m转账用户卡号: %s 转账金额:¥%s\033[0m' % (fd["cardid"], money)) inputs = input( '\033[33;1m请再次确认转账信息数据:按Q|q取消>>>\033[0m') if inputs.capitalize() == 'Q': break else: user_balance1 = fc[ "balance"] - money #当前用户转账后余额 with open(db_path_user2, 'w', encoding='utf-8') as fw: res1 = frw.replace( str(fc["balance"]), str(user_balance1)) fw.write(res1) print('\033[33;1m您转账后存款为: ¥%s ' % user_balance1) user_balance2 = fd[ "balance"] + money #需被转账用户转账后余额 with open(db_path_user1, 'w', encoding='utf-8') as fh: res2 = frh.replace( str(fd["balance"]), str(user_balance2)) fh.write(res2) log = ( '\033[31;1m您为卡号:%s 用户转账: %s元 您当前存款金额: %s元!\033[0m' % (fd["cardid"], money, user_balance1)) loggers.card_log(user_account["username"], log) break else: print('\033[31;1m请输入有效转账金额\033[0m') else: count += 1 print('\033[31;1m该用户不存在,请重新输入还剩 %s 次机会\033[0m' % (3 - count)) break