+ -
当前位置:首页 → 问答吧 → PHP实战——图书分享项目

PHP实战——图书分享项目

时间:2010-01-08

来源:互联网

本教程的目的
关于PHP的技术资料遍地都是,但是真正的包含从一个项目的建立之初到最后测试的整个过程的书籍教程几乎很少。有也只是一些标题党书籍,纯粹的是为了几个铜板而东拼西凑而来的。刚好我的网站需要一个电子书分享的功能,于是就想将整个过程记录下来。一来可以让自己更好的理清思路,二来可以跟大家一起分享一下我的一些思路。本教程的权威性
为了避免大家受本教程的误导,特在此说明一下:
蜗牛我是一个从未被培训过的PHPer,所有东西都是自学而来。所以我所写的,基本上是一家之言,所以本教程只是给大家提供一个思路,仅此而已。其实我写的根本称不上教程,顶多算个经验分享,为了吸引人,我也做一回标题党。本教程包含的内容
1:项目的前期需求分析
2:一些辅助工具的使用
3:项目整体框架的构建
4:数据库设计
5:分享项目所有代码
6:各种小技巧的使用 本教程的读者
本教程假设你为一名对PHP语法,常用函数以及PHP面向对象的编程思想有所了解,有小型项目经验的PHP技术人员项目环境及工具
语言环境:PHP5+MYSQL5+Apache2
开发工具:ZendStudio-5.5.1
编 码:UTF-8
编程模式:使用面向对象的程序设计模式,使用MVC模式
开发框架:不使用任何现有PHP框架
用户中心:使用康盛创想的Ucenter1.5 UTF8版

附注:其实在我将这系列的文章发到PPC来的时候非常诚惶诚恐,首先我并擅长写教程,其次本人水平也十分有限。本想发到专家交流区与众人讨论,吸取大家的教导再写个完善点的教程,同时也怕我写的纯粹的误人子弟。但是为了给一些有需要的朋友一点参考价值,只好厚着脸皮发到PPC。
同时,我第一时间一般都是在本人的博客里更新,等修修改改没问题了 再转到PPC  汇总地址:http://snail.comsing.com/tag/bookshare

作者: E蜗牛   发布时间: 2010-01-08

需求分析的方法
在做一个项目之前,肯定需要弄清楚究竟要做个怎样的东西,应该具有哪些功能,不然接下来的程序设计就无法进行。我的做法通常是这样的:
1:用一段文字尽量完整的描述一下这个项目究竟需要哪些功能(写的连不连贯不要紧,重要的是要包含所有功能)
2:以网站的访问者为对象去描述整个网站的流程
3:以管理员为对象去描述整个网站的流程
4:综合1.2.3,提取出你认为重要的元素
5:根据1.2.3.4 画出详细的功能模块图

功能描述
我要做一个图书分享系统,希望具有如下功能:用户能够注册账号并登陆,然后就可以发布他们自己收藏的一些电子书,电子书需要包含详细的介绍以及能够下载。发布电子书的人需要为这本书打上一个标签,这样就方便其他用户查找到相同标签的同类型的书。书籍发布后就需要等待管理员的审核,管理员审核通过之后,其他用户才能看到该书。同时发布书籍的用户可以获得一定数量的奖励积分。普通访客可以浏览书籍信息,但是不能下载,也不能发表书籍评论。登陆了的用户可以下载书籍(需要扣除一定数量的积分)收藏书籍,还可以为书籍打分,评论这本书写的好不好。用户有自己的管理后台,可以看到自己发布的书籍是否审核通过,以及发布过哪些书,收藏了哪些书,下载了哪些书。在书籍展示页面,显示书籍的发布者以及相关书籍。相关书籍中显示该类别中评分最高的书籍,以及最新发表的书籍。用户收藏了一些书之后,等有新书发布的时候,便向用户推荐他可能感兴趣的书籍。找书的方式可以通过搜索,或者按照标签进行查找书籍。用户视角的网站流程
管理员视角的网站流程

由于这是一个较小的项目,所以很多流程都画得比较简单,其实可以很详细的画出所有细枝末节的。这样在写程序的时候就不会迷失方向,就不会出现这个功能没写,那个流程不对的情况项目中的元素提取
这个项目包含如下元素:
用户 管理员 书籍 标签 积分 评论 收藏 下载 发布 登陆 注册 找书 审核 推荐
这些元素怎么得来的?所谓元素,其实从功能描述及流程中提取出其中的动词与名词。动词就是项目中重要的操作,名词就是项目中重要的对象功能模块
对于功能模块的划分我喜欢将前台与后台分开,而很多习惯将前台与后台的功能模块放一起(比如用户注册登陆与管理统统划分为用户模块)

至于后台功能模块,由于比较简单,我在这里就不画图了回复:哇  顶

作者: E蜗牛   发布时间: 2010-01-08

写的算是不错的了,基本达到php开发的流程要求和设计,顶一下

作者: niceup   发布时间: 2010-01-08