畢業(yè)設(shè)計(jì)(論文)基于個人網(wǎng)站建設(shè)的CMS內(nèi)容管理系統(tǒng)設(shè)計(jì)_第1頁
畢業(yè)設(shè)計(jì)(論文)基于個人網(wǎng)站建設(shè)的CMS內(nèi)容管理系統(tǒng)設(shè)計(jì)_第2頁
畢業(yè)設(shè)計(jì)(論文)基于個人網(wǎng)站建設(shè)的CMS內(nèi)容管理系統(tǒng)設(shè)計(jì)_第3頁
畢業(yè)設(shè)計(jì)(論文)基于個人網(wǎng)站建設(shè)的CMS內(nèi)容管理系統(tǒng)設(shè)計(jì)_第4頁
畢業(yè)設(shè)計(jì)(論文)基于個人網(wǎng)站建設(shè)的CMS內(nèi)容管理系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、引言內(nèi)容管理系統(tǒng),英文名稱是content management system(cms),一般認(rèn)為,cms是一種位于web前端(web服務(wù)器)和后端辦公系統(tǒng)或流程(內(nèi)容創(chuàng)作、編輯)之間的軟件系統(tǒng)。內(nèi)容管理解決方案重點(diǎn)解決各種非結(jié)構(gòu)化或半結(jié)構(gòu)化的數(shù)字資源的采集、管理、利用、傳遞和增值,并能有機(jī)集成到結(jié)構(gòu)化數(shù)據(jù)的商業(yè)智能環(huán)境中,如oa,crm 等。內(nèi)容的創(chuàng)作人員、編輯人員、發(fā)布人員使用cms來提交、修改、審批并發(fā)布內(nèi)容。這里指的“內(nèi)容”包括文件、表格、圖片、數(shù)據(jù)庫中的數(shù)據(jù)甚至視頻等一切需要發(fā)布到internet、intranet以及extranet網(wǎng)站的信息。網(wǎng)站cms機(jī)構(gòu)將內(nèi)容的采集、使用以及管

2、理和復(fù)雜的程序設(shè)計(jì)、網(wǎng)頁編輯相分離。當(dāng)一個用戶請求頁面時,各部分聯(lián)合生成一個標(biāo)準(zhǔn)的html頁面。網(wǎng)站內(nèi)容管理系統(tǒng)底層的操作系統(tǒng)、web服務(wù)器和數(shù)據(jù)庫軟件必須通過中間件對內(nèi)容管理系統(tǒng)提供支持,現(xiàn)在網(wǎng)站建設(shè)中最常用的中間件是asp、aspnet、php、jsp等。為了隱藏操作系統(tǒng)和各種服務(wù)軟件的細(xì)節(jié),內(nèi)容管理系統(tǒng)一般采用分層設(shè)計(jì)的方法,通常分成核心層和功能擴(kuò)展層。核心層除提供標(biāo)準(zhǔn)的擴(kuò)展接口外,還提供基本身份認(rèn)證、數(shù)據(jù)庫管理和應(yīng)用程序框架等基本功能。功能擴(kuò)展層構(gòu)建在核心層之上,利用核心層的擴(kuò)展接口,開發(fā)出針對不同類型應(yīng)用的插件和模塊。用分層設(shè)計(jì)的思想開發(fā)的內(nèi)容管理系統(tǒng),前、后臺子系統(tǒng)之間耦合度低,可

3、以方便地插拔模塊,系統(tǒng)設(shè)計(jì)思路清晰,便于不同應(yīng)用模塊的修改升級。1 問題定義(此部分主要由錢佳負(fù)責(zé),王勇、夏敦同學(xué)協(xié)助完成)2 系統(tǒng)可行性分析(此部分主要由錢佳負(fù)責(zé),王勇、夏敦同學(xué)協(xié)助完成)3 系統(tǒng)開發(fā)計(jì)劃及進(jìn)度(此部分主要由錢佳負(fù)責(zé),王勇、夏敦同學(xué)協(xié)助完成)4 系統(tǒng)需求分析(此部分主要由錢佳負(fù)責(zé),王勇、夏敦同學(xué)協(xié)助完成)5 系統(tǒng)設(shè)計(jì)目標(biāo)與原則(此部分主要由錢佳負(fù)責(zé),王勇、夏敦同學(xué)協(xié)助完成)6 系統(tǒng)總體設(shè)計(jì)(此部分主要由錢佳負(fù)責(zé),王勇、夏敦同學(xué)協(xié)助完成)7 數(shù)據(jù)庫分析與設(shè)計(jì)(此部分主要由王勇負(fù)責(zé),錢佳、夏敦同學(xué)協(xié)助完成)在設(shè)計(jì)數(shù)據(jù)庫時我們比較充分地了解到要成功建設(shè)個人網(wǎng)站各個方面的需求,包括現(xiàn)

