• ATM+购物车基本思路流程


    ATM三层架构思路:

    启动文件

    首先,创建一个start.py作为整个项目启动的启动文件。
    然后导入os和sys模块,从core中导入src,也就是用户视图层。
    然后添加解释器的环境变量,再开始执行项目函数。
    在src.py 用户视图层中,先写好各个功能函数名,然后创建一个函数功能字典。
    然后就是视图层的主程序,打印选择列表让用户选择,根据选择的编号来调用不同的功能函数。
    

    配置信息

    在conf的setting.py中,编写配置文件。
    写好项目的根目录路径BASE_PATH。
    写好商品信息路径GOODS_PATH。
    写好用户信息路径USER_DATA_PATH
    然后写上日志配置(日志格式可以复制粘贴过来)
    

    公共方法

    在lib的common.py中存放公共方法。
    导入conf的settings配置。
    写上用户的登录认证装饰器。
    导入hashlib模块,写上密码的md5加密,以json格式存储密码。
    导入logging.config,添加日志功能,在接口层使用。
    

    商品信息

    在db的goods_list.json中编写商品数据,以json的格式存储:
    {
      "0": {"goods_name": "logitech-G703", "price": 549},
      "1": {"goods_name": "Antec-HCG750W", "price": 799},
      "2": {"goods_name": "ROG-M11E-Z390", "price": 6999},
      "3": {"goods_name": "G.SKILL-16G-RGB", "price": 769},
      "4": {"goods_name": "Intel-i9-9900KF", "price": 3599},
      "5": {"goods_name": "SAMSUNG-970Pro-1T", "price": 2699},
      "6": {"goods_name": "Segotep-K1(ATX3.0)", "price": 499},
      "7": {"goods_name": "ROG-RTX-2080Ti-11G", "price": 11999},
      "8": {"goods_name": "CHERRY-MX6.0-BLUE RGB", "price": 1399},
      "9": {"goods_name": "ASUS-ROG-360mm-RGB Aura", "price": 2299},
      "10": {"goods_name": "SAMSUNG-27inch-Space-2K/144Hz", "price": 3499}
    }
    

    数据处理层

    在db的db_handler.py 数据处理层中,导入json和os模块,从conf中导入settings配置。
    编写查看数据函数,接收接口层传过来的username用户名,拼接用户json文件路径。
    校验用户json文件,打开数据,并返回给接口层。
    编写保存数据函数,用于添加新数据或者更新数据。
    拼接用户的数据字典,保存用户数据。
    编写获取商品数据函数,用于获取商品数据。
    商品数据也是以json格式读取的。
    

    注册功能

    编写interface的user_interface.py的注册接口。
    查看用户是否存在,若存在,返回“用户名已存在!”
    若不存在,就编写一个用户字典保存为“用户名.json”。
    其中,如果用户名是“admin”,就是管理员,字典信息中的“is_admin”为“True”。
    然后调用数据处理层的db_handler的save功能进行保存。
    在core的src.py 用户视图层中,编写注册函数。
    先定义一个全局遍历login_user = None,用来记录用户是否已登录。
    让用户输入用户名和密码进行注册,2次密码必须相同。
    调用接口层的注册接口,将用户名与密码交给接口层来进行处理。
    输入的用户名如果是admin,就是管理员,其余是普通用户。
    根据flag判断用户注册是否成功,flag控制break的结束。
    

    登录功能

    编写interface的user_interface.py的登录接口。
    先调用数据处理层的db_handler的select功能查看当前用户数据是否存在。
    如果存在,就继续执行,如果不存在,就输出“用户不存在,请重新输入!”
    再根据get用户字典的‘locker’的True或False判断用户是否被冻结。
    然后给用户的密码做一次加密,和取过来的加密的用户密码比对,查看是否一致。
    如果一致,就登录成功;如果不一致,登录失败。
    在core的src.py 用户视图层中,编写登录函数。
    让用户输入用户名和密码。
    调用接口层的登录接口,将用户名与密码交给接口层来进行处理。
    输入的用户名如果是admin,就是管理员,其余是普通用户。
    根据flag判断用户注册是否成功,flag控制break的结束。
    

    查看余额功能

    编写interface的user_interface.py的查看余额接口。
    编写user_dic调用数据处理层的db_handler的select功能查看当前用户的余额。
    返回给用户视图层。
    在core的src.py 用户视图层中,编写查看余额函数。
    只有登录的用户才能查看。
    调用接口层的查看余额接口,传入当前登录的用户名。
    打印用户名和用户金额。
    

    提现功能

    编写interface的user_interface.py的查看提现接口。
    编写user_dic调用数据处理层的db_handler的select功能查看当前用户的余额。
    把当前余额变成整型,然后计算手续费。
    判断用户金额是否足够,如果足够,就修改用户字典中的金额,如果不足够,就退出并提示“余额不足!”
    记录流水,调用数据处理层的db_handler的save和update功能保存并更新数据。
    将结果返回给用户视图层。
    在core的src.py 用户视图层中,编写提现函数。
    只有登录的用户才能提现。
    让用户输入提现金额,判断用户输入的金额是否是数字,如果不是,就重新输入。
    用户提现金额,将提现的金额交付给接口层来处理,传入当前登录的用户名。
    调用接口层的查看余额接口,传入当前登录的用户名。
    打印用户名和提现信息和余额信息。
    

    还款功能

    编写interface的user_interface.py的查看还款接口。
    编写user_dic调用数据处理层的db_handler的select功能查看当前用户的余额。
    把当前余额变成整型,然后计算还款额。
    记录流水,调用数据处理层的db_handler的save和update功能保存并更新数据。
    将结果返回给用户视图层。
    在core的src.py 用户视图层中,编写还款函数。
    只有登录的用户才能提现。
    让用户输入提现金额,判断用户输入的金额是否是数字,如果不是,就重新输入。
    用户还款金额,将还款的金额交付给接口层来处理,传入当前登录的用户名。
    调用接口层的查看余额接口,传入当前登录的用户名。
    打印用户名和还款信息和余额信息。
    

    转账功能

    编写interface的bank_interface.py的转账接口。
    编写login_dic和to_user_dic调用数据处理层的db_handler的select功能。
    获取“当前用户”和“目标用户”字典,判断目标用户是否存在,若用户存在,则判断“当前用户转账金额”是否足够。
    若足够,给当前用户的数据,做减钱操作;给目标用户的数据,做加钱操作,然后记录双方流水。
    调用数据处理层的db_handler的save功能保存数据。
    将结果返回给用户视图层。
    在core的src.py 用户视图层中,编写转账函数。
    只有登录的用户才能提现。
    判断用户输入金额是否是数字或者>0,如果不是,就重新输入。
    让用户输入转账的用户和金额。将输入的信息交付给接口层来处理,传入当前登录的用户名、对方用户名、金额。
    调用接口层的,打印用户名和还款信息和余额信息。
    

    流水功能

    编写interface的bank_interface.py的查看流水接口。
    编写user_flow_dic字典,调用调用数据处理层的db_handler的select功能,传入当前用户。
    将结果返回给用户视图层。
    在core的src.py 用户视图层中,编写查看流水函数。
    调用interface的bank_interface.py接口,传入当前用户。
    调用流水接口,输出流水信息。
    

    购物功能

    编写interface的shop_interface.py的购物接口。
    编写goods_dic字典,调用数据处理层的db_handler的select_goods功能查看商品信息。
    将结果返回给用户视图层。
    编写interface的shop_interface.py的add_shop_car_interface购物车添加接口。
    将用户视图层传来的视频信息存入字典。
    如果商品不在购物车中则直接加入,商品在购物车中,修改商品数量以及总价。
    将结果返回给用户视图层。
    在core的src.py 用户视图层中,编写购物函数。
    调用interface的bank_interface.py接口,获取全部商品信息并打印。
    将对应编号的商品加入购物车,调用add_shop_car_interface购物车添加接口。
    调用购物车添加接口,已经入购物车的信息。
    

    购物车结算功能

    编写interface的shop_interface.py的查看购物车接口。
    编写user_dic字典,调用调用数据处理层的db_handler的select功能,传入当前用户。
    编写shop_car_dic字典,取出user_dic字典中的"shop_car",然后记录流水信息。
    将结果返回给用户视图层。
    在core的src.py 用户视图层中,编写查看购物车函数。
    调用interface的shop_interface.py接口,获取用户字典里的"shop_car"。
    打印购物车内的信息,让用户选择要购买的购物车内的商品ID,输入c清空购物车,输入q退出该界面。
    如果ID不存在,就跳过本次循环,输出信息“商品不存在”。
    获取选择付款商品的商品信息并打印。
    

    管理员功能

    编写interface的admin_interface.py的查看管理员接口。
    编写4种功能:添加用户直接调用注册函数;修改额度调用用户字典直接修改,冻结和解冻用户修改用户字典的“locker”的bool值。
    将结果返回给用户视图层。
    在core下单独编写一个admin.py。
    编写4个功能函数,调用各个接口。
    编写管理员功能字典:
    admin_dic = {
        '1': add_user,
        '2': change_balance,
        '3': lock_user,
        '4': unlock_user
    }
    编写管理员视图和功能选项,打印选择列表让用户选择,根据选择的编号来调用不同的功能函数。
    在core的src.py 用户视图层中,编写管理员函数。
    直接调用core下的admin.py的admin.run()函数执行功能。
    如果用户名是admin的话,就是管理员,如果不是,就是普通用户,没有资格使用该功能。
  • 相关阅读:
    springcloud之配置中心和消息总线(配置中心终结版)
    yaml
    RESTful API
    单元测试Junit5
    IDEA社区版创建web项目
    Mybatis常见面试题
    mybatis逆向工程
    mybatis注解
    延迟加载
    缓存
  • 原文地址:https://www.cnblogs.com/2722127842qq-123/p/13392227.html
Copyright © 2020-2023  润新知