今日内容详细

主菜 : ATM+购物车作业

项目开发流程

公司中的项目流程几乎都可以分为以下五个步骤

需求分析

'''假设我们是一家外包公司 专门给别人编写软件'''
客户:我想要一个app
产品经理、架构师、研发经理:好的
架构师和研发经理:客户想要这样的,那我们先写个简单流程吧。
之后与客户交谈中引导客户按照提前设想好的流程提需求

架构设计

架构师会根据具体的业务需求选择:
开发的编程语言、
项目的后端框架、
项目所需的数据库(主库、从库)
项目组织结构(软件开发目录规范、自定义结构)
项目功能划分(将一个大项目拆分成多个小项目)
项目的报价(开发人员数量 天数等: 一个程序员一天按照1500+算)
还需要产品经理继续叠加报价(其他部分人员开销等)

分组开发

	将项目拆分之后的多个小项目交给不同开发部门下的多个编程人员编写
每个人可能只会写很小的一部分(降低复杂度 提升开发效率 缩短开发周期)
ps:码畜 >>> 码农

项目测试

交给测试部门全面测试
语法错误是决不允许出现的
ps:跟测试搞好关系 这样的话很多bug都不需要提交报告 私下提醒并修改即可

交付上线

将项目打包给运维人员运行维护即可

需求分析

- 额度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:根据功能的不同划分不同文件>>>:类似于大型公司 所有员工部门精细化
'''

分文件,导来导去就和大型公司需要分部门,分员工,分职责一样各自干各自最擅长的部分,提高效率又节省时间

三层架构

很多程序其实都是三层架构

'''
第一层用户层只做简单的数据展示
第二层是整个程序的核心层
做具体业务逻辑
第三层是数据存取
'''
# 实际就是以后开发项目的固定结构
graph LR
A(可视化页面) --> B(程序的核心) --> C(数据存取)
D(前端) --> E(后端) --> F(数据库)
G(展示层) --> H(逻辑层) --> I(数据层)

将ATM分为三层架构

'''
展示层
只展示功能选项,基本逻辑
逻辑层
所有业务逻辑
数据层
给逻辑层提供数据存取
'''

ATM架构优点

程序的扩展性非常的强:
比如展示层等我们以后学了前端可以直接替换成页面,展示层目前是cmd操作,可以换成页面。
核心逻辑层以后学了框架之后替换成框架,逻辑层目前是普通的python代码,可以换成django框架。
数据存取层以后学了数据库直接替换成数据库,数据层目前是json文件,可以换成MySQL数据库

分组开发

搭建项目目录

# 针对启动脚本文件start.py可以放在bin目录下 也可以直接放在项目根目录
# 将第二层分为三个文件(根据功能的不同)
start.py
conf
settings.py
lib
common.py
core
src.py
interface
user_interface
bank_interface
shop_interface
db
log
readme

功能框架搭建

# 利用空函数

注册功能

# 为了能够更加清晰的理解,可以先写面条版本,然后拆分

python学习-Day24的更多相关文章

  1. python学习day24 项目目录结构

    项目目录结构 脚本 插入模块:先插入内置模块,然后第三方某块,上短下长! 单可执行文件 config 配置相关 db (database) 数据相关 lib (librarie) 公共功能 src 业 ...

  2. python学习之旅

    python学习分类 python基础    +- day01——python初始.变量.常量.注释.基础数据类型.输入.if day02——while.字符串格式化.运算符.编码初识 day03—— ...

  3. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  4. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  5. Python 学习小结

    python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...

  6. Python学习路径及练手项目合集

    Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159

  7. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  8. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  9. Python学习记录day5

    title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...

随机推荐

  1. JavaScript 的诞生历史

    看到一篇介绍JS诞生历史的文章,很有意思,文章里描述了很多的历史细节 https://webdevelopmenthistory.com/1995-the-birth-of-javascript/

  2. JavaScript 里的 'this' 的一般解释

    本文旨在帮助自己和大家理解 JS 里的 this, 翻译.整理并改写自本人关注的一个博主 Dmitri Pavlutin,原文链接如下: https://dmitripavlutin.com/gent ...

  3. 使用docker配置laravel5.5环境

    简介 简述一下我用docker来配置laravel环境 软件镜像 php:7.2-rc-fpm-alpine mysql:5.6 nginx:1.12.2-alpine 配置环境 Ubuntu:16. ...

  4. error C4996: 'std::_Copy_impl'

    以下代码段在VS2008编译可以通过,只是会提示不安全: std::vector<unsigned char> fileData ="asdfsfsfsfsdf";// ...

  5. ZooKeeper 面试题?

    ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群 中各个节点的状态根据节点提交的反馈进行下一步合理操作.最终,将简单易用 的接口和性能高效.功能稳定的系统提供给用户. ...

  6. TreeMap与TreeSet的源码分析

    1.TreeMap源码 1.属性部分: private final Comparator<? super K> comparator;//比较器 private transient Ent ...

  7. Javascript 占位符替换

    String.prototype.format=function(){ if(arguments.length===0){ return String(this); } let reg=/(\{\d\ ...

  8. RocketMQ实现分布式事务

    相关文章:http://www.uml.org.cn/zjjs/201810091.asp(深入理解分布式事务,高并发下分布式事务的解决方案) 三种分布式事务: 1.基于XA协议的两阶段提交 2.消息 ...

  9. flash的TotalFrames显示undefined

    通过js来操作flash的时候,获取到总帧数的是属性.TotalFrames,而不是属性TotalFrames().在asp.net中,js放在最后可以在一定程度上避免当前flash没有加载完,导致获 ...

  10. 实验配置cisco单臂路由

    第一步 搭建实验拓扑图 第二步 对路由器做基本配置 为路由器创建名称: 设置进入特权模式 口令:控制台登录密码:vty登录密码 禁用DNS查找: 加密明文密码: 创建一个向访问设备者发出警告的标语&q ...