1、 目录1、项目开发目标11.1 项目来源11.2 开发目标12、项目总体设计22.1 技术框架设计62.2 功能模块设计63、项目功能描述104、项目技术总结234.1 技术创新及特点234.2 个人收获与体会241、项目开发目标1.1 项目来源北京小动物保护协会(简称“ASAP”),是经民政局批准成立的一家专门从事宠物行业推广和小动物保护的公益性民间组织。 协会在一批有识之士的大力帮助下,充分发挥其专业优势和社会影响,积极开展健康有益,集专业化、职业化及趣味性于一体的服务和活动,致力于使北京市保护小动物协会真正成为关爱动物的新家园,为这些可爱的小动物们营造一个更加美好的生活空间。本项目就是为
2、ASAP制作的公益网站,是与他人合作共同实现 ,本人负责前台静态页面设计布局及动物领养及绝育申请两个主要表单的设计和功能实现,同时对站内文字图片信息进行审核。1.2 开发目标地球上,每一种物种都有其生存的权利,都是大自然的子孙,不分大小强弱,数量多寡,它们在生物学上的意义和价值 都是同等的,人类没有权利和理由以不平等之心去对待其他物种,虐待甚至杀害它们以满足自己贪婪的私欲。很多人觉得动物就是低人一等,这种“人类优先”的物 种歧视观念根深蒂固,它不但影响着动物的生存,还影响着人类的发展。保护动物,善待动物,尊重它们的生命,人与动物和谐发展,是我们的职责。 人和动物同住在地球村上,动物是我们人类的
3、朋友,我们应该要尊重动物的生命,爱护它们。不要为了自己的私欲和贪婪而去残害和虐待一群无辜的动物,在这个艰 难的世界里动物是最弱势的一群,当它们被残害的时候,连申诉的能力和机会都没有,我们没有权利去杀害它们的生命,没有理由去虐待它们,人类应该要放低“人 类优先”的物种歧视观念,爱及生灵,尊重生命,让我们一起去保护动物,善待动物,共同促进人与动物和谐发展。开发本网站主要是为了为中国的小动物保护公益事业做出自己的一份贡献。本系统可作为动物保护中心的管理与对外宣传网站,包含动物的免费绝育,免费领养,信息公告发布等功能,分为前台页面和后台管理系统。前台页面需要实现:新闻资讯展示网站公告展示绝育公告展示合
4、作医院展示待领养动物展示领养动物申请动物绝育申请等功能;动物绝育表单提交功能可实现动物领养申请动物领养申请功能可他实现动物绝育申请申请进度查询绝育申请的审批功能;使用管理员用户名密码登陆后可进入后台,后台需要实现:网站信息的查看与更新,留言的查看与管理,申请表单的查看与管理(审批,绝育,给予审批意见等)。2、项目总体设计2.1 技术框架设计本网站采用的是LAMP体系。选择LAMP的原因是:选择开源免费的MySQL:与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这
5、丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰 绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。又因为目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP/Perl/Python)和 LNMP(Linux+Nginx+MySQL+php/perl/Python),即使用Linux作为操作系统,Apache和Nginx作为Web 服务器,MySQL作为数据库,PHP/Perl/Python作为服务器端脚脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式
6、不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站喜用。在这里我们选择的是最为流行的免费架构LAMP。在搭建数据库时,我们选择数据引擎的依据是首先了解每种引擎的特性: MyISAM Mysql的默认数据库,最为常用。拥有较高的插入,查询速度,但不支持事务 InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定 BDB源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性 Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失 Merg
7、e将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用 Archive非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差 Federated将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用 Cluster/NDB高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用 CSV逻辑上由逗号分割数据的存储引擎BlackHole黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继 EXAMPLE存储引擎是一个不
8、做任何事情的存根引擎。它的目的是作为MySQL源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE存储引擎不支持编索引。了解每种引擎的特性后,我们选择MyISAM为常用引擎,个别数据表使用InnoDB引擎。使用到其技术有:(1)本项目采用PHP编码,可以创建支持跨平台及Web服务器的动态网页,增强了Web页面程序的独立性、兼容性和可重用性。(2)所运用软件,静态页面采用了Myeclipse和DreamerWeaver软件实现各种功能。(3)在一些功能的设计上采用了Javascript技术,实现了一些特效,增加不同的效果。(4)在项目中的界面的设计
9、上大部分采用DIV+Css的方式设计页面呢,以提高页面的美观性。2.2 功能模块设计 系统用例图 系统结构图这些功能的作用:前台:信息查看:查看网站信息,网站新闻信息回复分享:可以对网站的新闻进行评论,并分享到微博等社交网站绝育表单:可以为自己的宠物申请一份绝育表单,通过后可到医院进行免费绝育领养表单:可以查看网站的待领养小动物信息,挑选喜欢的进行领养申请,通过后可进行领养申请进度查询:申请者可以在绝育页面输入手机号,点击查询自己的绝育申请的审批进度 后台:栏目内容的浏览,添加,更改,删除。新闻栏目内容的浏览,添加,更改,删除。网站公告内容的浏览,添加,更改,删除。待领养动物的浏览,添加,更改
10、,删除。合作医院的浏览,添加,更改,删除。绝育公告内容的浏览,添加,更改,删除。动物领养申请表单的浏览,审批,拒绝,删除。动物绝育申请表单的浏览,审批,拒绝,删除。表中的各部分的名称,数据类型和说明如下面的表所示表1 主表(archives)字段名数据类型说明idchar(20) 编号(主键)typeidchar(20) 栏目编号flagchar(20)标签ismakeInt是否审核clickint 点击量titlechar(100) 标题Shorttitlechar(100) 短标题WriterChar(100)作者LitpicChar(200)缩略图PubdateTime发布时间Sendd
11、ateTime审核通过实践DescriptionChar(100)文章描述WeightInt权重表2 文章附加表(addon_article)此表是archives的附加表 aid是archives表id的外键字段名 数据类型说明AidInt文章id(外键)TypeidInt所属栏目IDBodyText文章内容UseripVarchar(20) 发布者IP 表3动物附加表(addon_animal)此表是archives的附加表 aid是archives表id的外键字段名 数据类型说明aidint 文章id(外键)Namechar(20) 动物昵称Sexchar(20) 动物性别Ageint动
12、物年龄ColorVarchar(100)动物毛色TypeidInt栏目IDDescriptText描述CharacterVarchar(100)性格PubdateTime发布日期UpdateTime更新时间表4 医院附加表(addon_hospital)此表是archives的附加表 aid是archives表id的外键字段名 数据类型说明AidInt医院id(外键)TypeidInt所属栏目UrlVarchar(100)医院链接PhoneInt医院电话AddressAvrchar(100)医院地址PubdateTime发布时间UpdateTime更新时间表5绝育申请表(form_jueyu)
13、字段名 数据类型说明NameVarchar宠物姓名WeightVarchar宠物体重ColorVarchar宠物毛色HealthVarchar宠物健康状况User_nameVarchar申请人姓名PhoneInt申请人电话addressVarchar申请人地址DescriptionText简要说明PhotoVarchar宠物照片路径SexVarchar申请人性别PubdateTime申请时间UpdateTime修改时间表6领养申请表(form_lingyang)字段名 数据类型说明Namevarchar(20)姓名AgeInt年龄SexVarchar性别OccupationalVarchar职
14、业CompanyVarchar工作单位AddressVarchar地址PhoneInt电话Name_1Vahchar家庭成员1姓名Sex_1Varchar家庭成员1性别Age_1age家庭成员1年龄Relationship_1Varchar与其关系有5位家庭成员信息此处省略4人的。LikeVarchar家庭成员喜欢动物吗OpinionVarchar家庭各成员对领养动物的意见HelpVarchar家庭各成员能否给予照顾动物帮助AidInt动物编号Ani_urlVarchar动物主页链接表7 管理员信息表(testc)字段名 数据类型说明IdInt管理员编号(主键)Usertyp int管理员类型
15、PwdVarchar经加密后的密码UseridVarchar管理账号UnameVarchar管理员称呼TnameVarchar该类型名称EmailVarchar管理员邮箱TypeidInt类型编号LogintimeTime最后登录时间LoginipVarcahr最后登录时IP 表8 友情链接(flink)字段名 数据类型说明IdInt友情链接ID(主键)UrlVarchar链接URLWebnameVarchar网站名称MsgVarchar附加信息LogoVarchar友情链接logo地址DtimeTime发布时间TypeidInt链接类型idIscheckInt审核是否通过表9 栏目列表(ty
16、pe)字段名 数据类型说明IdInt栏目id(主键)TopidInt排序TypenameVarchar栏目名称TypedirVarchar栏目链接DefaultnameVarchar栏目默认页TempindexVarcar栏目首页模板TemplistVarchar栏目列表页模板TamparticleVarchar栏目文章模板KeywordsVarchar栏目关键词DescriptionVarchar栏目描述ContentText栏目内容表10admintype(company)字段名数据类型说明RankIntID(主键)TyenameVarchar管理员类型名称SystemInt系统内置管理员
17、类型还是用户自己添加Purviewsvarchar(200) 专业名称Purviewsvarchar(100) 管理员权限3、 项目功能描述 所有前台页面使用div+css模式布局,并加入js特效,增强页面美观性前台页面首页如下图1所示:图1 首页展示首页用来展示网站主题,包括导航栏,图片轮换模块,微博调用及友情链接,新闻展示模块。如下图2所示微博模块:图2 功能模块如下图3所示导航栏:图3 导航栏主要二级页面 如图4所示新闻信息模块:图4 新闻页面如图5所示爱心公益模块: 图5 爱心公益主要表单通过div与table的多层嵌套实现,主要表单如下:动物列表页面为多重选项列表,如下图6所示:图6
18、 动物筛选动物领养页面如下图7所示:图7 动物领养的页面领养表单填写页面如下图8所示:图8 领养表单绝育表单填写之前通过js判断条件,同意各项协议内容后方可跳转到申请页面如图9所示: 图9 条件判断 绝育表单页面如下图10所示:图10 绝育申请用户通过注册时的电话号码查询申请进度,如图11所示:图11进度查询管理员通过后台中绝育表单管理申请如图12所示: 图12 申请管理文章页面评论顶踩分享功能如下图13所示: 图13 文章评论通过已建立的后台CMS内容管理系统,修改完善网站模块及具体信息内容。发布的全部文档列表管理页面如下图14所示:图14发布的全部文档列表管理页面友情链接管理模块如下图15
19、所示:图15友情链接管理功能页面 4、项目技术总结4.1 技术创新及特点1.使用到的PHP技术:(1)PHP是免费的:和其它技术相比,PHP本身免费。 (2)PHP的快捷性: 程序开发快,运行快,技术本身学习快。嵌入于HTML:因为PHP 可以被嵌入于HTML语言,它相对于其他语言,编辑简单,实用性强,更适合初学者。 (3)跨平台性强: 由于PHP是运行在服务器端的脚本可以运行在UNIX,、LINUX、WINDOWS下。 (4)效率高: PHP消耗相当少的系统资源。 (5)图像处理: 用PHP动态创建图像 (6)面向对象: 在php4,php5 中,面向对象方面都有了很大的改进,现在php完全
20、可以用来开发大型商业程序。 2.使用到的MySQL数据库技术:(1)使用C和C+编写,并使用了多种编译器进行测试,保证源代码的可移植性 (2)支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统 (3)为多种编程语言提供了API。这些编程语言包括C、C+、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。 (4)支持多线程,充分利用CPU资源 (5)优化的SQL查询算法,有效地提高查询速度 (6)既能够作为一个单独的应用程序应用在客户端服务器网络环
21、境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名 (7)提供TCP/IP、ODBC和JDBC等多种数据库连接途径 (8)提供用于管理、检查、优化数据库操作的管理工具(9)可以处理拥有上千万条记录的大型数据库 (10)支持多种存储引擎4.2 个人收获与体会 通过这个项目的实现,让我感觉到学好一门编程技术,并把自己想要的效果最终编写出来,是非常有成就感的事情。在编程的过程中,把许多以前不扎实的知识给运用并弄懂了,不如说PHP的知识,我就是在编写项目的时候,逐渐弄懂的。编程只是整个项目的一小部分,最耗时的就是排错,一个小小的错误能影响到整个效果,所以在编写的时候,我也学会到了要有严谨的编写态度。管理员这个模块虽然和专业的系统在功能上和外观上有很大差距,但基本的功能都可以的实现。以后在工作当中,遇到编程的任务时,我一定要提高自己的技术水平,培养分析问题和解决问题的能力,要自己更加专业。最后,虽然这个开发过程并不是实际工作,但是它教会了我认真细心分析问题,解决问题的方法和准则。也要谢谢我的辅导老师韩颖老师,因为她我才能顺利完成我的毕业设计。 .20