今日内容详细

主菜 : 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. Mybatis的xml配置(mybatis-config.xml)精简笔记

    老规矩,看着官方文档学 首先,我们需要知道的是,在MyBatis 的xml配置文件中,这些影响 MyBatis 行为的属性之间的设置是有先后顺序的.配置的先后顺序依照properties, setti ...

  2. kvm管理查看信息,添加,删除,暂停恢复,克隆等

    KVM virsh管理指令 virsh 查看帮助信息 查看命令帮助 [root@KVM ~]# virsh Welcome to virsh, the virtualization interacti ...

  3. C++ 并发编程2 --向线程函数传递参数

    1向线程函数传递参数比较简单,一般的形式如下 void f(int i,std::string const& s);std::thread t(f,3, "hello"); ...

  4. 【转】pringMVC+Hibernate+Spring 简单的一个整合实例

    ref:http://langgufu.iteye.com/blog/2088355 SpringMVC又一个漂亮的web框架,他与Struts2并驾齐驱,Struts出世早而占据了一定优势,我在博客 ...

  5. 什么是基于Java的Spring注解配置? 给一些注解的例子?

    基于Java的配置,允许你在少量的 Java注解 的帮助下,进行你的大部分Spring配置而非通过XML文件. 以@Configuration 注解为例,它用来标记类可以当做一个bean的定义,被Sp ...

  6. kafka-linux-install

    linux按照kafka 必须先按照java jdk包!!!!!!!!!!!! 先安装zookeeper 下载:http://mirrors.hust.edu.cn/apache/zookeeper/ ...

  7. 在多线程环境下,SimpleDateFormat 是线程安全的吗?

    不是,非常不幸,DateFormat 的所有实现,包括 SimpleDateFormat 都不是 线程安全的,因此你不应该在多线程序中使用,除非是在对外线程安全的环境中 使用,如 将 SimpleDa ...

  8. linux java7升级到java8

    转自:https://blog.csdn.net/u010199866/article/details/81744382 linux java7升级到java8   版权 1.第一步先卸载所有老的jd ...

  9. 攻防世界supersqli

    supersqli 补充知识点 rename 命令格式: rename table 原表名 to 新表名 例如,在表myclass名字更改为youclass: mysql>rename tabl ...

  10. 几种常见布局的flex写法

    flex布局目前基本上兼容主流的浏览器,且实现方式简单.我整理了flex的一些知识点,并且总结归纳了几种常见布局的flex写法 ​flex基础知识点 flex-grow和flex-shrink相关计算 ...