毕业综合实践报告实例网站CMS开发实践_第1页
毕业综合实践报告实例网站CMS开发实践_第2页
毕业综合实践报告实例网站CMS开发实践_第3页
毕业综合实践报告实例网站CMS开发实践_第4页
毕业综合实践报告实例网站CMS开发实践_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江东方职业技术学院毕业综合实践报告,毕业设计(论文)(2012届)题目:网站开发实践系:工程技术系专业:计算机应用技术姓名:伍圣节学号:0310090120指导教师:题目:网站开发实践系:工程技术系专业:计算机应用技术姓名:伍圣节学号:0310090120目录摘要关键词弓I言CMS开发的准备工作CMS的概念2.2搭建开发环境2.2.1开发语言的选择CMS构架CMS的设计模式CMS类型定位3.3网站表示层3.4页面结构341内部342外部3.5页面扩展功能3.5.1基本扩展功能3.5.2可选扩展功能3.6网站模版主要需要页面数据库布局与设计4.1表的设计分析4.1.1用户表的设计分析4.1.2网站信息表的设计分析4.1.3内容表的设计分析4.1.4分类表的设计分析4.1.5参数表的设计分析4.1.6留言表的设计分析4.2表的建立CMS设计4.3.2建立模版与数据库之间的关系4.3.3模版标签制定4.4类、数据模型的定义441类的概念442关键字解析类443数据模型的概念4.5网站后台UI设计4.6后台程序设计5.结束语参考文献网站CMS开发实践摘要:CMS意为呐容管理系统”,在网站建设过程中,一个功能丰富的CMS能极大的加快网站建设的速度,从自身来说完成一个完整的项目能学到更多知识。CMS的开发主要经过分析、构架、设计等几个步骤,并通过参考世界上知名的CMS,确立出发点,制定CMS风格与功能类型,逐步探索CMS开发原理。本文着重介绍各个环节的实现方法,最后成功完成一个功能强大的CMSO关键词:CMS;网站后台;CMS建站引言Web2.0的出现使网络用户从单纯的信息接收者变成信息的创造者,这也标志网络信息共享的能力逐渐强大。但大量信息的衍生,信息更新与维护的人力物力也加大,因此建立一个提高劳动效率的内容管理系统(CMS)相当重要。内容管理系统是一个很广泛的概念,可以说稍微具备内容管理能力的后台都可以称为CMS,CMS建站是现今网站建设的主流方式,目前网上己有许多优秀的CMSoCMS也是网站核心所在,没有CMS的网站必定不是好网站。传统的网站CMS虽然也能起到管理网站内容和加快建站的速度的作用,但它的缺点也显而易见,那就是局限性太大,工作中如需增加新功能,尤其是客户要求用多个视图(网页、flash、移动设备等)去显示的时候,不得不为每个视图写一大堆代码,导致重复代码过多难以维护,长期下去整个CMS中文件会越来越繁杂,效率仍然很低。虽然网络上有一些受欢迎的CMS(如phpcms,yn)但是在工作中我们会发现别人的代码阅读比较困难,修改时往往需要浪费很多时间,而且只有自己通过实践做出属于自己的程序,才能巩固先前的学习到的知识,提高自己的技术水平,因此我在实习过程中决定自己开发一个CMSo当前我所在单位是一个网站建设公司,我负责的是网站功能的实现,也就是网站程序员。一般一个网站制作步骤是客户先给要求,美工设计网站,客户审核通过后,我们再去制作网站的功能。我们做网站都是用自己的CMS去做,同时在制作网站会完善自己的CMSo也有时候客户觉得自己网站不好找我们公司修改,我们就要去修改别人的网站,修改是件费力的事,如果要改某个功能可能就要将整个网站结构了解一遍,然后再仔细分析内部代码。CMS开发的准备工作2.1CMS的概念①CMS是ContentManagementSystem的缩写,意为“内容管理系统”。CMS具有许多基于模板的优秀设计,可以加快网站开发的速度和减少开发的成本。CMS的功能并不只限于文本处理,它也可以处理图片、Flash动画、声像流、图像甚至电子邮件档案。CMS其实是一个很广泛的称呼,从一般的博客程序、新闻发布程序,到综合性的网站管理程序都可以被称为内容管理系统。CMS本身被设计出来的出发点来说,应该是方便一些对于各种网络编程语言并不是很熟悉的用户用一种比较简单的方式来管理自己的网站。2.2搭建开发环境2.2.1开发语言的选择目前主流web服务器语言有好儿种,相对来说PHP的具有很多其它语言所没有的优点,它自带许多实用的函数和对象,而且执行速度很快,儿乎支持所有数据库类型,对系统资源消耗少,是一个很适合开发网站的脚本语言,因此PHP亳无疑问是首选。PHP,是英文超级文本预处理语言HypertextPreprocessor的缩写。PHP是一种HTML内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用。2.2.2数据库和服务器软件选择由于现在的网站对数据库和服务器要求都不高,开发PHP的数据库和服务器一般是用Mysql十PHP,也就是说使用Apache+Mysql+PHP是现在网站建设企业的普遍做法,它的简写是AMP,本来是一套Linux上的免费WEB应用程序,现在能在Wmdows上使用,而且网上有很多集成的软件,配置简单适合小企业和初学者。CMS构架3.1CMS的设计模式如何做出更好的CMS是开发CMS之前首要解决的问题。传统CMS都是简单的将前台的表示页面和后台的内容管理页面分开,所有页面之间独立性很高,都有自己的数据库调用方式。这种组织形式是大多数网站程序员所使用的,逻辑结构简单,虽然不影响网站运行速度,但在加入新功能或在不同页面显示相同内容等过程中显得格外冗余。新的CMS必须要考虑到让各组织功能分工合理,代码重用率高,且表现层页面中服务器脚本数量更少。为此,我参考了一些CMS系统,最后我决定使用MVC设计模式来开发CMScMVC简单的说是三个单词的缩写,分别为:模型(Model),视图(View)和控制ContiolleijoMVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。虽然MVC内部原理比较复杂,运用这种模式工作量会提高,但它的好处很多,使用运用了MVC设计模式的CMS建站速度将更快,许多老式CMS带有缺点和难题,都能得到了解决。MVC的引入把服务器脚本从表示层页面分离出来,即数据模型和视图相分开,控制器起中介作用,提高了代码的重用性,此外还有许多其它优点。图1模型一视图一控制器关系CMS类型定位当前网站制作行业普遍面向的是企业或者电子商务类型网站制作,功能类型大同小异。大部分CMS的后台界面基本上差不多,但是前台风格往往迥然,前台的表现形式是客户最为关注的一个方面,因此根据目前需求来说CMS制作的最低要求之一就是基于模版,模版是CMS建站的一个特点,也就是后台初次配置无需其它更改,主要的工作就是替换模版(更改表现层),这是加快网站建设的关键。CMS的主要类型确定为:企业类型和电子商务网站的CMS,表现优先,偏向前台设计,对模版支持良好。3.3网站表示层按照先前制定的CMS类型,一个网站通常拥有的页面有:首页、简介、新闻、产品、相册、下载、留言、招聘、联系我们,当然一切还要根据实际需求来定,这里更多的是指页面类型,即它们包括了一个网站表示层的基本所有功能。3.4页面结构3.4.1内部每个页面都有一些关联页面,通常所有页面都有头部(包含网站Logo、导航栏等)和尾部(包含联系方式、网站备案号、技术支持、统计、网站地图等)。对于普通风格网站(不包括特殊风格)除首页外都一般都屈于左右结构,因此都会拥有左侧板块(包含当前页面内容的分类、最新资讯或者联系方式等)。3.4.2外部当我们设计完前台模版之后,虽然能直接访问这个模版页,可是却无法看到任何需要的内容,如何才能让用户看到网站的内容呢?我们可以制定儿个前台模版调用页面来调用模版,即可显示网站所有的内容。如:首页(mdex.php)、留言(feedback.php)、列表显示页(list.php)、内容页(content.php)o这里的儿个调用页面其实就是属于MVC设计模式的控制器部分,实现对模型的调用。3.5页面扩展功能3.5.1基本扩展功能默认具有的扩展功能,这些功能是网站常用到的,属于某些页面内部,通常有:多级分类、站内搜索、首页动画。3.5.2可选扩展功能可选扩展功能只是对客户来说是可选的,一个完善的CMS都具备多种扩展功能,如果只是用到才将功能加进去,就不能反映出CMS建站的快速高效。需要的扩展有:支持多语言版、支持静态模式、支持生成网站地图、支持在线咨询、支持评论及留言、会员注册。3.6网站模版主要需要页面经过上面分析,一个通用模版须具备如表1所示页面。表1模版主要页面首页mdex.html简介about.html新闻newslist.html:news.htnil联系contact.html产品pioductlist.html;pioduct.html留言feedback.html相册album.html:albumlist.html关联left.html:head.html:fbot.htm下载down.html;dowiilist.html搜索search.litnil招聘job.html;joblist.html数据库布局与设计4.1表的设计分析4.1.1用户表的设计分析为了后台安全一般都设置后台密码,因此存储用户数据的表是必不可少的,如果是比较大型的网站数据较多管理人员也很多,可以再添加一张表为用户组表,并设置不同组的用户权限。4.1.2网站信息表的设计分析网站每个页面都有某些相同的内容,比如网站名称、底部联系方式,如果直接修改必须每个页面都修改,而且还要在本地操作才行,因此统一将这类型信息放在一个表,需要时从数据库取出。4.1.3内容表的设计分析前面说到了网站内容的分类,分类之间有很多地方相同,因此为了易于管理将这些内容可以统一放在一个表内。4.1.4分类表的设计分析无论是产品、新闻还是公司简介其实都能看成是一个个分类,产品和新闻下还有小分类,但是这里的分类指页面显示的类型,也就是网站前台的功能,比如公司简介和关于我们页面应该理解为两个不同的分类,也可以把公司简介当作是网站的功能。此外还有对分类的分类,这点后面再补充。4.1.5参数表的设计分析通常根据客户不同,每个分类总是需要储存一些额外信息(如市场价,规格,型号),所以要实现CMS的添加分类参数功能,增加此表的目的就是记录添加过的参数,用于删除,记录参数类型。能通过后台添加内容的参数是一个很重要的功能,这里用另个表来保存添加过的字段是较为通用的做法,其它方法也类似这样各有优点。4.1.6留言表也可以说是评论表,用来记录某条内容的评论,或者用户的反馈、留言。留言信息包含字段较多,与内容表差异大因此单独建表。4.2表的建立在设计的时候一般是用可视化的数据库管理软件,常用的有phpmyadmm和navicato为了以后扩展的需要,给所有CMS使用的表名前添加标识符“CMS”,当然在后期是用sql来生成表,自动添加前缀,无需手动创建,数据库的表主要如下表2所示。表2数据库表概况表名作用主要字段CMS_Usei记录用户、管理员信息UseiName;PasswordCMS_Content存放所有内容(包括、新闻、简介、产品、下载等)ContentID:ClassID:Pic;Title;ContentCMS_SiteLifb记录网站信息SiteTitle:CompanyName;CompanyPhoneCMS_Cass记录分类ClassID;ClassName;ClassKeyword;ParentClassIDCMS_Spec记录分类参数ClassID;SpecName;SpecType;SpecFiled5.CMS设计4.3后台设计分析4.3.1后台主要功能实现前面提到CMS的内容分类就是网站的前台功能的分类,用于区分内容类型和前台显示。但是我们虽然知道所添加的分类的作用,而CMS不知道这个分类是用来做什么,也不知道如何去管理这个分类的内容,如果我们都使用同一个页面管理分类中内容,那么整个管理系统效率会很差。因此还要为内容分类进行分类,实际上就是使后台知道该使用哪个入口去管理这个分类的内容。一般我们将内容分类分成单篇、产品、下载、新闻、相册、留言儿个类别,凡屈于同个分类的内容都将也只能从这个分类的内容管理子系统进行添加修改或删除。内容分类具体的可以按如图1所示举例:图1内容分类管理系统视图4.3.2建立模版与数据库之间的关系完成分类管理和内容管理子系统后,后台己经基本成型,数据都己经可以添加修改,可是如何将数据传递给前台页面呢?前面说过用儿个处理页面来调用模版显示内容,即控制器调用数据模型,然后再调用模版显示,可是大部分内容都是通过这儿个页面来访问,如何知道我们需要访问的是什么内容?其实方法很多可以判断页面地址,也可以根据页面内容来取出信息。那乂怎么知道把内容放在模版页面的哪个地方呢?这就要在制作模版的时候在需要显示内容的地方加上一个标志或者关键字,调用模版时把关键字替换成需要的内容,即解析模版。4.3.3模版标签制定关键字的意思是电脑语言里事先定义的,有特别意义的标识符,有时乂叫保留字,为了避免与模版中其它字符冲突,我们可以把关键字用大括号括起来,并且给关键字前添加CMS标志,这样就形成了一个标签形式,我们通过CMS标签来显示内容。(1)单一标签:单一标签的作用是显示单个内容,包括网站信息、QueiyString>自定义标签等,例如网站名称:{cms:sitename}o当前内容标签:当我们访问一条具体记录时,这条内容可能包含标题,内容,添加时间等字段,为了明确显示从属关系,不能将它们定义成单一标签,因此需要定义新的结构,可以给标签添加属性的方式来强化标签,例如要显示一条内容记录的标题,可以先创建(content)标签,然后设置它的(type)属性为(title),即:{cms:contenttype=Title}就能得到内容的标题了。列表标签:但有时显示某方面内容仅仅一个关键字是不够的,如:我需要显示最新的10条新闻,则我要告诉服务器我要显示的类型是新闻,数目是10,按添加时间排序,而且不能简单的给我10个信息,如果直接在10条HTML标签中插入CMS标签是不明智的,更好的方法就是定义列表标签(list),通过设置属性来设置显示内容的条件,循环输出内容。它和其它标签的区别是有闭合标签,也就是它和HTML元素类似具有元素内容,列表标签的元素内容包括HTML标签和其它CMS标签,通常具有属性:内容分类(class)内容数目(len)、搜索排序(order)、是否分页(pageshow)o例如:(cms:listclass=llen=10pageshow=tnie)<aluef=7content/index.phpid=(cms:listtype=ContentID}^(cmsJisttype=Title}</a>(/cms:list}解释:根据len的长度会循环输出元素(htnil标签),当pageshow为tine时将寻找(cms:listbai)标签显示分页链接,当order为空时默认按添加时间降序排列,当前页面号码从queiystrmg获取,记录在全局变量当中。但是这个列表标签只能显示内容列表不能显示分类列表,所以分类列表要定义新关键字(navhst),但分类为树形结构,一个分类下可能有多个分类,如果只想显示顶级分类或显示某分类下的子分类可以增加属性(PaientClassID),显示二级分类示例如下:(cms:navlist}<lixaluef=71ist/index.phpclassid=(cms:navlisttype=ClassID}^(cms^iavlisttype=ClassName}</a><dl>(cms:navlistPaientClassID=(cms:navlisttype=ClassID})<dd><aluef=71ist/mdex.phpclassid=(cms:navlisttype=ClassID}>(cms:navlisttype=ClassName}</ax/dd>(/cms:navlist}</dl></li>(cms:navlist}解释:(order)不输入时默认根据OiderlD升序排列,当(PaientClassID)值不输入默认为0,即显示的是顶级分类。我们定义列表标签属性内的单一标签的父标签是与包含它的标签的父标签。4.4类、数据模型的定义4.4.1类的概念类是面向对象程序设计语言中的一个概念。一个类定义了一组对象。类具有行为(be-havoir),它描述一个对象能够做什么以及做的方法(method),它们是可以对这个对象进行操作的程序和过程。例如:数据库操作类vphpClassMysql〃类的开始{var$db="localhost”;//数据库地址;vaiSdbname="root"//用户名;vaiSdbpwd=密码;vaiSdbtable="mysql";//使用的数据库varScoim;〃数据库连接;varSiesult;〃结果集vaiSmysql;//执行的mysqlvaiSrow;〃结果集中找数据fiinctioncreatecoimO〃这个类方法是开始一个conn连接,然后开始选择数据库{$tliis->coini=mysql_coimect($tlHS->db,Stliis->dbname,Stliis->dbpwd);mysql_select_db($tliis->dbtable,Sthis->coim);}fiinctiongetresule。〃这个是得到一个结果集$tlns->iesult=mysql_quei-y(Sthis->mysql,Sthis->coini);}fiinctiongetrow()〃创建一个向前的结果集指针($tlns->iow=mysql_fetch_anay(Sthis->iesult);letuniSthis->iow;}fiinctionclosedatabaseQ(mysql_close(Sthis->coini);}}〃类结束4.4.2关键字解析类此功能用于解析模版中的关键字,将它们替换成相关内容。这部分是调用模版功能实现的核心环节,否则模版将失去意义。这里主要的操作便是定义解析需要的类和函数。4.4.3数据模型的概念模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。这里需要做的依然是定义数据库操作类和函数,并对己经定义好的类进行扩展。主要的儿个基本数据模型如下:分类数据模型:用于取出分类信息内容数据模型:用于取出内容用户数据模型:用于取出用户数据,用户登录检测留言数据模型:用于取出留言、评论,提交留言其实上面的模型还可以继续继承或者把它分割成不同的模型,例如内容模型可以分割为产品和新闻数据模型。内容模型代码示例:Classdb_contentextendsMysql(vai$_name='Cms_Content';fiuictiongetContentById($ClassID)(Si-Stlus->queiyC6select*fiomSthis->_namewhereClassID=$ClassID'')leturnSthis->conData($f);}fiuictiongetPage($ClassID,$start,$size)(Si-Stlus->queiy(^select*fiomSthis->_namewhereClassID=$ClassIDhunt$start,$size'');letuniStlus->coiiData($f);}〃将数据数据以关联数组保存,提供给控制器和表示层。fiuictioncoiiData($i)(if($i-==false)ietum;Sdata=aiTay();while($d=mysql_fetch_aiTay(Sr))($data[count($data)]=Sd;}letuniSdata;}}4.5网站后台UI设计UI(用户界面)一般使用图像软件来设计,例如:PS、Al、CDRo部分网站后台界面基本千篇一律,不一定要创意、美

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论