4、有的和將來可能增加的需求。我們嚴(yán)格按照數(shù)據(jù)庫設(shè)計(jì)的一般步驟進(jìn)行該數(shù)據(jù)庫的設(shè)計(jì),即將該數(shù)據(jù)庫設(shè)計(jì)分為:數(shù)據(jù)庫規(guī)劃、數(shù)據(jù)庫需求分析、數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)和數(shù)據(jù)庫結(jié)構(gòu)的實(shí)現(xiàn)。7.1 數(shù)據(jù)庫規(guī)劃對于數(shù)據(jù)庫系統(tǒng),規(guī)劃階段是十分必要的。數(shù)據(jù)庫規(guī)劃的好壞將直接影響到整個cms的成功與否,并將對個人網(wǎng)站在互聯(lián)網(wǎng)人氣和訪問流量產(chǎn)生深遠(yuǎn)的影響。隨著數(shù)據(jù)庫技術(shù)的發(fā)展與普及,各個行業(yè)在計(jì)算機(jī)應(yīng)用中都會提出建立數(shù)據(jù)庫的要求。但是,數(shù)據(jù)庫技術(shù)對技術(shù)人員和管理人員的水平、數(shù)據(jù)采集和管理活動規(guī)范化以及最終用戶使用計(jì)算機(jī)能力較高要求。同樣地,數(shù)據(jù)庫技術(shù)對于計(jì)算機(jī)系統(tǒng)的軟、硬件要求也要求較高,至少要有足夠的內(nèi)、

5、外存容量和必要的dbms軟件。規(guī)劃階段具體分為以下三個步驟:(1)系統(tǒng)調(diào)查在用戶需求確實(shí)后,根據(jù)用戶的實(shí)際需求,開展系統(tǒng)需求調(diào)查。數(shù)據(jù)庫系統(tǒng)調(diào)查主要以數(shù)據(jù)庫系統(tǒng)的實(shí)現(xiàn)為主,作為可行性分析報告的基礎(chǔ)。(2)可行性分析根據(jù)數(shù)據(jù)庫系統(tǒng)調(diào)查的實(shí)際情況,通過決策分析,來確定數(shù)據(jù)庫系統(tǒng)開發(fā)方案是否可行,主要是成本與效益分析,如果成本比效益要小,那么數(shù)據(jù)庫系統(tǒng)開發(fā)的可行性高;如果成本比效益要大,那么數(shù)據(jù)庫系統(tǒng)實(shí)際開發(fā)的意義就不大了。(3)確定數(shù)據(jù)庫系統(tǒng)的總目標(biāo)和制定項(xiàng)目開發(fā)計(jì)劃可行性分析報告出來后,如果該系統(tǒng)確實(shí)可行,就要開始制定數(shù)據(jù)庫系統(tǒng)開發(fā)的總體方案了。要以調(diào)查內(nèi)容為基礎(chǔ),從總體上來確實(shí)數(shù)據(jù)庫系統(tǒng)的目標(biāo)

6、和制定數(shù)據(jù)庫開發(fā)的計(jì)劃。7.2 數(shù)據(jù)庫需求分析mysql是一個小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典mysql ab公司。目前mysql被廣泛地應(yīng)用在internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了mysql作為網(wǎng)站數(shù)據(jù)庫。數(shù)據(jù)庫分析是數(shù)據(jù)庫設(shè)計(jì)的第一個階段,也是非常重要的一個階段。數(shù)據(jù)需求分析階段首先必須準(zhǔn)確了解(包括數(shù)據(jù)與處理)。收集與分析用戶在數(shù)據(jù)管理中的信息要求,處理要求,安全性和完整性要求。在這個階段主要是收集基本數(shù)據(jù)、設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)處理的流程,組成一份詳盡的數(shù)據(jù)字典,為以后的進(jìn)一步設(shè)

7、計(jì)打下基礎(chǔ)。數(shù)據(jù)庫的需求分析是整個設(shè)計(jì)過程中最困難、最耗費(fèi)時間的一步。需求分析的結(jié)果是否準(zhǔn)確地反映了用戶的實(shí)際要求,將直接影響到后面各個階段的設(shè)計(jì),并影響到設(shè)計(jì)結(jié)果是否合理和實(shí)用。數(shù)據(jù)庫是實(shí)現(xiàn)有組織地,動態(tài)地存儲大量關(guān)聯(lián)數(shù)據(jù),方便用戶訪問的計(jì)算機(jī)軟硬資源組成的系統(tǒng);它與文件系統(tǒng)的重要區(qū)別是數(shù)據(jù)的充分共享,交叉訪問,與應(yīng)用程序的高效獨(dú)立性。用戶的需求具體體現(xiàn)在各種信息的提供、保存、更新和查詢,這就是數(shù)據(jù)庫結(jié)構(gòu)能夠充分滿足各種信息的輸入和輸出。收集基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)處理的流程,組成一份詳盡的數(shù)據(jù)字典,為后面的具體設(shè)計(jì)打下基礎(chǔ)。基于個人網(wǎng)站建設(shè)的cms系統(tǒng)總體上分為應(yīng)用中心和系統(tǒng)設(shè)置,具體包

