Пример #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:
         customer = shopping.get_crurrent_customer()
         if not customer:
             input('您还没有登录,不能修改密码,请先登录,按任意键继续')
             flag = False
             continue
         # 获取用户输入的旧密码
         # 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 == customer['password']:
             # 判断新密码是否和确认密码一致
             if new_password == confirm_password:
                 new_password = mylib.jiami(new_password)
                 # 判断新密码是否和旧密码不一样
                 if new_password != old_password:
                     # 修改密码
                     customer['password'] = new_password
                     res, msg = cu.update_customer(customer)
                     input('密码%s,按任意键返回上级菜单' % msg)
                     logger.info('用户%s修改密码,%s' %
                                 (customer['username'], msg))
                     flag = False
                 else:
                     input('新密码和旧密码不能一样,按任意键继续')
             else:
                 input('新密码和确认密码不一致,按任意键继续')
         else:
             input('原密码错误,按任意键继续')
Пример #3
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('原密码错误,按任意键继续')
Пример #4
0
        def wrapper(self, *args, **kwargs):

            if self.__current_account:  # 判断是否已经登录
                return funce(self, *args, **kwargs)
            while True:  # 如果没有登录执行循环
                # accounts = self.__account.get_accounts()
                cardid = mylib.validate_input(r"^\d{9}$", "卡号(输入quit退出认证): ", back_str="quit")
                if cardid == "quit":
                    msg = "认证失败"
                    # return False, msg
                    break
                password = getpass.getpass("密码: ").strip()
                # password = input('密码: ').strip()
                res, msg = self.__account.find_by_id(cardid)

                if not res:
                    input("卡号或密码错误!!请重新输入,按任意键继续。")
                    continue
                if res.get("status") != "正常":
                    input("您的账户已经%s,请联系银行客服:95588" % res.get("status"))
                    continue
                if mylib.jiami(password) == res.get("password"):
                    input("认证成功,按任意键继续")
                    self.__current_account = res
                    return funce(self, *args, **kwargs)
                else:
                    res["error_count"] += 1  # 登陆失败次数加1

                    if res["error_count"] == conf.MAX_ERROR_COUNT:  # 判断是否错误次数是否达到阀值
                        # 锁定用户
                        res["status"] = "锁定"
                        input("您的账户已被锁定,请联系银行客服:95588")
                    else:
                        input("卡号或密码错误!!请重新输入,按任意键继续。")
                    self.__account.update_account(res)  # 保存用户信息,主要是修改次数累加和状态
Пример #5
0
 def login():
     '''
     登录函数
     :return: 无
     '''
     import getpass
     # 获取当前用户
     customer = shopping.get_crurrent_customer()
     # 判断是否获取当前用户,如果当前用户不存在说明还没有登录,没登录的情况下才能登录
     if not customer:
         flag = True
         while flag:
             # 获取用户名
             username = mylib.validate_input(r'^\w{1,15}$','用户名(输入r返回主菜单): ')
             if username == 'r':
                 flag = False
                 continue
             # 获取密码
             #password = mylib.validate_input(r'^.{6,15}$', '密码: ', is_pass = True)
             password = getpass.getpass('密码: ').strip()
             #print(password)
             # 调用shopping对象的login方法,验证用户名和密码
             res = shopping.login(username, password)
             if res:
                 # 验证成功显示欢迎信息并退出循环
                 input('登录成功,按任意键返回主菜单')
                 logger.info('用户登录:%s' %(username))
                 flag = False
             else:
                 input('用户名或密码错误,按任意键继续')
     else:
         input('您已经登录,不能重复登录,按任意键继续')
Пример #6
0
 def remove_account(account):
     '''
     注销用户函数
     :param account: 欲注销的账户
     :return: 是否删除了账户,包括取消注销,如果取消注销账户也返回False
     '''
     # 获取确认
     chose = mylib.validate_input('^[y]$',
                                  '请确认是否注销卡号为%s的用户(y/n): ' %
                                  account['cardid'],
                                  back_str='n')
     if chose == 'y':
         # 调用ac对象的del_account方法删除账户
         res, msg = ac.del_account(account['cardid'])
     else:
         # 如果用户输入的是n说明要取消注销用户
         return False
     if res:
         input('%s,卡号为%s的用户已经删除,按任意键返回账户列表' % (msg, account['cardid']))
         logger.info('atm_admin注销账户:%s,%s' % (account['cardid'], msg))
         return True
     else:
         input('%s,按任意键继续' % msg)
         logger.info('atm_admin注销账户:%s,%s' % (account['cardid'], msg))
         return False
