您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于B2C的电子商城开发
《基于B2C的电子商城》1传播智慧,引领未来一.项目背景1.项目的意义www=why+what+howW:why?看看自己学的怎么样能否灵活运用各个知识点,完成一个项目。找到做项目的一个感觉,积累项目经验,为找工作奠定基础。通过项目,认识自己的不足,然后更加努力。2.项目定位W:what?PHP可以干什么?Web开发,基于B/S电子商务CMS,内容管理系统,涵盖面比较广泛SNS,社交网站各种管理系统电子商务的一些模式B,商家C,客户B2C:商家对客户。凡客,小米C2C:客户对客户,网站方只提供平台。淘宝、拍拍B2B2C:商家对商家对客户。京东,当当,国美,苏宁B2B:商家对商家,批发平台。阿里巴巴O2O:online2offline,线上线下,美团、糯米,大众点评,比较依赖于地图。最多的是B2C。我们的项目,是基于B2C模式的电子商城。做的过程中,可以参考ecshop、京东。W:how二.项目规划1.项目整体架构从电子商务的角度来讲,电子商城通常包括3个方面:《基于B2C的电子商城》2传播智慧,引领未来商品部分用户部分电子商务(订单)从开发项目的角度来看,需要完成两个方面的事情后台的开发前台的开发整体架构图商品模块,是我们商城的核心,也是整个电子商城项目中最难的一个内容。《基于B2C的电子商城》3传播智慧,引领未来2.时间安排三.数据库设计重要程度:*****难度:*****数据库的设计,就是体现了你对业务逻辑的理解。数据库设计的好坏,有时候决定了项目的成败。要点:表与表之间的关系(一对一、一对多[多对一],多对多[难])每一个字段的数据类型(数值、字符串、日期时间)没有布尔类型[使用tinyint]如何来设计数据库?----以商品模块为例找到核心(中心),然后一步一步的展开。核心----商品先来初步设计一下商品表的字段:名称、价格、图片、颜色、上架时间、各种规格参数、详细描述,库存,品牌、分类。这么多的属性,是存放到一张表当中的吗?品牌和商品是两个不同的东西,设计表的一个理念:一张表表示一种信息。冗余--更新异常、删除异常。耦合性高。软件开发的一个理念:低耦合、高内聚。如何来判断品牌和商品是两种不同的信息呢?《基于B2C的电子商城》4传播智慧,引领未来[小技巧]:看他们的生存周期-----生死时刻。品牌:apple1984年就有了商品:iphone62014年才有的商品和它的价格,生存周期就是一致的。有了这个商品,自然就要定一个价格。应该吧品牌单独的拿出来,用一张新的表保存。品牌和商品有关系,是一个什么样的关系呢?正反两个方向来看。一个品牌对应n个商品一个商品对应1个品牌综上所述:品牌和商品之间的关系一对多1:n如何体现这种一对多的关系呢?1的一方,称之为父表,多的一方称之为子表。需要在子表中增加一个字段,和主表中的主键进行关联,子表中的这个字段就是外键。由一张表到两张表,这个过程很重要。商品分类信息,同样也单独的保存到一张表中。商品分类表。《基于B2C的电子商城》5传播智慧,引领未来商品的扩展属性先看实际情况三星s6苹果6再来看书籍的情况Php书Mysql书《基于B2C的电子商城》6传播智慧,引领未来不同类型(书、手机)的商品有不同的扩展属性。商品的属性,对商品的描述,通常分为两种信息:基础信息:所有的商品都具备的属性,如商品名称,价格,缩略图。扩展信息:不同类型的商品,它的扩展信息是不同的,如服装,有材质,颜色,做工,手机则具备屏幕尺寸,操作系统,内存大小,摄像头,书籍具备出版社,作者,ISBN,印刷。不同类型的商品,它有不同的扩展属性,首先就需要把这些扩展属性保存起来。此时就有两种表,goods_type和attribute表。要注意,attibute表存到属性本身,不是某个商品的属性。商品和属性之间的关系。解决多对多的问题,需要引入第三张关联表。本项目商品模块的表设计ER图《基于B2C的电子商城》7传播智慧,引领未来思考:商品分类和商品类型有何区别?商品分类它是为商品服务,为了将商品进行分门别类的管理,商品类型是为属性服务的,二者的目的就不一样了。《基于B2C的电子商城》8传播智慧,引领未来四.编程思想思想决定高度。1.oop思想OOP:ObjectOrientedProgramming,面向对象程序设计,面向对象编程OOP的三大特征:封装,通过类实现的,将内部实现细节隐藏起来,给外部提供一个调用接口。继承,通过extends来实现的,子类可以继承父类的属性和方法(protected和public)多态,php本身就是多态的,php是弱类型的语言。在php中一般不怎么提到多态概念。OOP的好处:可维护性好可扩展性好可重用性好灵活度好我们的项目也是采用OOP的,所以就有很多类和方法。《基于B2C的电子商城》9传播智慧,引领未来2.mvc模式Mvc思想(重点)面试题。如何理解mvc?M:model,模型,负责完成具体的业务逻辑。V:view,视图,负责展示界面的。C:controller,控制器,负责程序调度的。(扮演的是交通警察的角色)核心思想:将业务逻辑和显示相分离。(将程序的输入,处理和输出分离开来)单一入口:index.php?m=Admin&c=goods&a=addm:表示模块,比如后台、前台c:控制器,如品牌控制器用来管理品牌的,分类控制器用来管理分类的。一个控制器对应一个类。a:动作,完成具体的某个操作,如增加品牌、显示品牌。对应控制器类中的方法。什么是业务逻辑?完成一个具体功能的细节。完成一个图片上传,就是一很具体的功能,具备很多细节。其实它就是一个业务逻辑。生成缩略图《基于B2C的电子商城》10传播智慧,引领未来通常说的模型层分两个:广义上的:指的是数据库处理层面和其它业务逻辑层面狭义上的:就是指数据库层面的。完整整个项目的核心?具体体现-----三板斧:写控制器写模型写视图五.ThinkPHP框架特点免费开源敏捷开发---快速开发面向对象MVC思想3.2版本1.安装及目录说明首先创建项目文件夹tp项目根目录默认情况下,application是一个空目录。《基于B2C的电子商城》11传播智慧,引领未来直接访问:localhost/tpHome目录结构如下:《基于B2C的电子商城》12传播智慧,引领未来三板斧:强调一个事情,要注意编码规范2.编码规范说明类文件都是以.class.php为后缀,大驼峰命名法,如GoodsController.class.php,并且保证类名和文件名一致。类的命名空间地址和所在的路径地址一致,例如Home\Controller\UserController类所在的路径应该是Application/Home/Controller/UserController.class.php;类中属性和方法名采用小驼峰命名规则,首字母小写;函数、配置文件等其他类库文件之外的一般是以.php为后缀;函数的命名使用小写字母和下划线的方式,例如get_client_ip;常量以大写字母和下划线命名,如HAS_ONE和MANY_TO_MANY;严格区分大小写注意代码缩进添加必要的注释3.快速入门案例(1).创建数据库#创建用户表createtableuser(idintunsignednotnullauto_incrementprimarykeycomment'用户编号',usernamevarchar(50)notnulldefault''comment'用户名',emailvarchar(50)notnulldefault''comment'电子邮箱',passwordchar(32)notnulldefault''comment'用户密码,md5加密',《基于B2C的电子商城》13传播智慧,引领未来reg_timeintunsignednotnulldefault0comment'用户注册时间')engine=MyISAMcharset=utf8;(2).定义配置文件在哪定义?参考附录中配置参考。完成对用户的crud操作。(3).编写控制器《基于B2C的电子商城》14传播智慧,引领未来(4).准备视图文件在view目录下,新建一个文件夹user,再在此文件夹下新建add.html,如下:http://localhost/tp/index.php/Home/User/add(5)调用模型完成入库操作《基于B2C的电子商城》15传播智慧,引领未来显示用户在user目录下,新建一个index.html文件,如下:《基于B2C的电子商城》16传播智慧,引领未来显示结果如下:编辑操作定义编辑的入口编写edit方法《基于B2C的电子商城》17传播智慧,引领未来删除操作一组操作就完成了。完成这个案例之后,再回头理解MVC。任务:实现前后台分离。需要创建一个admin模块和一个home模块。六.后台功能重点:做项目、业务逻辑在做后台功能的时候,要注意各个模块之间的先后顺序《基于B2C的电子商城》18传播智慧,引领未来接下来,分模块一个一个的完成,逐个击破。做每一个模块的具体思路是怎样的?分成三步:明确每一个的模块的目标和功能理解业务逻辑(表中每个字段是什么意思)按部就班的写每个功能(mvc)1.后台首页目标,显示后台首页。我们需要两个模块,一个后台admin模块,一个前台home模块。《基于B2C的电子商城》19传播智慧,引领未来当我们生成了后台目录之后,需要关闭这行代码,保证项目的正常运行。编写后台首页控制器,载入首页面。在view下创建Index目录,将模板文件拷贝到该目录下然后修改index.html模板页面《基于B2C的电子商城》20传播智慧,引领未来页面已经ok了Css样式和图片等不对?我们的css,js,图片应该放在哪里?《基于B2C的电子商城》21传播智慧,引领未来在admin模块下将静态资源拷贝到该文件夹下然后,如何在模板中引用呢。在index.php中定义常量。在模板中,使用常量。《基于B2C的电子商城》22传播智慧,引领未来其它地方也做相应修改。首页效果如下:2.后台登录控制除了登录页面本身,其它所有的操作都需要权限验证。首先,定义好整个项目的配置文件首先,定义一个后台基础控制器,用于验证。《基于B2C的电子商城》23传播智慧,引领未来然后,让其它控制器继承baseController。接下来,编写Login控制器如何生成验证码呢?使用tp自带的验证码类。查手册《基于B2C的电子商城》24传播智慧,引领未来定义模型完成验证用户名和密码操作《基于B2C的电子商城》25传播智慧,引领未来在控制器中调用模型完成验证定义一个注销方法《基于B2C的电子商城》26传播智慧,引领未来注意,修改top.html中的注销链接3.商品品牌管理(1).目标对商品品牌进行CRUD的操作。《基于B2C的电子商城》27传播智慧,引领未来(2).具体的业务逻辑此时,就需要了解表结构,每个字段代表什么含义?为什么是这个数据类型的?Logo:保存是品牌的图片,通常,图片是分两个方面来保存的,A.保存的是图片文件本身,通常是放在项目的某个目录之下B.将该图片的保存目录(相对于项目的根目录)保存到数据表中的。(3).添加品牌提示:表单中的各表单域name属性应该尽量和数据表中的字段名保持一致。不一致可以吗?可以,但是需要设置一些对应关系,比较麻烦。《基于B2C的电子商城》28传播智慧,引领未来如何实现验证呢?使用tp的自动验证功能。此时,需要自定义模型要使用自动功能,必须使用create()方法.任何一个表单的操作,都需要前端验证和后台验证前端验证是为了用户体验,使用javascript后台验证是为了数据的完整性,使用php最好的方法,是结合二者,就是ajax了。如何实现图片上传呢?使用tp自带的上传类。《基于B2C的电子商城》29传播智慧,引领未来创建uploads文件夹《基于B2C的电子商城》30传播智
本文标题:基于B2C的电子商城开发
链接地址:https://www.777doc.com/doc-69332 .html