8、括用戶管理模塊、文件管理模塊、分類管理模塊、文章管理模塊、音樂管理模塊、視頻管理模塊、圖片管理模塊、鏈接管理模塊、日記管理模塊、留言評論模塊等,分別對應(yīng)不同的數(shù)據(jù)流。圖7-1 網(wǎng)站首頁結(jié)構(gòu)圖圖7-2 系統(tǒng)后臺業(yè)務(wù)流程圖7.3 概念結(jié)構(gòu)設(shè)計(jì)最常用的概念結(jié)構(gòu)設(shè)計(jì)方法有實(shí)體聯(lián)系法、面向?qū)ο笤O(shè)計(jì)方法、屬性綜合法和規(guī)范化關(guān)系方法。本系統(tǒng)采用的是實(shí)體聯(lián)系法。實(shí)體聯(lián)系方法(entity-relationship approach)。是數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)常用的方法,它不是嚴(yán)格意義上的數(shù)據(jù)模型,因?yàn)樵撃P椭惶峁┝藢?shù)據(jù)表及聯(lián)系的表示,而沒有定義在數(shù)據(jù)上的操作,它是對現(xiàn)實(shí)世界的數(shù)據(jù)的表示,不依賴于具體的數(shù)據(jù)庫管理系統(tǒng)

9、(dbms database management system)。它是目前設(shè)計(jì)模型的常用工具。實(shí)體是客觀存在并相互區(qū)分的事物,屬性是指實(shí)體某一方面的特征,屬性的取值在一定的范圍內(nèi) ,這是屬性的值域,而關(guān)系是實(shí)體集合之間存在的關(guān)系。這是一種自上而下抽象的方法。在數(shù)據(jù)需求分析的基礎(chǔ)上,設(shè)計(jì)出能夠滿足需求的各種實(shí)體以及它們的關(guān)系。該方法用e-r圖來描述現(xiàn)實(shí)世界的概念模型。e-r圖是各種數(shù)據(jù)模型的共同基礎(chǔ),因而比數(shù)據(jù)模型更一般、更抽象、更接近現(xiàn)實(shí)世界。以下各er圖中<pk>代表此字段是該表的主鍵,<fk>代表外鍵,<ak>代表索引。圖7-3 表category的實(shí)

10、體聯(lián)系圖圖7-4 表group的實(shí)體聯(lián)系圖圖7-5 表article的實(shí)體聯(lián)系圖圖7-6 表role的實(shí)體聯(lián)系圖7.4 物理結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)與存取方法稱為數(shù)據(jù)庫的物理結(jié)構(gòu),為一個給定的邏輯數(shù)據(jù)模型選取一個最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)的過程,就是數(shù)據(jù)庫的物理結(jié)構(gòu)設(shè)計(jì)。數(shù)據(jù)庫的物理設(shè)計(jì)通常分為兩步:(1)確定數(shù)據(jù)庫的物理結(jié)構(gòu)。(2)對物理結(jié)構(gòu)進(jìn)行評價,評價的重點(diǎn)是時間和空間效率。7.4.1確定物理結(jié)構(gòu)數(shù)據(jù)庫的物理結(jié)構(gòu)信賴于所選用的dbms,信賴于計(jì)算機(jī)硬件環(huán)境,設(shè)計(jì)人員進(jìn)行設(shè)計(jì)時主要需要考慮以下幾個方面。(1)確定數(shù)據(jù)的存儲結(jié)構(gòu) 從存取時間、存儲空間利用率和維護(hù)代價三方面考慮,得出

11、了該數(shù)據(jù)庫的存儲結(jié)構(gòu)。表的數(shù)據(jù)的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)如下所示:表7-1 access編號字段中文名字段英文名數(shù)據(jù)類型長度可否為空1群組編號role_idsmallint6否2節(jié)點(diǎn)編號node_idsmallint6否3節(jié)點(diǎn)層號leveltinyint1否4父idpidsmallint6否5模塊名modulevarchar50是表7-2 article編號字段中文名字段英文名數(shù)據(jù)類型長度可否為空1序號idint10否2所屬父類號tidint6否3標(biāo)題titlevarchar120否4關(guān)鍵字keywordsvarchar120否5描述descriptionvarchar200否6預(yù)覽圖片imgvarc