Пример #7
0
 def login():
     '''
     登录函数
     :return: 无
     '''
     import getpass
     # 获取当前用户
     customer = shopping.get_crurrent_customer()
     # 判断是否获取当前用户,如果当前用户不存在说明还没有登录,没登录的情况下才能登录
     if not customer:
         flag = True
         while flag:
             # 获取用户名
             username = mylib.validate_input(r'^\w{1,15}$',
                                             '用户名(输入r返回主菜单): ')
             if username == 'r':
                 flag = False
                 continue
             # 获取密码
             #password = mylib.validate_input(r'^.{6,15}$', '密码: ', is_pass = True)
             password = getpass.getpass('密码: ').strip()
             #print(password)
             # 调用shopping对象的login方法,验证用户名和密码
             res = shopping.login(username, password)
             if res:
                 # 验证成功显示欢迎信息并退出循环
                 input('登录成功,按任意键返回主菜单')
                 logger.info('用户登录:%s' % (username))
                 flag = False
             else:
                 input('用户名或密码错误,按任意键继续')
     else:
         input('您已经登录,不能重复登录,按任意键继续')
Пример #8
0
        def wrapper(self,*args, **kwargs):

            if self.__current_account: # 判断是否已经登录
                return funce(self, *args, **kwargs)
            while True: # 如果没有登录执行循环
                cardid = mylib.validate_input(r'^\d{9}$','卡号(输入quit退出认证): ', back_str = 'quit')
                if cardid == 'quit':
                    msg = '认证失败'
                    break
                password = getpass.getpass('密码: ').strip()
                res,msg = self.__account.find_by_id(cardid)
                if not res:
                    input('卡号或密码错误!!请重新输入,按任意键继续。')
                    continue
                if res.get('status') != '正常':
                    input('您的账户已经%s,请联系银行客服:95588' %res.get('status'))
                    continue
                if mylib.jiami(password) == res.get('password'):
                    input('认证成功,按任意键继续')
                    self.__current_account = res
                    return funce(self, *args, **kwargs)
                else:
                    res['error_count'] += 1 #登陆失败次数加1

                    if res['error_count'] == conf.MAX_ERROR_COUNT: # 判断是否错误次数是否达到阀值
                        #锁定用户
                        res['status'] = '锁定'
                        input('您的账户已被锁定,请联系银行客服:95588')
                    else:
                        input('卡号或密码错误!!请重新输入,按任意键继续。')
                    self.__account.update_account(res) # 保存用户信息,主要是修改次数累加和状态
Пример #9
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
Пример #10
0
        def wrapper(self, *args, **kwargs):

            if self.__current_account:  # 判断是否已经登录
                return funce(self, *args, **kwargs)
            while True:  # 如果没有登录执行循环
                cardid = mylib.validate_input(r'^\d{9}$',
                                              '卡号(输入quit退出认证): ',
                                              back_str='quit')
                if cardid == 'quit':
                    msg = '认证失败'
                    break
                password = getpass.getpass('密码: ').strip()
                res, msg = self.__account.find_by_id(cardid)
                if not res:
                    input('卡号或密码错误!!请重新输入,按任意键继续。')
                    continue
                if res.get('status') != '正常':
                    input('您的账户已经%s,请联系银行客服:95588' % res.get('status'))
                    continue
                if mylib.jiami(password) == res.get('password'):
                    input('认证成功,按任意键继续')
                    self.__current_account = res
                    return funce(self, *args, **kwargs)
                else:
                    res['error_count'] += 1  #登陆失败次数加1

                    if res['error_count'] == conf.MAX_ERROR_COUNT:  # 判断是否错误次数是否达到阀值
                        #锁定用户
                        res['status'] = '锁定'
                        input('您的账户已被锁定,请联系银行客服:95588')
                    else:
                        input('卡号或密码错误!!请重新输入,按任意键继续。')
                    self.__account.update_account(res)  # 保存用户信息,主要是修改次数累加和状态
