毕业综合实践报告实例网站CMS开发实践.docx

上传人:b****6 文档编号:4849373 上传时间:2022-12-10 格式:DOCX 页数:12 大小:25.95KB
下载 相关 举报
毕业综合实践报告实例网站CMS开发实践.docx_第1页
第1页 / 共12页
毕业综合实践报告实例网站CMS开发实践.docx_第2页
第2页 / 共12页
毕业综合实践报告实例网站CMS开发实践.docx_第3页
第3页 / 共12页
毕业综合实践报告实例网站CMS开发实践.docx_第4页
第4页 / 共12页
毕业综合实践报告实例网站CMS开发实践.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

毕业综合实践报告实例网站CMS开发实践.docx

《毕业综合实践报告实例网站CMS开发实践.docx》由会员分享,可在线阅读,更多相关《毕业综合实践报告实例网站CMS开发实践.docx(12页珍藏版)》请在冰豆网上搜索。

毕业综合实践报告实例网站CMS开发实践.docx

毕业综合实践报告实例网站CMS开发实践

浙江东方职业技术学院

毕业综合实践报告、毕业设计(论文)

(2012届)

题目:

网站CMS开发实践

系:

工程技术系专业:

计算机应用技术

姓名:

伍圣节学号:

0310090120

指导教师:

邱清辉

二○一二年五月

摘要1

关键词1

1.引言1

2.CMS开发的准备工作1

2.1CMS的概念2

2.2搭建开发环境2

2.2.1开发语言的选择2

2.2.2数据库和服务器软件选择2

3.CMS构架2

3.1CMS的设计模式2

3.2CMS类型定位3

3.3网站表示层3

3.4页面结构3

3.4.1内部3

3.4.2外部4

3.5页面扩展功能4

3.5.1基本扩展功能4

3.5.2可选扩展功能4

3.6网站模版主要需要页面4

4.数据库布局与设计4

4.1表的设计分析5

4.1.1用户表的设计分析5

4.1.2网站信息表的设计分析5

4.1.3内容表的设计分析5

4.1.4分类表的设计分析5

4.1.5参数表的设计分析5

4.1.6留言表的设计分析5

4.2表的建立5

5.CMS设计6

4.3后台设计分析6

4.3.1后台主要功能实现6

4.3.2建立模版与数据库之间的关系7

4.3.3模版标签制定7

4.4类、数据模型的定义8

4.4.1类的概念8

4.4.2关键字解析类9

4.4.3数据模型的概念10

4.5网站后台UI设计11

4.6后台程序设计11

5.结束语11

参考文献12

网站CMS开发实践

摘要:

CMS意为"内容管理系统",在网站建设过程中,一个功能丰富的CMS能极大的加快网站建设的速度,从自身来说完成一个完整的项目能学到更多知识。

CMS的开发主要经过分析、构架、设计等几个步骤,并通过参考世界上知名的CMS,确立出发点,制定CMS风格与功能类型,逐步探索CMS开发原理。

本文着重介绍各个环节的实现方法,最后成功完成一个功能强大的CMS。

关键词:

CMS;网站后台;CMS建站

1.引言

Web2.0的出现使网络用户从单纯的信息接收者变成信息的创造者,这也标志网络信息共享的能力逐渐强大。

但大量信息的衍生,信息更新与维护的人力物力也加大,因此建立一个提高劳动效率的内容管理系统(CMS)相当重要。

内容管理系统是一个很广泛的概念,可以说稍微具备内容管理能力的后台都可以称为CMS,CMS建站是现今网站建设的主流方式,目前网上已有许多优秀的CMS。

CMS也是网站核心所在,没有CMS的网站必定不是好网站。

传统的网站CMS虽然也能起到管理网站内容和加快建站的速度的作用,但它的缺点也显而易见,那就是局限性太大,工作中如需增加新功能,尤其是客户要求用多个视图(网页、flash、移动设备等)去显示的时候,不得不为每个视图写一大堆代码,导致重复代码过多难以维护,长期下去整个CMS中文件会越来越繁杂,效率仍然很低。

