python学习Day29
Day 29
今日内容概要
- 项目开发流程
- 项目需求分析
- 项目架构设计(重要)
- 项目目录搭建
- 项目功能搭建
- 项目注册功能
- 项目登录功能
- 项目代码封装与优化
今日内容详细
1.项目开发流程
1.需求分析
明确项目的主题功能(问客户、产品经理到底要写什么东西实现什么功能)
参与人员:产品经理、开发经理、架构师
技术人员主要职责:引导客户提出一些比较合理、容易实现的需求
2.架构设计
明确项目的核心技术点:
项目使用的编程语言
项目使用的框架
项目使用的数据库
参与人员:架构师
3.分组开发
明确每个组各个人写哪些功能
参与人员:架构师、开发经理、普通程序员
4.提交测试
自己测试、测试人员测试
参与人员:普通程序员、测试人员
5.交付上线
参与人员:运维工程师
可以交给客户也可以帮客户维护(定期收费)
"""
【大公司】
大公司你相当于是一颗螺丝钉 干的活儿非常的明确 只干很小的一部分,但是对自己的履历很有优势 将来跳槽方便
【小公司】
小公司你相当于是全能超人 什么事都自己干 短期内提升非常大,但是会非常的类 一个人干好几个人的活
"""
2.项目需求分析
# 主题是带大家快速入门python直至开发一个ATM+购物车系统,ATM的实现类似于银行自助提款机核心业务,购物车的实现类似于淘宝商城购物系统。
# 该项目的核心不仅在于引领初学者快速入门python项目开发,更是站在项目架构的角度教你如何在程序开发之初合理且优雅地设计程序的架构,从而极大地提升程序的开发效率与可扩展性
"""
- 额度15000或自定义
- 支持多账户登录
- 可以查看账户余额
- 可以提现(可自定义手续费比例)
- 提供还款接口
- 支持账户间转账
- 记录每月日常消费流水
- 实现购物商城,买东西加入购物车,调用信用卡接口结账
- 提供管理接口,包括添加账户、用户额度,冻结账户等
- ATM记录操作日志
- 用户认证功能
"""
从需求中提炼出项目的核心功能
1.用户注册
2.用户登录
3.查看余额
4.账户提现
5.充值功能
6.转账功能
7.查看账单
8.购物车功能
9.管理员功能
从功能中再提炼出核心技术点
1.python核心语法
2.python诸多模块
3.装饰器
3.项目架构设计(重要)
"""
编写代码的改进历程
1.直接写在一个文件 采用面条版堆积
2.将有些具体的功能 采用函数封装
上述两个阶段类似于小公司 一个员工身兼数职
3.将不同的功能拆分到不同的文件
上述阶段类似于大公司 根据职责划分部门 每个员工只干该岗位的具体事宜
ps:拆分的目的是为了更好的管理资源和代码 提升程序的扩展性
"""
项目架构(重要)
【百度】
以用户登录为例
1.浏览器页面获取用户名和密码
2.基于网络将用户名和密码发送给百度服务端
3.服务端去数据库中校验用户数据
三层架构
浏览器、服务端、数据库
【淘宝】
以购买商品为例
1.浏览器页面展示商品总价
2.基于网络将购买商品的操作发送给服务端做核心校验
3.之后操作相应数据库完成数据修改
三层架构
浏览器、服务端、数据库
三层架构:
与用户直接打交道 不参与核心逻辑的编写
数据展示 数据获取
cmd窗口可以充当用户层
将来可以替换成浏览器或者app
核心逻辑层
业务逻辑
某个py文件充当逻辑层
将来可以替换成软件开发目录规范或者现成的框架(后端框架)
数据层
数据的增删改查
json文件充当数据库
将来可以替换成数据库程序
4.项目目录搭建
1.第一层
core目录
src.py
2.第二层
interface目录
#根据业务逻辑的不同再次拆分便于后期维护管理
user_interface.py #用户相关
bank_interface.py #银行相关
shop_interface.py #购物相关
admin_interface.py #管理员相关
3.第三层
后续通过代码动态创建,也可以直接创建
软件开发目录规范:
1.启动文件:
bin (启动文件)
>> start.py
2.配置文件:(存放不经常改变的数据)
conf
>> settings.py
3.核心逻辑,现改为第一层:
core (第一层展示层 针对用户 用于简单数据展示和数据获取)
>> src.py
4.接口层,业务逻辑层
interface (第二层业务逻辑层 根据业务逻辑的不同再次拆分便于后期维护管理)
>> user_interface.py #用户相关
bank_interface.py #银行相关
shop_interface.py #购物相关
admin_interface.py #管理员相关
5.存储公共的功能
lib
>> common.py
6.日志
log
>>log.log
7.充当数据库(一般都是通过代码自动创建) 数据相关操作(增删改查)
db
>>db_handler.py
6.解释说明(说明书)
readme.txt
7.第三方模块
requirements.txt
6.项目功能搭建
1.添加各个功能函数框架(pass)
2.添加功能字典,根据用户指令执行对应函数
3.循环打印功能名称获取用户执行的指令
4.给循环打印添加一个run函数
5.在启动目录下的start文件中执行启动run()函数
7.项目注册功能
1.获取用户数据
2.对比两次密码是否一致
3.构建用户字典数据
4.利用json序列化到文件中
第一层:
获取用户数据
第二层:
校验用户是否存在
构造用户字典
完成用户注册
第三层:
保存用户数据的方法(序列化功能>>用json模式将字典写入文本文件)
8.项目登录功能
第一层:
获取用户数据
第二层:
校验用户是否存在
获取用户字典数据
对比密码是否一致
第三层:
提取用户数据的方法(反序列化>>将json文件中的数据转成字典)
9.项目代码封装与优化
把重复的代码封装起来,减少代码量
10.密码加密
加密密码接口放在公共功能中
注册、登录都需要加密
import hashlib
#加密接口
def get_hash(password):
# 4.给密码加密
md5 = hashlib.md5()
md5.update(password.encode('utf8'))
new_pwd = md5.hexdigest()
#把加密后的密码返回出去,谁调用该接口就把加密的密码返回给谁
return new_pwd
作业
1.整理今日内容
2.弄懂项目架构
3.编写今日代码
4.尝试编写其他功能
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)