12、har200否 7內(nèi)容contenttext否8創(chuàng)建時間add_timeint15否9更新時間update_timeint15否10創(chuàng)建者idadder_idint10否11排序值sortint15否12點(diǎn)擊次數(shù)apvint10否13url重寫值rewritevarchar200否14狀態(tài)statusint1否表7-3 category編號字段中文名字段英文名數(shù)據(jù)類型長度可否為空1序號idint6否2所屬父類號pidint6否3分類名titlevarchar60否 4排序值sortint12否5狀態(tài)statusint1否6關(guān)鍵字keywordsvarchar120否7描述description

13、varchar200否8所屬模塊modulevarchar30否9url重寫值rewritevarchar200否表7-4 diary編號字段中文名字段英文名數(shù)據(jù)類型長度可否為空1序號idint10否2天氣情況weathervarchar60否3內(nèi)容contenttext否 4添加者idadder_idint10否5添加時間add_timeint11否6狀態(tài)statusint1否表7-5 group編號字段中文名字段英文名數(shù)據(jù)類型長度可否為空1序號idsmallint3否2菜單項(xiàng)目名namevarchar25否3菜單顯示名titlevarchar50否 4創(chuàng)建時間create_timeint1

14、1否5更新時間update_timeint11否6狀態(tài)statustinyint1否7排序值sortsmallint3否8是否顯示showtinyint1否表7-6 link編號字段中文名字段英文名數(shù)據(jù)類型長度可否為空1序號idint10否2鏈接名稱titlevarchar50否3鏈接地址urlvarchar200否 4描述introvarchar100否5排序值sortint11否6狀態(tài)statusint1否表7-7 message編號字段中文名字段英文名數(shù)據(jù)類型長度可否為空1序號idint10否2父信息idpidint10否3文章idaidint10否 4發(fā)表人昵稱adder_nameva

15、rchar200否5emailadder_emailvarchar200否6類型(1:文章評論, 2:留言)typeint1否7發(fā)表人id(0:游客)adder_idint10否8內(nèi)容contentvarchar200否9發(fā)表時間add_timeint11否10發(fā)表人ipipvarchar15否11狀態(tài)statusint1否表7-8 music編號字段中文名字段英文名數(shù)據(jù)類型長度可否為空1序號idint10否2音樂名titlevarchar100否3作者authorvarchar60否 4鏈接地址urlvarchar200否5排序值sortint12否6所屬分類tidint10否7添加者ida

16、dder_idint10否8添加時間add_timeint11否9狀態(tài)statusint1否表7-9 node編號字段中文名字段英文名數(shù)據(jù)類型長度可否為空1序號idsmallint6否2應(yīng)用名/模塊名namevarchar20否3顯示名titlevarchar50是4狀態(tài)statustinyint1否(0)5備注remarkvarchar255是6排序值sortsmallint6是7父節(jié)點(diǎn)idpidsmallint6否8第幾層(共3層)leveltinyint1否9類型typetinyint1否10分組idgroup_idtinyint3否表7-10 photo編號字段中文名字段英文名數(shù)據(jù)類型

17、長度可否為空1序號idint10否2圖片名稱titlevarchar100否3圖片簡介introvarchar200否 4圖片地址imgvarchar200否5鏈接地址linkvarchar200否6所屬分類tidint10否7排序值sortint12否8添加者idadder_idint10否9添加時間add_timeint11否10狀態(tài)statusint1否表7-11 role編號字段中文名字段英文名數(shù)據(jù)類型長度可否為空1序號idsmallint6否2組名namevarchar20否3上級組pidsmallint6否 4組狀態(tài)statustinyint1否5描 述remarkvarchar2

18、55否6實(shí)體名enamevarchar5否7創(chuàng)建時間create_timeint11否8更新時間update_timeint11否表7-12 role_user編號字段中文名字段英文名數(shù)據(jù)類型長度可否為空1群組idrole_idmediumint9是2用戶iduser_idchar32是表7-13 router編號字段中文名字段英文名數(shù)據(jù)類型長度可否為空1序號idint11否2重寫urlrewritevarchar200否3原始urlurlvarchar200否 表7-14 user編號字段中文名字段英文名數(shù)據(jù)類型長度可否為空1序號idsmallint5否2用戶名accountvarchar6

19、4否3昵稱nicknamevarchar50否 4密碼passwordchar32否5組合賬號bind_accountvarchar50否6最后登錄時間last_login_timeint11否(0)7最后登錄所在iplast_login_ipvarchar40是8登錄次數(shù)login_countmediumint8否(0)9是否驗(yàn)證verifyvarchar32是10郵箱emailvarchar50否11備注remarkvarchar255否12創(chuàng)建時間create_timeint11否13更新埋單update_timeint11否14狀態(tài)statustinyint1是(0)15類型(0:管理

20、員)type_idtinyint2是(0)表7-15 video編號字段中文名字段英文名數(shù)據(jù)類型長度可否為空1序號idint10否2視頻標(biāo)題titlevarchar200否3關(guān)鍵字keywordsvarchar100否 4描述descriptionvarchar200否5預(yù)覽圖片imgvarchar200否6鏈接地址urlvarchar200否7url重寫rewritevarchar200否8排序值sortint12否9所屬分類tidint10否10添加者idadder_idint10否11添加時間add_timeint11否12狀態(tài)statusint1否(2)設(shè)計(jì)數(shù)據(jù)的存取路徑:主要是指確定