Пример #11
0
 def change_password():
     '''
     修改密码函数
     :return: 无
     '''
     flag = True
     while flag:
         customer = shopping.get_crurrent_customer()
         if not customer:
             input('您还没有登录,不能修改密码,请先登录,按任意键继续')
             flag = False
             continue
         # 获取用户输入的旧密码
         # 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 == customer['password']:
             # 判断新密码是否和确认密码一致
             if new_password == confirm_password:
                 new_password = mylib.jiami(new_password)
                 # 判断新密码是否和旧密码不一样
                 if new_password != old_password:
                     # 修改密码
                     customer['password'] = new_password
                     res, msg = cu.update_customer(customer)
                     input('密码%s,按任意键返回上级菜单' %msg)
                     logger.info('用户%s修改密码,%s' %(customer['username'], msg))
                     flag = False
                 else:
                     input('新密码和旧密码不能一样,按任意键继续')
             else:
                input('新密码和确认密码不一致,按任意键继续')
         else:
             input('原密码错误,按任意键继续')
Пример #12
0
    def register():
        '''
        注册用户函数
        :return: 无
        '''
        customer = shopping.get_crurrent_customer() # 获取当前用户
        # 判断当前用户是否存在,如果存在说明已经登录,将不能注册新的用户
        if not customer:
            flag = True
            while flag:
                # 获取用户输入的基本信息,任何一个环节输入r将取消注册,返回主菜单
                username = mylib.validate_input(r'^\w{1,15}$','用户名:', '输入提示: 用户名必须是数字和字母的组合,长度不超过15个字符,输入r返回上级菜单')
                if username == 'r':
                    flag = False
                    continue
                if cu.check_username(username):
                    input('用户名已经存在,请重新输入,按任意键继续')
                    continue

                while True:
                    password = mylib.validate_input(r'^.{6,15}$', '密码: ', '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单', is_pass=True)
                    if password == 'r':
                        flag = False
                        break
                    confirm_password = mylib.validate_input(r'^.{6,15}$', '确认密码: ', '输入提示: 确认密码必须与密码一致,输入r返回上级菜单', is_pass=True)
                    if password == 'r':
                        flag = False
                        break
                    if password == confirm_password:
                        break
                    else:
                        input('密码与确认密码不一致,按任意键重新输入')
                if not flag:
                    continue

                name = mylib.validate_input(r'^.{1,10}$', '姓名: ', '输入提示: 姓名不能为空,长度不能超过10个字符,输入r返回上级菜单')
                if name == 'r':
                    flag = False
                    continue

                tel = mylib.validate_input(r'^1([358]\d{9})$', '联系电话: ', '输入提示: 联系电话为手机号,长度为11位,输入r返回上级菜单')
                if tel == 'r':
                    flag = False
                    continue

                mail = mylib.validate_input(r'^[0-9.a-z]{0,26}@[0-9.a-z]{0,20}.[0-9a-z]{0,8}$', '邮箱: ', '输入提示: 邮箱不能为空,输入r返回上级菜单')
                if mail == 'r':
                    flag = False
                    continue

                address = mylib.validate_input(r'^.+$', '住址: ', '输入提示: 住址不能为空,输入r返回上级菜单')
                if address == 'r':
                    flag = False
                # 调用cu对象的insert_customer方法创建用户
                res, msg = cu.insert_customer(username, password, name, tel, mail, address)
                input('%s,按任意键继续' %msg)
                logger.info('注册用户:%s,%s' %(username, msg))
        else:
            input('您已经登录商城,如需要注册请退出登录')
Пример #13
0
    def add_account():
        '''
        添加账户函数
        :return: 无
        '''
        flag = True
        while flag:
            # 获取用户输入的账户信息,任何一个输入项,输入r取消添加用户
            cardid = mylib.validate_input(r'^\d{9}$', '卡号: ',
                                          '输入提示: 卡号必须是9位数字,并且不能重复,输入r返回上级菜单')
            if cardid == 'r':
                flag = False
                continue
            if ac.check_cardid(cardid):  # 判断卡号是否存在
                input('卡号已经存在,请重新输入,按任意键继续')
                continue
            name = mylib.validate_input(r'^.{1,10}$', '账户名: ',
                                        '输入提示: 账户名不能为空,长度不能超过10个字符,输入r返回上级菜单')
            if name == 'r':
                flag = False
                continue

            tel = mylib.validate_input(r'^1([358]\d{9})$', '联系电话: ',
                                       '输入提示: 联系电话为手机号,长度为11位,输入r返回上级菜单')
            if tel == 'r':
                flag = False
                continue

            mail = mylib.validate_input(
                r'^[0-9.a-z]{0,26}@[0-9.a-z]{0,20}.[0-9a-z]{0,8}$', '邮箱: ',
                '输入提示: 邮箱不能为空,输入r返回上级菜单')
            if mail == 'r':
                flag = False
                continue

            address = mylib.validate_input(r'^.+$', '住址: ',
                                           '输入提示: 住址不能为空,输入r返回上级菜单')
            if address == 'r':
                flag = False
            # 调用ac对象的insert_account方法添加用户
            res, msg = ac.insert_account(cardid, name, tel, mail, address)
            input('%s,按任意键继续' % msg)
            logger.info('atm_admin添加账户:%s,%s' % (cardid, msg))
