网站内容管理系统大学本科毕业论文_第1页
网站内容管理系统大学本科毕业论文_第2页
网站内容管理系统大学本科毕业论文_第3页
网站内容管理系统大学本科毕业论文_第4页
网站内容管理系统大学本科毕业论文_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

PAGE摘要信息化的发展,可以说给企业带来了一场产业革命,企业对信息的要求更为迫切。传统的web网站的建设和维护的方法是:首先设计web网站的框架结构,然后设计html页面,最后把设计好的html页面纳入web网站的框架结构中。这种网站建设模式比较适合小型网站和内容相对比较固定的网站,对于信息量大的,结构复杂的政府门户网站和政务平台来说吗,不仅不易维护,也不易使用。由于传统网站的诸多弊端问题,所以内容管理系统即ContentManagementSystem缩写为CMS。CMS是一个工具,它能让各种集中的技术人员和分散的非技术人员在一定的规则,过程,工作流的限制下,创建,编辑,管理和最终发布内容。CMS管理的特点一般是:引入内容管理系统,事先生成静态HTML文件;更新及时,能满足不同层次的要求。该CMS是采用php+mysql+apache技术实现的。后台采用MVC模式架构,交互系统的组成分解成模型、视图、控制器3种部件。该CMS的设计流程经过了需求分析,概要设计,详细设计,编写代码,系统测试等五个阶段。系统的功能模块包括注册会员的管理、栏目的管理、文章的管理、系统管理、系统的设置、网站管理模块等。最核心的部分是网站管理模块,包括对网站的栏目,文章等管理。而且可以将栏目和文章生成静态的网页,可以大大提高页面的显示速度。同时降低服务器的压力。在系统的实现阶段主要是采用的php编写代码,数据的存储使用mysql数据库,总共设计了12张表,各表之间的关系通过外键等形式加以实现。对于本文各模块的实现是通过图片和代码文字的形式介绍,详细展示了整个系统的实现。关键词:内容管理系统、静态页面、php、mysql、apacheAbstractThedevelopmentofinformationtechnology,canbesaidtohaveanindustrialrevolutiontotheenterprise,theenterprisemoreurgenttotheinformationrequest.Thetraditionalwebwebsiteconstructionandmaintenancemethodsare:framestructuredesignofWebsitefirst,andthendesigntheHTMLpage,thedesignofHTMLpagesintoframestructureinWebwebsite.Websiteconstructionmodewhichissuitableforsmallwebsitesandcontentisrelativelyfixedsites,foralargeamountofinformation,complexstructureofthegovernmentportalWebsiteande-governmentplatform,notonlythemaintenanceisnoteasy,noteasytouse.Duetothemanyproblemsoftraditionalwebsitecontentmanagementsystem,sothatContentManagementSystemorCMS.CMSisatool,itcanmakeallkindsoftechnicalpersonnelcentralizedanddecentralizednontechnicalpersonnelincertainrules,restrictions,workflow,create,edit,manageandfinallyissuedthecontent.ThecharacteristicsofCMSmanagementisgenerally:theintroductionofcontentmanagementsystem,togeneratestaticHTMLfiles;updatedinatimelymanner,tomeetthedifferentlevelsofrequirements.TheCMSisimplementedusingphp+mysql+apachetechnology.ThebackgroundusingMVCmodearchitecture,componentinteractionsystemintomodel,view,controllerof3parts.ThedesignprocessoftheCMSafterthedemandanalysis,theoutlinedesign,detaileddesign,coding,systemtesting,fivestages.Thefunctionmoduleofthesystemincludingmembershipmanagement,programmanagement,articlemanagement,systemmanagement,systemsettings,websitemanagementmoduleetc..Thecorepartisthesitemanagementmodule,includingthesitecolumns,articlesmanagement.AndcanthecolumnsandthegenerationofstaticWebpage,cangreatlyimprovethepagedisplayspeed.Atthesametime,reducethepressureoftheserver.IntheimplementationphasesystemismainlyusedPHPcode,datastorageusingMySQLdatabasedesign,atotalof12tables,therelationshipsbetweentablesisrealizedbyaforeignkeyform.Fortherealizationofthismoduleisintroducedthroughpicturesandcodewriting,showsindetailtherealizationoftheentiresystem.Keywords:contentmanagementsystem;Staticpage;php;mysql;apache引言随着Internet技术的发展,越来越多的企事业单位建立了网站系统以便更好的宣传自己,实现信息化以及为用户提供服务。目前,网站普遍存在着信息更新不及时,页面相应速度慢,网站界面一致性差,网站错误链接较多,用户交互度低,页面设计工作量大,不易更新改版等问题,其原因是由于传统的建站和维护方式造成的,本文所提供出的网站内容管理系统,它的主要思想是实现页面和内容的分离,页面的设计存储在模板里,而内容存储在数据库和独立的文件中。这可以使网站管理员更好地关注于内容以及用户的交互,只有提供好的内容以及与用户做好交互,才能更好地吸引用户,做好网站的推广与发展。网站内容管理系统是企业信息化建设和电子政务的新宠,也是一个相对较新的市场,简单来说,即是前台+后台的建站软件,不再需要从零开始的建站,你只需要在后台设置及添加内容,前台更改模板,购买域名空间,一个功能强大的网站即可建成。譬如,现在已有的网站内容管理系统:帝国,phpCMS管理系统,pageeadmin,新云这些网站内容管理系统。由趋势可以发现,网站在建设方面发生着巨大的变化。可见CMS才是真正实现网站内容复杂性和网站管理自动性的完美结合的新技术。目录第1章绪论 11.1系统开发的背景及意义 11.2网站日趋复杂 11.2.1网站数据管理模式的发展与比较 21.2.2内容管理技术的国内外发展现状 31.3论文结构 3第2章内容管理系统基础 32.1内容管理系统概述 32.1.1什么是内容管理系统 32.1.2内容管理系统的基本特征 42.2相关技术 42.2.1PHP 42.2.2Apache 52.2.3MySQL 52.2.4ZendStudio 62.2.5Jquery 62.3MVC开发模式 62.4系统设计流程 7第3章内容管理系统总体设计 83.1系统需求分析 83.1.1系统的基本功能模块 83.1.2系统的性能需求 93.1.3数据字典 93.2系统总体设计 93.2.1系统各模块简述 93.3数据库的设计 9第4章系统的实现 124.1系统文件结构 124.2系统主要模块的实现 134.2.1后台登陆模块的实现 134.2.2管理员模块的实现 144.2.3系统设置 164.2.4附件设置 174.2.5模块管理 194.2.6网站栏目管理 204.2.7文章管理 224.2.8添加文章模块 234.2.9生成首页模块 264.2.10更新栏目 27致谢 33参考文献 33TOC\o"1-3"\f\h\z\u第1章绪论1.1系统开发的背景及意义信息化的发展,可以说给企业带来了一场产业革命,企业对信息的要求更为迫切。信息的采集,处理,发布已成为企业的基本要求,并伴随着网络的发展,逐步实现文档电子化,处理电脑化。传统的web网站建设和维护的方法是:首先设计web网站的框架结构,然后设计HTML页面,最后把设计好的HTML页面纳入web网站中的框架结构中。这种网站建设模式比较适合小型网站和内容相对比较固定(变化较少)的网站,因此对于信息量大,结构复杂的政府门户网站和政务平台来说,这种方式具有很多弊端:框架结构维护复杂,不容易修改;页面设计的工作量大,需要大量人力投入;网页太多之后,不仅不易维护,也不易使用,容易产生错误链接。传统的web网站建设和维护方式在现在的信息膨胀的情况下面临着以下几个方面的挑战:1.2网站日趋复杂根据对现在市场中存在的各类商业网站的管理分析,大概可以得出以下的数据表1-1各类商业网站的管理数据低级网站中级网站高级网站维护人数1-32-1010-30涉及到的部门和单位1-106-5030-100个以上更新间隔>72小时>24小时<24小时网站页数<200>2002000-5000模板数目<10<2020-50或者更多可管理行越来越差可管理性越来越差主要是由于:网页制作无序,网站风格不统一;大量信息堆积,发布显得异常沉重;更新规则复杂,极高的更新频率,极大的更新数据量,内容繁杂,手工管理效率低下,手工链接经常无法实现;协同处理越来越难,服务器性能越来越低,HTML与WEB应用并存,维护越来越困难,扩展性和共享越来越难以实现,改版工作量大等原因造成的。成本越来越高成本的提高主要是由于:更新规则和数量的不断增加,人工效率逐步降低,所需人员不断加入,一台普通的PC服务器和常规的网络带宽,最多只能承载每天5万动态页面访问量,瓶颈现象突出,运行性大幅度下降;不断追加的网络硬件和人工服务,大大增加了系统的总成本;而采用静态页面至少能承载每天70万页面访问量,运行性大大增加。正是由于传统网站开发的诸多弊端和面临的问题,所以要求找一种简化网络开发流程,降低网站开发成本,提高网站开发效率的全新的工作方式,而现在也有了越来越多的研究,而内容管理系统正式解决该问题的良方。内容管理系统即ContentManagementSystem,缩写为CMS。CMS是一个工具,它能让各种集中的技术人员和分散的非技术人员在一定的规则,过程,工作流的限制下,创建,编辑,管理和最终发布内容,从而保证一个一致,有效的网站形象。内容管理系统相对于传统网站开发流程来说,它将发布自动化,将内容与格式分离,支持灵活的扩展.本选题“网站内容管理系统”希望通过在研究最新的多种网站内容管理系统的实现和优缺点的基础上,实现一种基于模板技术的内容管理系统,该系统将能设计出多种网站风格模板,并且最后根据各种风格模板生成不同网站。设计该系统的目标是能够把网站做成模块化,易于管理。1.2.1网站数据管理模式的发展与比较在网站数据管理的发展过程中,大致经过了三个阶段:静态更新,实时更新,CMS管理,通过图2-1可以清晰的看到网站数据管理模式所经历的这三个阶段和它们的一些简单的特点静态更新实时更新静态更新实时更新CMS管理第一阶段 第二阶段 第三阶段手动更新,静态发布 自动跟新,动态发布 自动更新,动态发布,无交互,负载小 可交互,负载大 可交互,负载小 难于扩展共享 易于扩展共享图2-1网络数据管理发展概况这三个阶段各自都有他们自己鲜明的特点,接下来再简要介绍一下这三个阶段各自的特点并且对他们的优劣进行比较。静态更新的特点一般是:手工编写HTML代码或者借用网页制作工具;通过FTP上传到服务器上面;更新缓慢,容易出现错误链接;多用于个人网站以及早期的虚拟主机网站;实时更新的特点一般是:制作模板使用动态主页技术输出HTML(PHP,JSP);更新速度非常快;需要服务器上有数据库支持;对服务器资源占用很严重;其管理系统多称为“网站发布系统”或者“信息发布系统”,系统与网站多在一起;安全性不高,容易被黑客攻击CMS管理的特点一般是:引入内容管理系统,事先生成静态HTML文件;更新及时,能满足不同层次的要求;不依赖于服务器平台;可进行版本控制;安全性好,网站不怕被黑客攻击从以上特点可以看出站点数据管理模式的发展趋势的两个特点:负载性和自动性。静态更新可以说是一种最简单和效率低下的网站数据管理模式。实时更新是由于网站的更新速度变快,复杂性加大等原因出现的一种能维护复杂网站的效率不高的网站数据管理模式。而CMS才是真正实现了网站内容复杂性和网站管理自动性的完美结合的新技术。1.2.2内容管理技术的国内外发展现状内容管理的发展历史可以根据不同时期分为四个阶段:数字化应用(1975-1983),桌面应用和发布(1984-1990),客户端/服务器内容管理(1990-1995),网站内容管理时代(1995-现代)。虽然内容管理系统的基本思想早在上个世纪70年代就提出来了,但是它真正意义上的法杖还是在互联网的迅猛发展之后才开始的。目前,基于网站和电子政务的内容管理研究很多。主要的内容管理厂商可以分成以下几类:1.首先是进入该领域最早,时间最长的国际大厂商。2.其次是内容管理系统领域的后来者,但是发展势头十分迅猛,以Oracle,Sybase为代表;3.最后一类就是国内厂商,他们进入内容管理系统开发领域比较晚,技术相对落后与国外厂商。主要代表有:联想,易宝北信等这三类厂商各有各的特点。国外先进厂商技术成熟,影响力巨大,资金雄厚,他们的产品面向的应用规模较大,功能比较全面,但是价格昂贵,技术应用难度比较高,而且对于中文的支持不算很完善,而国内企业特点相反,虽然价格比较低,技术应用难度低,完全支持中文网站,但是由于进入该领域的时间不是很长,所以技术不是很成熟,影响力也不够。1.3论文结构全文共分为六章。第一章主要介绍了内容管理系统的课题背景与意义,阐述了内容管理系统的发展现状以及未来发展的方向,最后简要介绍了系统的主要工作内容。第二章首先介绍了内容管理系统的技术基础及平台,其中包括网络编程语言PHP、本地服务器Apache以及数据库MySQL和MVC的开发模式等。第三章介绍了有关内容管理系统设计的总体构想与思路,并介绍了各模块和数据库的设计。第四章,以内容管理系统中各个子模块为例介绍了功能的设计实现以及相关代码。第五章是系统的测试和分析,主要针对课题的实际可操作性进行测试并改进。第六章是结束语,对本次课题进行了总结以及对不足处的提出和以后的展望。第2章内容管理系统基础2.1内容管理系统概述2.1.1什么是内容管理系统内容管理系统(ContentManagementSystem,简称CMS)是专门面向网站的内容编辑于发布应用系统。CMS是一个工具,它让各种集中的技术和分散的非技术的人员在一定的规则,过程,工作流的限制下,创建,编辑,管理和最终发布各种类型的内容,以保证一个一致,有效的网站形象。内容管理系统旨在管理庞大,繁杂的后台数据和信息,规范网站后台信息管理流程,使网站的运营管理,内容维护变得易如反掌。可以帮助政府,企业和组织灵活。准确,高效地管理信息内容,实现信息的采集,加工,审核,发布,存储,检索,等整个信息生命周期的管理。2.1.2内容管理系统的基本特征内容管理系统可建设具有独特个性的网站.“网站模板与网站程序完全分离”和“模板方案”是目前CMS的主流设计特点,让网站的模板设计与程序彻底分开。设计者可以将每个频道、栏目甚至内容页面运用不同的模板,随时能编辑、修改网站界面,更能一键切换预设的模板方案,更换网站界面。内容管理系统后台管理实现方便、易用、人性化的操作方式,创新采用书签式管理的Web界面,切换方便,节省使用者和浏览者的时间。所见即所得的编辑功能,可以在内容管理系统里直接进行文字的排版处理,还可以在线对图片进行简单处理。系统支持插入Flash、音频、视频、超链接、特殊字符等等。内容管理系统使用基于角色的用户管理,通过添加不同权限的用户,可以将一个网站的管理权限分配给不同的用户。通过建立具有不同管理权限的用户组,可以将用户分成多种级别:超级管理员、栏目管理员、文档录入员、审核员等一份内容从最初录入到最后发布到网站上,中间可以经过编辑初审、修改,管理员审批等,保证发布内容的质量。2.2相关技术2.2.1PHPPHP最初出现于1994年,是PHP/FI(个人主页/表单解释器,PersonalHomePage/FormsInterpreter)的一系列脚本。随着PHP的逐步发展,PHP指的不再是“个人主页(PersonalHomePage)”,而是“PHP超文本预处理器(PHPHypertextPreprocessor)”。PHP是完全免费的,不用花钱,你可以从PHP官方站点()自由下载。你可以不受限制的获得源码,甚至可以从中加进你自己需要的特色。PHP在大多数Unix平台,GUN/Linux和微软Windows平台上均可以运行。使用PHP进行Web应用程序开发,具备如下的优点:(1)可使用服务器端的脚本来产生客户端的脚本。使用VBScript、JavaScript等简单易懂的脚本语言,结合HTML代码,即可快速地完成网站的应用程序;(2)无须编译,容易编写,可在服务器端直接执行;(3)使用普通的文本编辑器,如Windows的记事本,即可进行编辑设计;(4)与浏览器无关(BrowserIndependence),客户端只要使用可执行HTML码的浏览器,PHP所使用的脚本语言均在WEB服务器端执行,客户端的浏览器不需要能够执行这些脚本语言的功能;(5)PHP能与任何用C语言、Java语言所开发的扩展兼容。PHP主要功能与应用有如下三大领域:(1)服务器端脚本(Server-sideScript):即最常用的Web程序开发;(2)命令行/Shell脚本(CLI/CommandlineScript):用以做系统自动化与监测脚本;(3)客户端用户界面(Client-sideGUIApplication):使用PHPGTK可以编写类似于VB/Delphi的桌面应用程序。本系统选择PHP开发的理由是:(1)简单易学;(2)有众多的扩展类库;(3)有活跃的用户群、广大的开发者社区;(4)安全性高;(5)运行稳定。[参考文献1,2]2.2.2ApacheApache,中文名称为阿帕奇,是一种开放源码的HTTP服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性而被广泛使用,是最流行的Web服务器端软件之一。Apache是1994年源于IBM公司的NCSA小型Web服务器项目。它和PHP的发展很相似,最初是靠热心的程序员或网管以补丁(Pacth)的形式来维护的,从1.3版本开始起以Apache的正式名称提供给所有用户免费下载使用,且开放源代码。[参考文献14]本系统采用Apache2.2,其特性如下:(1)模块化:支持多种语言或脚本引擎,如PHP、Perl/ModPerl、JSP/Servelet等。(2)安全性高:由于开放源代码,通常会在安全性问题被及时发现并解决后发布新的版本。(3)扩展性好:支持多种操作系统,如MSWin32/FreeBSD/Linux/OS2等平台。(4)可移植性:在这些异构操作系统,配置与安装基本相似。(5)性能优越:可以自定义运行参数、编译环境,以适应不同的Web环境的承载。(6)多线程:Apache2支持UNIX运行POSIX线程,在Windows下为多线程模式。(7)自定义错误文档:管理员可以方便地更改错误页面。(8)多语种支持:支持UTF-8、GB2312、ShiftJIS、BIG5等多种字符集编码。Apache是服务器软件始终不断进化的大块部件,它免费但又是无价之宝。Apache是在资源开放运动中出现的绝对珍品,因为不属于个人专利而是对公共免费。一旦拥有这些源码,程序员能够自由完成所想——能在其它程序员接替工作时被赋予同样的权限来改变和修改自己的源代码。2.2.3MySQLMySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。MySQL是以一个客户机/服务器(B/S)结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。(1)MySQL是一个数据库管理系统。一个数据库是一个结构化的数据集合。它可以是从一个简单的销售表到一个美术馆或者一个社团网络的庞大的信息集合。如果要添加、访问和处理存储在一个计算机数据库中的数据,你就需要一个像MySQL这样的数据库管理系统。从计算机可以很好的处理大量的数据以来,数据库管理系统就在计算机处理中和独立应用程序或其他部分应用程序一样扮演着一个重要的角色。(2)MySQL是开源的。开源意味着任何人都可以使用和修改该软件,任何人都可以从Internet上下载和使用MySQL而不需要支付任何费用。如果你愿意,你可以研究其源代码,并根据你的需要修改。MySQL使用GPL(GNUGeneralPublicLicense,通用公共许可),在/licenses中定义了你在不同的场合对软件可以或不可以做什么。如果你觉得GPL不好或者想把MySQL的源代码集成到一个商业应用中去,你可以向MySQLAB购买一个商业许可版本。[5](3)MySQL服务器工作在客户/服务器(B/S)中。MySQL数据库服务器是一个客户/服务器(B/S)系统,它由多线程SQL服务器组成,支持不同的后端、多个不同的客户程序和库、管理工具和广泛的应用程序接口(API)。2.2.4ZendStudio ZendStudio是一个屡获大奖的专业PHP集成开发环境,具备功能强大的专业编辑工具和调试工具,支持PHP语法加亮显示,支持语法自动填充功能,支持书签功能,支持语法自动缩排和代码复制功能,内置一个强大的PHP代码调试工具,支持本地和远程两种调试模式,支持多种高级调试功能。2.2.5Jquery jQuery由美国人JohnResig创建,至今已吸引了来自世界各地的众多JavaScript高手加入其team,包括来自德国的JörnZaefferer,罗马尼亚的StefanPetre等等。jQuery是继prototype之后又一个优秀的JavaScript框架。其宗旨是——WRITELESS,DOMORE,写更少的代码,做更多的事情。[6]它是轻量级的js库(压缩后只有21k),这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器(IE6.0+,FF1.5+,Safari2.0+,Opera9.0+)。jQuery是一个快速的,简洁的JavaScript库,使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。[参考文献15]2.3MVC开发模式MVC由TrygveReenskaug提出,首先被应用在SmallTalk-80环境中,是许多交互和画面系统的构成基础。MVC结构是为那些需要为同样的数据提供多个视图的应用程序而设计的,它很好地实现了数据层与表示层的分离。MVC作为一种开发模型,通常用于分布式应用系统的设计和分析,以及用于确定系统各部分间的组织关系。对于画面设计可变性的需求,MVC(Model-View-Controller)把交互系统的组成分解成模型、视图、控制器3种部件。(1)模型部件(Model)保存由视图显示、由控制器控制的数据;它封装了问题的核心数据、逻辑和功能的计算关系,它独立于具体的画面表达和I/O操作。(2)视图部件(View)把表示模型数据及逻辑关系和状态的信息以特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。(3)控制器部件(Controller)是处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播,确保用户画面与模型间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。PHP的MVC模型如下图所示:模型模型控制器视图模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其他依赖于这些数据的视图都应反映了这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。[参考文献3,4,5,6,7]2.4系统设计流程需求分析需求分析概要设计详细设计系统测试编写代码图2-4系统设计流程图(1)需求分析本阶段主要对内容管理系统的需求情况进行调查收集,将用户对该系统的任何需求通过各种方式进行收集,比如采用问卷的形式,实地询问用户等形式进行。最终目的就是了解用户对该系统有何要求、有何期望,简单的说就是要知道用户希望内容管理系统要完成什么功能,如何才能满足用户的需要。(2)概要设计概要设计部分主要对内容管理系统有一个大概的设计介绍,对内容管理系统的概要设计部分主要包括如下内容:开发与设计的整体思想、系统的组成结构、各个模的设计内容、系统安全设计等。其中开发与设计的整体思想主要是对内容管理系统的开发与设计的整体思路进行介绍。系统的组成结构主要包括硬件设施结构和软件系统结构,硬件设施结构部分对内容管理系统使用的硬件设施作介绍,而软件系统结构则对内容管理系统的软件整体设计结构给出介绍。各个模块的设计主要包括内容管理系统的登陆、内容浏览、系统管理模块逐一介绍。系统安全设计部分主要对内容管理系统中如何保证系统安全的措施给出说明。(3)详细设计详细设计部分则是在概要设计的基础上对内容管理系统作出更为详细的介绍。主要对各设计包中的各个类作出说明,包括对每个类如何在以后的程序设计中的定义作出介绍,并作出相应的说明,并对各参数作出介绍。(4)编写代码这一部分主要根据前面的详细设计内容,用具体语言实现内容管理系统。本系统主要采用PHP语言实现,这一部分主要是代码实现,将前一阶段的设计思想实现,因为前面已经对该系统的整体设计思路和整体框架作出了说明,并且在详细设计部分对每个设计包中的类如何实现也已给出,所以在这一部分工作量也不是太大。(5)系统测试系统测试部分主要对前面已经实现的系统作出测试,看该系统是否符合系统设计要求。并对一些特殊的数据进行测试,比如一些临界值,看是否符合要求,在测试的基础上,对发现的错误进行改正,使系统逐步得到完善。测试不是一朝一夕就能完成的,必须在今后的使用过程中逐渐完善,并得到用户的反馈后对系统作出修改。内容管理系统主要采用了软件工程的设计思路,各部分都遵从软件工程的设计要求。第3章内容管理系统总体设计3.1系统需求分析3.1.1系统的基本功能模块系统设置核心管理系统设置核心管理会员管理员站点设置附件设置内容管理模板管理数据库管理模块管理会员管理会员组管理留言管理管理员角色管理网站管理栏目管理文章管理文章回收站生成静态Itcms在今天这完全被信息充斥的时代,在网络中构建一个内容充实的内容管理系统,提供了一种实时联通的网络环境,通过网络的开放性和交互性的特点,让广大用户可以在任何的时间,任何的地点,通过无处不在的网络方便的进行信息的获取和传递。不仅是这样,通过网络的方便性和内容管理系统的严谨性,可以进行群体交流和资源的共享,从而丰富自己的生活,为个人的发展也提供了更广阔的空间。本内容管理系统是通用性比较强的一款系统,具有以下的功能完整的信息管理,包括信息的添加,修改,删除,审核等。严谨的权限分配,包括管理员的角色的添加,修改,删除,权限分配等。管理员的添加,修改,删除,管理的栏目分配,所属角色等。注册会员的管理,包括会员的修改,删除等,还包括对会员留言的管理,修改,删除,审核等。栏目的管理,栏目的添加,修改,删除,移动,无限极分类等文章的管理,文章的添加,缩略图,修改,删除,文章回收站,以及对删除文章重新还原等系统管理,包括模板管理,功能模块的管理,以及数据库的备份和还原等,功能模块包括对功能模块的分配,使其可以用来分配给相应的角色系统的设置,包括对站点的设置,附件的设置,上传文件的类型控制等。网站管理模块包括对网站的栏目,文章等管理。而且可以将栏目和文章生成静态的网页,可以大大提高页面的显示速度。同时降低服务器的压力。[参考文献9,10,11]3.1.2系统的性能需求一个系统的设计的根本目的是满足用户的实际的需求,并采用先进、安全、成熟、可靠的技术来实现。着眼当今世界技术的发展趋势,本系统采用B/S模式,使用php技术开发。本着既要保证系统的安全性,稳定性,高效性,又要为用户提供实用方便的操作环境设计思想,来进行分析设计的。本系统是面向单用户的系统,管理员在后台进行各项操作。3.1.3数据字典数据结构设计的第一阶段也是主要的一个设计阶段,在这个阶段根据用户的需求,进行数据的采集和对数据的处理操作,以确保数据采集的详细准确。理清数据库中各个数据项的关系。3.2系统总体设计3.2.1系统各模块简述(1)网站管理模块用于管理网站的栏目,文章,并对其生成静态页面,更好的实现实时性和高效性。高效性体现在用户对静态页面的浏览速度要高于对动态页面的浏览速度而且降低了服务器的压力实时性体现在纯手工的静态页面对文章内容的实时性效果很差。而通过后台对前台生成静态html页面,保证了信息的实时性。(2)管理员模块对角色的管理,角色管理包括角色的添加、权限的分配,修改,删除等。(3)系统设置模块a.包括对站点的设置网站名称设置,主页链接名称设置,网站主页链接,html代码保存路径,默认使用的模板文件所在目录b.对附件的设置缩略图的宽度,缩略图的高度,上传图片的类型,上传文件的类型,上传多媒体的类型等(4)核心管理模块包括对文章的管理,商品的管理,软件的管理。模板管理,模块管理,还有数据库的备份与还原。模块管理是对现有的模块进行分配,使其可以用来为角色分配模板管理是对网站前台所用的模板进行的管理,包括添加,修改,删除等。网站制作人员可以将制作好的模板文件直接添加的相应的目录下面用来生成静态的html页面(5)会员管理模块,包括对会员的管理,会员组的管理还有对会员的留言的管理等3.3数据库的设计本系统中的数据库采用mysql数据库管理系统创建,根据系统的需要与数据规范化分为,留言表,会员表,栏目表,文章表,模块表,角色表,用户表,标签表,文章标签表,模块功能表,文章属性表,当前登录用户表,角色功能表,管理栏目表。[参考文献13] 表3-3-1:栏目表字段类型是否为空字段说明idint(10)NO栏目idTypenamevarchar(50)NO栏目名称Parentidint(5)NO父栏目idDocmunint(5)NO文章数Dirnamevarchar(150)NO静态页存放目录Updirvarchar(100)NO上级目录Listtplvarchar(200)NO列表页模板Contenttplvarchar(200)NO内容页模板Arcrulevarchar(300)NO文章命名规则Listrulevarcha(300)NO列表命名规则Dfpagenamevarchar(50)NO默认页名称KeywordsVarchar(60)YES关键字ChanneldescripTextYES栏目描述表3-3-2ht_article字段类型是否为空字段说明idint(10)NO文章id主键channelidint(5)NO栏目id外键titlevarchar(50)NO文章标题arcattvarchar(20)NO文章属性litimgvarchar(200)NO缩略图contentLongtextNO文章内容keywordsvarchar(20)YES关键字authorvarchar(50)NO作者uploaderInt(5)NO上传者clicknumInt(3)NO点击次数pubdatevarchar(20)NO发布时间updatetimevarchar(20)NO更新时间ismakesmallint(6)NO是否生成静态ischecksmallint(6)NO是否审核Isrecyclesmallint(6)NO是否放入回收站shorttitlevarchar(50)NO简略标题表3-3-3ht_articleatt字段类型是否为空字段说明attnamevarchar(20)NO属性名称attkeyvarchar(20)NO属性键名主键表3-3-4ht_assignmodel字段类型是否为空字段说明idint(5)NO模块id主键modnamevarchar(20)NO模块名称modkeyvarchar(20)NO模块键名isassignInt(1)YES是否被分配表3-3-5ht_loginman字段类型是否为空字段说明idint(5)NOId主键manageidint(5)NO管理员id外键roleidint(5)NO角色id外键rolevalint(1)NO角色值rolenamevarchar(30)NO角色名称managernamevarchar(30)NO管理员名称loginipvarchar(20)YES登陆iplogintimevarchar(20)YES登陆时间onlineint(1)NO是否在线managetypevarchar(30)NO管理栏目表3-3-6ht_managechannel字段类型是否为空字段说明idint(5)NOId主键manageidint(5)NO管理员id外键channelidint(5)NO栏目id外键表3-3-7ht_manager字段类型是否为空字段说明idint(5)NO管理员id主键usernamevarchar(30)NO用户名realnamevarchar(30)NO真实姓名passwordvarchar(60)NO密码emailvarchar(20)NO电子邮件mobilevarchar(20)NO手机apartmentint(5)NO所属部门addtimevarchar(20)NO添加时间logintimevarchar(20)YES登陆时间loginipvarchar(20)YES登陆iproleint(5)NO角色外键levelInt(1)YES管理员级别表3-3-8ht_modelfunc字段类型是否为空字段说明idint(5)NOId主键modelidint(5)NO模块id外键roleidint(5)NO角色id外键funckeyvarchar(30)NO功能键名bannernamevarchar(30)NO栏目名称表3-3-9ht_role字段类型是否为空字段说明idint(5)NO角色id主键rolenamevarchar(30)NO角色名称rolevalint(1)NO角色值roledescribtextYES角色描述表3-3-10ht_rolemodel字段类型是否为空字段说明idint(5)NOId主键roleidint(5)NO角色id外键modelidint(5)NO模块id外键表3-3-11ht_tag字段类型是否为空字段说明idint(5)NO标签id主键channelidint(5)NO栏目idtagvarchar(20)NO标签addtimevarchar(20)NO添加时间clicknumint(5)NO点击次数arcnumint(5)NO文章数量表3-3-12ht_taglist字段类型是否为空字段说明idint(5)NOId主键arcidint(10)NO文章id外键tagvarchar(20)NO标签名channelidint(5)NO栏目id外键

