摘要:购物是一种社会行为,最开始可能是源自于互相交换,相互交换自己需要的东西,后来演变成了购物。所以购物也有了两种层面,一种购买必需品,一种是非必须品但是不同的人购物时的心态是不一样的,购买不同的商品时的心态也是不一样的。例如购买必须品时,人们往往对价格特别敏感,而购买非必须品时往往不是出于考虑价格的层面才决定最终成交的。
所以为满足人们的购买欲,出现了很多商店。然后根据社会的发展,商店又有了线上线下等模式。京东商城就是一个线下线上的生活服务平台。但是如果做一件事的同时,发现在这件事的基础上,又可以做第二件事,并且符合你做第一件事的目的,那么你是否会继续呢?如果你的目的是盈利呢?所以在做购物商城这个项目的同时,也有了利于购物商城生存发展的第二个项目,类似于支付宝花呗的案例,没钱在购物商城买东西,可以给你一定的额度。两个功能相辅相成,利于项目的发展,也把把用户信息都留了下来。
关键字:购物商城,额度,用户信息
目录
1用户注册
2用户登陆
3还款
4查余额
5转账
6提现(手续费%5)
7查流水
8充值
9购物
10查看购物车
11登陆认证用装饰器
需求分析自然是开发项目做的第一件事情。产品部门跟客户谈论需求,分析出能否开发出客户的需求,如果不能,则让客户更改需求或者改进需求,最后拿到一份需求报表,开发部门通过需求报表分析出可以实现的需求。
1、用户登陆,用户注册(涉及到用户)
程序架构设计的好处1)思路清晰,代码清晰2)不会出现因为逻辑混淆,推翻重写问题3)方便自己或他人接手项目,可以更好的维护
三层架构其实是实现“高内聚,低耦合”的思想,使项目层级分明,逻辑性更加紧密,扩展性更强。
(1)三层架构第一层:
用户视图层:负责和用户进行交互
(2)逻辑接口层:负责处理表示层的业务逻辑,
调用数据处理层,得到结果,将结果进行逻辑判断,返回表示层
(3)数据处理层对用户数据的增删查改,将结果返回给逻辑处理层
有了三层架构的概念,可以把项目分为三层,每层之间相互独立,减少代码冗余,提高开发效率。
图2-1三层架构设计图
把功能分发给团队人员,各个人员通过三层架构图,设置接口参数,返回相
应的数据内容。2.6测试把项目交给测试部门,测试部门测试项目的功能是否通常,有没有逻辑处理上面的错误等等。如果有则返回给开发部,进行修改。2.7项目上线测试通过的话就交给运维人员,对软件进行部署,然后上线给用户使用。
1、采用PyChram(集成环境开发工具)来实现项目需求。
2、采用三层架构
3、熟练使用os模块,sys模块,json模块,logging日志模块等内置模块
4、使用功能的封装,定义自定义模块,调用模块间的功能接口
模块的功能让代码更加清晰,冗余代码不再频繁出现,代码上逻辑冲突也随之减少很多
5、装饰器
装饰器其实实现的是一种思想,“开放封闭原则”。“开放”指的是不修改源代码的同时为其添加新功能。“封闭”指的是对源代码不进行修改。装饰器在python中有两种装饰器,第一种是函数装饰器,第二种是类装饰器。我们的项目用到的是第一种装饰器。通过闭包函数的形式来实现装饰器这种思想。
6、软件开发目录规范
为了要提高程序的可读性和可维护性,我们要为软件设计良好的目录结构,这与论文的规范格式同等重要。软件的目录规范并无硬性的标准,只要清晰,可读,明了即可。但是身为小白,我们可以参考别人的开发规范,让我们的项目文件看的过去,不然只有自己才能看懂。
bin文件夹一般放执行文件,启动文件core给用户使用的核心代码,毕竟用户是上帝,没有核心代码给用户使用,那么这个软件就没有了存在价值conf配置文件(给使用者提供一些可配置的文件)
log日志记录软件运行和使用者的一些行为记录
lib存放自定义模块之类的文件夹interface用户接口文件,处理三层架构中用户视图层的请求
db调用三层架构中数据处理层的文件夹
Readme应该是存在于每个项目文件中的,目的是能简要描述该软件项目的信息,让使用者快速了解这个项目。内容有:1、软件定位,软件的基本功能;2、运行代码的方法:安装环境、启动命令等;3、简要的使用说明;4、代码目录结构说明,更详细点可以说明软件的基本原理;5、常见问题说明。
在bin目录文件夹中创建start.py启动文件,开始写代码。
__name__是内置方法,如果启动文件是被当作模块导入的话,就不会运行
这是在Pychram命令终端输出的格式,给用户使用的格式是交给UI设计部门设计的。
使用者输入业务序号,就可以使用对应的功能。
我们项目的发展依赖使用者的购买欲,所以我们默认给注册用户提供假设15000元的额度(自定义额度,随便设置)
具体实现步骤:
用户登陆成功过后,可以购物,查余额等等操作,但是比如我们登陆淘宝,登陆成功过后,就没有了注册功能。现在项目中,我们登陆了但是还能注册,所以,我们要定义一个规则,来确定用户是否登陆。用户状态的变量设定为一个字典用户登陆之前,设定一个默认值,代表用户没有登陆user_state={’username’:None,state:False}
用户登陆之后(比如用户名zxy登陆),登陆成功过后,给user_state中的值重新赋值,代表用户登陆的标志user_state={’username’:zxy,state:True}
用户在没登陆之前,想查看余额,流水,购物车等操作,是要先进行登陆的,但是没有装饰器,可以采用7.51的思想,但是装饰器也是一种常用的思想。那么应该加上登陆认证装饰器,为检查用户是否登陆,如果没有登陆,就返回提醒用户登陆,如果登陆就执行原功能
装饰器一般放在lib目录下的common.py文件中
装饰器的思想就是为源代码添加新功能,但是源代码的功能不能更改。
结合我们没有登陆就能查看余额、查看流水、查看购物车的逻辑错误,装饰器就能很好的解决。
装饰器解决原理图
4.6用户体验功能(还款,转账,查余额,提现,查流水,充值)选择其中几个功能
在现有的存取介质中,项目采用的是文件存取。文件的存取。存不是目的,目的是取。采用的方案是导入json模块,其中有一个方法是把字符串中的数据类型(如字典)取出来,并且保留字典中原有的数据。正是采用这个方法,让我们的用户数据存取是那么的方便。并且一个用户对应一个json文件,文件名和用户名一一对应。上面用户名为zxy,那么在电脑中一定有一个zxy.json的文件,那就是对应的用户信息文件。
4.8如何存入json文件python提供了一个函数叫open函数,打开本地文件的函数,其中有r,w,a,+等基本功能其中w的功能非常强大,指定文件路径,如果有文件,则打开文件,删除文件的所有内容如果没有,则直接创建新的文件。所以该项目直接用了open函数中的w模式。直接写入用户数据。
os模块是和操作系统打交道的,其中就有一个方法找到对应的文件,但是得指定出文件的路径,在目录开发规范中,一般是把用户文件放在db中的(在文件操作中,一般放在数据库),通过写入时存放的路径信息,查看是否有指定的文件,如果有返回bool值True,没有则返回False,interface文件夹中查询用户是否存在的功能会收到返回结果,然后做出一个判断,然后返回给用户视图层。
如图:(没有画出模块)
通过这个逻辑,我们可以在这些返回的结果基础之上完成后面的一些功能,如查流水,转账,查余额,查看购物车等等。
在用户注册成功的那一刻开始,就已经给用户配置了一些信息。
比如购物车是空的,账户余额是0,账户额度是15000,账户流水是空等等。该场景在当今的各个电商平台都可以清楚的体验到。比如淘宝,注册成功过
后,用户登陆查看自己的购物车是空的,花呗额度是0,支付宝余额是0等等。
所以我们在开发购物功能中,就把购物商城中的数据做好就ok了。
用户登陆,选择购物功能,查看商品列表
拿购物车为例:当用户购物时,就会把看中的商品加入购物车。
对应的商品名称,价格,商品数量都会展示出来
我们这个项目所牵扯的实质无非是在和数据打交道。对数据的增删查改,就是在学python的时候对基础数据类型进行增删查改操作。
我们把展示给用户看的商品做成一个列表,然后遍历出商品列表,遍历前调用enumerate()函数,把商品列表中的商品对应的下标和商品名称以元组的形式打印出来,并且是一一打印出来(商品下标:商品),显示到终端(给用户使用是在前端展示)。具体格式如下
用户输入对应的序号,底层调用是列表的切片操作,加入到用户信息字典中。用户信息字典中对应的商品字典格式为"shop":{"商品名称":{"价格":价格,"数量":1}}如’shop’:{car:{"price":100,"count":1}}
从需求分析到做出产品的过程。1、需求分析
2、三层架构的设计3、代码分层(分到三层架构中)
4、一层一层的分配给开发人员,开发人员再分配功能5、各层之间接口调试
6、功能调试
7、提交项目给测试部门
1、《零基础入门学习Python》小甲鱼著清华大学出版社
2、《python全栈开发实战》(第三版)AlexLi,EgonLin,EvaJing著