Пример #14
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('原密码错误,按任意键继续')
Пример #15
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))
Пример #16
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)
Пример #17
0
    def add_account():
        '''
        添加账户函数
        :return: 无
        '''
        flag = True
        while flag:
            # 获取用户输入的账户信息,任何一个输入项,输入r取消添加用户
            cardid = mylib.validate_input(r'^\d{9}$','卡号: ', '输入提示: 卡号必须是9位数字,并且不能重复,输入r返回上级菜单')
            if cardid == 'r':
                flag = False
                continue
            if ac.check_cardid(cardid): # 判断卡号是否存在
                input('卡号已经存在,请重新输入,按任意键继续')
                continue
            name = mylib.validate_input(r'^.{1,10}$', '账户名: ', '输入提示: 账户名不能为空,长度不能超过10个字符,输入r返回上级菜单')
            if name == 'r':
                flag = False
                continue

            tel = mylib.validate_input(r'^1([358]\d{9})$', '联系电话: ', '输入提示: 联系电话为手机号,长度为11位,输入r返回上级菜单')
            if tel == 'r':
                flag = False
                continue

            mail = mylib.validate_input(r'^[0-9.a-z]{0,26}@[0-9.a-z]{0,20}.[0-9a-z]{0,8}$', '邮箱: ', '输入提示: 邮箱不能为空,输入r返回上级菜单')
            if mail == 'r':
                flag = False
                continue

            address = mylib.validate_input(r'^.+$', '住址: ', '输入提示: 住址不能为空,输入r返回上级菜单')
            if address == 'r':
                flag = False
            # 调用ac对象的insert_account方法添加用户
            res, msg = ac.insert_account(cardid, name, tel, mail, address)
            input('%s,按任意键继续' %msg)
            logger.info('atm_admin添加账户:%s,%s' %(cardid, msg))
Пример #18
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))
Пример #19
0
 def change_max_balance(account):
     '''
     修改可用额度函数
     :param account: 欲修改的函数
     :return: 无
     '''
     new_max_balance = mylib.validate_input('^\d+[.]{0,1}\d+$', '请输入新的用户额度: ') # 获取用户输入的新的可用额度
     if new_max_balance != 'r':
         # 修改用户可用额度,并更新
         account['max_balance'] = float(new_max_balance)
         res, msg = ac.update_account(account)
         if res:
             input('%s,卡号为%s的用户额度已经调整为%s,按任意键继续' %(msg, account['cardid'], account['max_balance']))
             logger.info('atm_admin调整用户额度:%s,%s,调整为%s' %(account['cardid'], msg,account['max_balance']))
         else:
             input('%s,按任意键继续' %msg)
             logger.info('atm_admin调整用户额度:%s,%s' %(account['cardid'], msg))
Пример #20
0
 def change_max_balance(account):
     '''
     修改可用额度函数
     :param account: 欲修改的函数
     :return: 无
     '''
     new_max_balance = mylib.validate_input('^\d+[.]{0,1}\d+$', '请输入新的用户额度: ') # 获取用户输入的新的可用额度
     if new_max_balance != 'r':
         # 修改用户可用额度,并更新
         account['max_balance'] = float(new_max_balance)
         res, msg = ac.update_account(account)
         if res:
             input('%s,卡号为%s的用户额度已经调整为%s,按任意键继续' %(msg, account['cardid'], account['max_balance']))
             logger.info('atm_admin调整用户额度:%s,%s,调整为%s' %(account['cardid'], msg,account['max_balance']))
         else:
             input('%s,按任意键继续' %msg)
             logger.info('atm_admin调整用户额度:%s,%s' %(account['cardid'], msg))