第4章系统的实现4.1系统文件结构 admin后台目录 control控制器文件夹,存放后台控制器文件 model模型文件夹,存放后台模型文件 library类库,存放后台所需要的类库 tpl模板文件夹,存放后台页面模板文件 index.php后台入口文件 modelConfig.php后台功能模块配置文件common公用文件夹 config配置文件存放的文件夹 db_config.php数据库配置文件 sys_config.php系统配置文件 lib公共类库 taglist标签文件存放目录 constants.php常量定义文件 functions.php公共函数定义文件 init.php初始化系统文件 data数据文件夹 font存放系统所需字体 attachtype允许上传附件类型配置文件 templates前台模板文件存放目录 upload上传文件存放目录 web静态页存放目录4.2系统主要模块的实现4.2.1后台登陆模块的实现 核心代码 publicfunctionlogin(){ $obj=newmanagerModel();//实例化管理员模型 $rolobj=newroleModel();//实例化角色模型 $username=addslashes($_POST['username']);//转义提交的用户名 $password=md5(addslashes($_POST['password']));//转义密码并使用MD5函数加密 $code=$_POST['code']; if(strtoupper($code)==$_SESSION['code']){//匹配验证码是否相同 $res=$obj->find_one(array('username'=>$username,'password'=>$password),array('id','role'));//验证码相同则进行用户名和密码匹配 if($res['id']){//如果匹配到用户名和密码那么登陆成功并且保存一些登陆信息 $res1=$rolobj->find_one(array('id'=>$res['role']),array('roleval','rolename')); $_SESSION['is_login']='yes'; $_SESSION['username']=$username; $_SESSION['userid']=$res['id']; $_SESSION['role']=$res['role']; $_SESSION['roleval']=$res1['roleval']; $_SESSION['rolename']=$res1['rolename']; $this->success_to("登陆成功","?#"); }else{//否则登陆失败 $this->error_back("登陆失败,密码或用户名错误"); } }else{//验证码错误返回重新登陆 $this->error_back("验证码错误"); }[参考文献1,2,8,12] }4.2.2管理员模块的实现核心代码protectedfunctionshow(){ //实例化角色模型 $obj=newroleModel();//取出所有的角色 $arr=$obj->find_all(); $this->assign("public","./public"); $options='';//遍历数组构造表单 foreach($arras$val){ $options.="<optionvalue='{$val['id']}'>{$val['rolename']}</option>"; } $this->assign("roleoption",$options); $obj=newchannelModel(); $arr=$obj->find_all(array('parentid'=>0),array('typename','id')); $options=''; foreach($arras$val){ $options.="<optionvalue='{$val['id']}'>{$val['typename']}</option>"; $options.=$this->sunchannel($obj,$val['id'],1); } $this->assign('channeloption',$options); $this->display(); }核心代码protectedfunctionadd(){ $username=$_POST['username']; $password=$_POST['password']; $realname=$_POST['realname']; $role=(int)$_POST['role']; $apartment='1'; $managetype=$_POST['managetype']; $email=$_POST['email']; $mobile=$_POST['mobile']; $addtime=time(); $roleobj=newroleModel(); $res=$roleobj->find_one($role,"roleval"); if($res['roleval']>=15){ $level=1; }else{ $level=0; } $manager=newmanagerModel(); if($manager->add(array( 'username'=>$username, 'password'=>md5($password), 'realname'=>$realname, 'role'=>$role, 'apartment'=>$apartment, 'email'=>$email, 'mobile'=>$mobile, 'addtime'=>$addtime, 'level'=>$level, ))){ $manageid=$manager->insert_id(); $obj=newmanagechannelModel(); foreach($managetypeas$v){ $res=$obj->add(array('manageid'=>$manageid,'channelid'=>$v)); } if($res){ $this->success_to("添加成功","?control=manager"); } }else{ $this->error_back("添加失败"); } }4.2.3系统设置核心代码protectedfunctionshow(){ $this->assign("public",'./public'); //检测配置文件得到网站主页链接 $indexlink=C("LINKINDEX"); $this->assign("linkindex",$indexlink); //得到主页链接名称 $indexname=C("INDEXNAME"); $this->assign("indexname",$indexname); //得到网站名称 $webname=C("WEBNAME"); $this->assign("webname",$webname); //得到html保存路径 $staticpath=C("web_tplDir"); $this->assign("staticpath",$staticpath); //得到默认模板的风格 $tplstyle=C("TPLSTYLE"); $this->assign("tplfoulder",$tplstyle); $this->display(); }4.2.4附件设置核心代码protectedfunctionshow(){ $this->assign('public','./public'); $confpath=ROOT_DIR."/data/attachetype"; $imgtype=file_exists($confpath."/imagetype.inc")?file_get_contents($confpath."/imagetype.inc"):""; $texttype=file_exists($confpath."/texttype.inc")?file_get_contents($confpath."/texttype.inc"):""; $videotype=file_exists($confpath."/videotype.inc")?file_get_contents($confpath."/videotype.inc"):""; $litimgwidth=intval(C("LITIMG_WIDTH")); $litimgheight=intval(C("LITIMG_HEIGHT")); $this->assign('litimgwidth',$litimgwidth); $this->assign('litimgheight',$litimgheight); $this->assign('imagetype',$imgtype); $this->assign('texttype',$texttype); $this->assign('videotype',$videotype); $this->display(); } protectedfunctionadd(){ //得到提交的数据 $confpath=ROOT_DIR."/data/attachetype"; $image=!empty($_POST['image'])?$_POST['image']:""; $text=!empty($_POST['text'])?$_POST['text']:""; $video=!empty($_POST['video'])?$_POST['video']:""; //对提交的数据进行处理 $image=common::setPostData($image); $text=common::setPostData($text); $video=common::setPostData($video); //将数据写入配置文件 file_put_contents($confpath."/imagetype.inc",$image); file_put_contents($confpath."/texttype.inc",$text); file_put_contents($confpath."/videotype.inc",$video); //下面是将缩略图的高度和宽度写入配置文件 $syspath=ROOT_DIR.COMMON_DIR."/config"; $sysinfo=file_get_contents($syspath."/sys_config.php"); $imgArr=array('LITIMG_WIDTH'=>$_POST['litimgwidth'],'LITIMG_HEIGHT'=>$_POST['litimgheight']); preg_match_all("/\"(.*?)\"=>\"(.*?)\"/",$sysinfo,$a); foreach($imgArras$key=>$val){ $sysinfo=preg_replace("/\"{$key}\"=>\"(.*?)\"/","\"{$key}\"=>\"{$val}\"",$sysinfo); } if(file_put_contents($syspath."/sys_config.php",$sysinfo)){ $this->success_to("设置成功","?control=attache"); }else{ $this->error_back("设置失败"); } }4.2.5模块管理核心代码protectedfunctionshow(){ $this->assign("public",'./public'); $mod=$GLOBALS['CMS']['model']; //取出已经可以用于分配的模块 $modobj=newassignmodelModel(); $modkeys=$modobj->find_all(); $mk=''; foreach($modkeysas$v){ $mk.=$v['modkey'].','; } if(!empty($mk)){ $mk=rtrim($mk,','); $mk=explode(',',$mk); } $models=array(); foreach($modas$key=>$val){ $assign='yes'; if(!in_array($key,$mk)){ $assign='no'; } $ta=array('modkey'=>$key,'modname'=>$val[0],'assign'=>$assign); array_push($models,$ta); } $this->assign('mod',$models,true); $this->runphp(); $this->display(); }4.2.6网站栏目管理核心代码protectedfunctionshow(){ $this->assign('public','./public'); //在managechannel表中查出当前用户所拥有的权限的栏目 $rightobj=newmanagechannelModel(); $channel=$rightobj->find_all(array('id'=>$_SESSION['userid'])); $channelid=''; foreach($channelas$v){ $channelid.=$v['channelid'].","; } $channelid=!empty($channelid)?rtrim($channelid,','):"1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20"; $this->assign("channelid",$channelid); $this->runphp(); $this->display(); }移动栏目核心代码protectedfunctionmoveChannel(){ if(!isset($_POST['submit'])){ $id=$_GET['id']; $obj=newchannelModel(); $res=$obj->find_one($id,array('id','typename')); $this->setTemplate('movechannel'); $this->assign('public','./public'); $this->assign('typename',$res['typename']); $res=$obj->find_all(array('parentid'=>0),array('typename','id')); $options=''; foreach($resas$val){ $options.="<optionvalue='{$val['id']}'>{$val['typename']}</option>"; $options.=$this->sunchannel($obj,$val['id'],1); } $this->assign('moveid',$id); $this->assign('channeloption',$options); $this->display(); $obj->closeDbConnect();//关闭数据库连接 }else{ $moveid=$_POST['moveid']; $movetoid=$_POST['channel']; $obj=newchannelModel(); if($movetoid=='0'){ if($obj->update(array('parentid'=>$movetoid),array($moveid))){ $this->success_to("移动栏目成功","?control=channel"); }else{ $this->error_back("移动栏目失败"); } }else{ $allchannel=array(); $stack=array();//定义一个存储栏目id的栈 array_push($stack,$moveid);//将要删除的栏目的id进栈 array_push($allchannel,$moveid); //找出父id为$id的所有子栏目包括子栏目的子栏目并将其存入$allchannel数组中 while(count($stack)>0){ $id=array_pop($stack); $res=$obj->find_all(array('parentid'=>$id),array('id')); //如果该类下面还有子类也就是$res不为空,那么将检测出来的所有的id进栈 if(count($res)>0){ foreach($resas$v){ array_push($stack,$v['id']); array_push($allchannel,$v['id']); } } if(count($stack)<=0)break; } if(in_array($movetoid,$allchannel)){ $this->error_back('不能移动到子栏目下面'); exit; } if($obj->update(array('parentid'=>$movetoid),array($moveid))){ $this->success_to("移动栏目成功","?control=channel"); }else{ $this->error_back("移动栏目失败"); } } $obj->closeDbConnect(); } }4.2.7文章管理核心代码protectedfunctionshow(){ $this->assign('public','./public'); $arcobj=newarticleModel(); $channelid=!empty($_GET['channelid'])?intval($_GET['channelid']):(!empty($_POST['arcid'])?$_POST['arcid']:''); $myarticle=!empty($_GET['myarticle'])?$_GET['myarticle']:""; $this->assign('channelid',$channelid); //根据传递的参数判断文档的显示条目 $this->setOpt($channelid,$myarticle); //根据构造的sql语句得出在相应的条件下文档的总数量 $count=$arcobj->select_one($this->opt['sql']); $this->setPage($count['count(*)'],8,20); $this->opt['page']=$this->>style(1); $this->opt['limit']=$this->>limit(); //将limit限制条件加到where数组中 $this->opt['where']['limit']=$this->opt['limit']; //取出相应的所有文档 $res=$arcobj->find_all($this->opt['where']); //分页 $this->assign('page',$this->opt['page']); //文档总数 $this->assign('total',$count['count(*)']); //显示文档 if(count($res)>0){ $this->assign('article',$res,true); }else{ $this->assign('article','',true); } $this->runphp(); $this->display(); }4.2.8添加文章模块核心代码protectedfunctionadd(){ if(!isset($_POST['submit'])){ $obj=newarticleattModel(); $res=$obj->find_all(); $option=''; $channelid=!empty($_GET['channelid'])?$_GET['channelid']:0; foreach($resas$val){ $option.="<optionvalue='{$val['attkey']}'> {$val['attname']} ({$val['attkey']})</option>"; } $this->setTemplate('addarticle'); $this->assign("public",'./public'); $this->assign("options",$option); $obj->closeDbConnect(); $obj=newchannelModel(); //待完善:在这里检测当前用户是否是超级用户,如果是超级管理员的话那么将返回所有的栏目,如果不是超级管理员的话将根据其权限找出栏目 $res=$obj->find_all(array('parentid'=>0),array('typename','id')); $option=""; foreach($resas$val){ if($val['id']==$channelid){ $option.="<optionvalue='{$val['id']}'selected>{$val['typename']}</option>"; }else{ $option.="<optionvalue='{$val['id']}'>{$val['typename']}</option>"; } $option.=$this->sunchannel($obj,$val['id'],1,$channelid); } $obj->closeDbConnect(); $this->assign('channeloption',$option); $this->display(); }else{ $data=$_POST; unset($data['submit']); //判断是否存在属性 $attArr=$data['att']; unset($data['att']); $arcatt=''; if(count($attArr)>0){ foreach($attArras$v){ $arcatt.=$v.','; } $arcatt=rtrim($arcatt,','); } //处理关键字// $keywords=$this->keytag_set($data['keywords']); $keywords=common::setPostData($data['keywords']); unset($data['keywor

温馨提示

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

评论

0/150

提交评论