21、如何建立索引。在系統(tǒng)中建立了單索引作為存取路徑,即在每個數(shù)據(jù)表里的id建立了索引。(3)確定數(shù)據(jù)的存放位置:主要考慮提高系統(tǒng)性能,因此應(yīng)將數(shù)據(jù)中易變部 分與穩(wěn)定部分、經(jīng)常存取部分和存取頻率低部分分開存放。本系統(tǒng)保留了數(shù)據(jù)庫的備份和日志文件,以便于出現(xiàn)故障時恢復(fù)數(shù)據(jù)。(4)確定系統(tǒng)配置:在設(shè)計(jì)系統(tǒng)時對系統(tǒng)的配置變量進(jìn)行了初步的配置,在系統(tǒng)運(yùn)行過程中根據(jù)具體情況調(diào)整。7.4.2評價物理結(jié)構(gòu)數(shù)據(jù)庫物理設(shè)計(jì)過程中需要對時間效率、空間效率、維護(hù)代價和各種用戶要求進(jìn)行權(quán)衡,其結(jié)果可以產(chǎn)生多種方案,數(shù)據(jù)庫設(shè)計(jì)人員必須對這些方案進(jìn)行細(xì)致的評價,從中選擇一個較優(yōu)方案作為數(shù)據(jù)庫的物理結(jié)構(gòu)。評價方法完全信賴于所選用

22、的dbms,主要是從定量方法評估。如果數(shù)據(jù)庫結(jié)構(gòu)不符合用戶需求,則需要修改設(shè)計(jì)。本系統(tǒng)是在權(quán)衡了各種因素以后所得出的最終結(jié)構(gòu)。7.5 數(shù)據(jù)庫的實(shí)施階段綜上分析,我們在需求分析和數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)的基礎(chǔ)上得到了數(shù)據(jù)庫的邏輯結(jié)構(gòu)之后,通過創(chuàng)建sql文件,導(dǎo)入到phpmyadmin中就順利創(chuàng)建了數(shù)據(jù)庫基于個人網(wǎng)站建設(shè)的cms。 7.6 數(shù)據(jù)庫的運(yùn)行和維護(hù)階段基于個人網(wǎng)站建設(shè)的cms的數(shù)據(jù)庫投入運(yùn)行標(biāo)志著系統(tǒng)開發(fā)工作的基本完成和維護(hù)工作的開始,而數(shù)據(jù)庫只要存在一天,就需要不斷地對它進(jìn)行評價、調(diào)整和維護(hù)。在數(shù)據(jù)庫運(yùn)行階段,對數(shù)據(jù)庫的經(jīng)常性的維護(hù)工作主要有數(shù)據(jù)庫管理員完成,在這個過程中本人就是數(shù)據(jù)庫管理員

23、,主要工作包括:(1)數(shù)據(jù)庫的備份和恢復(fù)。數(shù)據(jù)庫管理員要定期備份數(shù)據(jù)庫,一般為一星期一次,一旦出現(xiàn)故障,可以及時將數(shù)據(jù)庫恢復(fù)到盡可能的正確狀態(tài),以減少數(shù)據(jù)庫的損失。(2)數(shù)據(jù)庫的安全性和完整性控制。有時我們要收回某些用戶的權(quán)限,增加、修改某些用戶的權(quán)限,增加、刪除用戶,或者某些數(shù)值的取值范圍發(fā)生變化,則對數(shù)據(jù)庫的安全性和完整性要求也會發(fā)生變化,這時就需要我隊(duì)數(shù)據(jù)庫進(jìn)行適當(dāng)?shù)恼{(diào)整,以反映這些新的變化。(3)監(jiān)視、分析、調(diào)整數(shù)據(jù)庫性能。本人要監(jiān)視數(shù)據(jù)庫的運(yùn)行情況,并對檢測數(shù)據(jù)進(jìn)行分析,找出能夠提高性能的可行性,并適當(dāng)?shù)貙?shù)據(jù)庫進(jìn)行調(diào)整。在目前有些dbms產(chǎn)品提供了性能檢測工具,從而可以利用這些工具

