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框架参考此图

购物车框架参考此图(购物车作业的思路)

  1. 项目目录搭建之接口 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))

  1. 密码验证加密模块很多地方要用到,要写在公共文件里,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

思路理清楚之后就是代码练习.

posted @ 2022-04-06 00:25  Yietong  阅读(30)  评论(0)    收藏  举报