Пример #21
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
Пример #22
0
 def remove_account(account):
     '''
     注销用户函数
     :param account: 欲注销的账户
     :return: 是否删除了账户,包括取消注销,如果取消注销账户也返回False
     '''
     # 获取确认
     chose = mylib.validate_input('^[y]$', '请确认是否注销卡号为%s的用户(y/n): ' %account['cardid'], back_str = 'n')
     if chose == 'y':
         # 调用ac对象的del_account方法删除账户
         res, msg = ac.del_account(account['cardid'])
     else:
         # 如果用户输入的是n说明要取消注销用户
         return False
     if res:
         input('%s,卡号为%s的用户已经删除,按任意键返回账户列表' %(msg, account['cardid']))
         logger.info('atm_admin注销账户:%s,%s' %(account['cardid'], msg))
         return True
     else:
         input('%s,按任意键继续' %msg)
         logger.info('atm_admin注销账户:%s,%s' %(account['cardid'], msg))
         return False
Пример #23
0
 def shopping_cart():
     '''
     购物车函数
     :return: 无
     '''
     while True:
         total = show_shopping_cart() # 调用打印购物车函数,并返回购物车总金额
         chose = input("请选择您的操作:").strip() # 获取用户输入操作选项
         if chose == 'e': # 判断用户输入
             # 选择e,清空购物车
             if total != 0: # 判断购物车是否为空
                 # 购物车不为空
                 confirm = mylib.validate_input('^[y]$', '请确认是否清空购物车(y/n): ', back_str = 'n') #获取用户确认
                 if confirm == 'y': # 判断用户确认
                     # 确认清空
                     shopping.empty_cart() # 调用goods对象的del_all_cart方法清空购物车
                     if shopping.get_crurrent_customer():
                         logger.info('用户%s清空购物车' %(shopping.get_crurrent_customer()['username']))
                     else:
                         logger.info('游客清空购物车')
                     input('购物车已经清空,按任意键继续')
                 else:
                     input('清空购物车已经取消,按任意键继续')
             else:
                 input('购物车是空的,快去血拼吧,按任意键继续')
         elif chose == 'p':
             # 选择p,支付
             if shopping.get_crurrent_customer():
                 if total != 0:
                     res = atm.pay_api('65商城购物', total)
                     if res:
                         shopping.empty_cart()
                         logger.info('用户%s成功支付%s' %(shopping.get_crurrent_customer()['username'], total))
                         input('支付成功,按任意键返回上级菜单')
                         break
                     else:
                         input('支付失败,按任意键继续')
                 else:
                     input('您的购物车还是空空如也,快去血拼吧!,按任意键继续')
             else:
                 input('您还没有登录,请先登录')
         elif chose == 'r':
             # 选择r退出购物车循环,返回上一级菜单
             break
         elif chose == 'd':
             del_chose = mylib.validate_input('^\d$', '请输入编号(输入r返回): ')
             if del_chose == 'r':
                 continue
             else:
                 cart_list = shopping.get_cart()
                 gname = cart_list[int(del_chose) - 1]['name']
                 confirm = mylib.validate_input('^[y]$', '请确认删除1个%s(y/n): ' %gname, back_str = 'n')
                 if confirm == 'y':
                     gid = cart_list[int(del_chose) - 1]['id']
                     res, msg = shopping.del_goods_from_cart(gid)
                     if shopping.get_crurrent_customer():
                         logger.info('用户%s删除购物车内%s ' %(shopping.get_crurrent_customer()['username'], gname))
                     else:
                         logger.info('游客删除购物车内%s' %gname)
                     input(msg)
                 else:
                     input('删除操作已经取消,按任意键继续')
