ATM和购物车功能

在这里插入图片描述

ATM + 购物车项目

一个项目是如何从无到有的

1、需求分析(需要关注)

额度 15000 或 自定义    --->  注册功能
实现购物商城,买东西加入 购物车,调用 信用卡接口 结账 ----> 购物功能、支付功能
可以提现,手续费5%  ---> 提现功能
支持多账户登录 ---> 登录功能
支持账户间转账 ---> 转账功能
记录消费流水 ---> 记录流水功能
提供还款接口 ---> 还款功能
ATM记录操作日志 ---> 记录日志功能
提供管理接口,包括添加账户、修改用户额度,冻结账户等。。。  ---> 管理员功能(添加账户、修改用户额度,冻结账户)
用户认证用装饰器 ---> 登录认证装饰器‘

# 用户界面允许用户能选择的功能
    1.注册功能
    2.登录功能
    3.查看余额
    4.提现功能
    5.还款功能
    6.转账功能
    7.查看流水
    8.购物功能
    9.查看购物车功能
    10.管理员功能
        - 添加账户、修改用户额度,冻结账户

2、程序的架构设计(需要关注)

- 三层架构(*******)
    - 视图层: 专门用于与用户交互;
        - 展示功能给用户看、接收用户输入的数据、将功能返回的结果展示给用户看的;

    - 接口层: 专门做业务逻辑的处理;
        - 接收到用户输入的数据,进行逻辑判断,然后返回判断后的结果给视图层;

    - 数据层: 专门做数据的处理
        - 增加数据
        - 删除数据
        - 更新数据
        - 查看数据

3、分任务开发

- 项目经理:(项目的负责人)
    - UI(1-2人): 界面设计(app端的界面/web界面)。
    - 前端(1-2人): 拿到UI的设计图纸,开发页面。
    - 后端(2-3人): 开发业务逻辑
    - 运维(1人): 拿到开发好的代码,部署再 “服务器” 中,上线运行

4、测试软件

5、上线运营

6、设计思路

我们主要设计方向在于需求分析以及程序架构设计上,再开始项目的时候,我们应该将分类创建每个功能的文件夹在这个项目中我们创建了如下的文件夹用来存放相关py文件

conf文件夹Config(配置)存放相关配置文件用户、商品文件路径,日志文件配置
core文件夹source(源码)用来存放源代码以区别开其它文件存放需求,登录、注册、转账…
db文件夹database(数据库)组织、存储和管理数据的仓库数据层,查看数据修改数据
inteface文件夹interface(接口)接口文件夹,存放接口文件银行业务接口,用户业务接口,购物业务接口
lib文件夹library(库,图书馆)存放共用方法或者库装饰器,获取用户名,获取日志对象
log文件夹log(日志)用来记录日志用户操作的文档记录用户操作信息

conf文件夹

settings.py

settings.py文件中我们需要配置文件基础文件路径(BASE_PATH)数据文件(db_path)文件路径 和日志文件配置。这里主要使用os库,将db文件夹添加到系统路径

import os
#  定量 基础路径

BASE_PATH = os.path.dirname(os.path.dirname(__file__))

# database文件路径
db_path = os.path.join(BASE_PATH, "db")

core文件夹

src.py

在这个文件中我们主要放置显示层代码,主要是基础交互和一些简单地逻辑判断。

from interface import bank_interface  # 导入接口层
from interface import user_interface
from interface import shop_interface

def sign_up():
    while True:
        up_name = input("请注册您的账号:").strip()
        up_pwd = input("请注册您的密码:").strip()
        reup_pwd = input("请重新输入您的密码:").strip()
        if up_pwd == reup_pwd:
            flag, msg = user_interface.sign_up_interface(up_name, up_pwd)  # 调用接口层
            if flag is True:
                print(msg)
                break
            else:
                print(msg)
        else:
            print("两次输入的密码不一致请重新输入!")
    pass

比如这个注册功能,与用户交互 输入(input)与输出(print)。src文件还有一个功能就是要调用接口层(interface

db文件夹

db_handel + 数据文件

1、db_handel文件为数据层文件,里面主要存放,调用数据的功能,比如说查看资料(select),保存文件(save),或者查看商品(view_product),这三个方法都是对文件的操作,with open…

2、在这个文件夹中主要是存放数据文件比如说用户信息文件(user.json),商品信息文件(商品.json

import json
import os

from conf import settings

path = settings.db_path  # 路径配置


# 查看资料  文件操作
def select(name):
    if os.path.exists(path + "\%s.json" % name):
        with open(path + "\%s.json" % name, "r", encoding="utf-8")as f:
            user_dic = json.load(f)
            return user_dic

interface文件夹

interface文件夹存放的是,各种接口功能,接口功能调用数据层功能,接口层也是需要分类的,在ATM与购物车中我们有三种内容,每种内容都需要一个接口

1、user_interface

​ 在这个接口中,主要是针对用户功能的,比如说登录sign_in和注册sign_up,拿着个注册功能来说,主要的逻辑判断,以及数据层的导入。

from db import db_handle

def sign_up_interface(name, pwd):
    user_dic = db_handle.select(name)  # 数据层
    if user_dic:
        return False, "该用户已存在"
    else:
        user_info = {"name": name, "password": pwd, "balance": 150000, "flow": [], "shopping": {}, "locked": False}
        db_handle.save(user_info)  # 数据层
        logger_info.info("注册成功")
        return True, "恭喜你注册成功"

2、bank_interface

3、shop_interface

同理,这两个接口的用法也是相同的

lib文件夹

这个文件夹中主要存放公用方法,库啊,装饰器啊,日志配置啊…

common.py文件中

我们在这个文件夹中存放了装饰器,还有日志

import logging.config  # 到处logging模块的配置变量
from conf import settings


def get_logger(user_type):
    # 1) 架子啊logging配置信息
    logging.config.dictConfig(settings.LOGGING_DIC)  # 导入上面定义的logging配置

    # 2) 获取 银行相关的 logger对象
    logger = logging.getLogger(user_type)  # 生成一个log实例

    # 3) logger.info(日志信息)  info:日志的级别
    # [INFO][2020-07-28 12:07:07,097][settings.py:97]tank 购买了 矮根派
    # logger.info('tank 购买了 矮根派')  # 记录该文件的运行状态

    # 4) 返回日志对象
    return logger

log文件夹

access.log 文件 主要是记录日志内容

[2020-07-31 20:31:30,887][MainThread:13124][task_id:user][user_interface.py:14][INFO][注册成功]
[2020-07-31 20:34:02,027][MainThread:17748][task_id:user][user_interface.py:14][INFO][注册成功]
[2020-07-31 20:34:31,708][MainThread:12776][task_id:user][user_interface.py:22][INFO][恭喜您[1]登录成功!]

start.py

相当于我们的执行程序.exe 通过这个执行程序调用core中的代码!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值