ATM项目
项目架构设计
三层架构
core目录下的src.py(浏览器/用户视图层)
interface目录下的多个py文件(框架/逻辑接口层)
db目录下db_handler.py(数据库服务/数据处理层)
项目目录搭建
ATM
-bin
-start.py
-conf
-settings.py 一般全大写
-core
-src.py
-interface
-user_interface.py
-bank_interface.py
-shop_interface,py
-admin_interface.py
-db
-userinfo.txt
-db_handler.py
-log
-log.log
-lib
-common.py
-README
-requirements.txt
项目功能搭建
1.注册功能
2.登陆功能
3.查看余额
4.提现功能
5.还款功能
6.转功能
7.查看流水-记录日常流水
8.添加购物车功能
9.查看购物车功能
10.结算购物车功能
11.管理员功能-添加账户、用户额度、冻结账户
代码实现:
1.项目搭建
2.功能搭建
3.分步实现功能
1.注册功能(user_interface.py)
""" 牢记三层结构
1.用户视图层
2.逻辑接口层
3.数据处理层(数据的增删改查)
"""
1.用户视图层
1.1 获得用户信息
1.2 判断两次密码是否一致
1.3 直接调用用户注册接口
1.4 接收返回值并打印
2.逻辑接口层(register_interface)
2.1 判断用户是否存在,调用第三层数据库
2.2 用户存在则返回用户已经存在,结束本次执行代码
2.2 用户不存在,则对用户的密码进行加密 调用公共工具common的加密函数进行加密
2.3 构造用户字典并调用第三次数据处理层进行数据序列化进json文件的存储
2.4 返回用户注册成功
3.数据处理层(数据的增删改查)
3.1 查看用户是否存在,存在则返回给接口层用户字典信息
3.2 拼接路径完成用户注册(用户信息的存储)
2.登录功能(user_interface.py)
1.用户视图层
1.1 获取相关用户信息
1.2 判断用户名是否存在,直接调用用户登录接口
1.3 接收返回值并打印
注意:""" 登录接口返回的数据值有两个,为了保证接口调用返回值的一致性,应该让所有的接口函数返回值个数保持一致,都应该变成两个"""
2.逻辑接口层(login_interface)
2.1 判断用户名是否存在,调用第三层数据的查询
2.2 字典接收第三层返回,判断字典是否有数据,结果为false 返回'用户不存在'
2.3 用户存在,进行校验密码,调用公共工具get_hash对密码进行加密
2.4 判断密码是否正确,正确返回用户登录成功,不正确返回'用户密码错误'
3.数据处理层(数据的增删改查)
3.1 查看用户是否存在,存在则返回给接口层用户字典信息
3.查看流水功能(bank_interface.py)
1.用户视图层
1.1 直接调用查看账户余额的接口
1.2 接收返回值并打印
2.逻辑接口层(check_flow_interface)
2.1 查询当前用户字典数据 调用第三层数据的查询
2.2 利用返回的字典直接查看余额
2.3 将余额返回给第一层供用户浏览
3.数据处理层(数据的增删改查)
3.1 返回给第二层用户字典
4.提现功能(bank_interface.py)
1.用户视图层
1.1 输入用户想要提现的数额withdraw_money
1.2 直接调用提现的接口
1.3 接收返回值并打印
2.逻辑接口层(withdraw_intrface)
2.1 调用common的判断输入的withdraw_money是否整数或小数
2.2 如果withdraw_money不是整数或小数,则return给第一层'请输入符合要求的整数或小数'
2.3 如果withdraw_money符合要求,则查询当前用户字典数据 调用第三层数据的查询,并用字典接收
2.4 计算提现的数目和手续费的总和
2.5 判断提现的总和与用户账户余额比较
2.6 账户余额大于提现总和,账户余额减去提现金额,再重新写入第三层数据库中的用户字典
2.7 返回给第一层'转账成功'
2.8 账户余额于于提现总和 ,直接返回给第一层并提示'账户余额不足,请先充值'
3.数据处理层(数据的增删改查)
3.1 进行用户信息的存储
5.还款功能(bank_interface.py)
1.用户视图层
1.1 输入客户想充值的金额pay_money
1.2 直接调用充值的接口
1.3 接收返回值并打印
2.逻辑接口层(pay_money_interface)
2.1 调用common的判断输入的pay_money是否整数或小数
2.2 如果pay_money不是整数或小数,则return给第一层'请输入符合要求的整数或小数'
2.3 查询当前用户字典数据
2.4 将还款金额加入账户余额中,
2.5 再重新写入第三层数据库
2.6 返回给第一层 '充值成功'
3.数据处理层(数据的增删改查)
3.1 进行用户信息的存储
6.转账功能(bank_interface.py)
1.用户视图层
1.1 获取要转账的用户target_name
1.2 获取转账的金额target_money
1.3 调用转账接口
1.4 接收结果并打印
2.逻辑接口层(transfer_interface)
2.1 传过来的值有 is_login.get('username'),target_name,target_money
2.2 校验被转账用户target_name是否存在 调用第三层数据查询,并用target_dict接收
2.3 判断字典是否为空,取反(not)操作 if not target_dict 为false 则返回第一层 '用户不存在'
2.4 判断结果为True,则调用common的判断输入的target_money是否整数或小数
2.5 如果target_money不是整数或小数,则return给第一层'请输入符合要求的整数或小数'
2.6 target_money是整数或小数,调用第三层数据库获取转账人的信息,并用user_dict接收
2.7 判断当前账户余额是否充足 当余额大于target_money,转账人余额减掉target_money,并调用第三层序列化更新当前用户is_login.get('username')信息
2.8 被转账人余额加上target_money,并调用第三层序列化更新用户target_name信息
2.9 返回给第一层 '转账成功'
2.10 判断当前账户余额不足 当余额小于target_money,直接返回给第一层'账户余额不足'
3.数据处理层(数据的增删改查)
3.1 查看用户并返回给第二层用户字典target_dict
3.2 查看用户并返回给第二层用户字典user_dict
3.3 进行用户user_dict信息的存储
3.4 进行用户target_dict信息的存储
7.查看流水(bank_interface.py)
1.用户视图层
1.1 直接调用查看的流水接口
1.2 接收结果并打印
2.逻辑接口层(check_flow_interface)
2.1 直接调用第三层数据库信息查看流水信息
2.2 判断用户流水信息是否为空
2.3 无流水信息返回 '该用户暂无流水记录'
2.4 有流水信息直接返回用户的流水信息user_dict.get('water_flow')
3.数据处理层(数据的增删改查)
3.1 查看用户并返回给第二层用户字典user_dict
8.添加购物车功能(shop_interface.py)
1.用户视图层
1.1 直接调用添加购物车接口
1.2 接收结果并打印
2.逻辑接口层(add_shop_car_interface)
2.1 获取商品信息
2.2 循环打印商品信息供用户选择
2.3 获取用户输入的商品编号choice_num
2.4 判断编号是否是纯数字并判断数字是否超出范围
2.5 根据商品编号获取商品信息
2.6 获取想要购买的商品数量good_num并判断商品数量是否是纯数
2.7 构造临时小字典存储商品信息 temp_shop_car
2.8 写入临时小字典中temp_shop_car
2.9 添加结束标志'q' 用于保存购物车数据
2.10 调用第三层获取当前登录用户的字典数据user_data_dict
2.11 获得old_shop_car = user_data_dict.get('shop_car')
2.12 保存购物车数据 判断存之前商品是否已经添加,分别做各自的添加操作
2.13 调用第三层的数据保存函数
2.14 返回给第一层 '添加购物车成功 欢迎下次再来'
3.数据处理层(数据的增删改查)
3.1 查看用户并返回给第二层用户字典user_data_dict
3.2 进行用户user_data_dictt信息的存储
9.查看购物车功能(shop_interface.py)
1.用户视图层
1.1 直接调用查看购物车接口
1.2 接收结果并打印
2.逻辑接口层(check_shop_car_interface)
2.1 调用第三层数据库,获取取当前登录用户的字典数据并用user_dict接收
2.2 获取当前用户购物车数据shop_car
2.3 判断用户购物车是否有数据
2.4 如果购物车有数据,返回购物车信息'shop_car'
2.5 购物车为空,则返回 '暂无购物车数据'
3.数据处理层(数据的增删改查)
3.1 查看用户并返回给第二层用户字典user_dict
10.结算购物车功能(shop_interface.py)
1.用户视图层
1.1 直接调用查看购物车接口
1.2 接收结果并打印
2.逻辑接口层(clear_shop_car_interface)
2.1 调用第三层数据库,获取取当前登录用户的字典数据并用user_dict接收
2.2 获取当前用户购物车数据及账户余额current_balance
2.3 取反操作 如果购物车为空则直接返回 '购物车空空如也'
2.4 统计购物车商品总价total_money
2.5 比较账户余额与商品总价
2.6 当total_money > current_balance时,直接返回 '账户余额不够'
2.7 当total_money < current_balance时,用户的账户余额静减去total_money
2.8 清空购物车user_data_dict['shop_car'] = {} ,并调第三层数据库存储数据
2.9 返回给第一层 '消费的total_money和账户余额'
3.数据处理层(数据的增删改查)
3.1 查看用户并返回给第二层用户字典user_dict
3.2 进行用户user_data_dictt信息的存储
11 .管理员功能
1.用户视图层
2.逻辑接口层
3.数据处理层(数据的增删改查)
标签:py,项目,money,ATM,用户,购物车,调用,interface
From: https://www.cnblogs.com/zhiliaowang/p/16846359.html