虽然网络上有一些受欢迎的CMS(如phpcms,yii)但是在工作中我们会发现别人的代码阅读比较困难,修改时往往需要浪费很多时间,而且只有自己通过实践做出属于自己的程序,才能巩固先前的学习到的知识,提高自己的技术水平,因此我在实习过程中决定自己开发一个CMS。

当前我所在单位是一个网站建设公司,我负责的是网站功能的实现,也就是网站程序员。

一般一个网站制作步骤是客户先给要求,美工设计网站,客户审核通过后,我们再去制作网站的功能。

我们做网站都是用自己的CMS去做,同时在制作网站会完善自己的CMS。

也有时候客户觉得自己网站不好找我们公司修改,我们就要去修改别人的网站,修改是件费力的事,如果要改某个功能可能就要将整个网站结构了解一遍,然后再仔细分析内部代码。

2.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应用程序,现在能在Windows上使用,而且网上有很多集成的软件,配置简单适合小企业和初学者。

3.CMS构架

3.1CMS的设计模式

如何做出更好的CMS是开发CMS之前首要解决的问题。

传统CMS都是简单的将前台的表示页面和后台的内容管理页面分开,所有页面之间独立性很高,都有自己的数据库调用方式。

这种组织形式是大多数网站程序员所使用的,逻辑结构简单,虽然不影响网站运行速度,但在加入新功能或在不同页面显示相同内容等过程中显得格外冗余。

新的CMS必须要考虑到让各组织功能分工合理,代码重用率高,且表现层页面中服务器脚本数量更少。

为此,我参考了一些CMS系统,最后我决定使用MVC设计模式来开发CMS。

MVC简单的说是三个单词的缩写,分别为:

模型(Model),视图(View)和控制Controller)。

MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。

使用MVC应用程序被分成三个核心部件:

模型、视图、控制器。

它们各自处理自己的任务。

虽然MVC内部原理比较复杂,运用这种模式工作量会提高,但它的好处很多,使用运用了MVC设计模式的CMS建站速度将更快,许多老式CMS带有缺点和难题,都能得到了解决。

MVC的引入把服务器脚本从表示层页面分离出来,即数据模型和视图相分开,控制器起中介作用,提高了代码的重用性,此外还有许多其它优点。

图1模型-视图-控制器关系

3.2CMS类型定位

当前网站制作行业普遍面向的是企业或者电子商务类型网站制作,功能类型大同小异。

大部分CMS的后台界面基本上差不多,但是前台风格往往迥然,前台的表现形式是客户最为关注的一个方面,因此根据目前需求来说CMS制作的最低要求之一就是基于模版,模版是CMS建站的一个特点,也就是后台初次配置无需其它更改,主要的工作就是替换模版(更改表现层),这是加快网站建设的关键。

CMS的主要类型确定为:

企业类型和电子商务网站的CMS,表现优先,偏向前台设计,对模版支持良好。

3.3网站表示层

按照先前制定的CMS类型,一个网站通常拥有的页面有:

首页、简介、新闻、产品、相册、下载、留言、招聘、联系我们,当然一切还要根据实际需求来定,这里更多的是指页面类型,即它们包括了一个网站表示层的基本所有功能。

3.4页面结构

3.4.1内部

每个页面都有一些关联页面,通常所有页面都有头部(包含网站Logo、导航栏等)和尾部(包含联系方式、网站备案号、技术支持、统计、网站地图等)。

对于普通风格网站(不包括特殊风格)除首页外都一般都属于左右结构,因此都会拥有左侧板块(包含当前页面内容的分类、最新资讯或者联系方式等)。

3.4.2外部

当我们设计完前台模版之后,虽然能直接访问这个模版页,可是却无法看到任何需要的内容,如何才能让用户看到网站的内容呢?

我们可以制定几个前台模版调用页面来调用模版,即可显示网站所有的内容。

如:

首页(index.php)、留言(feedback.php)、列表显示页(list.php)、内容页(content.php)。

这里的几个调用页面其实就是属于MVC设计模式的控制器部分,实现对模型的调用。

3.5页面扩展功能

3.5.1基本扩展功能

默认具有的扩展功能,这些功能是网站常用到的,属于某些页面内部,通常有:

多级分类、站内搜索、首页动画。

3.5.2可选扩展功能

