Пример #1
0
    def transfer_accounts():
        '''
        转账函数
        :return: 无
        '''
        flag = True
        while flag:
            # 获取转账的另一方的账号
            cardid_b = mylib.validate_input(r'^\d{9}$','请输入对方卡号: ', '输入提示: 卡号是9位数字,输入r返回上级菜单')
            #account_b = ac.find_by_id(cardid_b)
            # 判断输入的是否为r
            if cardid_b == 'r':
                # 输入的如果是r退出循环
                flag = False
                continue
            # 判断输入的账号是否是当前账号
            if cardid_b == atm.get_crurrent()['cardid']:
                # 提示错误,让用户重新输入
                input('卡号不能是当前卡号,按任意键继续')
                continue

            # 获取输入的账号的账户信息
            account_b,msg = ac.find_by_id(cardid_b)
            # 判断输入的账户是否存在
            if account_b:
                # 获取输入的转账金额
                amount = mylib.validate_input(r'^\d+[.]{0,1}\d+$','请输入转账金额: ', '输入提示:\n  金额不能大于余额')
                # 调用atm的transfer_accounts方法转账
                res, msg = atm.transfer_accounts(account_b, float(amount))
                logger.info('atm_main:%s转账%s:%s,%s' %(atm.get_crurrent()['cardid'], cardid_b, amount, msg))
                input('%s,按任意键继续' %msg)
                flag = False
            else:
                input('%s不存在,请重新输入,按任意键继续' %msg)
Пример #2
0
 def change_password():
     '''
     修改密码函数
     :return: 无
     '''
     flag = True
     while flag:
         account = atm.get_crurrent()
         # 获取用户输入的旧密码
         # old_password = input('原密码(输入r返回上级菜单): ').strip()
         # old_password = mylib.validate_input('\d', 'dafdsf', is_pass=True)
         old_password = mylib.validate_input(r'^.{6,15}$',
                                             '原密码: ',
                                             '输入提示: 输入r返回上级菜单',
                                             is_pass=True)
         # 判断用户输入的是否是r,如果是r退出循环
         if old_password == 'r':
             flag = False
             continue
         # 获取用户输入的新密码及确认密码
         # new_password = input('新密码: ').strip()
         new_password = mylib.validate_input(
             r'^.{6,15}$',
             '密码: ',
             '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单',
             is_pass=True)
         # confirm_password = input('确认密码: ').strip()
         confirm_password = mylib.validate_input(
             r'^.{6,15}$',
             '确认密码: ',
             '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单',
             is_pass=True)
         old_password = mylib.jiami(old_password)
         # 判断旧密码是否正确
         if old_password == account['password']:
             # 判断新密码是否和确认密码一致
             if new_password == confirm_password:
                 new_password = mylib.jiami(new_password)
                 # 判断新密码是否和旧密码不一样
                 if new_password != old_password:
                     # 修改密码
                     account['password'] = new_password
                     res, msg = ac.update_account(account)
                     input('密码%s,按任意键返回上级菜单' % msg)
                     logger.info('atm_main:%s修改密码,%s' %
                                 (atm.get_crurrent()['cardid'], msg))
                     flag = False
                 else:
                     input('新密码和旧密码不能一样,按任意键继续')
             else:
                 input('新密码和确认密码不一致,按任意键继续')
         else:
             input('原密码错误,按任意键继续')
Пример #3
0
    def show_bill():
        '''
        显示账单函数
        :return: 无
        '''
        import time
        account = atm.get_crurrent()
        if account['bill']:  # 判断是否有账单
            # 有账单显示账单信息
            bill_info = '''
--------------------------------本期账单------------------------------------
 账单日: %s 还款日: %s
----------------------------------------------------------------------------
 应还款金额  =  上期账单金额  -  上期还款金额  +  本期账单金额  +  利息
 %s     %s     %s     %s     %s
----------------------------------------------------------------------------''' % (
                time.strftime("%Y-%m-%d",
                              time.localtime(account['bill']['bill_date'])),
                time.strftime("%Y-%m-%d",
                              time.localtime(account['bill']['payment_date'])),
                mylib.myljust(str(account['bill']['new_balance']), 10),
                mylib.myljust(str(account['bill']['balance_bf']), 12),
                mylib.myljust(str(account['bill']['payment']), 12),
                mylib.myljust(str(account['bill']['new_charges']), 12),
                mylib.myljust(str(account['bill']['interest']), 8))
            print(bill_info)
        else:
            # 没有账单显示无
            print('还没有账单哦')
        input('按任意键继续')
        logger.info('atm_main:%s查看账单' % account['cardid'])
