版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
評(píng)分:軟件工程課程設(shè)計(jì)報(bào)告新聞管理系統(tǒng)的設(shè)計(jì)專業(yè)_計(jì)算機(jī)科學(xué)與技術(shù)_姓名____班級(jí)__學(xué)號(hào)___完成日期__指導(dǎo)教師_1題目新聞管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)2系統(tǒng)分析2.1問(wèn)題定義為了實(shí)現(xiàn)網(wǎng)站新聞的動(dòng)態(tài)管理,使得對(duì)信息的管理更加及時(shí)、高效,提高工作效率同時(shí)隨著Internet的普及,越來(lái)越多的企業(yè)建立了自己的WWW網(wǎng)站,企業(yè)通過(guò)網(wǎng)站可以展示產(chǎn)品,發(fā)布最新動(dòng)態(tài),與用戶進(jìn)行交流和溝通,與合作伙伴建立聯(lián)系,以及開展電子商務(wù)等。其中新聞管理系統(tǒng)是構(gòu)成企業(yè)網(wǎng)站的一個(gè)重要組成部分,它擔(dān)負(fù)著雙層作用,一方面可以用來(lái)動(dòng)態(tài)發(fā)布有關(guān)新產(chǎn)品或新開發(fā)項(xiàng)目,另一方面又可以及時(shí)向顧客公告企業(yè)經(jīng)營(yíng)業(yè)績(jī)、技術(shù)與研發(fā)進(jìn)展、特別推薦或優(yōu)惠的工程項(xiàng)目、產(chǎn)品和服務(wù),從而吸引顧客,擴(kuò)大顧客群。2.2可行性分析通用的新聞管理系統(tǒng)對(duì)于快速建設(shè)新聞?lì)惥W(wǎng)站可以起到事半功倍的效果,它能夠減少投資成本,使企業(yè)和個(gè)人不需要什么專業(yè)的技術(shù)就可以輕松架設(shè)屬于自己的網(wǎng)站,市場(chǎng)發(fā)展前景廣闊。一個(gè)優(yōu)秀的新聞管理系統(tǒng)對(duì)于促進(jìn)我國(guó)互聯(lián)網(wǎng)產(chǎn)業(yè)的發(fā)展,提高我國(guó)的網(wǎng)絡(luò)化建設(shè)水平等方面,具有長(zhǎng)期的經(jīng)濟(jì)效益和社會(huì)利益?zhèn)鹘y(tǒng)的網(wǎng)站新聞管理方式有兩種,一是靜態(tài)HTML頁(yè)面,更新信息時(shí)需要重新制作頁(yè)面然后上傳頁(yè)面并修改相應(yīng)鏈接,這種方式因?yàn)樾侍鸵巡欢嘤谩6腔贏SP和腳本語(yǔ)言,將動(dòng)態(tài)網(wǎng)頁(yè)和數(shù)據(jù)庫(kù)結(jié)合,通過(guò)應(yīng)用程序來(lái)處理新聞,這是目前較為流行的做法。但是由于ASP本身的局限性使得系統(tǒng)有一些不可克服的缺陷,而采取了ASP.NET技術(shù)的系統(tǒng)性能上有了很大的改善,其主要表現(xiàn)在以下幾方面:
1.由于ASP頁(yè)面每次打開都必須經(jīng)過(guò)先編譯后解釋的過(guò)程,所以頁(yè)面在反復(fù)打開時(shí)速度沒(méi)有任何提升,而ASP.NET頁(yè)面只需要一次編譯后不需要重新編譯,直到該頁(yè)面被修改或Web應(yīng)用程序重新啟動(dòng)。這使得在多次訪問(wèn)時(shí)速度有了極大的提升。
2.由于ASP沒(méi)有提供任何輸出數(shù)據(jù)為內(nèi)容的元件,所以在使用ASP撰寫數(shù)據(jù)庫(kù)頁(yè)面時(shí)只能借助ADO的RecordSet對(duì)象逐筆讀取記錄,而ASP.NET通過(guò)ADO.NET提供的DataGrid等數(shù)據(jù)庫(kù)元件可以直接和數(shù)據(jù)庫(kù)聯(lián)系。
3.ASP.NET支持應(yīng)用程序的實(shí)時(shí)更新。管理員不必關(guān)掉網(wǎng)絡(luò)服務(wù)器或者甚至不用停止應(yīng)用程序的運(yùn)行就可以更新應(yīng)用文件。應(yīng)用程序文件永遠(yuǎn)不會(huì)被加鎖,因此甚至在程序運(yùn)行時(shí)文件就可以被覆蓋。當(dāng)文件更新后,系統(tǒng)會(huì)溫和地轉(zhuǎn)換到新的版本。
4.ASP.NET采取"code-behind"方式編寫代碼使得代碼更易于編寫,結(jié)構(gòu)更清晰,降低了系統(tǒng)的開發(fā)與維護(hù)的復(fù)雜度和費(fèi)用。作為微軟.NET戰(zhàn)略的重要組成部分,ASP.NET引入了許多激動(dòng)人心的新技術(shù)。這些具有革新意義的新特性,必將使其得到廣泛的支持和應(yīng)用。中國(guó)互聯(lián)網(wǎng)絡(luò)中心的最新調(diào)查結(jié)果顯示,在網(wǎng)民最常使用的網(wǎng)絡(luò)服務(wù)中瀏覽新聞?wù)紦?jù)第一位,使用率為67.9%。因此一個(gè)完整健全的新聞管理系統(tǒng)對(duì)企業(yè)或?qū)€(gè)人都是有其顯著的作用,為其他各方面的發(fā)展都起到了很大的推動(dòng)效果,無(wú)需過(guò)于擔(dān)憂系統(tǒng)的開發(fā)成本在其經(jīng)濟(jì)效益之上。該新聞管理系統(tǒng)可以使企業(yè)通過(guò)網(wǎng)站可以展示產(chǎn)品,發(fā)布最新動(dòng)態(tài),與用戶進(jìn)行交流和溝通,與合作伙伴建立聯(lián)系,以及開展電子商務(wù)等,其中包括新聞的動(dòng)態(tài)更新,新聞的檢索,熱點(diǎn)問(wèn)題追蹤,行業(yè)信息,供應(yīng)信息,需求信息的發(fā)布等,又可以作為公司的活動(dòng)年表向社會(huì)公布,它及時(shí)向顧客公告企業(yè)經(jīng)營(yíng)業(yè)績(jī),技術(shù)與研發(fā)進(jìn)展,特別推薦或優(yōu)惠的工程項(xiàng)目,產(chǎn)品和服務(wù),從而吸引顧客,建立并保持顧客的忠誠(chéng)度。2.3需求分析2.3.1功能需求分析新聞管理信息系統(tǒng)對(duì)企業(yè)加強(qiáng)新聞管理有著極其重要的作用,就一般的大型企業(yè)來(lái)說(shuō),它的設(shè)計(jì)內(nèi)容非常復(fù)雜而且繁多,比如擁有新聞?dòng)?jì)算功能,新聞統(tǒng)計(jì)功能,報(bào)表輸出功能等等,針對(duì)公司需要而言,確定了新聞管理系統(tǒng)的設(shè)計(jì)方案,該新聞管理系統(tǒng)的主要功能實(shí)現(xiàn)如下:·····新聞發(fā)布管理·····新聞?lì)悇e管理·····新聞評(píng)論管理·····新聞閱讀查詢·····用戶管理2.3.2數(shù)據(jù)需求分析根據(jù)對(duì)新聞管理工作的調(diào)查和用戶需求分析,該系統(tǒng)的數(shù)據(jù)流圖如圖1.1所示。用戶設(shè)定新聞設(shè)定用戶設(shè)定新聞設(shè)定SHAPE1.1系統(tǒng)的數(shù)據(jù)流圖新聞發(fā)布及管理系統(tǒng)用戶使用流程如圖1.2所示,分為系統(tǒng)管理員使用流程和客戶端用戶使用流程。流程一登錄新聞管理系統(tǒng)登錄新聞管理系統(tǒng)創(chuàng)建新聞一級(jí)分類創(chuàng)建新聞二級(jí)分類發(fā)布管理新聞內(nèi)容流程二閱讀新聞內(nèi)容閱讀新聞內(nèi)容發(fā)布新聞評(píng)論1.2用戶使用流程2.3.3性能要求分析該新聞管理系統(tǒng)達(dá)到以下四個(gè)方面的系統(tǒng)功能特點(diǎn)1)操作簡(jiǎn)單、界面友好:完全控件式的頁(yè)面布局,使得新聞的錄入工作更簡(jiǎn)便;許多選項(xiàng)包括新聞?lì)悇e、來(lái)源部門等只需要點(diǎn)擊鼠標(biāo)就可以完成;另外,跟蹤出現(xiàn)的提示信息也讓用戶隨時(shí)清楚自己的操作情況。
(2)即時(shí)可見(jiàn):對(duì)新聞的處理(包括錄入、修改、刪除)將立即在主頁(yè)的對(duì)應(yīng)欄目顯示出來(lái),達(dá)到"即時(shí)發(fā)布、即時(shí)見(jiàn)效"的功能。(3)功能完善:包括常見(jiàn)網(wǎng)站的新聞管理的各個(gè)方面:新聞錄入、瀏覽、刪除、修改、檢索等各個(gè)方面,完整地實(shí)現(xiàn)了網(wǎng)站對(duì)即時(shí)新聞的管理要求。
(4)方便移植:針對(duì)不同的企業(yè),只需要稍作修改就可以開發(fā)出適合本企業(yè)特點(diǎn)的網(wǎng)站新聞管理系統(tǒng)!3系統(tǒng)設(shè)計(jì)3.1系統(tǒng)總體設(shè)計(jì)圖1.3系統(tǒng)功能模塊圖3.2系統(tǒng)功能模塊設(shè)計(jì)系統(tǒng)的主要功能是通過(guò)幾個(gè)功能模塊來(lái)實(shí)現(xiàn)的。具體的設(shè)計(jì)過(guò)程如下:
(1)系統(tǒng)登錄:該模塊負(fù)責(zé)將用戶分為普通用戶和注冊(cè)用戶來(lái)實(shí)現(xiàn)用戶權(quán)限的管理。
(2)新聞瀏覽:該模塊負(fù)責(zé)分頁(yè)列出網(wǎng)站所有新聞的信息,包括標(biāo)題、類型、來(lái)源部門字段及發(fā)布日期,每條新聞的標(biāo)題被做成一個(gè)超鏈接,點(diǎn)擊它們就能跳轉(zhuǎn)頁(yè)面進(jìn)行新聞閱讀。
(3)新聞閱讀:在其他頁(yè)面中點(diǎn)擊標(biāo)題鏈接即進(jìn)入新聞閱讀頁(yè)面,此時(shí),每條新聞的詳細(xì)信息將被取出,包括內(nèi)容、標(biāo)題、關(guān)鍵字等,并按照相對(duì)固定的格式放置在頁(yè)面的不同區(qū)域,所有新聞使用大致相同的頁(yè)面布局,只是各字段對(duì)應(yīng)的內(nèi)容不同而已,另外,頁(yè)面其它位置,可以動(dòng)態(tài)放置其他元件,如網(wǎng)站標(biāo)志logo、頁(yè)面廣告banner等鏈接圖片,這樣可以很容易地實(shí)現(xiàn)圖文并茂的閱讀效果。
(4)新聞查詢:該模塊提供了新聞查詢功能,輸入待查找的內(nèi)容及選定分類信息可以快速地找到符合條件的新聞,并輸出查詢結(jié)果。
(5)新聞管理:該模塊負(fù)責(zé)分頁(yè)羅列登錄的注冊(cè)用戶曾發(fā)布過(guò)且未刪除的新聞信息,用戶可以對(duì)該條新聞進(jìn)行刪除、修改。非新聞發(fā)布者除系統(tǒng)管理員外不具有對(duì)該條新聞的處理權(quán)限,所以不同用戶進(jìn)入此頁(yè)面將顯示不同的內(nèi)容。
(6)新聞錄入和修改:注冊(cè)用戶錄入一條新聞所需要的內(nèi)容,包含標(biāo)題、關(guān)鍵字、類型、來(lái)源部門、發(fā)布日期等,同時(shí)從登錄模塊得到用戶名,這些信息將被寫入數(shù)據(jù)庫(kù)中保存。該模塊還負(fù)責(zé)編輯狀態(tài)下的更新,這時(shí),它將根據(jù)取得的Title字段值對(duì)頁(yè)面控件初始化。3.3數(shù)據(jù)庫(kù)設(shè)計(jì)3.3.1數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)新聞實(shí)體信息ER圖新聞信息新聞信息新聞編號(hào)新聞?lì)}目新聞內(nèi)容類別編號(hào)發(fā)布時(shí)間分類信息實(shí)體ER圖分類信息分類信息分類編號(hào)分類標(biāo)題發(fā)布時(shí)間管理員實(shí)體ER圖管理員信息管理員信息用戶名密碼實(shí)體之間的聯(lián)系圖用戶用戶新聞信息分類信息閱讀分類mn1n操作管理員1n添加刪除修改3.3.2數(shù)據(jù)庫(kù)邏輯物理結(jié)構(gòu)設(shè)計(jì)利用MicrosoftSQLServer2000建立數(shù)據(jù)庫(kù)及其存儲(chǔ)過(guò)程。這里給出必需的數(shù)據(jù)表。一是數(shù)據(jù)表新聞表News包含的字段有:編號(hào)、姓名、標(biāo)題、關(guān)鍵字、內(nèi)容、類型、來(lái)源部門和日期。字段說(shuō)明如下:二是數(shù)據(jù)表用戶Reg包含的字段有:編號(hào)、姓名、密碼、所屬部門、電子郵箱和電話。字段說(shuō)明如下:
三是權(quán)限表purview包括的字段有:權(quán)限ID,權(quán)限名稱,備注。字段說(shuō)明如下:字段名數(shù)據(jù)類型說(shuō)明purviewid自動(dòng)編號(hào)權(quán)限IDpurviewname字符權(quán)限名稱note字符備注4結(jié)束語(yǔ)該新聞管理系統(tǒng)的開發(fā)難點(diǎn)主要是將各個(gè)模塊有機(jī)結(jié)合以及公共文件的使用,尤其是顯示前臺(tái)數(shù)據(jù)的時(shí)候,與顯示界面很好地融合也是比較困難的問(wèn)題,需要細(xì)心地布置,通過(guò)這次軟件工程的課程設(shè)計(jì),使我所學(xué)到的軟件工程、數(shù)據(jù)庫(kù)相關(guān)知識(shí),進(jìn)行了一次很好的綜合提煉,使我對(duì)數(shù)據(jù)庫(kù)的開發(fā)與應(yīng)用有了更新的認(rèn)識(shí),這對(duì)我今后的工作和學(xué)習(xí)都是寶貴的經(jīng)驗(yàn)積累。新聞發(fā)布管理系統(tǒng)設(shè)計(jì)報(bào)告目錄第一章引言 11.1研究意義 11.2開發(fā)環(huán)境的搭建與開發(fā)工具 1第二章系統(tǒng)分析 22.1需求分析 22.2可行性分析 5第三章概要設(shè)計(jì) 53.1系統(tǒng)功能結(jié)構(gòu)圖 53.2實(shí)體關(guān)系圖 63.3系統(tǒng)功能模塊設(shè)計(jì) 73.5數(shù)據(jù)庫(kù)設(shè)計(jì) 8第四章詳細(xì)設(shè)計(jì) 114.1目錄結(jié)構(gòu) 114.2模塊劃分 124.3網(wǎng)站布局的設(shè)計(jì) 124.4用戶登錄與驗(yàn)證 134.5用戶注冊(cè)的設(shè)計(jì)與實(shí)現(xiàn) 174.6用戶收藏新聞的設(shè)計(jì)寫實(shí)現(xiàn) 204.7后臺(tái)管理員的權(quán)限的設(shè)計(jì) 204.8新聞分類的設(shè)計(jì)與實(shí)現(xiàn) 214.9新聞列表的設(shè)計(jì)與實(shí)現(xiàn) 264.10新聞添加的設(shè)計(jì)與實(shí)現(xiàn) 294.11新聞詳細(xì)內(nèi)容的設(shè)計(jì)與實(shí)現(xiàn) 304.12新聞評(píng)論的設(shè)計(jì)與實(shí)現(xiàn) 334.13首頁(yè)圖片輪換的設(shè)計(jì)與實(shí)現(xiàn) 344.14投票的設(shè)計(jì)與實(shí)現(xiàn) 344.14新聞搜索的設(shè)計(jì)與實(shí)現(xiàn) 35第五章網(wǎng)站測(cè)試 364.1頁(yè)面的測(cè)試 36第六章總結(jié) 46第一章引言1.1研究意義隨著互連網(wǎng)的進(jìn)一步發(fā)展,網(wǎng)絡(luò)媒體在人們心中的地位進(jìn)一步提高,新聞發(fā)布管理系統(tǒng)做為網(wǎng)絡(luò)媒體的核心系統(tǒng),其重要性是越來(lái)越重要:一方面,它提供一個(gè)新聞管理和發(fā)布的功能;另一方面,現(xiàn)在的新聞發(fā)布要求實(shí)現(xiàn)與普通的用戶實(shí)現(xiàn)交互,用戶可以很方便地參加一些調(diào)查和相關(guān)新聞的評(píng)論,這一點(diǎn)也是其他一些媒體現(xiàn)在無(wú)法做到的(電視,電臺(tái)等)。新聞發(fā)布管理系統(tǒng)就是一個(gè)把雜亂無(wú)章的新聞信息有效得組織起來(lái)并以有序的方式呈現(xiàn)給前端客戶的一個(gè)信息系統(tǒng),系統(tǒng)主要實(shí)現(xiàn)對(duì)新聞的分類,管理,檢索,瀏覽等一系列問(wèn)題,從而為用戶提供一個(gè)美觀,大方,快速的前臺(tái)新聞閱讀界面。1.2開發(fā)環(huán)境的搭建與開發(fā)工具1.2.1本系統(tǒng)采用php+apache+mysql+PDO技術(shù)開發(fā),使用smarty模板引擎,將邏輯代碼與外在內(nèi)容分離。Smarty是一個(gè)使用PHP寫出來(lái)的模板引擎,是目前業(yè)界最著名的PHP模板引擎之一。它分離了邏輯代碼和外在的內(nèi)容,提供了一種易于管理和使用的方法,用來(lái)將原本與HTML代碼混雜在一起PHP代碼邏輯分離。簡(jiǎn)單的講,目的就是要使PHP程序員同前端人員分離,使程序員改變程序的邏輯內(nèi)容不會(huì)影響到前端人員的頁(yè)面設(shè)計(jì),前端人員重新修改頁(yè)面不會(huì)影響到程序的程序邏輯,這在多人合作的項(xiàng)目中顯的尤為重要。DO擴(kuò)展為PHP訪問(wèn)數(shù)據(jù)庫(kù)定義了一個(gè)輕量級(jí)的、一致性的接口,它提供了一個(gè)數(shù)據(jù)訪問(wèn)抽象層,這樣,無(wú)論使用什么數(shù)據(jù)庫(kù),都可以通過(guò)一致的函數(shù)執(zhí)行查詢和獲取數(shù)據(jù)。1.2.2開發(fā)環(huán)境搭建WampServer,是在windows下將Apache+PHP+Mysql集成環(huán)境,擁有簡(jiǎn)單的圖形和菜單安裝和配置環(huán)境。1.2.3ide的選擇Dreamweavercs5,所見(jiàn)即所得網(wǎng)頁(yè)編輯器。EclipsePHPStudio1.2.2是一個(gè)大型PHP項(xiàng)目開發(fā)編譯器,給予Eclipse底層開發(fā)而來(lái),并且集成了JDK,免除處了安裝配置的麻煩,一次安裝即可使用無(wú)需配置。此編譯器為PHP編譯器,輔助PHP代碼的開發(fā)和調(diào)試,集成了代碼高亮,函數(shù)跟蹤,時(shí)時(shí)糾錯(cuò)等功能。同時(shí)還增加了協(xié)作開發(fā)版本服務(wù)器功能:SVN,CVS。內(nèi)嵌瀏覽器可以在調(diào)試簡(jiǎn)單代碼時(shí)時(shí)瀏覽。1.2.4UML設(shè)計(jì)工具PowerDesigner是Sybase公司的CASE工具集,使用它可以方便地對(duì)管理信息系統(tǒng)進(jìn)行分析設(shè)計(jì),它幾乎包括了數(shù)據(jù)庫(kù)模型設(shè)計(jì)的全過(guò)程。利用PowerDesigner可以制作數(shù)據(jù)流程圖、概念數(shù)據(jù)模型、物理數(shù)據(jù)模型,可以生成多種客戶端開發(fā)工具的應(yīng)用程序,還可為數(shù)據(jù)倉(cāng)庫(kù)制作結(jié)構(gòu)模型,也能對(duì)團(tuán)隊(duì)設(shè)備模型進(jìn)行控制。系統(tǒng)分析2.1需求分析2.1.1系統(tǒng)需求分析本系統(tǒng)設(shè)計(jì)的目的是將不同類型的新聞發(fā)布到網(wǎng)絡(luò)上,任何用戶都可以通過(guò)這個(gè)平臺(tái)來(lái)瀏覽新聞,用戶登錄后可以對(duì)新聞發(fā)表評(píng)論。管理員管理新聞,新聞欄目,用戶信息和評(píng)論。將系統(tǒng)需求總結(jié),得出系統(tǒng)需求如下:系統(tǒng)用戶分為游客,已登錄用戶和管理員游客可以瀏覽新聞,但不能對(duì)新聞進(jìn)行評(píng)論游客可以注冊(cè),注冊(cè)后進(jìn)行登錄可以獲得更多權(quán)限已經(jīng)登錄用戶具有游客的所有權(quán)限已經(jīng)登錄用戶可以對(duì)新聞進(jìn)行評(píng)論已經(jīng)登錄用戶可以對(duì)偏激的評(píng)論舉報(bào)只有超級(jí)管理員具有用戶所有的權(quán)限管理員可以對(duì)新聞進(jìn)行管理管理員可以對(duì)新聞分類進(jìn)行管理管理員可以對(duì)用戶進(jìn)行管理管理員可以對(duì)評(píng)論進(jìn)行管理2.1.2用例圖用例圖(UserCase)是被稱為參與者的外部用戶所能觀察到的系統(tǒng)功能的模型圖,呈現(xiàn)了一些參與者和一些用例,以及它們之間的關(guān)系,主要用于對(duì)系統(tǒng)、子系統(tǒng)或類的功能行為進(jìn)行建模。新聞發(fā)布管理系統(tǒng)面向三類用戶:管理員,已經(jīng)登錄用戶,游客,權(quán)限依次遞減。管理員管理員擁有最高權(quán)限,負(fù)責(zé)新聞發(fā)布管理系統(tǒng)的日常運(yùn)行和維護(hù),該系統(tǒng)給管理員的主要功能有:管理用戶,新聞分類管理,新聞管理,評(píng)論管理,管理員角色用例如圖2-1所示。圖2-1管理員角色用例圖2)已經(jīng)登錄用戶已經(jīng)登錄用戶是新聞發(fā)布管理系統(tǒng)的使用者。本系統(tǒng)為他們提供了以下主要功能:用戶登錄,瀏覽新聞,搜索新聞,發(fā)表新聞評(píng)論,舉報(bào)評(píng)論,參加投票、收藏新聞等。已經(jīng)登錄用戶的角色用例圖如圖2-2所示圖2-2已經(jīng)登錄用戶角色用例圖3)游客游客是任何能登錄到新聞發(fā)布管理系統(tǒng)的的人,但是沒(méi)有注冊(cè),登錄驗(yàn)證。所以權(quán)限最低。主要有以下幾個(gè)功能:注冊(cè),登錄,瀏覽新聞,搜索新聞,參加投票。游客角色用例圖如圖2-3所示。圖2-3游客角色用例圖2.13數(shù)據(jù)流圖數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的傳輸變換過(guò)程。數(shù)據(jù)流圖是結(jié)構(gòu)化系統(tǒng)分析的主要工具,它表示了系統(tǒng)內(nèi)部信息的流向,并表示了系統(tǒng)的邏輯處理的功能。數(shù)據(jù)流圖的基本圖形元素有4種,如圖2-4所示圖2-4數(shù)據(jù)流圖基本圖形符號(hào)根據(jù)調(diào)查材料,明確系統(tǒng)外部項(xiàng),識(shí)別數(shù)據(jù)輸入的來(lái)源和輸出的去向,自頂向下逐層擴(kuò)展整個(gè)系統(tǒng)的邏輯功能,畫出中層數(shù)據(jù)流圖。D1:用戶信息存儲(chǔ),D2:評(píng)論信息存儲(chǔ),D3:用戶收藏新聞信息存儲(chǔ),D4:新聞信息存儲(chǔ),D5:新聞分類信息存儲(chǔ),D6:管理員信息存儲(chǔ)圖2-5數(shù)據(jù)流圖2.2可行性分析本系統(tǒng)屬于數(shù)據(jù)信息發(fā)布與管理系統(tǒng)類。用戶對(duì)功能上的要求不是很復(fù)雜。并且用php開發(fā),php簡(jiǎn)單,功能強(qiáng)大。新聞發(fā)布管理系統(tǒng)后臺(tái)管理對(duì)新聞做了詳細(xì)的分類,前臺(tái)以分類形式顯示新聞的詳細(xì)信息,滿足了人們?yōu)g覽新聞時(shí)分類查看新聞信息的要求,前臺(tái)提供新聞搜索功能,方便瀏覽者查找新聞。新聞發(fā)布管理系統(tǒng)后臺(tái)由管理員進(jìn)行管理維護(hù),保證了安全性,所以本系統(tǒng)是十分可行的。概要設(shè)計(jì)3.1系統(tǒng)功能結(jié)構(gòu)圖本系統(tǒng)的功能結(jié)構(gòu)圖如圖3-1所示新聞發(fā)布管理系統(tǒng)登錄}注冊(cè)}.注銷友情鏈接管理新聞管理新聞發(fā)布管理系統(tǒng)登錄}注冊(cè)}.注銷友情鏈接管理新聞管理后臺(tái)評(píng)論管理前臺(tái)新聞顯示前臺(tái)新聞評(píng)論用戶管理新聞分類管理添加新聞分類刪除新聞分類修改新聞分類添加新聞修改新聞刪除新聞添加鏈接修改鏈接刪除鏈接查看評(píng)論刪除評(píng)論瀏覽新聞搜索新聞發(fā)表評(píng)論回復(fù)評(píng)論添加用戶刪除用戶圖3-1系統(tǒng)功能結(jié)構(gòu)圖3.2實(shí)體關(guān)系圖實(shí)體關(guān)系圖:簡(jiǎn)記E-R圖是指以實(shí)體、關(guān)系、屬性三個(gè)基本概念概括數(shù)據(jù)的基本結(jié)構(gòu),從而描述靜態(tài)數(shù)據(jù)結(jié)構(gòu)的概念模式。管理員管理員賬號(hào)密碼管理員編號(hào)創(chuàng)建時(shí)間權(quán)限編號(hào)停用時(shí)間發(fā)布時(shí)間發(fā)布時(shí)間新聞?lì)悇e分類名稱分類編號(hào)發(fā)布人新聞?lì)悇e分類名稱分類編號(hào)發(fā)布人添加新聞新聞標(biāo)題新聞新聞標(biāo)題新聞內(nèi)容所屬類別所屬類別所屬類別瀏覽瀏覽發(fā)表用戶評(píng)論所屬人編號(hào)發(fā)表用戶評(píng)論所屬人編號(hào)評(píng)論內(nèi)容評(píng)論時(shí)間用戶編號(hào)用戶編號(hào)emailemail用戶名密碼用戶名密碼圖3-2新聞發(fā)布管理系統(tǒng)E-R圖3.3系統(tǒng)功能模塊設(shè)計(jì)本系統(tǒng)分為前臺(tái)和后臺(tái)兩大模塊,后臺(tái)是針對(duì)管理員設(shè)計(jì)的,后臺(tái)模塊主要負(fù)責(zé)用戶的管理,新聞的管理,新聞分類的管理,以及評(píng)論的管理。用戶管理包括對(duì)用戶的添加,刪除功能;新聞管理包括對(duì)新聞的添加,刪除和修改功能;新聞欄目管理包括對(duì)新聞分類的添加,刪除,修改功能;評(píng)論管理包括對(duì)評(píng)論的查找和刪除功能;該模塊的功能結(jié)構(gòu)圖如圖3.3所示。前臺(tái)模塊針對(duì)游客和已登錄用戶而設(shè)計(jì)的,主要負(fù)責(zé)用戶的登錄,注冊(cè)和注銷功能以及新聞的瀏覽和對(duì)新聞發(fā)表評(píng)論的功能,其模塊功能圖如圖34所示。后臺(tái)添加用戶后臺(tái)添加用戶用戶管理用戶管理添加用戶添加用戶添加新聞添加新聞修改新聞新聞管理修改新聞新聞管理添加分類刪除新聞添加分類刪除新聞修改分類新聞分類管理修改分類新聞分類管理刪除分類刪除分類評(píng)論管理刪除評(píng)論評(píng)論管理刪除評(píng)論圖3-3新聞后臺(tái)功能模塊前臺(tái)前臺(tái)用戶登錄/注銷用戶注冊(cè)瀏覽功能瀏覽新聞發(fā)表評(píng)論搜索新聞收藏新聞圖3-4新聞前臺(tái)功能模塊3.5數(shù)據(jù)庫(kù)設(shè)計(jì)后臺(tái)用戶表:np_admin前臺(tái)用戶表:np_user系統(tǒng)基本配置表:np_config新聞基本表:np_newsbase新聞內(nèi)容表:np_newscontent新聞分類表:np_newsclass新聞評(píng)論表:np_comment投票項(xiàng)目表:np_vote投票選項(xiàng)表:np_item友情鏈接表:np_link用戶收藏表:user_store連接數(shù)據(jù)用PDO封裝的pdo的類pdo.class.php<?php/*********pdo連接數(shù)據(jù)庫(kù)的簡(jiǎn)單繼承封裝***********/classmypdoextendsPDO{private $dsn="mysql:host=localhost;dbname=newsphp";/******數(shù)據(jù)庫(kù)類型,ip,數(shù)據(jù)庫(kù)名*****/private $user="root";//用戶名private $pass="";/***構(gòu)造函數(shù),連接數(shù)據(jù)庫(kù)**/publicfunction__construct(){ try{PDO::__construct($this->dsn,$this->user,$this->pass,array(PDO::ATTR_PERSISTENT=>true,PDO::MYSQL_ATTR_INIT_COMMAND=>"SETNAMES'utf8';"));parent::setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);}catch(PDOException$e){$e->getMessage();}}/*******統(tǒng)計(jì)條數(shù)*****/publicfunctioncount_row($table){ $rs=$this->query("SELECT*FROM$table");$rs->fetch();return$rs->rowCount(); }?>第四章詳細(xì)設(shè)計(jì)4.1目錄結(jié)構(gòu)網(wǎng)站總目錄前臺(tái)配置:網(wǎng)站后臺(tái)目錄4.2模塊劃分系統(tǒng)功能模塊的劃分,是在需求分析基礎(chǔ)上進(jìn)行的,是把具有復(fù)雜功能的系統(tǒng)通過(guò)設(shè)計(jì)分解為具有基本獨(dú)立,功能簡(jiǎn)單,易于實(shí)現(xiàn)等特點(diǎn)的多個(gè)功能模塊.模塊劃分的好處是,由于組成系統(tǒng)的模塊基本獨(dú)立,功能明確,因此便于模塊的獨(dú)立開發(fā)、維護(hù)和修改,而不會(huì)影響系統(tǒng)中的其他模塊.本系統(tǒng)主要分為前臺(tái)和后臺(tái)2大模塊前臺(tái)主要模塊1.1新聞瀏覽1.2新聞搜索1.3用戶登錄與注冊(cè)1.4發(fā)表評(píng)論1.5收藏文章后臺(tái)主要模塊2.1管理員權(quán)限2.2登錄,注冊(cè)2.3發(fā)表新聞2.4管理新聞2.4管理用戶2.5管理評(píng)論4.3網(wǎng)站布局的設(shè)計(jì)網(wǎng)站前臺(tái)使用css+div布局,css布局用到了960gridsystem,CSS框架能夠節(jié)省更多的開發(fā)時(shí)間,顯著提高工作效率。網(wǎng)站的首頁(yè)4.4用戶登錄與驗(yàn)證前臺(tái)和后臺(tái)操作用到的基本代碼設(shè)計(jì)成函數(shù),在action.php里Action.php代碼:<?phpsession_start();define("ALLPS","xu--");/*********顯示全部錯(cuò)誤***********/error_reporting(E_ALL);ini_set("display_errors","on");/***********屏蔽警告和錯(cuò)誤提示*******************//*error_reporting(E_ERROR);ini_set("display_errors","Off");*//********用戶登錄********/functionuser_login(){$db=newmypdo();$username=str_replace("","",$_POST['username']); $rs=$db->prepare("select*from`np_user`where`username`=?"); $rs->execute(array($username)); $row=$rs->fetch(); $us=is_array($row); $pass=$us?md5($_POST['password'].ALLPS)==$row['password']:false;//驗(yàn)證密碼 if($pass){ $_SESSION['uid']=$row['uid']; $_SESSION['shell']=md5($row['username'].$row['password'].ALLPS); $_SESSION['times']=time(); $rs=$db->prepare("UPDATE`newsphp`.`np_admin`SET`last_login`=?WHERE`id`=?"); $rs->execute(array(time(),$row['uid']));//更新登錄時(shí)間 return$row; }else{ session_destroy(); show_msg("index.php","用戶名或密碼錯(cuò)誤"); } }/***********用戶權(quán)限判斷*************/functionuser_check($uid,$shell){ $db=newmypdo(); $rs=$db->prepare("select*from`np_user`where`uid`=?"); $rs->execute(array($uid)); $row=$rs->fetch(); $us=is_array($row); $pass=$us?$shell==md5($row['username'].$row['password'].ALLPS):false;//驗(yàn)證密碼 if($pass){ return$row; }else{ session_destroy(); }}/*******注銷********/functionlogout(){ session_destroy(); } /*******超時(shí)判斷*******/functiontimeout($long="3600"){ $new_time=time(); $onlinetime=$_SESSION['times']; if($new_time-$onlinetime>$long){ session_destroy(); header("Content-Type:text/html;charset=utf-8"); echo"登錄超時(shí)".'<ahref="index.php"target="_parent">返回登錄</a>'; exit(); }else{ $_SESSION['times']=time(); } } /*************PHP中文字符截取***************//*@paramstring$str要截取的字串*@paramint$start截取起始位置*@paramint$length截取長(zhǎng)度*@paramstring$charsetutf-8|gb2312|gbk|big5編碼*@param$suffix是否加尾綴*/functioncutstr($str,$start=0,$length,$charset="utf-8",$suffix=true){if(function_exists("mb_substr")){if(mb_strlen($str,$charset)<=$length)return$str;$slice=mb_substr($str,$start,$length,$charset);}else{$re['utf-8']="/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";$re['gb2312']="/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";$re['gbk']="/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";$re['big5']="/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";preg_match_all($re[$charset],$str,$match);if(count($match[0])<=$length)return$str;$slice=join("",array_slice($match[0],$start,$length));}if($suffix)return$slice."…";return$slice;}/*******操作提示跳轉(zhuǎn)頁(yè)******/functionshow_msg($url,$show='操作已成功!',$open="self"){ $msg='<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlns="/1999/xhtml"><head> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> <scripttype="text/javascript"> setTimeout("goto()",2000); functiongoto(){ '.$open.'.window.location="'.$url.'"; } </script> <title>管理區(qū)域</title> </head> <body> <divid="man_zone"> <tablewidth="40%"border="1"align="center"cellpadding="3"cellspacing="0"class="table"style="margin-top:100px;border-collapse:collapse;"> <tr> <thalign="center"style="background:#cef">信息提示</th> </tr> <tr> <td><p><fontcolor=#ff0000>'.$show.'</font><br/> 2秒后返回指定頁(yè)面!<br/> 如果瀏覽器無(wú)法跳轉(zhuǎn),<ahref="'.$url.'"target="_'.$open.'">請(qǐng)點(diǎn)擊此處</a>。</p></td> </tr> </table> </div> </body> </html>'; echo$msg; exit(); } ?> 4.5用戶注冊(cè)的設(shè)計(jì)與實(shí)現(xiàn)前臺(tái)用戶注冊(cè)u(píng)ser_register.php<?phpinclude_once("global.php");/********用戶注冊(cè)***********/$db=newmypdo();if(isset($_POST['submit'])){$rs=$db->prepare("INSERTINTO`np_user`(`username`,`password`,`email`)VALUES(?,?,?)");$rs->execute(array($_POST['username'],md5($_POST['password'].ALLPS),$_POST['email']));show_msg("index.php","恭喜您,注冊(cè)成功,請(qǐng)登錄");}$smarty->display("user_register.html");?>用到j(luò)query的插件validate,//JavaScriptDocument$(function(){ //自定義驗(yàn)證 $.validator.addMethod("stringCheck",function(value,element){returnthis.optional(element)||/^[\u0391-\uFFE5\w]+$/.test(value);},"只能包括中文字、英文字母、數(shù)字和下劃線"); $("#reg").validate({ rules:{ username:{ required:true, minlength:5, stringCheck:true, remote:"user_ajax.php" }, password:{ required:true, minlength:5 }, email:{ required:true, email:true }, password2:{ required:true, minlength:5, equalTo:"#password" } }, messages:{ username:{ required:"請(qǐng)輸入用戶名", minlength:"用戶名太短了點(diǎn)", remote:"該用戶名已經(jīng)被注冊(cè)了" }, password:{ required:"請(qǐng)輸入密碼名", minlength:"用戶密碼太短了點(diǎn)" }, email:{ required:"請(qǐng)輸入email", email:"email格式不正確哦" }, password2:{ equalTo:"請(qǐng)輸入相同的密碼" } }, errorElement:"em", success:function(em){ em.text("").addClass("success") } }) })調(diào)用的ajaxuser_ajax.php<?phpinclude_once('./common/pdo.class.php');session_start();$db=newmypdo();if(isset($_GET['username'])){//用戶名驗(yàn)證$db=newmypdo();$rs=$db->prepare("SELECT*FROM`np_user`WHERE`username`=?");$rs->execute(array($_GET['username']));$row=$rs->fetch();if(is_array($row)){ echo"false"; }else{ echo"true"; }}if(!empty($_POST['vote_button'])){ foreach(array_filter($_POST['id'])as$id){ $rs_t=$db->prepare("UPDATE`newsphp`.`np_item`SET`hit`=hit+1WHERE`np_item`.`id`=?"); if(@$_COOKIE["$id"]!=$id){ $rs_t->execute(array($id)); setcookie($id,$id,time()+1800); } } }?>實(shí)現(xiàn)了如下效果:user_register.php4.6用戶收藏新聞的設(shè)計(jì)寫實(shí)現(xiàn)未完成4.7后臺(tái)管理員的權(quán)限的設(shè)計(jì)分五個(gè)等級(jí):switch($row['mid']){ case"0": $rule="擁有所有權(quán)限"; $level="創(chuàng)始人"; break; case"1": $rule="擁有所有權(quán)限"; $level="超級(jí)管理員"; break; case"2": $rule="可以對(duì)新聞,評(píng)論進(jìn)行管理"; $level="普通管理員"; break; case"3": $rule="可以管理新聞"; $level="新聞管理員"; break; case"4"; $rule="可以管理評(píng)論"; $level="評(píng)論管理員"; break;/***********用戶權(quán)限判斷*************/functionuser_check($uid,$shell,$mid="100"){ $db=newmypdo(); $rs=$db->prepare("select*from`np_admin`WHERE`id`=?"); $rs->execute(array($uid)); $row=$rs->fetch(); $us=is_array($row); $pass=$us?$shell==md5($row['username'].$row['password'].ALLPS):false;//驗(yàn)證密碼 if($pass){ if($mid>=$row['mid']){//權(quán)限判斷 return$row; }else{ show_msg("admin_main.php","你沒(méi)用權(quán)限操作該頁(yè)面"); exit(); } }else{ show_msg("index.php","請(qǐng)先登錄"); exit(); }}4.8新聞分類的設(shè)計(jì)與實(shí)現(xiàn)本系統(tǒng)最難的地方,要實(shí)現(xiàn)無(wú)限分類先寫個(gè)無(wú)限分類的類,tree.class.php<?php/***通用無(wú)限分類*/classtree{public$data=array();public$cateArray=array();functionTree(){} /***********輸入類節(jié)點(diǎn)****************/functionsetNode($id,$parent,$value){$parent=$parent?$parent:0;$this->data[$id]=$value;$this->cateArray[$id]=$parent;} /*************獲取空值的節(jié)點(diǎn)樹array()******************/functiongetChildsTree($id=0){$childs=array();foreach($this->cateArrayas$child=>$parent){if($parent==$id){$childs[$child]=$this->getChildsTree($child);}}return$childs;} /**************獲得所有分類id**************/functiongetChilds($id=0){$childArray=array();$childs=$this->getChild($id);foreach($childsas$child){$childArray[]=$child;$childArray=array_merge($childArray,$this->getChilds($child));}return$childArray;} /************獲得所有父類id***********************/functiongetChild($id){$childs=array();foreach($this->cateArrayas$child=>$parent){if($parent==$id){$childs[$child]=$child;}}return$childs;}/********單線獲取父節(jié)點(diǎn)id************/functiongetNodeLever($id){$parents=array();if(key_exists($this->cateArray[$id],$this->cateArray)){$parents[]=$this->cateArray[$id];$parents=array_merge($parents,$this->getNodeLever($this->cateArray[$id]));}return$parents;} /*************用'|-'長(zhǎng)度來(lái)表示類的深度***************/functiongetLayer($id,$preStr=' |-'){returnstr_repeat($preStr,count($this->getNodeLever($id)));} /**********獲得類的名稱***********/functiongetValue($id){return$this->data[$id];}//endfunc}/***********************************************使用方法$Tree=newTree("請(qǐng)選擇分類");//setNode(目錄ID,上級(jí)ID,目錄名字);$Tree->setNode(1,0,'目錄1');$Tree->setNode(2,1,'目錄2,1');print_r($Tree->getChildsTree(0));print_r($Tree->getChild(0));print_r($Tree->getLayer(2));$category=$Tree->getChilds();//遍歷輸出foreach($categoryas$key=>$id){echo$id.$Tree->getLayer($id,'-').$Tree->getValue($id)."<br>";}*/?>Admin_news_class.php列出分類的代碼:/********分類*********/$db=newmypdo();$rs=$db->query("SELECT*FROM`np_newsclass`");$tree=newtree();$row=$rs->fetch();do{$tree->setNode($row['class_id'],$row['f_id'],$row['name']); }while($row=$rs->fetch());$category=$tree->getChilds();實(shí)現(xiàn)增刪改很不容易:/***********修改分類******************/if(isset($_GET['up'])){$rs_f=$db->prepare("SELECT*FROM`np_newsclass`WHERE`class_id`=?");$rs_f->execute(array($_GET['class_id']));$row_f=$rs_f->fetch();}if(isset($_POST['up2'])){ $find=$tree->getChilds($_POST['class_id']);//查找更新類的自身子類的id if(!in_array($_POST['f_id'],$find)){//如果更新類的id在自身子類的id里,則不能移動(dòng)到自身分類 if($_POST['f_id']==$_POST['class_id']){//不能移動(dòng)到自身類 show_msg("admin_news_class.php","更新失敗,你本身已經(jīng)是".$_POST['name']."類","self"); }else{ $rs_up=$db->prepare("UPDATE`np_newsclass`SET`f_id`=?,`name`=?WHERE`class_id`=?"); $rs_up->execute(array($_POST['f_id'],$_POST['name'],$_POST['class_id'])); show_msg("admin_news_class.php","更新成功","self"); } }else{ show_msg("admin_news_class.php","更新失敗,不能移動(dòng)到自身子類","self");} }/**********刪除分類***************/if(isset($_GET['del'])){ $rs_s=$db->prepare("SELECT*FROM`np_newsclass`WHERE`f_id`=?"); $rs_s->execute(array($_GET['del'])); $row_s=$rs_s->fetch();if(is_array($row_s)){ show_msg("admin_news_class.php","刪除失敗,該分類下還有子分類,請(qǐng)手動(dòng)刪除!","self"); }else{ $rs_del=$db->prepare("DELETEFROM`np_newsclass`WHERE`class_id`=?"); $rs_del->execute(array($_GET['del'])); $rs_s_n=$db->query("selectnidfromnp_newsbasewhereclass_id=$_GET[del]"); $row_s_n=$rs_s_n->fetch(); if(is_array($row_s_n)){ /**********刪除分類的新聞**********/ $rs_d_news=$db->prepare("DELETEFROM`np_newsbase`WHERE`class_id`=?"); $rs_d_news->execute(array($_GET['del'])); do{//$nid有很多個(gè),一個(gè)類可能有多條新聞,所以要批量刪除新聞$nid=$row_s_n['nid']; $rs_del_c=$db->prepare("DELETEFROM`np_newscontent`WHERE`nid`=$nid"); $rs_del_c->execute(); }while($row_s_n=$rs_s_n->fetch()); } show_msg("admin_news_class.php","刪除成功","self"); } }/************添加分類***************/if(isset($_POST['name'])){ if($_POST['name']==""){ show_msg("admin_news_class.php","添加失敗,分類名不能為空!","self"); }else{$rs_add=$db->prepare("INSERTINTO`newsphp`.`np_newsclass`(`class_id`,`f_id`,`name`)VALUES(NULL,?,?)");$rs_add->execute(array($_POST['f_id'],$_POST['name']));show_msg("admin_news_class.php","添加分類成功","self");}}?>4.9新聞列表的設(shè)計(jì)與實(shí)現(xiàn)Admin_list_news.php<?phpinclude_once("admin_global.php");/******用戶權(quán)限判斷******/$attr=user_check($_SESSION['uid'],$_SESSION['shell'],3);/************新聞列表*************/$db=newmypdo();$total=$db->count_row("np_newsbase");page($total,20);$rs=$db->query("SELECT*FROM`np_newsbase`,`np_newsclass`WHERE`np_newsbase`.`class_id`=`np_newsclass`.`class_id`ORDERBY`date_time`DESClimit$start_page,$page_size");$row=$rs->fetch(PDO::FETCH_ASSOC);/****************刪除新聞*****************/if(isset($_GET['del'])&&is_numeric($_GET['del'])){ $sql_base="DELETEFROM`np_newsbase`WHERE`np_newsbase`.`nid`=?"; $rs_del=$db->prepare($sql_base); $rs_del->execute(array($_GET['del'])); $rs_del_c=$db->prepare("DELETEFROM`np_newscontent`WHERE`np_newscontent`.`nid`=?"); $rs_del_c->execute(array($_GET['del'])); /**********刪除投票*********/ $nid=$_GET['del']; $rs_v=$db->prepare("SELECT`voteid`FROM`np_vote`WHERE`nid`=?"); $rs_v->execute(array($nid)); $row_v=$rs_v->fetch(); if(is_array($row_v)){ $rs_del_v=$db->prepare("DELETEFROM`np_vote`WHERE`np_vote`.`voteid`=?"); $rs_del_v->execute(array($row_v['voteid'])); } show_msg("admin_list_news.php","刪除新聞成功","self"); }/****************批量刪除新聞*********************/if(!empty($_POST['delall'])&&!empty($_POST['delbox'])){ $delall=$_POST['delbox']; foreach($delallas$v){ $rs_del_n=$db->prepare("DELETEFROM`np_newsbase`WHERE`np_newsbase`.`nid`=?"); $rs_del_n->execute(array($v)); $rs_del_con=$db->prepare("DELETEFROM`np_newscontent`WHERE`np_newscontent`.`nid`=?"); $rs_del_con->execute(array($v)); } show_msg("admin_list_news.php","批量刪除新聞成功","self"); /********批量刪除投票********//*$rs_del_v=$db->prepare("");*/ }?><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>無(wú)標(biāo)題文檔</title><linkhref="style/css/admin_right.css"rel="stylesheet"type="text/css"/><scripttype="text/javascript"src="style/js/jquery-1.4.2.js"></script><scripttype="text/javascript"src="style/js/admin_list_news.js"></script></head><body><tablewidth="800px"border="1"><tr><tdclass="nav">后臺(tái)>>新聞管理>>新聞列表</td></tr></table><br/><formaction=""method="post"id="form1"><tablewidth="800"border="1"><tr><td>id</td><td>新聞標(biāo)題</td><td>所在欄目</td><td>發(fā)布時(shí)間</td><td>改刪</td></tr><?phpdo{?><trclass="last"><tdalign="left"><?phpecho$row['nid'];?></td><tdalign="left"><inputtype="checkbox"name="delbox[]"id="delbox[]"value="<?phpecho$row['nid'];?>"/><?phpecho$row['title'];?></td><tdalign="left"><?phpecho$row['name']?></td><tdalign="left"><?phpechodate("Y-m-dH:i:s",$row['date_time']);?></td><td><ahref="admin_modify_news.php?up=<?phpecho$row['nid']?>&class_id=<?phpecho$row['class_id']?>">修改</a>/<ahref="admin_list_news.php?del=<?phpecho$row['nid']?>"onclick="returnconfirm('是否刪除新聞?')">刪除</a></td><?php}while($row=$rs->fetch(PDO::FETCH_ASSOC));?></tr><tr><tdcolspan="5"><inputname="selectall"type="button"id="selectall"value="全選"/><inputtype="button"name="selectrev"id="selectrev"value="反選"/><inputtype="button"name="selectno"id="selectno"value="全不選"/><inputtype="submit"name="delall"id="delall"value="批量刪除"onclick="returnconfirm('是否刪除新聞?如果所刪新聞?dòng)型镀保镀币矔?huì)被刪除')"/><?phpecho$pagenav?></td></tr></table></form></body></html>4.10新聞添加的設(shè)計(jì)與實(shí)現(xiàn)用到了fckeditor<?phpinclude_once("admin_global.php");/******用戶權(quán)限判斷******/@$attr=user_check($_SESSION['uid'],$_SESSION['shell'],3);/************編輯器導(dǎo)入***************/include("fckeditor/fckeditor.php");$eBasePath=$_SERVER['PHP_SELF'];$eBasePath=dirname($eBasePath)."/fckeditor/";$ed=newFCKeditor('content');$ed->BasePath=$eBasePath;$ed->Width="98%";$ed->Height="350px";/**********分類列表**************/$db=newmypdo();$tree=newtree();$rs=$db->query("SELECT*FROM`np_newsclass`");while($row=$rs->fetch()){ $tree->setNode($row['class_id'],$row['f_id'],$row['name']); }$category=$tree->getChilds();/************添加新聞****************/if(isset($_POST['submit'])){if(substr_count($_POST['content'],"<img")==0){@$ifreg==null;}else{@$ifreg=$_POST['ifreg'];};$rs_add=$db->prepare("INSERTINTO`np_newsbase`(`nid`,`class_id`,`title`,`author`,`source`,`date_time`,`hite`,`ifreg`)VALUES(NULL,?,?,?,?,?,0,?);");$rs_add->execute(array($_POST['class_id'],$_POST['title'],$_POST['author'],$_POST['source'],$_POST['date_time'],@$ifreg));$nid=$db->lastInsertId();$rs_add_c=$db->prepare("INSERTINTO`np_newscontent`(`nid`,`keyword`,`content`)VALUES(?,?,?)");$rs_add_c->execute(array($nid,$_POST['keyword'],$_POST['content']));/*******添加投票******/if(!empty($_POST['vote'])&&!empty($_POST['item'])){ $rs_up=$db->prepare("INSERTINTO`np_vote`(`voteid`,`nid`,`vote`,`note`,`stop_time`,`vote_type`)VALUES(NULL,?,?,?,?,?)"); $row_up=$rs_up->execute(array($nid,$_POST['vote'],$_POST['note'],strtotime($_POST['stoptime']),$_POST['vote_type'])); $lastinsertid=$db->lastInsertId(); foreach(array_filter($_POST['item'])as$v){//array_filter()函數(shù)用回調(diào)函數(shù)過(guò)濾數(shù)組中的元素這里是去除空值 $rs_up_item=$db->prepare("INSERTINTO`newsphp`.`np_item`(`id`,`voteid`,`item`,`hit`)VALUES(NULL,?,?,0)"); $rs_up_item->execute(array($lastinsertid,$v)); } }show_msg("admin_add_news.php","添加新聞成功","self");}?>4.11新聞詳細(xì)內(nèi)容的設(shè)計(jì)與實(shí)現(xiàn)要逆向列出當(dāng)前新聞的所有父類,不好做<?phpinclude_once("global.php");/******顯示詳細(xì)新聞********/@$nid=(int)$_GET['nid'];if(isset($_GET['nid'])){ $rs=$db->prepare("SELECT*FROM`np_newsbase`,`np_newscontent`WHERE`np_newsbase`.`nid`=`np_newscontent`.`nid`AND`np_newsbase`.`nid`=?"); $rs->execute(array($nid)); $row=$rs->fetch(PDO::FETCH_ASSOC); $rs_hit=$db->prepare("UPDATE`newsphp`.`np_newsbase`SET`hite`=1+hiteWHERE`np_newsbase`.`nid`=?"); if(@$_COOKIE["$nid"]!=$nid)//防刷新計(jì)數(shù) $rs_hit->execute(array($nid)); setcookie($nid,$nid,time()+1800); } $class_id=$row['class_id'];$smarty->assign("nid",$row['nid']);$smarty->assign("author",$row['author']);$smarty->assign("source",$row['source']);$smarty->assign("date_time",date("Y-m-dH:i:s",$row['date_time']));$smarty->assign("keywords",$row['keyword']);$smarty->assign("hite",$row['hite']);$smarty->assign("class_id",$row['class_id']);$smarty->assign("title",$row['title']);$smarty->assign("websitename",$row['title']);$smarty->assign("content",$row['content']);/**************顯示投票*********************/$rs_v=$db->prepare("select*fromnp_votewherenid=?");$rs_v->execute(array($nid));$row_v=$rs_v->fetchA
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年南寧貨運(yùn)從業(yè)資格證模擬考試題庫(kù)及答案
- 2025年?duì)I口交通運(yùn)輸從業(yè)資格證怎樣考試
- 2025購(gòu)買房地產(chǎn)居間合同
- 2024年度互聯(lián)網(wǎng)醫(yī)療服務(wù)平臺(tái)運(yùn)營(yíng)與推廣合同3篇
- 2024商標(biāo)許可及聯(lián)合營(yíng)銷推廣合作協(xié)議3篇
- 單位人力資源管理制度匯編大合集
- 2024實(shí)習(xí)教師教育實(shí)習(xí)期間生活服務(wù)保障合同2篇
- 廚房刀具安全使用指南
- 電力工程招投標(biāo)代理協(xié)議范例
- 2024年度全球物流網(wǎng)絡(luò)優(yōu)化服務(wù)合同3篇
- 乙烯裂解汽油加氫裝置設(shè)計(jì)
- 計(jì)劃分配率和實(shí)際分配率_CN
- 小學(xué)語(yǔ)文作文技巧六年級(jí)寫人文章寫作指導(dǎo)(課堂PPT)
- NLP時(shí)間線療法
- JJG596-2012《電子式交流電能表檢定規(guī)程》
- 醫(yī)療質(zhì)量檢查分析、總結(jié)、反饋
- 《APQP培訓(xùn)資料》
- 通信線路架空光纜通用圖紙指導(dǎo)
- 家具銷售合同,家居訂購(gòu)訂貨協(xié)議A4標(biāo)準(zhǔn)版(精編版)
- 食品加工與保藏課件
- 銅芯聚氯乙烯絕緣聚氯乙烯護(hù)套控制電纜檢測(cè)報(bào)告可修改
評(píng)論
0/150
提交評(píng)論