【2.0】ATM和购物车项目需求分析

【一】项目大致需求

  • 额度15000或自定义
  • 支持多账户登录
  • 可以查看账户余额
  • 可以提现(可自定义手续费比例)
  • 提供还款接口
  • 支持账户间转账
  • 记录每月日常消费流水
  • 实现购物商城,买东西加入购物车,调用信用卡接口结账
  • 提供管理接口,包括添加账户、用户额度,冻结账户等
  • ATM记录操作日志
  • 用户认证功能

【二】提炼项目功能

1.用户注册
2.登录功能
3.查看余额
4.余额提现
5.账户充值
6.金额转账
7.查看流水
8.添加购物车
9.查看购物车
10.结算购物车
11.管理员功能

【三】项目技术栈(部分)

  • Python基础核心
    • 基本数据类型
    • 流程控制语句
    • Python数据类型的内置方法
    • 文件操作
    • 字符编码
  • 函数
    • 有参有返回值函数
    • 函数的调用方式和返回值
    • 装饰器
  • 常用的内置模块
    • os
    • sys
    • random
    • time
    • logging
    • json

【四】项目架构设计

【1】引言

  • 回顾我们之前的编程经理
    • 面条版
      • 一开始我们不会函数的时候全部都是从头写到尾
    • 函数版
      • 学了函数后我们学会了封装部分功能代码
    • 模块版
      • 学了模块以后我们可以将我们的部分功能封装成模块,在其他位置进行调用
  • 模块版,其实就类似于根据不同的功能划分文件
    • 类似于大公司,将所有员工部门细化
    • 每个部门的每个成员都有自己的事情做

【2】为什么需要分文件(分层)

  • 小公司成员少,不会对部分进行太详细的划分,一个人可能身兼数职,这样可能造成的问题就是一个人的任务太多,根本忙不过来
  • 大公司会将每个部门,和每个部门的成员细化,每个部门和每个成员都有自己的任务,这样各司其职,每个人都负责各自比较擅长的部分,这样会大大提高工作效率,节省时间

【3】如何体会到分层ATM的好处

  • 建议大家没事多敲两遍,因为只有随着你敲得代码多了,哪怕是同一行代码,第一次和第五次的感觉都会不一样,尤其是对于基础不好的同学更应该如此
  • 五遍之后你会更加深入的体会到分层的好处

【4】研究常见的软件架构(非常重要)

  • 希望大家闲散时间都逛逛技术博客平台,看看人间优秀的项目,会有新的思路提供给你们
    • 比如博客园,掘金,CSDN

「一」百度

(1)引入

  • 比如我们拿最常用的百度来说
  • 当我们访问知乎的时候,都会让我们进行用户登录

(2)用户登录

  • 我们需要在前端页面输入用户名和密码进行校验,用户名和密码校验通过后才能登陆成功

(3)在哪里校验

  • 用户名和密码校验的过程肯定不是在你的电脑上
    • 如果校验过程发生在你的电脑本地,难道所有的用户名和密码都有吗?
    • 答案显然是不可能的
  • 百度的用户名和密码校验是需要基于网络,将你的用户名和密码发送给百度的后台进行校验
  • 后台再去专门存储数据的地方(其实就是我们后面需要学习的数据库)获取到正确的数据,然后校验数据

(4)百度的架构设计

  • 大致分了三层
    • 前台:
      • 浏览器需要输入用户名和密码
    • 后台:
      • 后端需要对用户名和密码进行校验
    • 数据库:
      • 负责存储正确的用户名和密码

「二」淘宝

(1)引入

  • 淘宝也是需要用户登录校验,这无可厚非
  • 但是淘宝在进行购物下单和结算的时候,很显然就会变得不一样了

(2)用户下单

  • 用户在登陆过后可以选择自己心仪的商品,然后添加到购物车中
  • 当用户选择完成自己想要的商品后,可以选择是否支付订单

(3)用户支付订单

  • 当用户确认自己的订单后,后台会根据商品的信息进行价格的最终核算
  • 核算完成后,应当有一个支付的接口,来让用户进行支付,并且扣除掉用户的余额
  • 但是这一步会发生在数据库吗?
    • 很显然不是,因为你的钱多数情况下是保存在银行中的
  • 所以你的支付过程还需要经过银行的确认才能真正的完成订单的支付

(4)淘宝的架构设计

  • 大致分了四层
    • 前台:
      • 浏览器需要输入用户名和密码(登陆)
      • 用户选择心仪的商品并添加到购物车(挑选商品)
    • 后台:
      • 后端需要对用户名和密码进行校验(登陆)
      • 对用户的订单进行校验(核算最终价格)
    • 数据库:
      • 负责存储正确的用户名和密码(校验登陆)
      • 负责存储前台展示的所有可选择的商品信息(挑选商品)
    • 接口:
      • 在用户支付时,根据用户的支付方式,选择相应的支付接口,进行支付

【5】三层架构导读

  • 很多程序其实都是三层架构的,而这三层架构分别是
    • 第一层(前端):用户只做简单的数据展示
    • 第二层(后端):整个程序的核心业务逻辑,做具体业务逻辑的处理
    • 第三层(数据库):数据存储,存储相应的数据

【五】ATM架构设计

【1】用户视图层(前端)

  • 用于与用户进行交互,接收用户输入的数据
  • 将用户数据提交给逻辑接口层进行业务逻辑的处理
  • 展示业务逻辑处理后的结果

【2】逻辑接口层(后端)

  • 相当于用户视图层和数据处理层的桥梁
  • 专门负责接收用户视图层传过来的数据,并进行核心业务的校验,在处理数据过程中可能会访问数据库,读取相应的数据,并对数据进行修改
  • 所有业务处理完成后,会返回相应的结果给用户视图层,用户视图层再对结果进行展示

【3】数据处理层(数据库)

  • 接收到接口层传过来的数据,并对数据进行简单的处理
  • 主要负责数据的存储和数据的增删查改

【六】ATM架构设计的延伸

  • ATM的架构设计按照上面的设计思路,扩展性极强,可塑性非常高

【1】用户视图层(前端)

  • 用户视图层主要负责逻辑和数据结果的展示
  • 当我们学了后面的前端框架后,我们可以直接根据相应的需求和接口进行前端页面的开发
  • 让前端页面变得美观起来,而不是现在这样只有一个 cmd 页面 (很丑,但很实用)

【2 】逻辑接口层(后端)

  • 逻辑接口层,主要负责前端传过来的数据的处理
  • 当我们学了后面的后端框架后,我们可以直接根据前端的业务需求,开发出相应的接口
  • 让我们的后端更加完善且具有扩展性

【3】数据处理层(数据库)

  • 数据处理层,主要负责数据的存储和逻辑的处理
  • 当我们学了后面的数据库后,我们可以将我们当前存储的数据直接替换进MySQL中,实现数据的持久化存储和快速读取,当然数据库只能存储数据,而无法对数据进行处理
  • 让我们的后端数据更加具有安全保障
posted @ 2023-12-31 12:26  Chimengmeng  阅读(28)  评论(0编辑  收藏  举报