可选扩展功能只是对客户来说是可选的,一个完善的CMS都具备多种扩展功能,如果只是用到才将功能加进去,就不能反映出CMS建站的快速高效。

需要的扩展有:

支持多语言版、支持静态模式、支持生成网站地图、支持在线咨询、支持评论及留言、会员注册。

3.6网站模版主要需要页面

经过上面分析,一个通用模版须具备如表1所示页面。

表1模版主要页面

首页

index.html

简介

about.html

新闻

newslist.html;news.html

联系

contact.html

产品

productlist.html;product.html

留言

feedback.html

相册

album.html;albumlist.html

关联

left.html;head.html;foot.htm

下载

down.html;downlist.html

搜索

search.html

招聘

job.html;joblist.html

4.数据库布局与设计

4.1表的设计分析

4.1.1用户表的设计分析

为了后台安全一般都设置后台密码,因此存储用户数据的表是必不可少的,如果是比较大型的网站数据较多管理人员也很多,可以再添加一张表为用户组表,并设置不同组的用户权限。

4.1.2网站信息表的设计分析

网站每个页面都有某些相同的内容,比如网站名称、底部联系方式,如果直接修改必须每个页面都修改,而且还要在本地操作才行,因此统一将这类型信息放在一个表,需要时从数据库取出。

4.1.3内容表的设计分析

前面说到了网站内容的分类,分类之间有很多地方相同,因此为了易于管理将这些内容可以统一放在一个表内。

4.1.4分类表的设计分析

无论是产品、新闻还是公司简介其实都能看成是一个个分类,产品和新闻下还有小分类,但是这里的分类指页面显示的类型,也就是网站前台的功能,比如公司简介和关于我们页面应该理解为两个不同的分类,也可以把公司简介当作是网站的功能。

此外还有对分类的分类,这点后面再补充。

4.1.5参数表的设计分析

通常根据客户不同,每个分类总是需要储存一些额外信息(如市场价,规格,型号),所以要实现CMS的添加分类参数功能,增加此表的目的就是记录添加过的参数,用于删除,记录参数类型。

能通过后台添加内容的参数是一个很重要的功能,这里用另个表来保存添加过的字段是较为通用的做法,其它方法也类似这样各有优点。

4.1.6留言表的设计分析

留言表也可以说是评论表,用来记录某条内容的评论,或者用户的反馈、留言。

留言信息包含字段较多,与内容表差异大因此单独建表。

4.2表的建立

在设计的时候一般是用可视化的数据库管理软件,常用的有phpmyadmin和navicat。

为了以后扩展的需要,给所有CMS使用的表名前添加标识符“CMS”,当然在后期是用sql来生成表,自动添加前缀,无需手动创建,数据库的表主要如下表2所示。

表2数据库表概况

表名

作用

主要字段

CMS_User

记录用户、管理员信息

UserName;Password

CMS_Content

存放所有内容(包括、新闻、简介、产品、下载等)

ContentID;ClassID;Pic;Title;Content

CMS_SiteInfo

记录网站信息

SiteTitle;CompanyName;CompanyPhone

CMS_Cass

记录分类

ClassID;ClassName;ClassKeyword;ParentClassID

CMS_Spec

记录分类参数

ClassID;SpecName;SpecType;SpecFiled

5.CMS设计

4.3后台设计分析

4.3.1后台主要功能实现

前面提到CMS的内容分类就是网站的前台功能的分类,用于区分内容类型和前台显示。

但是我们虽然知道所添加的分类的作用,而CMS不知道这个分类是用来做什么,也不知道如何去管理这个分类的内容,如果我们都使用同一个页面管理分类中内容,那么整个管理系统效率会很差。

因此还要为内容分类进行分类,实际上就是使后台知道该使用哪个入口去管理这个分类的内容。

一般我们将内容分类分成单篇、产品、下载、新闻、相册、留言几个类别,凡属于同个分类的内容都将也只能从这个分类的内容管理子系统进行添加修改或删除。

内容分类具体的可以按如图1所示举例:

图1内容分类管理系统视图

4.3.2建立模版与数据库之间的关系

完成分类管理和内容管理子系统后,后台已经基本成型,数据都已经可以添加修改,可是如何将数据传递给前台页面呢?