Пример #4
0
 def take_cash():
     '''
     提现函数
     :return: 无
     '''
     flag = True
     while flag:
         # 获取提现金额
         #cash = input('操作提示:\n  取现金额必须是100的整数倍\n  输入r返回上级菜单\n请输入提现金额: ').strip()
         cash = mylib.validate_input(
             r'^\d+[.]{0,1}\d+$', '请输入提现金额: ',
             '输入提示:\n  取现金额必须是100的整数倍\n  金额不能大于余额\n  输入r返回主菜单')
         # 如果输入的不是r
         if cash != 'r':
             # 判断输入的金额是否是100的整数倍
             if float(cash) % 100 == 0:
                 # 如果输入的是100的整数倍调用atm的take_cash方法提现
                 res, msg = atm.take_cash(float(cash))
                 input('%s,按任意键继续' % msg)
                 logger.info('atm_main:%s提现%s,%s' %
                             (atm.get_crurrent()['cardid'], cash, msg))
             else:
                 input('输入金额必须是100的整数倍')
         else:
             flag = False
Пример #5
0
    def show_account_info():
        '''
        输出用户详细信息
        :return: 无
        '''
        account = atm.get_crurrent()  # 获取当前用户所有信息
        account_info = '''
用户详细信息
-----------------------------------------------------
     卡号: %s
     户名: %s
     地址: %s
     电话: %s
     邮箱: %s
 可用余额: %s
 提现余额: %s
 可用额度: %s
     状态: %s
-----------------------------------------------------
''' % (account['cardid'], account['name'], account['address'], account['tel'],
        account['mail'], account['balance'], account['cash'],
        account['max_balance'], account['status'])
        print(mylib.myfind(account_info, '用户详细信息'))
        input('按任意键继续')
        logger.info('atm_main:%s查看详细信息' % account['cardid'])
