ATM项目工程
ATM项目工程
项目地址:https://gitee.com/chi-meng/atm_-shopping_1.0
【一】大逻辑
(1)在主程序文件中创建程序入口
(2)在核心代码文件(视图层)搭建程序框架
(3)进行代码功能分配
- 功能树详解
- ATM 项目根目录
- README.md 项目说明书
- start.py 项目启动文件的创建方式二,直接暴露在最外层
- conf 配置文件
- settings.py
- lib 公共方法文件
- common.py
- core(用户视图层) 存放用户视图层代码文件
- src.py
- interface(逻辑接口层) 存放核心业务逻辑代码
- user_interface.py 用户相关接口
- bank_interface.py 银行相关接口
- shop_interface.py 购物相关接口
- db(数据处理层) 存放数据与数据处理层代码
- db_hander.py 数据处理层代码
- user_data 用户数据
- log 存放日志文件
- bin(启动文件目录) 存放启动文件的方式一,单独创建目录
- main.py
-
README.md
- 存放项目的说明,包括但不限于,程序运行展示
- 存放一些对程序的解释型语句
-
start.py
- 项目启动文件的创建方式二,直接暴露在最外层
- 在整体ATM项目文件夹下创建程序入口
- 好处:
- 省了一步创建文件夹
- 建议用方式一
- 创建bin目录,启动文件在bin目录下
- 好处:
-
conf 配置文件夹 --- 存放配置文件
- settings.py
- 存放设置相关的代码
- 比如日志设置
- 存放设置相关的代码
- settings.py
-
lib 公共方法文件
- common.py
- 存放所有函数或者部分函数公用的函数代码或逻辑
- common.py
-
core(用户视图层) 存放用户视图层代码文件
- src.py
- 存放展示给用户看的代码部分,简单的说就是反馈给用户展示的部分
- 例如,函数主逻辑
- 函数相关的反馈结果的展示
- 存放展示给用户看的代码部分,简单的说就是反馈给用户展示的部分
- src.py
-
interface(逻辑接口层) 存放核心业务逻辑代码
- user_interface.py 用户相关接口
- 用来处理用户相关的主逻辑代码
- 例如,登陆和注册功能
- 将登陆成功或失败后的结果反馈给用户视图层进行展示
- 每个功能的进入接口
- bank_interface.py 银行相关接口
- 用来处理银行相关的逻辑代码
- 例如,银行提款,
- 银行存款
- 银行还款
- shop_interface.py 购物相关接口
- 用来处理购物相关的代码
- 例如处理购物车数据
- 统计消费金额交给银行接口进行处理
- user_interface.py 用户相关接口
-
db(数据处理层) 存放数据与数据处理层代码
- db_hander.py 数据处理层代码
- 用来处理有关数据的存储
- 处理有关数据的查找
- user_data 用户数据
- 存放用户数据的变量值
- db_hander.py 数据处理层代码
-
log 存放日志文件
- 用来存放生成的log日志文件
-
bin(启动文件目录) 存放启动文件的方式一,单独创建目录
- main.py
【二】功能分配
【一】主函数逻辑
-
展示功能菜单
-
为每个功能创建程序入口
-
创建大逻辑函数 - 每个函数都要能反复调用
【二】注册函数
- 用户输入用户名和密码
- 二次校验密码
(1)校验密码交给用户逻面板辑层
- 拿到用户输入的用户名和密码
(2)传给数据处理层
- 传给数据处理层,拿到所有的用户数据
- 根据输入的用户名,读取数据库中的个人全部信息
- 返回全部信息给用户逻面板辑层
(3)拿到数据处理层传回来的用户数据
- 判断用户是否存在
- 用户存在,返回结果并返回展示数据
- 用户不存在,进行注册函数
- 拿到用户输入的用户名和密码
- 为了密码的安全性,进行md5加密
- 从随机产生的验证码中拿到验证码当做盐
(4)将盐和原密码拼接后的密码传递给公用函数文件进行md5加密
- 加密层加密后返回加密的数据
(5)返回用户面板继续进行注册逻辑
- 拿到加密后的密码
- 进行数据库数据格式的拼接组织成完整的用户数据
- 内容包括
- 用户名
- 加密后的密码
- 盐
- 初始化余额
- 流水记录表
- 购物车表
- 默认用户状态(未被锁定)
- 将组织好的数据传给数据处理层
(6)调用数据处理层的数据接口
- 从用户面板拿到传过来的用户数据
- 调用保存数据函数进行数据的存储
- 反馈结果
- 保存成功,提示语
- 未成功,提示语
- 返回用户面板
(7)拿到数据处理层反馈的结果
- 进行日志的录入(可选)
- 反馈结果给视图展示层
(8)接收到用户面板的反馈结果
- 拿到用户面板的反馈结果
- 注册成功
- 打印提示语
- 终止注册
- 注册未成功
- 二次注册
- 注册成功
(9)校验密码两次是否一致
- 不一致则终止循环
- 进行二次用户注册
【三】登录功能
(1)用户输入账号和密码
(2)调用用户面板将数据传给验证函数
(3)用户面板的登录接口拿到输入的账号密码
(4)从数据处理层根据用户名拿到相应的用户数据
(5)判断用户是否存在 - 同时判断用户状态是否被锁定
-
如果用户状态被锁定,返回状态和提示语交给用户视图层进行展示
-
从用户数据中拿到字典中的盐
-
拼接拿到的盐和注册输入的密码
-
将 盐和密码 拼接后的数据传给公用方法中的加密函数进行加密‘
(6)从用户面板接收到加密后的密码进行加密
-
接收到用户面板传过来的加盐的密码
-
进行密码的加密
-
反馈给用户面板层,加密后的密码
(7)用户面板层拿到加密后的数据
-
拿到加密后的数据
-
提取用户数据中存入的密码
-
进行比对,是否一致
-
一致
- 则向用户视图层反馈状态与提示语
- 记录日志(可选)
-
不一致
- 返回状态码,打印提示语,记录日志(可选)
(8)用户不存在
- 反馈状态码并反馈提示语
(9)返回到用户视图层
- 从用户面板层拿到返回的状态码和提示语
- 进行状态码判定
(9.1)用户登陆成功
- 声明全局变量,加载当前用户姓名(不需要密码等信息,需要可以去数据处理层直接调用接口返回数据)
- 只需要知道当前的登录用户是谁即可
- 退出登录功能,返回功能菜单
(9.2)用户登陆失败
- 打印失败信息
- 进行二次登录
【四】额外添加:认证装饰器
以后的每个功能都需要,用户登录后才能使用,因此要加一个认证装饰器
- 认证装饰器属于公共功能 ,存储在公共方法中
(1)套用装饰器模板进行功能扩充
(2)从用户视图层拿到用户登陆用户的姓名
- (全局加载的姓名):只有登录后全局登录用户才会加载
(3)判断全局用户是否存在
(3.1)用户存在
- 进行接下来的功能函数进行调用
(3.2)用户不存在
- 反馈未登录信息,不允许进入功能
- 跳转到登录功能函数
【五】查询余额功能(基于认证装饰器)
银行数据的处理属于银行业务,调用银行逻辑层的银行接口
(1)进入到银行接口,查询余额功能
- 根据传过来的全局登录用户
- 调用数据处理层,拿到对应用户的详细信息
- 反馈给用户视图层,对应用户的对应的余额信息
(2)返回到用户视图层
- 接收到银行接口返回的余额数据
- 对余额数据进行打印数输出
【六】提现功能(基于认证装饰器)
提现功能也是银行的业务,所以调用银行接口的提现业务
(1)首先让用户输入需要体现的金额
- 判断金额是否为数字,不是数字则进行二次输入
(2)将全局用户姓名和输入的提现金额传递给银行的提现接口
- 从用户视图层,拿到用户姓名和提现金额
(3)调用数据处理层的接口
- 拿到用户的全部信息数据
(4)开始进行提现(存在手续费)
-
手续费固定则写死
- 不固定可以添加到配置文件中,根据用户输入的金额,进行动态的手续费利率的获取
-
计算一共需要花费的金额
- 提现钱 + 手续费 = 提现费 * (1+费率)
(5)判断用户的余额是否充足
(5.1)用户余额不足反馈状态和提示信息
(5.2)用户余额充足,提示状态和提示信息
-
对用户数据中的余额数据进行更改
- 用户余额 - 提现 - 手续费
-
得到最终的余额
-
(5.3)记录日志/流水
(6)调用数据处理层进行数据的覆写
- 反馈状态信息 和 提示信息
(7)根据银行提现接口返回的状态和提示语进行输出
- 从银行接口拿到状态和提示语
- 成功体现
- 打印提示语,退出当前功能返回到功能菜单
- 余额不足或者其他原因
- 打印提示语,退出到功能菜单
【七】还款功能(基于认证装饰器)
还款也是银行业务,所以要调用银行接口进行处理
(1)让用户输入还款金额
(1.1)判断输入的是否为数字
(1.2)纠正用户的金额大于 0
(1.3)用户输入金额小于 0 进行二次输入
- 将还款金额和全局登录用户名传递给银行还款接口
(2)从用户视图层拿到传递过来的用户名和还款金额
(3)根据用户名调用数据处理层拿到用户的全部数据
(4)根据用户的全部数据提取到余额数据
- 对用户的余额进行 加钱 操作
(5)记录流水/日志
(5.1)将流水添加到流水列表里
(6)调用数据处理层进行数据的覆写
(7)反馈状态码和提示语给用户视图层
(8)从银行接口拿到反馈的状态和提示语
- 根据状态打印相关的提示语
- 成功充值
- 打印充值成功提示语
- 终止当前功能,返回功能菜单
(9)失败充值(不存在) -
【十】转账功能
转账也是银行业务,所以还是要调用银行接口
(1)用户输入目标账户和目标金额
(1.1)判断金额大于 0 且为数字
- 金额不大于 0 进行二次输入
(2)用户金额大于 0 传递给银行接口 当前登录用户名,目标用户名 ,目标金额
(3)调用数据处理层,拿到当前登录用户的详细数据,和目标用户的详细数据
(3.1)判断目标用户是否存在
- 不存在则反馈数据
(4)用户存在,判断输入的金额是否大于转账用户的余额
(4.1)若余额不充足则终止转账,打印提示语
(5)用户存在进行余额的操作
- 将转账用户的金额进行减钱操作
- 对目标用户进行加钱的操作
(6)记录日志/流水(流水是两个人分别记录,并不能记录单独一条)
(7)调用数据处理层进行数据的覆写
- 覆写当前用户数据
- 覆写目标用户数据
(8)反馈提示语和状态码给用户视图层进行展示
(8.1)用户转账成功
- 打印提示语
- 退出当前功能
(8.2)转账失败
- 打印提示语
【十一】查看流水功能(基于认证装饰器)
查看流水也属于银行业务,所以要调用银行接口
(1)调用银行接口传递给当前登陆用户的姓名
(2)银行查询流水接口拿到用户名
(3)调用数据处理层进行数据的查询,拿到全部用户数据
(4)反馈给用户视图层,用户数据中的流水部分
(5)用户视图层拿到反馈的流水列表
(5.1)流水记录不为空
- 循环打印每一条流水记录
(5.2)流水记录为空
- 打印提示语:流水为空
【十二】购物车功能(基于认证装饰器)--- 单独购物车功能文件
【1】主逻辑:打印商品信息 --- 用户选择商品 --- 添加购物车 --- 结算
-
初始化购物车
-
打印商品信息供用户选择
- 若购物车商品不存在由管理员进行初始化
-
对商品进行选择
-
结算功能
-
添加购物车功能
-
商品编号选择
-
确认编号是否存在
【2】初始化商品数据部分(可选)
- 初始化商品列表
(1)调用数据处理层拿到商品数据
- 如果商品数据存在
- 进行数据的拼接
- 如果商品数据不存在
- 返回空结果
【3】展示商品数据部分(可选)
- 拿到商品详情对商品详情进行数据格式化输出
【4】添加购物车功能
(1)判断用户是否添加过购物车
- 购物车不能为空
- 购物车为空
- 购物车为空则二次选择
(2)调用购物车接口层,购物添加接口(传入用户名和购物车)
- 先根据用户名拿到当前用户的数据详情
- 提取到用户数据中的购物车
(3)循环获取购物车中的键值对,解压赋值出两个变量
- 如果商品存在则商品数量 +1
- 如果商品数量不存在则自动更新默认数据 1
(4)调用数据接口层进行数据的覆写
(5)返回用户状态和提示语
(6)返回购物商城 拿到返回的状态和提示语
(7)添加购物车成功则退出当前功能
(8)失败则打印添加失败,二次执行函数
【5】支付结算功能
(1)判断当前购物车是否为空
- 如果购物车为空,则二次购物
- 返回提示语
(2)购物车不为空则调用购物商城面板层支付接口进行支付(拿到当前用户名和购物车数据)
- 初始化消费总额
(3)对购物车中的值进行提取
- 分别拿到商品数据中的价格和数量
- 计算总额
(4)调用商城接口层进行付费
- 根据用户名拿到用户详细数据
- 判断用户金额是否足够
(4.1)用户金额不足够则返回失败
(4.2)金额足够进行扣款
(5)用户金额减去消费金额,得到日志(或反馈消息)
- 添加日志(可选)
- 添加流水
(6)调用数据处理层进行数据的覆写
- 返回成功状态
(7)返回到商城接口层接收到反馈信息
- 根据状态和提示语进行打印输出
- 支付结束,退出此功能
【十三】查看购物车(基于认证装饰器)
(1)直接调用购物车面板中的查看购物车接口
- 根据用户名调用数据处理层返回用户详细数据
- 根据用户详细数据提取出购物车数据
(2)判断返回的购物车是否为空
- 为空则打印提示语
(3)购物车不为空循环展示购物车中的数据
【十四】管理员功能(基于登录装饰器) --- 单独的文件作为入口
主逻辑
- 创建程序入口
- 创建循环
- 创建功能菜单
【十五】管理员功能之添加新用户
- 直接调用注册接口进行注册
【十六】管理员功能之修改用户额度
(1)管理员输入修改的额度金额 和 要修改额度的用户
(2)调用管理员面板中的修改余额功能接口
(3)从数据处理层拿到用户的全部数据‘
(4)判断用户数据是否存在,不存咋则打印提示语
(5)用户存在对余额进行更改
(6)调用数据处理层进行数据的覆写
(7)反馈结果给管理员层
(8)对管理员面板的信息进行打印输出
【十七】管理员功能之冻结用户
(1)管理员输入需要冻结的用户名
(2)调用管理员面板中的锁定用户接口
(3)调用数据处理层拿到用户的详细数据
(4)判断用户是否存在
(4.1)用户不存在 反馈信息
(5)用户存在,修改用户详细数据中的锁定状态
- 将数据传给数据处理层进行数据的覆写
(6)记录日志,反馈状态和提示语
(7)管理层对反馈的结果进行打印输出
【三】流程图方案设计
【1】三层架构原理
【2】主逻辑
【3】用户视图层
【4】注册逻辑
【5】登录逻辑
【6】登录认证装饰器
【7】查询余额
【8】提款功能
【9】还款功能
【10】转账功能
【11】查看流水类查看购物车
【12】购物功能
【13】管理员功能
本文来自博客园,作者:Chimengmeng,转载请注明原文链接:https://www.cnblogs.com/dream-ze/p/17464644.html