Пример #24
0
 def shopping_cart():
     '''
     购物车函数
     :return: 无
     '''
     while True:
         total = show_shopping_cart()  # 调用打印购物车函数,并返回购物车总金额
         chose = input("请选择您的操作:").strip()  # 获取用户输入操作选项
         if chose == 'e':  # 判断用户输入
             # 选择e,清空购物车
             if total != 0:  # 判断购物车是否为空
                 # 购物车不为空
                 confirm = mylib.validate_input('^[y]$',
                                                '请确认是否清空购物车(y/n): ',
                                                back_str='n')  #获取用户确认
                 if confirm == 'y':  # 判断用户确认
                     # 确认清空
                     shopping.empty_cart()  # 调用goods对象的del_all_cart方法清空购物车
                     if shopping.get_crurrent_customer():
                         logger.info(
                             '用户%s清空购物车' %
                             (shopping.get_crurrent_customer()['username']))
                     else:
                         logger.info('游客清空购物车')
                     input('购物车已经清空,按任意键继续')
                 else:
                     input('清空购物车已经取消,按任意键继续')
             else:
                 input('购物车是空的,快去血拼吧,按任意键继续')
         elif chose == 'p':
             # 选择p,支付
             if shopping.get_crurrent_customer():
                 if total != 0:
                     res = atm.pay_api('65商城购物', total)
                     if res:
                         shopping.empty_cart()
                         logger.info(
                             '用户%s成功支付%s' %
                             (shopping.get_crurrent_customer()['username'],
                              total))
                         input('支付成功,按任意键返回上级菜单')
                         break
                     else:
                         input('支付失败,按任意键继续')
                 else:
                     input('您的购物车还是空空如也,快去血拼吧!,按任意键继续')
             else:
                 input('您还没有登录,请先登录')
         elif chose == 'r':
             # 选择r退出购物车循环,返回上一级菜单
             break
         elif chose == 'd':
             del_chose = mylib.validate_input('^\d$', '请输入编号(输入r返回): ')
             if del_chose == 'r':
                 continue
             else:
                 cart_list = shopping.get_cart()
                 gname = cart_list[int(del_chose) - 1]['name']
                 confirm = mylib.validate_input('^[y]$',
                                                '请确认删除1个%s(y/n): ' % gname,
                                                back_str='n')
                 if confirm == 'y':
                     gid = cart_list[int(del_chose) - 1]['id']
                     res, msg = shopping.del_goods_from_cart(gid)
                     if shopping.get_crurrent_customer():
                         logger.info(
                             '用户%s删除购物车内%s ' %
                             (shopping.get_crurrent_customer()['username'],
                              gname))
                     else:
                         logger.info('游客删除购物车内%s' % gname)
                     input(msg)
                 else:
                     input('删除操作已经取消,按任意键继续')
Пример #25
0
    def register():
        '''
        注册用户函数
        :return: 无
        '''
        customer = shopping.get_crurrent_customer()  # 获取当前用户
        # 判断当前用户是否存在,如果存在说明已经登录,将不能注册新的用户
        if not customer:
            flag = True
            while flag:
                # 获取用户输入的基本信息,任何一个环节输入r将取消注册,返回主菜单
                username = mylib.validate_input(
                    r'^\w{1,15}$', '用户名:',
                    '输入提示: 用户名必须是数字和字母的组合,长度不超过15个字符,输入r返回上级菜单')
                if username == 'r':
                    flag = False
                    continue
                if cu.check_username(username):
                    input('用户名已经存在,请重新输入,按任意键继续')
                    continue

                while True:
                    password = mylib.validate_input(
                        r'^.{6,15}$',
                        '密码: ',
                        '输入提示: 密码长度介于6~15个字符,输入r返回上级菜单',
                        is_pass=True)
                    if password == 'r':
                        flag = False
                        break
                    confirm_password = mylib.validate_input(
                        r'^.{6,15}$',
                        '确认密码: ',
                        '输入提示: 确认密码必须与密码一致,输入r返回上级菜单',
                        is_pass=True)
                    if password == 'r':
                        flag = False
                        break
                    if password == confirm_password:
                        break
                    else:
                        input('密码与确认密码不一致,按任意键重新输入')
                if not flag:
                    continue

                name = mylib.validate_input(
                    r'^.{1,10}$', '姓名: ', '输入提示: 姓名不能为空,长度不能超过10个字符,输入r返回上级菜单')
                if name == 'r':
                    flag = False
                    continue

                tel = mylib.validate_input(r'^1([358]\d{9})$', '联系电话: ',
                                           '输入提示: 联系电话为手机号,长度为11位,输入r返回上级菜单')
                if tel == 'r':
                    flag = False
                    continue

                mail = mylib.validate_input(
                    r'^[0-9.a-z]{0,26}@[0-9.a-z]{0,20}.[0-9a-z]{0,8}$', '邮箱: ',
                    '输入提示: 邮箱不能为空,输入r返回上级菜单')
                if mail == 'r':
                    flag = False
                    continue

                address = mylib.validate_input(r'^.+$', '住址: ',
                                               '输入提示: 住址不能为空,输入r返回上级菜单')
                if address == 'r':
                    flag = False
                # 调用cu对象的insert_customer方法创建用户
                res, msg = cu.insert_customer(username, password, name, tel,
                                              mail, address)
                input('%s,按任意键继续' % msg)
                logger.info('注册用户:%s,%s' % (username, msg))
        else:
            input('您已经登录商城,如需要注册请退出登录')