ATM+购物车

Milk1 / 2023-08-12 / 原文

项目开发流程
# 公司中的项目流程几乎都可以分为以下五个步骤
'''假设我们是一家外包公司 专门给别人编写软件'''
# 1.需求分析
    产品经理带着开发部门老大(架构师、研发经理)去客户公司寻求客户的需求
      见客户之前架构师和研发经理会先大致了解一下客户的需求
    然后琢磨出一套比较容易编写的流程
    之后在于客户交谈中引导客户按照提前设想好的流程提需求
    ps:这么做的目的是为了防止客户提出一些无厘头的要求!!!
# 2.架构设计
    架构师会根据具体的业务需求选择
      开发的编程语言、
    项目的后端框架、
    项目所需的数据库(主库、从库)
    项目组织结构(软件开发目录规范、自定义结构)
         项目功能划分(将一个大项目拆分成多个小项目)
    项目的报价(开发人员数量 天数等:  一个程序员一天按照1500+算)
        还需要产品经理继续叠加报价(其他部分人员开销等)
# 3.分组开发
    将项目拆分之后的多个小项目交给不同开发部门下的多个编程人员编写
      每个人可能只会写很小的一部分(降低复杂度 提升开发效率 缩短开发周期)
    ps:码畜 >>> 码农
# 4.项目测试
    交给测试部门全面测试
      语法错误千万不要提交到测试部门才被发现 这样可能会扣绩效甚至三次之后直接全铺盖走人!!!
  ps:跟测试小姐姐搞好关系 这样的话很多bug都不需要提交报告 私下提醒并修改即可
# 5.交付上线
    将项目打包给运维人员运行维护即可
"""
小公司可能需要你一个人完成上面所有的事情
    小公司很累 但是成长速度很快(整体参与)
    大公司轻松 但是成长速度缓慢(只拧螺丝)
"""

需求分析

# 项目大致需求
  - 额度15000或自定义
  - 支持多账户登录
  - 可以查看账户余额
  - 可以提现(可自定义手续费比例)
  - 提供还款接口
  - 支持账户间转账
  - 记录每月日常消费流水
  - 实现购物商城,买东西加入购物车,调用信用卡接口结账
  - 提供管理接口,包括添加账户、用户额度,冻结账户等
  - ATM记录操作日志
  - 用户认证功能
# 提炼项目功能
    1.用户注册
  2.登录功能
  3.查看余额
  4.余额提现
  5.账户充值
  6.金额转账
  7.查看流水
  8.添加购物车
  9.查看购物车
  10.结算购物车
  11.管理员功能
# 项目大致技术栈
  1.python基础核心编程
  2.函数(装饰器)
  3.常见内置模块(os,sys,json)

架构设计

"""
回顾编程经历
    1.面条版(从上往下堆代码)
    2.函数版(开始封装代码)
    ps:都是在一个py文件中写代码>>>:类似于创业型公司 所有员工身兼数职
    
    3.模块版(开始划分文件)
    ps:根据功能的不同划分不同文件>>>:类似于大型公司 所有员工部门精细化

疑问:
    为什么需要分文件 导来导去
        为什么大型公司需要分部门 分员工 分职责
            答案:各自干各自最擅长的部分 提高效率 节省时间
    
如何体会到分文件的好处
    将ATM项目多敲几遍 既然会感觉到!!!
        5遍起步之后才慢慢体会到
"""
# 研究常见软件架构(非常重要)
    百度:
    百度账户登录 
        需要获取用户名和密码 然后校验用户名和密码
          问:在哪里校验?
              肯定不在你的电脑上(如果在 难道所有人的数据你的电脑上都有?)
        是基于网络将用户名和密码发送到百度的后台进行校验
                后台去专门存储数据的地方校数据
    # 大致分了三层
        浏览器    后台 数据库
  淘宝:
       购物结算功能
        商品价格的最终核算和账户扣款在哪里完成
          肯定不在你当前计算机上!!!
      # 大致分了三层
        浏览器 后台 用户数据库
'''
ps:很多程序其实都是三层架构
    第一层用户层只做简单的数据展示
    第二层是整个程序的核心层
        做具体业务逻辑
    第三层是数据存取


其实我们刚刚分析的三层就是以后开发项目的固定结构
    第一层其实叫做            前端
    第二层其实叫做            后端
    第三层其实叫做            数据库
'''

基于上述架构分析 我们也应该将ATM分为三层架构
    展示层
      只展示功能选项 基本逻辑
    逻辑层
      所有业务逻辑
  数据层
      给逻辑层提供数据存取
    
################################################
ATM架构牛逼之处!!!
    程序的扩展性非常的强
      比如展示层等我们以后学了前端可以直接替换成页面
        展示层目前是cmd操作 可以换成页面
    核心逻辑层以后学了框架之后替换成框架
        逻辑层目前是普通的python代码 可以换成django框架
    数据存取层以后学了数据库直接替换成数据库
        数据层目前是json文件 可以换成MySQL数据库
################################################

分组开发

# 1.搭建项目目录
    针对启动脚本文件start.py可以放在bin目录下 也可以直接放在项目根目录
  将第二层分为三个文件(根据功能的不同)
      start.py
    conf
        settings.py
    lib
        common.py
    core
        src.py
    interface
        user_interface
      bank_interface
      shop_interface
    db
    log
    readme
  
# 2.功能框架搭建
    利用空函数
  
# 3.注册功能
    为了能够让你更加清晰的理解 我们先写面条版本 然后拆分!!!
"""
老师带你们写项目的时候 有些边边角角的功能自己去实现即可
    比如选择功能编号 还应该加一个退出选项
"""