24、方便地監(jiān)視數(shù)據(jù)庫。(4)數(shù)據(jù)庫的重組。本系統(tǒng)數(shù)據(jù)庫經(jīng)過一段時間的運(yùn)行后,隨著數(shù)據(jù)的不斷添加、刪除和修改,會使該數(shù)據(jù)庫的存取效率降低,這時本人便可改變數(shù)據(jù)庫組織方式,通過增加、刪除或調(diào)整部分索引等方法,改善系統(tǒng)的性能。當(dāng)然,數(shù)據(jù)庫的結(jié)構(gòu)和應(yīng)用程序設(shè)計(jì)的好壞只是相對的,它并不能保證數(shù)據(jù)庫應(yīng)用系統(tǒng)始終處于良好的性能狀態(tài)。這是因?yàn)閿?shù)據(jù)庫中的數(shù)據(jù)是隨著數(shù)據(jù)庫的使用而變化的,隨著這些變化的不斷增加,系統(tǒng)的性能就會有所下降,所以即使我們的系統(tǒng)不出現(xiàn)故障,我們也要對數(shù)據(jù)庫進(jìn)行維護(hù),便始終能夠獲得較好的性能。在進(jìn)行完這一階段之后,便要進(jìn)行系統(tǒng)實(shí)現(xiàn)了。8 詳細(xì)設(shè)計(jì)(此部分主要由王勇負(fù)責(zé),錢佳、夏敦同學(xué)協(xié)助完成)

25、personal website cms基于thinkphp, jquery, dwz框架開發(fā)而來,完全遵循mvc開發(fā)思想,代碼精煉規(guī)范,系統(tǒng)安全性高,運(yùn)行效率高。 應(yīng)用中心模塊完全基于插件形式設(shè)計(jì),可以自由移除,添加模塊而不影響到其它模塊。 程序、設(shè)計(jì)、功能等各方面高度協(xié)調(diào)統(tǒng)一,對bug反應(yīng)及時迅速。 界面簡潔大氣,關(guān)注于細(xì)節(jié)處理,模板制作簡單,可以方便的制作適合自己的模板。 內(nèi)置視頻、音頻播放器可以播放站內(nèi)多媒體資源,展示自己的品味與愛好。 對seo友好,可以自由指定每篇內(nèi)容的關(guān)鍵字,描述以及給外界訪問的url,連顯示的模板也是可以自由定制的。 網(wǎng)友可以向站長推薦音樂、視頻、交換鏈接、留言

26、評論等,促進(jìn)站長與外界的交流。 后臺實(shí)現(xiàn)了基于角色的權(quán)限控制系統(tǒng),控制精確到每一個操作,方便多人管理后臺。根據(jù)前面的系統(tǒng)分析和總體設(shè)計(jì),本系統(tǒng)設(shè)計(jì)如下的總體模塊結(jié)構(gòu)功能圖:圖8-1 系統(tǒng)總體模塊結(jié)構(gòu)功能圖為了詳細(xì)描述系統(tǒng)各模塊功能,我們在系統(tǒng)功能模塊劃分的基礎(chǔ)上,對以上各模塊功能,自頂向下逐層設(shè)計(jì)分解。8.1分類管理模塊這一模塊主要是創(chuàng)建文章、音樂、視頻等各種類別,基于個人網(wǎng)站建設(shè)的cms系統(tǒng)只支持最多兩層分類,因?yàn)槎壞夸浺呀?jīng)完全足夠網(wǎng)站的功能需求了,更深層次分類只會加大系統(tǒng)的開銷。其結(jié)構(gòu)功能圖如下圖所示:圖8-2 分類管理模塊的結(jié)構(gòu)功能圖8.1.1新增分類接口設(shè)計(jì)說明(1)功能實(shí)現(xiàn):本接口

27、主要實(shí)現(xiàn)系統(tǒng)新分類的添加,以顯示在網(wǎng)站的菜單欄上,如是添加分類的“所屬父類”是頂級分類則該分類是一級菜單;“所屬模塊”可以選擇文章模塊、音樂模塊、視頻模塊和圖片模塊,相應(yīng)模塊有專門的顯示模板輸出。 (2)本接口大致的程序流程圖如下圖所示:圖8-3 增加分類模塊程序流程圖(3)新增分類接口最終設(shè)計(jì)結(jié)果如下圖所示:圖8-4 增加分類界面(4)增加分類實(shí)現(xiàn)的部分源代碼:<?php/ 分類模型class categorymodel extends commonmodel public function getmodule()$modules = array('article'=&

28、gt;'文章模塊','music'=>'音樂模塊','video'=>'視頻模塊','photo'=>'圖片模塊');return $modules;<?php/公共模塊class commonaction extends action public function add() $this->display ();<?php/ 分類模塊class categoryaction extends commonaction /賦值可用模塊public

