def user_option(username): while True: print("""请选择以下选项进行操作: 1.取款 2.还款 3.转账 4.查看账单 5.退出 """) try: user_choice = int(input('请输入你的操作项:').strip()) if user_choice == 1: handles.transact_amount(username, user_choice) elif user_choice == 2: handles.transact_amount(username, user_choice) elif user_choice == 3: handles.transact_amount(username, user_choice) elif user_choice == 4: handles.audit_account(username) elif user_choice == 5: loger.loger('ATM.var', 'root', settings.time_now, '-', 'info', 'Exit ATM') break except ValueError: print("请输入正确的操作项")
def audit_atm_record(log_file_path='ATM.var'): with open(os.path.join(settings.log_dir_path, log_file_path), 'r') as files: atm_info_list = files.readlines() for i in atm_info_list: line = i.strip().split() print(' '.join(line)) loger.loger('ATM.var', 'root', settings.time_now, '-', 'info', 'audit_atm_record')
def unlock_user(userinfo, user_path): while True: user = input("请输入用户名:").strip() if user in userinfo: userinfo[user]['try_times'] = 0 print("用户%s已解锁" % user) dump_file.dump_file(userinfo, user_path) loger.loger('ATM.var', 'root', settings.time_now, '-', 'warning', "unlock_user:%s" % user) return True else: print("查无此用户,请重新输入")
def chang_creadit(userinfo, user_path): while True: user = input("请输入用户名:").strip() if user in userinfo: credit = input("请输入用户额度:").strip() userinfo[user]['credit'] = credit print("用户%s额度已经调整" % user) dump_file.dump_file(userinfo, user_path) loger.loger('ATM.var', 'root', settings.time_now, '-', 'warning', "chang_atm_user_credit:%s" % user) return True else: print("查无此用户")
def del_user(userinfo, user_path): while True: user = input("请输入用户名:").strip() if user in userinfo: if len(userinfo) > 1: del userinfo[user] print("用户%s已删除" % user) dump_file.dump_file(userinfo, user_path) loger.loger('ATM.var', 'root', settings.time_now, '-', 'warning', "del_user:%s" % user) return True else: print("没有更多的用户可删除") else: print("查无此用户,请重新输入")
def search_user(user_type, userinfo, user_path): user = input("请输入用户名:").strip() if user in userinfo: if user_type == 1: print("用户名:%s\n密码:%s\n登录次数:%s\n" % (user, userinfo[user]['pwd'], userinfo[user]['try_times'])) loger.loger('ATM.var', 'root', settings.time_now, '-', 'info', "search_shop_user:%s" % user) elif user_type == 2: print("用户名:%s\n密码:%s\n登录次数:%s\n信用额度:%s\n余额:%s" % (user, userinfo[user]['pwd'], userinfo[user]['try_times'], userinfo[user]['credit'], userinfo[user]['balance'])) loger.loger('ATM.var', 'root', settings.time_now, '-', 'info', "search_atm_user:%s" % user) else: print("查无此用户,请重新输入")
def audit_account(username): if os.path.exists(os.path.join(settings.log_dir_path,username)): with open(os.path.join(settings.log_dir_path,username),'r') as files: accountinfo_list = files.readlines() total = 0 print("{0} {1} {2} {3} {4}".format( "帐号".ljust(3), "时间".center(16),"操作".center(2),"金额".rjust(3),"利息".rjust(3))) for i in accountinfo_list: line = i.strip().split() new = line[1].split('-') if username == line[0] and new[1] == str(datetime.date.today()).split('-')[1]: print(' '.join(line)) consume = int(line[4]) total += consume print("*" * 50) print("当月消费金额合计:{0}".format(total)) loger.loger('ATM.var',username,settings.time_now,'-',"info",'audit_account') else: print("该用户%s当前没有生成账单记录" %username) loger.loger('ATM.var',username,settings.time_now,'-','error','The user currently has no billing record')
def add_user(user_type, userinfo, user_path, try_times=0, credit=None, balance=None): break_flag = True while break_flag: new_user = input("请输入新用户名称:").strip() if len(new_user) == 0: continue if new_user in userinfo: print("用户名{0}已经存在,请重新输入!".format(new_user)) else: new_user_login_pwd = input("请输入新用户密码:") if len(new_user_login_pwd) == 0: continue confirm_new_user_login_pwd = input("请再次新用户输入密码:") if len(confirm_new_user_login_pwd) == 0: continue if new_user_login_pwd == confirm_new_user_login_pwd: if user_type == 1: userinfo[new_user] = { "pwd": new_user_login_pwd, "try_times": 0 } loger.loger('ATM.var', 'root', settings.time_now, '-', 'info', "add_shop_user:%s" % new_user) break_flag = False elif user_type == 2: credit = int(input("请输入新用户额度:").strip()) userinfo[new_user] = { "pwd": new_user_login_pwd, "try_times": 0, 'credit': credit, 'balance': credit } loger.loger('ATM.var', 'root', settings.time_now, '-', 'info', "add_atm_user:%s" % new_user) break_flag = False print("用户%s添加成功" % new_user) dump_file.dump_file(userinfo, user_path) else: print("两次输入登录密码不一致,请重新输入")
def change_pwd(userinfo, user_path): while True: user = input("请输入用户:").strip() if user in userinfo: old_pwd = input("请输入旧密码:").strip() if old_pwd == userinfo[user]['pwd']: new_pwd = input("请输入新密码:").strip() confirm_pwd = input("请再输入一遍新密码:").strip() if new_pwd == confirm_pwd: userinfo[user]['pwd'] = new_pwd print("密码修改成功!") dump_file.dump_file(userinfo, user_path) loger.loger('ATM.var', 'root', settings.time_now, '-', 'warning', "chang_user_pwd:%s" % user) return True else: print("新密码前后输入不一致!请重新输入!") else: print("旧密码错误,请重新输入!") else: print("查无此用户,请重新输入")
def settlement(username): # 结算时调用的接口 bool_value = True while bool_value: #total = print_shopping_cart(settings.shopping_cart) user_balance = int(settings.atm_user_data[username]['balance']) if total > user_balance: print("余额:{0}".format(user_balance)) print("余额不足,请充值:") bool_value = False else: print("购物成功") settings.atm_user_data[username]['balance'] = int(user_balance - total) bool_value = False dump_file.dump_file(settings.atm_user_data, settings.atm_user_file_path) #print(settings.shopping_cart) for i in settings.shopping_cart: loger.loger(username, username, settings.time_now, i[0], "-" + str(i[1])) loger.loger('ATM.var', username, settings.time_now, "-", "info", 'buy ' + i[0]) loger.loger('ATM.var', username, settings.time_now, '-', 'info', 'Exit MALL') settings.shopping_cart.clear()
from public import login, loger from shop.logic import user_main as shop_user_main from atm.logic import user_main as atm_user_main from manager import manager_user if __name__ == "__main__": while True: print(""" 请选择以下操作项: 1.ATM 2.shop 3.manager 4.exit """) your_choice = input("请输入上述菜单中的选项,进入操作界面:") if your_choice == '1': loger.loger('ATM.var', 'localhost', settings.time_now, '-', 'info', 'entering ATM') atm_user_main.user_option() elif your_choice == '2': loger.loger('ATM.var', 'localhost', settings.time_now, '-', 'info', 'entering Mall') shop_user_main.go_shopping() elif your_choice == '3': loger.loger('ATM.var', 'localhost', settings.time_now, '-', 'info', 'entering Manager') manager_user.user_main() elif your_choice == '4': loger.loger('ATM.var', 'localhost', settings.time_now, '-', 'info', 'exit') break else: print("请输入正确的选项。")
def wrapper(*args): ret = login(arg1, arg2) if ret: loger.loger('ATM.var', ret, settings.time_now, '-', 'info', 'logging') return func(ret, *args)
def user_main(username): while True: print(""" 请选择以下操作项: 欢迎超级管理员\033[0;32;0m[%s]\033[0m登录 1.修改用户密码 2.添加用户 3.锁定用户 4.解锁用户 5.查看用户信息 6.删除用户 7.修改用户信用额度 8.查看ATM操作记录 9.退出 """ % username) try: your_choice = int(input("请输入上述菜单中的选项,进入操作界面:").strip()) if your_choice == 1: ret = check_user_select() if ret == 1: change_pwd(settings.shop_user_data, settings.shop_user_file_path) elif ret == 2: change_pwd(settings.atm_user_data, settings.atm_user_file_path) elif your_choice == 2: ret = check_user_select() if ret == 1: add_user(ret, settings.shop_user_data, settings.shop_user_file_path) elif ret == 2: add_user(ret, settings.atm_user_data, settings.atm_user_file_path) elif your_choice == 3: ret = check_user_select() if ret == 1: lock_user(settings.shop_user_data, settings.shop_user_file_path) elif ret == 2: lock_user(settings.atm_user_data, settings.atm_user_file_path) elif your_choice == 4: ret = check_user_select() if ret == 1: unlock_user(settings.shop_user_data, settings.shop_user_file_path) elif ret == 2: unlock_user(settings.atm_user_data, settings.atm_user_file_path) elif your_choice == 5: ret = check_user_select() if ret == 1: search_user(ret, settings.shop_user_data, settings.shop_user_file_path) elif ret == 2: search_user(ret, settings.atm_user_data, settings.atm_user_file_path) elif your_choice == 6: ret = check_user_select() if ret == 1: del_user(settings.shop_user_data, settings.shop_user_file_path) elif ret == 2: del_user(settings.atm_user_data, settings.atm_user_file_path) elif your_choice == 7: chang_creadit(settings.atm_user_data, settings.atm_user_file_path) elif your_choice == 8: audit_atm_record() elif your_choice == 9: loger.loger('ATM.var', 'root', settings.time_now, '-', 'info', 'Exit Manager') break except ValueError: print("请输入以上一个操作项:")
def transact_amount(account,tran_type): if tran_type == 1: withdraw = int(input("取钱:").strip()) user_balance = int(settings.atm_user_data[account]['balance']) if withdraw > user_balance: print("余额:{0}".format(user_balance)) print("余额不足,请充值:") loger.loger('ATM.var',account,settings.time_now,'-','error','withdraw Balance Insufficient') else: settings.atm_user_data[account]['balance'] = int(user_balance - (withdraw*1.05)) dump_file.dump_file(settings.atm_user_data, settings.atm_user_file_path) loger.loger(account,account,settings.time_now,'withdraw',"-"+str(withdraw),withdraw*0.05) loger.loger('ATM.var',account,settings.time_now,'-','info','withdraw'+"-"+str(withdraw)) elif tran_type == 2: repay = int(input("还款:").strip()) user_balance = int(settings.atm_user_data[account]['balance']) settings.atm_user_data[account]['balance'] = int(user_balance + repay) dump_file.dump_file(settings.atm_user_data, settings.atm_user_file_path) loger.loger(account,account,settings.time_now,'repay',"+"+str(repay)) loger.loger('ATM.var',account,settings.time_now,'-','info','repay'+"+"+str(repay)) elif tran_type == 3: transfer = input("转入帐号").strip() if transfer in settings.atm_user_data: trans_money = int(input("转入金额").strip()) user_balance = int(settings.atm_user_data[account]['balance']) if trans_money > user_balance: print("余额:{0}".format(user_balance)) print("余额不足,请充值:") loger.loger('ATM.var',account,settings.time_now,'-','error','transfer Balance Insufficient') else: transfer_balance = int(settings.atm_user_data[transfer]['balance']) withdraw_balance = int(settings.atm_user_data[account]['balance']) if settings.atm_user_data[transfer] == settings.atm_user_data[account]: print("**********转账人与收账人不能相同**********") loger.loger('ATM.var',account,settings.time_now,'-','error','Transfer and accounts can not be the same') else: settings.atm_user_data[transfer]['balance'] = int(user_balance + trans_money) settings.atm_user_data[account]['balance'] = int(user_balance - trans_money) dump_file.dump_file(settings.atm_user_data, settings.atm_user_file_path) loger.loger(account,account,settings.time_now,'transfer',"-"+str(trans_money)) loger.loger(transfer,transfer,settings.time_now,'transfer',"+"+str(trans_money)) loger.loger('ATM.var',account,settings.time_now,'-','info','transfer'+"-"+str(trans_money)) loger.loger('ATM.var',transfer,settings.time_now,'-','info','transfer'+"-"+str(trans_money)) else: print("转入帐号不存在") loger.loger('ATM.var',account,settings.time_now,'-','error','transfer account nonexistent')