ATM+SHOP_CART 思路
项目大致需求
- 额度15000或自定义
- 支持多账户登录
- 可以查看账户余额
- 可以提现(可自定义手续费比例)
- 提供还款接口
- 支持账户间转账
- 记录每月日常消费流水
- 实现购物商城,买东西加入购物车,调用信用卡接口结账
- 提供管理接口,包括添加账户、用户额度,冻结账户等
- ATM记录操作日志
- 用户认证功能
提炼项目功能
1.用户注册
2.登录功能
3.查看余额
4.余额提现
5.账户充值
6.金额转账
7.查看流水
8.添加购物车
9.查看购物车
10.结算购物车
11.管理员功能

项目大致技术栈 1.python基础核心编程 2.函数(装饰器) 3.常见内置模块(os,sys,json)
1.由于项目较多,需要根据不同的功能进行拆分.----- 项目目录搭建
针对启动脚本文件start.py可以放在bin目录下 也可以直接放在项目根目录
将第二层分为三个文件(根据功能的不同)
start.py
conf
settings.py 设置类的代码:日志格式
lib
common.py 多个功能都需要用到的代码,如登录/密码的反复验证/日志记录等
core
src.py 核心代码:登陆注册/查看账户/存取款/转账/流水/购物车功能/管理员权限等
interface
user_interface 用户层面
bank_interface ATM层面
shop_interface 购物车层面
db_handler 用户信息的存储
log 格式日志 记录各种操作
readme

ATM框架参考此图

购物车框架参考此图(购物车作业的思路)
- 项目目录搭建之接口 interface
user_interface
bank_interface
shop_interface
3.项目功能搭建
[ 核心逻辑板块 core/scr.py ]
空函数 功能字典 while循环 if判断 启动脚本
def register():
pass
def login():
pass
...
功能字典
user_dict = {
'username': username,
'password': pwd,
'balance': balance, # 初始化金额 修改成默认参数防止以后
'flow': [], # 记录用户流水
'shop_car': {}, # 记录购物车数据
'is_lock': False, # 记录账号是否被锁定
'is_admin': False, # 记录是否是管理员
}
while/if:
while True:
# 3.循环打印商品信息供用户选择 最好给商品添加编号
for i, j in enumerate(good_list): # i=0 j=['挂壁面', 3]
print("商品编号:%s | 商品名称:%s | 商品单价:%s" % (i, j[0], j[1]))
# 4.获取用户想要购买的商品编号
choice = input('请输入您想要购买的商品编号或者输入y退出添加>>>:').strip()
# 12.如果是y那么修改用户购物车数据保存
if choice == 'y':
user_dict = db_handler.select(username)
4.启动脚本
sys.path.append(os.path.dirname(file))
- 密码验证加密模块很多地方要用到,要写在公共文件里,common.py
def get_md5(password):
md5 = hashlib.md5()
# 也可以加盐处理
md5.update(password.encode('utf8'))
return md5.hexdigest()
6.登陆器认证装饰
很多功能都要用确保是本人登录状态下才可以进行, 所以要写个登陆装饰器
def login_auth(func_name):
def inner(args, **kwargs):
# 执行被装饰函数之前 可以做的额外操作
# 校验当前用户是否登录(如何判断???>>>:全局变量)
from core import src
if src.is_login.get('username'):
res = func_name(args, **kwargs)
# 执行被装饰函数之后 可以做的额外操作
return res
else:
print('请先登录')
src.login()
return inner
7.日志功能 log
很多地方都需要记录,写在公共文件里,common.py
def get_logger(title):
logging.config.dictConfig(settings.LOGGING_DIC) # 自动加载字典中的配置
logger1 = logging.getLogger(title)
return logger1
8.购物车思路和功能参考昨天的博客
https://www.cnblogs.com/Yietong/articles/16101185.html
9.管理员功能 admin
比较特殊,在ATM项目了 不考虑逻辑, 可手动修改管理员账户 is_admin
思路理清楚之后就是代码练习.

浙公网安备 33010602011771号