29、function _before_index() $model=d("category");$this->assign('module',$model->getmodule();/賦值可用模塊public function _before_add() $model=d("category");$list=$model->where('status=1 and pid=0')->select();$this->assign('list',$list);$this->assi

30、gn('module',$model->getmodule();/賦值可用模塊public function _before_edit() $model=d("category");$list=$model->where('status=1 and pid=0')->select();$this->assign('list',$list);$this->assign('module',$model->getmodule();/添加分類public function inser

31、t()$model = d ('category');if (false = $model->create () $this->error ( $model->geterror () );/保存當(dāng)前數(shù)據(jù)對象$list=$model->add ();if ($list!=false) /保存成功if($_post'rewrite')$data'rewrite'=$_post'rewrite' $data'url'=strtolower($_post'module').'

32、/index/id/'.$model->getlastinsid(); d('router')->add($data);$this->success ('新增成功!'); else /失敗提示$this->error ('新增失敗!');8.1.2編輯分類接口設(shè)計(jì)說明(1)功能實(shí)現(xiàn):選擇一個分類,進(jìn)入修改分類窗體,更改字段值,判斷是否滿足約束條件,成功則保存修改后的分類信息到數(shù)據(jù)庫并顯示分類列表。(2)編輯分類接口的最終設(shè)計(jì)結(jié)果如下圖所示:圖8-5 編輯分類界面(3)編輯分類實(shí)現(xiàn)的部分源代碼:/編輯分類public

33、 function update() $model = d ( 'category' );$category = $model->find($_post'id');if (false = $model->create () $this->error ( $model->geterror () );/ 更新數(shù)據(jù)$list=$model->save ();if (false != $list) /成功提示d('router')->where("url='".strtolower($cat

34、egory'module')."/index/id/".$_post'id'."'")->delete();if($_post'rewrite')$data'url'=strtolower($_post'module')."/index/id/".$_post'id'$data'rewrite'=$_post'rewrite'd('router')->add($data);

35、$this->success ('編輯成功!'); else /錯誤提示$this->error ('編輯失敗!');8.1.3刪除分類接口設(shè)計(jì)說明(1)功能實(shí)現(xiàn):選擇要刪除的分類,彈出確認(rèn)提示窗體,點(diǎn)出確定就可以刪除數(shù)據(jù)庫中的記錄。(2)刪除分類實(shí)現(xiàn)的部分源代碼: /刪除分類的同時,刪除路由規(guī)則 public function _before_foreverdelete() if($_get'id')$id = $_get'id'$rewrite=d('category')->where(

36、9;id='.$id)->getfield('rewrite');d('router')->where('rewrite="'.$rewrite.'"')->delete(); 8.1.4樹形結(jié)構(gòu)顯示接口設(shè)計(jì)說明(1)功能實(shí)現(xiàn): 以樹狀形式顯示分類列表,更直觀的表達(dá)各分類的父子關(guān)系。(2)樹形結(jié)構(gòu)顯示接口的最終設(shè)計(jì)結(jié)果如下圖所示:圖8-6 樹形結(jié)構(gòu)顯示頁面(3)樹形結(jié)構(gòu)顯示實(shí)現(xiàn)的部分源代碼:/樹形結(jié)構(gòu)數(shù)據(jù)組裝public function tree()$model = d("

37、category");$list = $model->where('pid=0')->select();if($list)foreach ($list as $key=>$val)$list$key'sub_category'= $model->where('pid='.$val'id')->select(); $this->assign('list',$list);$this->display();8.1.5查詢模塊接口設(shè)計(jì)說明(1)功能實(shí)現(xiàn):這個功能是寫在通用

38、控制器類commonaction.class.php中的,因?yàn)楹芏嗄K都有查詢功能;前臺有站內(nèi)搜索, 后臺各模塊有模糊查詢、精確查詢和按分類查詢。(2)分類查詢模塊接口的最終設(shè)計(jì)結(jié)果如下圖所示:圖8-7 站內(nèi)搜索頁面圖8-8 分類查詢頁面(3)查詢模塊接口實(shí)現(xiàn)的部分源代碼: class commonaction extends action protected function _search($name = '') /生成查詢條件if (empty ( $name ) $name = $this->getactionname();$name=$this->geta

39、ctionname();$model = d ( $name );$map = array ();foreach ( $model->getdbfields () as $key => $val ) if (isset ( $_request $val ) && $_request $val != '') $map $val = $_request $val;return $map; protected function _list($model, $map, $sortby = '', $asc = false) /排序字段 默認(rèn)為

40、主鍵名if (isset ( $_request '_order' ) $order = $_request '_order' else $order = ! empty ( $sortby ) ? $sortby : $model->getpk ();/排序方式默認(rèn)按照倒序排列/接受 sost參數(shù) 0 表示倒序 非0都 表示正序if (isset ( $_request '_sort' ) $sort = $_request '_sort' ? 'asc' : 'desc' else $so

41、rt = $asc ? 'asc' : 'desc'/取得滿足條件的記錄數(shù)$count = $model->where ( $map )->count ( 'id' );if ($count > 0) import ( "org.util.page" );/創(chuàng)建分頁對象if (! empty ( $_request 'listrows' ) $listrows = $_request 'listrows' else $listrows = ''$p = new

42、page ( $count, $listrows );/分頁查詢數(shù)據(jù)$volist = $model->where($map)->order( "" . $order . " " . $sort)->limit($p->firstrow . ',' . $p->listrows)->findall ( );/分頁跳轉(zhuǎn)的時候保證查詢條件foreach ( $map as $key => $val ) if (! is_array ( $val ) $p->parameter .= "

43、$key=" . urlencode ( $val ) . "&"/分頁顯示$page = $p->show ();/列表排序顯示$sortimg = $sort; /排序圖標(biāo)$sortalt = $sort = 'desc' ? '升序排列' : '倒序排列' /排序提示$sort = $sort = 'desc' ? 1 : 0; /排序方式/模板賦值顯示$this->assign ( 'list', $volist );$this->assign ( &

44、#39;sort', $sort );$this->assign ( 'order', $order );$this->assign ( 'sortimg', $sortimg );$this->assign ( 'sorttype', $sortalt );$this->assign ( "page", $page );$this->assign ( 'totalcount', $count );$this->assign ( 'numperpage'

45、;, c('page_listrows') );$this->assign( 'currentpage', !empty($_requestc('var_page')?$_requestc('var_page'):1);cookie:set ( '_currenturl_', _self_ );return; 8.2文章管理模塊這個模塊主要是發(fā)布文章供人閱讀和發(fā)表評論,前臺有文章摘要列表、熱門文章和最新文章列表。訪客點(diǎn)擊文章標(biāo)題就能進(jìn)入文章詳情頁面,該頁面有隨機(jī)推薦以及發(fā)表評論。文章管理模塊同樣具有增、刪、改

46、、查的功能實(shí)現(xiàn)。圖8-9 文章管理模塊程序流程圖8.2.1前臺文章管理:文章列表、分布取數(shù)據(jù)、查看文章詳細(xì)信息 <?phpclass articleaction extends commonaction/查看文章詳細(xì)信息public function view()$id = $this->router();d('article')->setinc('apv',"id=$id",1);$info = d('article')->where("id=$id and status=1")-

47、>find();$this->assign('info',$info);$this->seo($info'title', $info'keywords', $info'description', d('common')->getposition($info'tid');$art_pre = d('article')->where("id<$id and status=1")->order('id desc'

48、)->field('id,title,apv')->find();$art_pre = $this->changurl($art_pre);$this->assign('art_pre',$art_pre);/上一篇$art_next = d('article')->where("id>$id and status=1")->order('id')->field('id,title,apv')->find();$art_next = $thi

49、s->changurl($art_next);$this->assign('art_next',$art_next);/下一篇$art_rand = d('article')->where("status=1")->order('rand()')->limit(8)->select();foreach ($art_rand as $key => $val)$art_rand$key = $this->changurl($val);$this->assign('art

50、_rand',$art_rand);/隨機(jī)8篇$message = d('message')->where("aid=$id and status=1 and pid=0")->select();if(is_array($message)foreach ($message as $key=>$val)$message$key = $this->msgmodify($val);$message$key'reply' = d('message')->where('status=1 an

51、d pid='.$val'id')->select();foreach ($message$key'reply' as $key2 => $val2)$message$key'reply'$key2 = $this->msgmodify($val2);$this->assign('msg_list',$message);/評論$this->choosetpl($info);8.2.2后臺文章管理:文章增、刪、改、查部分源碼<?php/ 文章模塊class articleaction ex

52、tends commonaction /添加文章public function insert() $model = d ('article');if (false = $model->create () $this->error ( $model->geterror () );if(!empty($_files'img''name')import("org.net.uploadfile");$upload = new uploadfile();$upload->maxsize = 3145728 ; $

53、upload->allowexts = array('jpg', 'gif', 'png', 'jpeg'); $upload->savepath = './public/upload/article/'$upload->saverule = 'uniqid'$upload->thumb = true;$upload->thumbmaxwidth = 100;$upload->thumbmaxheight = 100;$upload->uploadrepla

54、ce = true;$upload->thumbprefix = ''if(!$upload->upload() $this->error($upload->geterrormsg();else$imgs = $upload->getuploadfileinfo(); $model->img = $imgs0'savename'/刪除文章時刪除預(yù)覽圖片,刪除路由規(guī)則public function _before_foreverdelete() if($_get'id')$id = $_get'id

55、9;$rewrite = d('article')->where('id='.$id)->getfield('rewrite');d('router')->where('rewrite="'.$rewrite.'"')->delete();$src = './public/upload/article/'.d('article')->where('id='.$id)->getfield('img');if(is_file($src

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論