前面说过用几个处理页面来调用模版显示内容,即控制器调用数据模型,然后再调用模版显示,可是大部分内容都是通过这几个页面来访问,如何知道我们需要访问的是什么内容?

其实方法很多可以判断页面地址,也可以根据页面内容来取出信息。

那又怎么知道把内容放在模版页面的哪个地方呢?

这就要在制作模版的时候在需要显示内容的地方加上一个标志或者关键字,调用模版时把关键字替换成需要的内容,即解析模版。

4.3.3模版标签制定

关键字的意思是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,为了避免与模版中其它字符冲突,我们可以把关键字用大括号括起来,并且给关键字前添加CMS标志,这样就形成了一个标签形式,我们通过CMS标签来显示内容。

(1)单一标签:

单一标签的作用是显示单个内容,包括网站信息、QueryString、自定义标签等,例如网站名称:

{cms:

sitename}。

(2)当前内容标签:

当我们访问一条具体记录时,这条内容可能包含标题,内容,添加时间等字段,为了明确显示从属关系,不能将它们定义成单一标签,因此需要定义新的结构,可以给标签添加属性的方式来强化标签,例如要显示一条内容记录的标题,可以先创建(content)标签,然后设置它的(type)属性为(title),即:

{cms:

contenttype=Title}就能得到内容的标题了。

(3)列表标签:

但有时显示某方面内容仅仅一个关键字是不够的,如:

我需要显示最新的10条新闻,则我要告诉服务器我要显示的类型是新闻,数目是10,按添加时间排序,而且不能简单的给我10个信息,如果直接在10条HTML标签中插入CMS标签是不明智的,更好的方法就是定义列表标签(list),通过设置属性来设置显示内容的条件,循环输出内容。

它和其它标签的区别是有闭合标签,也就是它和HTML元素类似具有元素内容,列表标签的元素内容包括HTML标签和其它CMS标签,通常具有属性:

内容分类(class)、内容数目(len)、搜索排序(order)、是否分页(pageshow)。

例如:

{cms:

listclass=1len=10pageshow=true}

listtype=ContentID}’>{cms:

listtype=Title}

{/cms:

list}

解释:

根据len的长度会循环输出元素(html标签),当pageshow为true时将寻找{cms:

listbar}标签显示分页链接,当order为空时默认按添加时间降序排列,当前页面号码从querystring获取,记录在全局变量当中。

但是这个列表标签只能显示内容列表不能显示分类列表,所以分类列表要定义新关键字(navlist),但分类为树形结构,一个分类下可能有多个分类,如果只想显示顶级分类或显示某分类下的子分类可以增加属性(ParentClassID),显示二级分类示例如下:

{cms:

navlist}

  • navlisttype=ClassID}’>{cms:

    navlisttype=ClassName}

    {cms:

    navlistParentClassID={cms:

    navlisttype=ClassID}}

    navlisttype=ClassID}’>{cms:

    navlisttype=ClassName}

    {/cms:

    navlist}

  • {cms:

    navlist}

    解释:

    (order)不输入时默认根据OrderID升序排列,当(ParentClassID)值不输入默认为0,即显示的是顶级分类。

    我们定义列表标签属性内的单一标签的父标签是与包含它的标签的父标签。

    4.4类、数据模型的定义

    4.4.1类的概念

    类是面向对象程序设计语言中的一个概念。

    一个类定义了一组对象。

    类具有行为(be-havoir),它描述一个对象能够做什么以及做的方法(method),它们是可以对这个对象进行操作的程序和过程。

    例如:

    数据库操作类

    ClassMysql//类的开始

    {

    var$db="localhost";//数据库地址;

    var$dbname="root";//用户名;

    var$dbpwd="";//密码;

    var$dbtable="mysql";//使用的数据库

    var$conn;//数据库连接;

    var$result;//结果集

    var$mysql;//执行的mysql

    var$row;//结果集中找数据

    functioncreateconn()//这个类方法是开始一个conn连接,然后开始选择数据库

    {

    $this->conn=mysql_connect($this->db,$this->dbname,$this->dbpwd);

    mysql_select_db($this->dbtable,$this->conn);

    }

    functiongetresule()//这个是得到一个结果集

    {

    $this->result=mysql_query($this->mysql,$this->conn);

    }

    functiongetrow()//创建一个向前的结果集指针

    {

    $this->row=mysql_fetch_array($this->result);

    return$this->row;

    }

    functionclosedatabase()

    {

    mysql_close($this->conn);

    }

    }//类结束

    4.4.2关键字解析类

    此功能用于解析模版中的关键字,将它们替换成相关内容。

    这部分是调用模版功能实现的核心环节,否则模版将失去意义。

    这里主要的操作便是定义解析需要的类和函数。

    4.4.3数据模型的概念

    模型表示企业数据和业务规则。

    在MVC的三个部件中,模型拥有最多的处理任务。

    被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。

    由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

    这里需要做的依然是定义数据库操作类和函数,并对已经定义好的类进行扩展。

    主要的几个基本数据模型如下:

    (1)分类数据模型:

    用于取出分类信息

    (2)内容数据模型:

    用于取出内容

    (3)用户数据模型:

    用于取出用户数据,用户登录检测

    (4)留言数据模型:

    用于取出留言、评论,提交留言

    其实上面的模型还可以继续继承或者把它分割成不同的模型,例如内容模型可以分割为产品和新闻数据模型。

    内容模型代码示例:

    Classdb_contentextendsMysql{

    var$_name=’Cms_Content’;

    functiongetContentById($ClassID){

    $r=$this->query(“select*from$this->_namewhereClassID=$ClassID”)

    return$this->conData($r);

    }

    functiongetPage($ClassID,$start,$size){

    $r=$this->query(“select*from$this->_namewhereClassID=$ClassIDlimit$start,$size”);

    return$this->conData($r);

    }

    //将数据数据以关联数组保存,提供给控制器和表示层。

    functionconData($r){

    if($r===false)return;

    $data=array();

    while($d=mysql_fetch_array($r)){

    $data[count($data)]=$d;

    }

    return$data;

    }

    }

    4.5网站后台UI设计

    UI(用户界面)一般使用图像软件来设计,例如:

    PS、AI、CDR。

    部分网站后台界面基本千篇一律,不一定要创意、美观,但需要简洁实用。

    然而出于商业目的模版精美和人性化也是值得用心的地方,因此这也是一个完美CMS的标准之一,具体的可以如图2所示,为一个带有基本功能的后台UI。

    图2一个带有基本功能的后台UI

    4.6后台程序设计

    关于内容管理子系统的设计,基本都是调用的PHP函数及对数据模型的运用,是网站后台设计的基础内容,基本函数和变量参见附录2。

    5.结束语

    经过这段时间的实践,对于CMS开发的主要流程都已经弄清楚了,写出一个功能强大、能与一些知名CMS媲美的CMS也不是问题。

    不过这只是许许多多不同类型CMS中的一种,随着未来网络的发展,没人知道网络会出现什么变革和诞生多少新事物,也许CMS的意义将更广泛,也许CMS将被代替,但网络离不开资源共享的特点,重要的不是做出最全能的CMS,而是培养系统开发的思想以及学习精神和创新精神。

    当我们满足于现在的技术的时候,我们是不是该给自己一个挑战机会,去完成一个自己能力还不能达到的目标,即使开始你会觉得很难,但只要付出行动就会发现这些东西也不像想象中那么难,只是现在才知道罢了,就算最后你没有完成依然能学到很多超乎原来所认知的东西,使自己的技术能力更进一步。

    报告到这基本上已经结束了,也是我对网站建设学习的总结,不过CMS的开发还要通过长期的实践,因此某些地方可能不是很全面,希望以后能做的更好。

    这篇论文写的时间不是非常长,但整篇论文改动很多,在写的过程中也经常遇到问题,包括自己找到的和老师说到的,在解决问题中总有新的收获,也能发现原先写的不足的地方。

    文中还有包含细节的地方,虽然没有进行详解,但都

    展开阅读全文
    相关资源
    猜你喜欢
    相关搜索
    资源标签

    当前位置:首页 > 高等教育 > 理学

    copyright@ 2008-2022 冰豆网网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1