python做学程序编写——ATM

ATM

(1)作业需求:

  1. 额度 15000或自定义
  2. 实现购物商城,买东西加入 购物车,调用信用卡接口结账
  3. 可以提现,手续费5%
  4. 支持多账户登录
  5. 支持账户间转账
  6. 记录每月日常消费流水
  7. 提供还款接口
  8. ATM记录操作日志
  9. 提供管理接口,包括添加账户、用户额度,冻结账户等。。。
  10. 用户认证用装饰器。

(2)作业完成情况:

  1. 额度 15000
  2. 实现购物商城,买东西加入 购物车,调用信用卡接口结账
  3. 可以提现,手续费5%
  4. 支持多账户登录
  5. 支持账户间转账
  6. 记录每月日常消费流水
  7. ATM记录操作日志
  8. 提供还款接口
  9. 用户认证用装饰器

(3)编写感想:

  1. 如果需要预留接口,建议编写时候统一使用相对路径方便调用:
    import os
    import sys
    BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))
    sys.path.append(BASE
    DIR)
  2. 记录相关内容时候可以使用logging模块,以为案例:
     1 import logging
     2 logger = logging.getLogger('操作')
     3 loggers = logging.getLogger('流水')
     4 logger.setLevel(logging.DEBUG)
     5 loggers.setLevel(logging.DEBUG)
     6 fh = logging.FileHandler("../log/操作" , encoding='utf-8')
     7 ch = logging.FileHandler("../log/流水" , encoding='utf-8')
     8 fh.setLevel(logging.DEBUG)
     9 ch.setLevel(logging.DEBUG)
    10 formatter = logging.Formatter('%(asctime)s - %(name)s - %(message)s - %(module)s - %(lineno)d')
    11 formatters = logging.Formatter('%(asctime)s - %(name)s - %(message)s')
    12 fh.setFormatter(formatter)
    13 ch.setFormatter(formatters)
    14 logger.addHandler(fh)
    15 loggers.addHandler(ch)

     


    相关资料:
    http://www.cnblogs.com/alex3714/articles/5765046.html
  3. 装饰器,简单的来讲就是未改变函数代码情况下功能累加的作用。不过没有试过装饰器是否可以反复装饰。本来已经写相关登录验证,但为了方便用装饰器正佳重复扣款免密码功能。
     1 user_start = False
     2 def long_deco(func):
     3     def deco (*args,**kwargs):
     4         global user_start
     5         if user_start == False:
     6             return func(*args,**kwargs)
     7         else:
     8             p = open_date.open_db(*args)
     9             name_dict = eval(p)
    10             return name_dict
    11     return deco
    12 @long_deco
    13 def login (name_in=None):
    14     name_dict = {}
    15     wrong_number = 0
    16     if  open_date.open_db(name_in) == None:
    17         print("没有此然账户")
    18         return None
    19     else:
    20         p =  open_date.open_db(name_in)
    21     name_dict = eval(p)
    22     task = False
    23     while task is False:
    24         passwd_in = input("输入密码:")
    25         passwd_in = str(passwd_in)
    26         if name_dict['password'] == passwd_in:
    27             print("登录成功")
    28             log.logger.info('%s登录 余额%s'%(name_in,name_dict['balance']))
    29             print("可用余额:",name_dict['balance'])
    30             task = True
    31             global user_start
    32             user_start = True
    33             return name_dict
    34         else:
    35             print("密码不正确")
    36             wrong_number += 1
    37             log.logger.debug("%s密码不正确"%(name_in))
    38             if  wrong_number == 3 :
    39                 task = True
    40                 return None

     

posted on 2017-01-16 21:33  无上莫名  阅读(438)  评论(0编辑  收藏  举报

导航