Пример #6
0
 def change_password():
     '''
     修改密码函数
     :return: 无
     '''
     flag = True
     while flag:
         account = atm.get_crurrent()
         # 获取用户输入的旧密码
         # old_password = input('原密码(输入r返回上级菜单): ').strip()
         # old_password = mylib.validate_input('\d', 'dafdsf', is_pass=True)
         old_password = mylib.validate_input(r'^.{6,15}$', '原密码: ', '输入提示: 输入r返回上级菜单', is_pass=True)
         # 判断用户输入的是否是r,如果是r退出循环
         if old_password == 'r':
             flag = False
             continue
         # 获取用户输入的新密码及确认密码
         # new_password = input('新密码: ').strip()
         new_password = mylib.validate_input(r'^.{6,15}$', '密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True)
         # confirm_password = input('确认密码: ').strip()
         confirm_password = mylib.validate_input(r'^.{6,15}$', '确认密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True)
         old_password = mylib.jiami(old_password)
         # 判断旧密码是否正确
         if old_password == account['password']:
             # 判断新密码是否和确认密码一致
             if new_password == confirm_password:
                 new_password = mylib.jiami(new_password)
                 # 判断新密码是否和旧密码不一样
                 if new_password != old_password:
                     # 修改密码
                     account['password'] = new_password
                     res, msg = ac.update_account(account)
                     input('密码%s,按任意键返回上级菜单' %msg)
                     logger.info('atm_main:%s修改密码,%s' %(atm.get_crurrent()['cardid'], msg))
                     flag = False
                 else:
                     input('新密码和旧密码不能一样,按任意键继续')
             else:
                input('新密码和确认密码不一致,按任意键继续')
         else:
             input('原密码错误,按任意键继续')
Пример #7
0
    def show_transaction_detail():
        '''
        查看消费流水函数
        :return: 无
        '''
        import time
        account = atm.get_crurrent()

        page = 1
        flag = True
        logger.info('atm_main:%s查看消费流水' % (account['cardid']))
        while flag:
            # 调用mylib的pagination函数分页,或的分页后的列表和最多可以分多少页
            res_list, max_page = mylib.pagination(
                account['transaction_detail'], conf.MAX_PER_PAGE, page)
            # 打印分页后的消费流水
            print(mylib.mycenter('消费流水', 65))
            print('-' * 65)
            print(' %s %s %s %s' %
                  (mylib.myljust('序号', 6), mylib.myljust('时间', 25),
                   mylib.myljust('项目', 20), mylib.myljust('金额', 20)))
            for num, item in enumerate(res_list, 1):
                print(' %s   %s %s %s' %
                      (mylib.myrjust(str(num), 4),
                       mylib.myljust(
                           time.strftime("%Y-%m-%d %H:%M:%S",
                                         time.localtime(item['date'])),
                           25), mylib.myljust(item['description'], 20),
                       mylib.myljust(str(item['amount']), 20)))
            print('-' * 65)
            print(mylib.myrjust('当前第%s页/共%s页' % (page, max_page), 65))
            # 获取用户的操作输入
            chose = input(
                '操作提示:\n 输入n进入下一页,输入b进入上一页,输入r返回上一级菜单\n 请输入: ').strip()
            if chose == 'n':
                # 选择n下一页,页码加1
                if page < max_page:
                    page = page + 1
                else:
                    input("已经是最后一页了,按任意键继续")
            elif chose == 'b':
                # 选择b上一页,页码减1
                if page == 1:
                    input("已经是第1页了,按任意键继续")
                else:
                    page = page - 1

            elif chose == 'r':
                # 选择r,退出循环返回主菜单
                flag = False
            else:
                input('输入错误,任意键')
Пример #8
0
 def repayment():
     '''
     还款函数
     :return: 无
     '''
     # 获取用户输入的还款金额,并判判断是否合法
     amount = mylib.validate_input(r'^\d+[.]{0,1}\d+$','请输入还款金额: ', '操作提示:输入r返回主菜单')
     if amount != 'r': # 判断用户输入的是否是r
         # 如果不是说明输入的金额
         # 调用atm的repayment方法进行还款
         res, msg = atm.repayment(float(amount))
         input('%s,按任意键继续' %msg)
         logger.info('atm_main:%s还款%s,%s' %(atm.get_crurrent()['cardid'], amount, msg))
Пример #9
0
    def transfer_accounts():
        '''
        转账函数
        :return: 无
        '''
        flag = True
        while flag:
            # 获取转账的另一方的账号
            cardid_b = mylib.validate_input(r'^\d{9}$', '请输入对方卡号: ',
                                            '输入提示: 卡号是9位数字,输入r返回上级菜单')
            #account_b = ac.find_by_id(cardid_b)
            # 判断输入的是否为r
            if cardid_b == 'r':
                # 输入的如果是r退出循环
                flag = False
                continue
            # 判断输入的账号是否是当前账号
            if cardid_b == atm.get_crurrent()['cardid']:
                # 提示错误,让用户重新输入
                input('卡号不能是当前卡号,按任意键继续')
                continue

            # 获取输入的账号的账户信息
            account_b, msg = ac.find_by_id(cardid_b)
            # 判断输入的账户是否存在
            if account_b:
                # 获取输入的转账金额
                amount = mylib.validate_input(r'^\d+[.]{0,1}\d+$', '请输入转账金额: ',
                                              '输入提示:\n  金额不能大于余额')
                # 调用atm的transfer_accounts方法转账
                res, msg = atm.transfer_accounts(account_b, float(amount))
                logger.info(
                    'atm_main:%s转账%s:%s,%s' %
                    (atm.get_crurrent()['cardid'], cardid_b, amount, msg))
                input('%s,按任意键继续' % msg)
                flag = False
            else:
                input('%s不存在,请重新输入,按任意键继续' % msg)
Пример #10
0
    def print_welcome():
        '''
        输出系统信息和用户信息
        :return: 无
        '''
        account = atm.get_crurrent() # 获取当前用户所有信息
        welcome_info = '''
**********************************
* %s *
* %s *
* %s *
* %s *
**********************************''' %(mylib.myljust('欢迎来到65银行', 30), mylib.myljust('Version: 1.0', 30), mylib.myljust('%s 您好' %account['name'], 30), mylib.myljust('当前余额: %s' %account['balance'], 30))
        print(welcome_info)
Пример #11
0
 def repayment():
     '''
     还款函数
     :return: 无
     '''
     # 获取用户输入的还款金额,并判判断是否合法
     amount = mylib.validate_input(r'^\d+[.]{0,1}\d+$', '请输入还款金额: ',
                                   '操作提示:输入r返回主菜单')
     if amount != 'r':  # 判断用户输入的是否是r
         # 如果不是说明输入的金额
         # 调用atm的repayment方法进行还款
         res, msg = atm.repayment(float(amount))
         input('%s,按任意键继续' % msg)
         logger.info('atm_main:%s还款%s,%s' %
                     (atm.get_crurrent()['cardid'], amount, msg))
Пример #12
0
    def print_welcome():
        '''
        输出系统信息和用户信息
        :return: 无
        '''
        account = atm.get_crurrent()  # 获取当前用户所有信息
        welcome_info = '''
**********************************
* %s *
* %s *
* %s *
* %s *
**********************************''' % (
            mylib.myljust('欢迎来到世界银行', 30), mylib.myljust('Version: 1.0', 30),
            mylib.myljust('%s 您好' % account['name'], 30),
            mylib.myljust('当前余额: %s' % account['balance'], 30))
        print(welcome_info)
Пример #13
0
    def show_transaction_detail():
        '''
        查看消费流水函数
        :return: 无
        '''
        import time
        account = atm.get_crurrent()

        page = 1
        flag = True
        logger.info('atm_main:%s查看消费流水' %(account['cardid']))
        while flag:
            # 调用mylib的pagination函数分页,或的分页后的列表和最多可以分多少页
            res_list, max_page = mylib.pagination(account['transaction_detail'], conf.MAX_PER_PAGE, page)
            # 打印分页后的消费流水
            print(mylib.mycenter('消费流水', 65))
            print('-' * 65)
            print(' %s %s %s %s' %(mylib.myljust('序号', 6), mylib.myljust('时间', 25), mylib.myljust('项目', 20), mylib.myljust('金额', 20)))
            for num, item in enumerate(res_list, 1):
                print(' %s   %s %s %s' %(mylib.myrjust(str(num), 4), mylib.myljust(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(item['date'])), 25), mylib.myljust(item['description'], 20), mylib.myljust(str(item['amount']), 20)))
            print('-' * 65)
            print(mylib.myrjust('当前第%s页/共%s页' %(page, max_page), 65))
            # 获取用户的操作输入
            chose = input('操作提示:\n 输入n进入下一页,输入b进入上一页,输入r返回上一级菜单\n 请输入: ').strip()
            if chose == 'n':
                # 选择n下一页,页码加1
                if page < max_page:
                    page = page + 1
                else:
                    input("已经是最后一页了,按任意键继续")
            elif chose == 'b':
                # 选择b上一页,页码减1
                if page == 1:
                    input("已经是第1页了,按任意键继续")
                else:
                    page = page - 1

            elif chose == 'r':
                # 选择r,退出循环返回主菜单
                flag = False
            else:
                input('输入错误,任意键')
Пример #14
0
 def take_cash():
     '''
     提现函数
     :return: 无
     '''
     flag = True
     while flag:
         # 获取提现金额
         cash = mylib.validate_input(r'^\d+[.]{0,1}\d+$','请输入提现金额: ', '输入提示:\n  取现金额必须是100的整数倍\n  金额不能大于余额\n  输入r返回主菜单')
         # 如果输入的不是r
         if cash != 'r':
             # 判断输入的金额是否是100的整数倍
             if float(cash)%100 == 0:
                 # 如果输入的是100的整数倍调用atm的take_cash方法提现
                 res, msg = atm.take_cash(float(cash))
                 input('%s,按任意键继续' %msg)
                 logger.info('atm_main:%s提现%s,%s' %(atm.get_crurrent()['cardid'], cash, msg))
             else:
                 input('输入金额必须是100的整数倍')
         else:
             flag = False
Пример #15
0
    def show_bill():
        '''
        显示账单函数
        :return: 无
        '''
        import time
        account = atm.get_crurrent()
        if account['bill']: # 判断是否有账单
            # 有账单显示账单信息
            bill_info = '''
--------------------------------本期账单------------------------------------
 账单日: %s 还款日: %s
----------------------------------------------------------------------------
 应还款金额  =  上期账单金额  -  上期还款金额  +  本期账单金额  +  利息
 %s     %s     %s     %s     %s
----------------------------------------------------------------------------''' %(time.strftime("%Y-%m-%d", time.localtime(account['bill']['bill_date'])), time.strftime("%Y-%m-%d",time.localtime(account['bill']['payment_date'])), mylib.myljust(str(account['bill']['new_balance']), 10), mylib.myljust(str(account['bill']['balance_bf']), 12), mylib.myljust(str(account['bill']['payment']), 12), mylib.myljust(str(account['bill']['new_charges']), 12), mylib.myljust(str(account['bill']['interest']), 8))
            print(bill_info)
        else:
            # 没有账单显示无
            print('还没有账单哦')
        input('按任意键继续')
        logger.info('atm_main:%s查看账单' %account['cardid'])
Пример #16
0
    def show_account_info():
        '''
        输出用户详细信息
        :return: 无
        '''
        account = atm.get_crurrent() # 获取当前用户所有信息
        account_info = '''
用户详细信息
-----------------------------------------------------
     卡号: %s
     户名: %s
     地址: %s
     电话: %s
     邮箱: %s
 可用余额: %s
 提现余额: %s
 可用额度: %s
     状态: %s
-----------------------------------------------------
''' %(account['cardid'], account['name'], account['address'], account['tel'], account['mail'],account['balance'], account['cash'], account['max_balance'], account['status'])
        print(mylib.myfind(account_info, '用户详细信息'))
        input('按任意键继续')
        logger.info('atm_main:%s查看详细信息' %account['cardid'])
Пример #17
0
                        account['password'] = new_password
                        res, msg = ac.update_account(account)
                        input('密码%s,按任意键返回上级菜单' % msg)
                        logger.info('atm_main:%s修改密码,%s' %
                                    (atm.get_crurrent()['cardid'], msg))
                        flag = False
                    else:
                        input('新密码和旧密码不能一样,按任意键继续')
                else:
                    input('新密码和确认密码不一致,按任意键继续')
            else:
                input('原密码错误,按任意键继续')

    if atm.auth():
        flag = True
        logger.info('atm_main:%s登录系统' % atm.get_crurrent()['cardid'])
        while flag:
            print_welcome()
            chose = print_menu(
                ['查看详细信息', '查看账单', '提现', '还款', '同行转账', '查看消费流水', '修改密码', '退出'])
            if chose == '1':
                show_account_info()
            elif chose == '2':
                show_bill()
            elif chose == '3':
                take_cash()
            elif chose == '4':
                repayment()
            elif chose == '5':
                transfer_accounts()
            elif chose == '6':
Пример #18
0
                        account['password'] = new_password
                        res, msg = ac.update_account(account)
                        input('密码%s,按任意键返回上级菜单' %msg)
                        logger.info('atm_main:%s修改密码,%s' %(atm.get_crurrent()['cardid'], msg))
                        flag = False
                    else:
                        input('新密码和旧密码不能一样,按任意键继续')
                else:
                   input('新密码和确认密码不一致,按任意键继续')
            else:
                input('原密码错误,按任意键继续')


    if atm.auth():
        flag = True
        logger.info('atm_main:%s登录系统' %atm.get_crurrent()['cardid'])
        while flag:
            print_welcome()
            chose = print_menu(['查看详细信息', '查看账单', '提现', '还款', '同行转账', '查看消费流水', '修改密码', '退出'])

            if chose == '1':
                show_account_info()
            elif chose == '2':
                show_bill()
            elif chose == '3':
                take_cash()
            elif chose == '4':
                repayment()
            elif chose == '5':
                transfer_accounts()
            elif chose == '6':