Example #1
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('您已经登录,不能重复登录,按任意键继续')
 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('您已经登录,不能重复登录,按任意键继续')
    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('您已经登录商城,如需要注册请退出登录')
Example #4
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('原密码错误,按任意键继续')
 def logout():
     '''
     注销函数
     :return: 无
     '''
     # 获取当前用户
     customer = shopping.get_crurrent_customer()
     # 判断是否的登录,只有登录的情况下才能注销
     if customer:
         # 调用shopping对象的logout方法退出登录
         shopping.logout()
         input('注销成功,按任意键继续')
         logger.info('用户退出登录:%s' %(customer['username']))
     else:
         input('您还没有登录,按任意键继续')
Example #6
0
 def logout():
     '''
     注销函数
     :return: 无
     '''
     # 获取当前用户
     customer = shopping.get_crurrent_customer()
     # 判断是否的登录,只有登录的情况下才能注销
     if customer:
         # 调用shopping对象的logout方法退出登录
         shopping.logout()
         input('注销成功,按任意键继续')
         logger.info('用户退出登录:%s' % (customer['username']))
     else:
         input('您还没有登录,按任意键继续')
 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('原密码错误,按任意键继续')
Example #8
0
    def print_welcome():
        '''
        输出系统信息和用户信息
        :return: 无
        '''
        customer = shopping.get_crurrent_customer()  # 获取当前用户所有信息
        if not customer:
            customer = {"name": "游客", "cart": []}
        #print(account)
        welcome_info = '''
**********************************
* %s *
* %s *
* %s *
**********************************''' % (
            mylib.myljust('欢迎来到65商城', 30), mylib.myljust('Version: 2.0', 30),
            mylib.myljust('%s 您好' % customer['name'], 30))
        print(welcome_info)
    def print_welcome():
        '''
        输出系统信息和用户信息
        :return: 无
        '''
        customer = shopping.get_crurrent_customer() # 获取当前用户所有信息
        if not customer:
            customer = {
                "name": "游客",
                "cart": []
            }
        #print(account)
        welcome_info = '''
**********************************
* %s *
* %s *
* %s *
**********************************''' %(mylib.myljust('欢迎来到65商城', 30), mylib.myljust('Version: 2.0', 30), mylib.myljust('%s 您好' %customer['name'], 30))
        print(welcome_info)
 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('删除操作已经取消,按任意键继续')
 def shop():
     '''
     购物函数
     :return: 无
     '''
     # 获取所有商品列表
     all_goods = goo.get_all_goods()
     # 初始化页码
     page = 1
     flag = True
     while flag:
         #all_goods = goods.get_all_goods()
         if all_goods:
             # 如果商品列表不为空显示商品信息
             # 分页商品列表,获取分页后的商品列表及最多可以分多少页
             res_list, max_page = mylib.pagination(all_goods, conf.MAX_PER_PAGE, page)
             # 输出分页后的商品列表
             print("商品列表")
             print('-' * 80)
             print(' %s %s %s %s %s' %(mylib.myljust('序号', 6), mylib.myljust('编号', 7), mylib.myljust('商品名', 45), mylib.myljust('价格', 10), mylib.myljust('分类', 8)))
             for num, goods in enumerate(res_list, 1):
                 print(' %s   %s %s %s %s' %(mylib.myrjust(str(num), 4), mylib.myljust(goods['id'], 7), mylib.myljust(goods['name'], 45), mylib.myljust(str(goods['price']), 10), mylib.myljust(goods['class'], 6)))
             print('-' * 80)
             print(mylib.myrjust('当前第%s页/共%s页' %(page, max_page), 80))
             print()
             # 获取用户输入的操作选项,输入序号表示选定商品
             chose = input('操作提示:\n 输入相应序号选择商品\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
             elif  chose in list(map(lambda x: str(x), range(1, len(res_list) + 1))):
                 # 如果选择的是商品序号,说明选定该商品
                 # 获取选定的商品
                 chose_goods = res_list[int(chose) - 1]
                 do_flag = True
                 while do_flag:
                     # 显示商品信息
                     show_goods_info(chose_goods)
                     # 获取用户操作选项
                     do_chose = print_menu(['加入购物车', '返回'])
                     if do_chose == '1':
                         # 调用shopping对象add_to_shopping_cart将选定的商品加入到购物车
                         shopping.add_to_shopping_cart(chose_goods, 1)
                         if shopping.get_crurrent_customer():
                             logger.info('用户%s将%s添加到购物车' %(shopping.get_crurrent_customer()['username'], chose_goods['name']))
                         else:
                             logger.info('游客将%s添加到购物车' %chose_goods['name'])
                         input('成功将%s加入购物车,按任意键继续' %chose_goods['name'])
                     elif do_chose == '2':
                         do_flag = False
                     else:
                         input('输入错误,按任意键继续')
             else:
                 input('输入错误,任意键')
         else:
             input('商品列表为空')
             flag = False
Example #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('您已经登录商城,如需要注册请退出登录')
Example #13
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('删除操作已经取消,按任意键继续')
Example #14
0
 def shop():
     '''
     购物函数
     :return: 无
     '''
     # 获取所有商品列表
     all_goods = goo.get_all_goods()
     # 初始化页码
     page = 1
     flag = True
     while flag:
         #all_goods = goods.get_all_goods()
         if all_goods:
             # 如果商品列表不为空显示商品信息
             # 分页商品列表,获取分页后的商品列表及最多可以分多少页
             res_list, max_page = mylib.pagination(all_goods,
                                                   conf.MAX_PER_PAGE, page)
             # 输出分页后的商品列表
             print("商品列表")
             print('-' * 80)
             print(' %s %s %s %s %s' %
                   (mylib.myljust('序号', 6), mylib.myljust('编号', 7),
                    mylib.myljust('商品名', 45), mylib.myljust(
                        '价格', 10), mylib.myljust('分类', 8)))
             for num, goods in enumerate(res_list, 1):
                 print(' %s   %s %s %s %s' %
                       (mylib.myrjust(str(num),
                                      4), mylib.myljust(goods['id'], 7),
                        mylib.myljust(goods['name'], 45),
                        mylib.myljust(str(goods['price']), 10),
                        mylib.myljust(goods['class'], 6)))
             print('-' * 80)
             print(mylib.myrjust('当前第%s页/共%s页' % (page, max_page), 80))
             print()
             # 获取用户输入的操作选项,输入序号表示选定商品
             chose = input(
                 '操作提示:\n 输入相应序号选择商品\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
             elif chose in list(
                     map(lambda x: str(x), range(1,
                                                 len(res_list) + 1))):
                 # 如果选择的是商品序号,说明选定该商品
                 # 获取选定的商品
                 chose_goods = res_list[int(chose) - 1]
                 do_flag = True
                 while do_flag:
                     # 显示商品信息
                     show_goods_info(chose_goods)
                     # 获取用户操作选项
                     do_chose = print_menu(['加入购物车', '返回'])
                     if do_chose == '1':
                         # 调用shopping对象add_to_shopping_cart将选定的商品加入到购物车
                         shopping.add_to_shopping_cart(chose_goods, 1)
                         if shopping.get_crurrent_customer():
                             logger.info(
                                 '用户%s将%s添加到购物车' %
                                 (shopping.get_crurrent_customer()
                                  ['username'], chose_goods['name']))
                         else:
                             logger.info('游客将%s添加到购物车' %
                                         chose_goods['name'])
                         input('成功将%s加入购物车,按任意键继续' % chose_goods['name'])
                     elif do_chose == '2':
                         do_flag = False
                     else:
                         input('输入错误,按任意键继续')
             else:
                 input('输入错误,任意键')
         else:
             input('商品列表为空')
             flag = False