




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、衡衡陽陽師師范范學學院院 畢畢業(yè)業(yè)論論文文(設設計計) 題題 目:目:基于基于 asp.net 的新聞發(fā)的新聞發(fā) 布系統(tǒng)的設計與實現(xiàn)布系統(tǒng)的設計與實現(xiàn) 所所 在在 系:系: 計算機科學系計算機科學系 專專 業(yè):業(yè): 計算機科學與技術計算機科學與技術 學學 號:號: 05190311 作者姓名:作者姓名: 譚永紅譚永紅 指導教師:指導教師: 胡志超胡志超 2009 年年 5 月月 5 日日 i 基于基于 asp.net 的新聞發(fā)布系統(tǒng)的設計與實現(xiàn)的新聞發(fā)布系統(tǒng)的設計與實現(xiàn) 計算機科學系計算機科學系 計算機科學與技術專業(yè)計算機科學與技術專業(yè) 學號:學號:0519031105190311 姓名姓名:
2、 :譚永紅譚永紅 指導教師指導教師: :胡志超胡志超 摘摘 要要 隨著信息時代的高速發(fā)展,傳統(tǒng)的報紙雜志已經(jīng)遠遠滿足不了人們的需求,人們更加希望 于能夠在網(wǎng)上了解更多的新聞和信息,于是我們就很有必要在網(wǎng)上創(chuàng)建一個新聞發(fā)布管理信息系統(tǒng) 了。大部分網(wǎng)站都是采用靜態(tài)的方式來發(fā)布和管理信息的,可是網(wǎng)站需要更新的信息量也越來越大, 所以這很不利于網(wǎng)站管理人員的工作。為了更加方便的管理網(wǎng)站,于是我們就很迫切的需要利用動 態(tài)技術創(chuàng)建一個新聞發(fā)布管理信息系統(tǒng)了。 本設計采用 microsoft studio 2008 作為開發(fā)工具,后臺數(shù)據(jù)庫采用 sql server 2005 數(shù)據(jù)庫 的設計,利用 ado.
3、net 數(shù)據(jù)訪問技術實現(xiàn)對數(shù)據(jù)庫的各種管理操作,實現(xiàn)新聞發(fā)布系統(tǒng)的瀏覽和新 聞搜索等功能,系統(tǒng)模塊設計包括系統(tǒng)類的設計、前臺用戶模塊的設計和后臺用戶管理模塊的設計。 由于要對數(shù)據(jù)庫進行不斷的讀寫操作,所以建立數(shù)據(jù)連接類和對數(shù)據(jù)的操作類會使設計減輕負擔, 還根據(jù)數(shù)據(jù)庫的設計建立了各種對象的業(yè)務相關類。前臺用戶模塊主要是實現(xiàn)新聞的瀏覽、對新聞 進行評論、用戶注冊等功能;后臺管理模塊主要是實現(xiàn)管理現(xiàn)有新聞、 添加新聞內(nèi)容、審核最新 新聞、新聞評論管理、管理新聞類別、管理系統(tǒng)用戶等功能。 關鍵詞關鍵詞 asp.net;c#;ado.net;sql server;新聞管理 ii 目 錄 1 緒論.1 1
4、.1 新聞發(fā)布系統(tǒng)概述1 1.2 國內(nèi)外新聞發(fā)布系統(tǒng)研究現(xiàn)狀1 1.3 開發(fā)工具選用及介紹1 2 基于.net 平臺的相關技術2 2.1 .net 簡介2 2.2 sql server 2005 數(shù)據(jù)庫的新特點2 2.3 ado.net 數(shù)據(jù)訪問技術3 2.4 三層結構4 2.5 c#2.0 的新特性5 3 系統(tǒng)分析與總體設計6 3.1 系統(tǒng)功能模塊劃分6 3.2 系統(tǒng)流程分析8 4 數(shù)據(jù)庫結構設計與實現(xiàn)9 4.1 創(chuàng)建數(shù)據(jù)庫9 4.2 數(shù)據(jù)庫邏輯結構設計9 4.3 創(chuàng)建表的腳本文件12 5 數(shù)據(jù)訪問類的實現(xiàn)、母版及用戶控件14 5.1 數(shù)據(jù)訪問類的實現(xiàn)14 5.2 母版21 5.3 用戶控件
5、22 6 系統(tǒng)主界面與登錄程序設計22 6.1 設計主界面22 iii 6.2 登錄程序設計23 7 后臺管理主界面.24 8 新聞管理模塊設計.25 8.1 管理現(xiàn)有新聞25 8.1.1 修改新聞.26 8.1.2 刪除新聞.27 8.2 添加新聞27 8.3 審核最新新聞27 8.4 新聞評論管理28 9 類別管理模塊設計29 9.1 設計新聞類別管理頁面29 10 用戶管理模塊設計30 10.1 管理系統(tǒng)用戶30 11 系統(tǒng)運行31 11.1 安裝 iis 服務器程序31 結論33 致謝34 參考文獻35 1 1 緒論 1.1 新聞發(fā)布系統(tǒng)概述 新聞發(fā)布系統(tǒng)(news managemen
6、t system)又稱為信息發(fā)布系統(tǒng),是一個利用計 算機網(wǎng)絡為平臺構建的新聞發(fā)布體系,它將網(wǎng)站上的新聞發(fā)布等重要信息集中管理, 并通過信息的某些性質(zhì)進行分類,最后系統(tǒng)化,標準化的發(fā)布到網(wǎng)站上的一種網(wǎng)站應 用程序,網(wǎng)站信息通過一個簡單的界面加入數(shù)據(jù),然后通過已有的網(wǎng)頁模版格式與審 核流程發(fā)布到網(wǎng)站上。它的出現(xiàn)大大減輕了網(wǎng)站更新維護的工作量,通過網(wǎng)絡數(shù)據(jù)庫 的引用,將網(wǎng)站的更新維護工作簡化到只需錄入文字和上傳圖片,從而使網(wǎng)站的更新 的速度大大縮短,從而大大加快了信息的傳播速度。 1.2 國內(nèi)外新聞發(fā)布系統(tǒng)研究現(xiàn)狀 目前,新聞發(fā)布系統(tǒng)的開發(fā)技術已經(jīng)十分成熟,用到的技術有很多,比方asp技 術,php
7、技術,jsp技術,.net技術等,成熟的新聞發(fā)布系統(tǒng)有很多,如著名的v7 content mangement suite(西門子公司采用的系統(tǒng)),interwoven-teamsite(cisco 采用的 系統(tǒng))以及開源的產(chǎn)品也得到廣泛的應用,如opencms,zope-content management framework等。 1.3 開發(fā)工具選用及介紹 傳統(tǒng)的新聞發(fā)布系統(tǒng)主要有兩種,一是靜態(tài) html 頁面,更新信息時需要重新制作 頁面后上傳,同時還要修改相應的鏈接,這種方式因效率太低已不多用。二是基于 asp 和腳本語言,將動態(tài)網(wǎng)頁和數(shù)據(jù)庫相結合,通過應用程序來處理新聞,這是目前 較流
8、行的做法,但是由于 asp 本身的局限性是的系統(tǒng)有一些不可克服的缺陷,而采用 asp.net 技術,在系統(tǒng)性能上就有了很大的提高,主要體現(xiàn)在一下幾個方面: (1)asp.net 頁面不同于 asp 頁面,它只需要一次編譯不需要重新編譯,直到該 頁面被重新修改或 web 程序重新啟動為止,使得多次訪問速度有了極大的提升。 (2)asp.net支持應用程序的實時更新。管理員不必關掉網(wǎng)絡服務器或者甚至不用 停止應用程序的運行就可以更新應用文件。 (3)asp.net采取“code-behind”方式編寫代碼,使系統(tǒng)更易于編寫,結構更清晰, 降低了系統(tǒng)的開發(fā)與維護的復雜度和費用。 2 基于 asp.n
9、et 的優(yōu)點,所以我選擇了 visual stiduo 2008 作為開發(fā)工具,并結合 sql server 2005 作為后臺數(shù)據(jù)庫。同時用 macromedia dreamweaver mx 2004 進行頁面 的設計。 2 基于.net 平臺的相關技術 2.1 .net 簡介 microsoft.net 是一個用于構建、運行和體驗下一代分布式應用程序的平臺,它是 跨客戶端、跨服務器的開發(fā)工具。它由以下幾個部分組成: (1).net 框架編程模型,借助它開發(fā)人員能夠構建 web 應用程序、智能客戶端 應用程序和 xml web service 應用程序,并利用諸如 soap、xml 和 h
10、ttp 標準協(xié)議 以編程方式通過網(wǎng)絡開放其功能。 (2)開發(fā)工具,比如 visual studio.net,該工具為用戶在.et 框架下進行編程提供 了一個迅速開發(fā)應用程序的集成環(huán)境。 (3)一組服務器,包括 windows 2000、sql server 和 biztalk server,可集成、運 行、操作和管理 xml web 服務和應用程序。 (4)客戶端軟件,比如 windows xp、windows ce 和 microsoft office xp. 2.2 sql server 2005 數(shù)據(jù)庫的新特點 隨著 mierosotf sql sevrer 2005 beatz 的發(fā)布
11、,數(shù)據(jù)庫開發(fā)的方式正在改變中。數(shù) 據(jù)庫開發(fā)工作正前所未有的越來越集成,所需要的所有工具都觸手可及。 (1)net framewokr 集成 隨著 mciorostf sql sevrer 2005 beat2 的發(fā)布,數(shù)據(jù)庫編程人員現(xiàn)在可以充分利用 mciorosfl.net framewokr 類庫和現(xiàn)代編程語言來開發(fā)數(shù)據(jù)庫應用。通過集成的 clr, 你可以用.net framework language 里的 visual basic.net 和 c#中面向對象的結構、結 構化的錯誤處理、數(shù)組、命名空間和類來編寫存儲過程、函數(shù)和觸發(fā)器。此外,.net framework 所提供的幾千個類和
12、方法也擴展了服務器功能,使你能夠更容易的在服務 器端使用。許多之前我們用 t 一 sql 難以實現(xiàn)的任務現(xiàn)在可以更容易的用托管代碼實 現(xiàn)。同時,系統(tǒng)還新增了兩個數(shù)據(jù)庫對象類型:聚合和用戶自定義類型。你現(xiàn)在能夠更 好的利用己掌握的知識和技能編寫 in 一 proeess 代碼??傊?,sql sevrer 2005 beta2 能 3 夠使你的數(shù)據(jù)庫服務器更方便地在后臺執(zhí)行適當?shù)挠嬎愫筒僮鳌?(2)xml 技術 xml 己經(jīng)成為一種存儲和交換數(shù)據(jù)的通用格式,是那些帶標記的、結構化或半結 構化信息的常用選擇,如:文本(帶有標示文檔結構和重點的標記),嵌套對象(結構化 的),異類數(shù)據(jù)(半結構化的)。x
13、ml 也是一種用來在網(wǎng)絡上不同應用程序間散布數(shù)據(jù) 的重要的、被廣為接受的標準。mierosotf sql sevrer2005 支持通過 mierosotf sql xml 來使用 xml,它允許把關系型數(shù)據(jù)轉換為 xml,把 xml 數(shù)據(jù)存在關系型表中。 microsoft sql sverer 2005 beta2 通過把 xml 作為一類數(shù)據(jù)類型來實現(xiàn)這一功能,此 外,它還提供了針對 xml 文檔的新的查詢語句和定位修改。 (3)新的應用程序框架 sql sevrer 2005 引入了新的 sql sevrer 應用程序框: sevrieeborker。sevrcieborker 是一個
14、分布式應用程序框架,它在數(shù)據(jù)庫到數(shù)據(jù)庫級上 提供了可靠的異步通訊。 2.3 ado.net 數(shù)據(jù)訪問技術 ado.net 是一組用于和數(shù)據(jù)源進行交互的面向對象類庫。通常情況下,數(shù)據(jù)源是 數(shù)據(jù)庫,但它同樣也能夠是文本文件、excel 表格或者 xml 文件。ado.net 允許和不 同類型的數(shù)據(jù)源以及數(shù)據(jù)庫進行交互。然而并沒有與此相關的一系列類來完成這樣的 工作。因為不同的數(shù)據(jù)源采用不同的協(xié)議,所以對于不同的數(shù)據(jù)源必須采用相應的協(xié) 議。一些老式的數(shù)據(jù)源使用 odbc 協(xié)議,許多新的數(shù)據(jù)源使用 oledb 協(xié)議,并且現(xiàn)在 還不斷出現(xiàn)更多的數(shù)據(jù)源,這些數(shù)據(jù)源都可以通過.net 的 ado.net 類
15、庫來進行連接。 ado.net 提供與數(shù)據(jù)源進行交互的相關的公共方法,但是對于不同的數(shù)據(jù)源采用 一組不同的類庫。這些類庫稱為 data providers,并且通常是以與之交互的協(xié)議和數(shù)據(jù) 源的類型來命名的。 ado.net 包含的對象: sqlconnection 對象 和數(shù)據(jù)庫交互,你必須連接它。連接幫助指明數(shù)據(jù)庫服務器、數(shù)據(jù)庫名字、用戶 名、密碼,和連接數(shù)據(jù)庫所需要的其它參數(shù)。connection 對象會被 command 對象使用, 這樣就能夠知道是在哪個數(shù)據(jù)庫上面執(zhí)行命令。與數(shù)據(jù)庫交互的過程意味著你必須指 明想要發(fā)生的操作。這是依靠 command 對象執(zhí)行的。你使用 command
16、 對象來發(fā)送 4 sql 語句給數(shù)據(jù)庫。command 對象使用 connection 對象來指出與哪個數(shù)據(jù)庫進行連接。 你能夠單獨使用 command 對象來直接執(zhí)行命令,或者將一個 command 對象的引用傳 遞給 sqldataadapter,它保存了一組能夠操作下面描述的一組數(shù)據(jù)的命令。 sqldatareader 對象 許多數(shù)據(jù)操作要求你只是讀取一串數(shù)據(jù)。data reader 對象允許你獲得從 command 對象的 select 語句得到的結果??紤]性能的因素,從 data reader 返回的數(shù)據(jù)都是快 速的且只是“向前”的數(shù)據(jù)流。這意味著你只能按照一定的順序從數(shù)據(jù)流中取出數(shù)
17、據(jù)。 這對于速度來說是有好處的,但是如果你需要操作數(shù)據(jù),更好的辦法是使用 dataset。 dataset 對象 dataset 對象是數(shù)據(jù)在內(nèi)存中的表示形式。它包括多個 datatable 對象,而 datatable 包含列和行,就象一個普通的數(shù)據(jù)庫中的表。你甚至能夠定義表之間的關系 來創(chuàng)建主從關系(parent-child relationships)。dataset 是在特定的場景下使用幫助 管理內(nèi)存中的數(shù)據(jù)并支持對數(shù)據(jù)的斷開操作的。dataset 是被所有 data providers 使用 的對象,因此它并不像 data provider 一樣需要特別的前綴。 sqldataada
18、pter 對象 某些時候你使用的數(shù)據(jù)主要是只讀的,并且你很少需要將其改變至底層的數(shù)據(jù)源。 同樣一些情況要求在內(nèi)存中緩存數(shù)據(jù),以此來減少并不改變的數(shù)據(jù)被數(shù)據(jù)庫調(diào)用的次 數(shù)。data adapter 通過斷開模型來幫助你方便的完成對以上情況的處理。當在一單批 次的對數(shù)據(jù)庫的讀寫操作的持續(xù)的改變返回至數(shù)據(jù)庫的時候,data adapter 填充(fill) dataset 對象。data adapter 包含對連接對象以及當對數(shù)據(jù)庫進行讀取或者寫入的時候自 動的打開或者關閉連接的引用。另外,data adapter 包含對數(shù) select,insert,update 和 delete 操作的 com
19、mand 對象引用。 2.4 三層結構 所謂三層體系結構,是在客戶端與數(shù)據(jù)庫之間加入了一個“中間層” ,也叫組件層。 這里所說的三層體系,不是指物理上的三層,不是簡單地放置三臺機器就是三層體系 結構,也不僅僅有 b/s 應用才是三層體系結構,三層是指邏輯上的三層,見圖 1: 5 圖 1 三層結構模擬圖 即使這三個層放置到一臺機器上。三層體系的應用程序將業(yè)務規(guī)則、數(shù)據(jù)訪問、合法 性校驗等工作放到了中間層進行處理。 通常情況下,客戶端不直接與數(shù)據(jù)庫進行交互,而是通過 com/dcom 通訊與中間 層建立連接,再經(jīng)由中間層與數(shù)據(jù)庫進行交互。as.pnet 可以使用.net 平臺快速方便 的部署三層架
20、構。as.pnet 革命性的變化是在網(wǎng)頁中也使用基于事件的處理,可以指 定處理的后臺代碼文件,可以使用 c#,vb,j#作為后臺代碼的語言。.net 中可以方 便的實現(xiàn)組件的裝配,后臺代碼通過命名控件可以方便的使用自己定義的組件。顯示 層放在 asp.net 頁面中,數(shù)據(jù)庫操作和邏輯層用組件來實現(xiàn),這樣就很方便的實現(xiàn)了 三層架構。所以,n 層架構的核心是提供可規(guī)模化特性,一方面是從服務負載上可規(guī) ?;?,能同時為極大規(guī)模的用戶同時提供服務;另一方面是服務功能上的可規(guī)模化,可 形成極大規(guī)模的軟件群系統(tǒng),各分系統(tǒng)可以共享信息、服務,形成企業(yè)級的信息高速 公路。三層可以分別放在各自不同的硬件系統(tǒng)上的,
21、所以靈活性很高,能夠適應客戶 機數(shù)目的增加和處理負荷的變動。例如,在追加新業(yè)務處理時,可以相應增加裝載功 能層的服務器。因此,系統(tǒng)規(guī)模越大這種形態(tài)的優(yōu)點就越顯著。 另外,n 層結構從邏輯上相互獨立,某一層的變動通常不影響其它層,具有很高 的可重用性,除此以外,n 層結構還有以下優(yōu)點: .利用單一的訪問點,可以在任何地方訪問站點的數(shù)據(jù)庫; .對于各種信息源,不論是文本還是圖形都采用相同的界面; .所有的信息,不論其基于何種平臺,都可以用相同的界面訪問; .減少整個系統(tǒng)的成本; .維護升級十分方便; .使系統(tǒng)具有更好的擴展性; .具有良好的開放性; .進行嚴密的安全管理; .系統(tǒng)管理簡單,可支持異
22、種數(shù)據(jù)庫,有很高的可用性。 2.5 c#2.0 的新特性 c#2.0 是微軟針對新一代.net 平臺開發(fā)的語言,在 c#1.x 的基礎上添加了泛型、 匿名方法、迭代器、委托類型以及其他諸多新特性。 6 (1).在 c#2.0 中,泛型、匿名方法、ienumerable 接口和匿名方法的合作,使很多 的編程任務變得非常的簡單。 (2).迭代器與泛型有著本質(zhì)上的不同,泛型是相對 1.x 微軟在 li 上面又添加了一 些指令來實現(xiàn)。而迭代器則是在編譯器這個層次去實現(xiàn)的,也就是說 c#2,0 中的迭代 器的特性并沒有靠引入 li 來實現(xiàn)。類似 foreach(srtings int c)這樣的調(diào)用方式
23、,一般就 是一個迭代器,使用 c#2.0 中的迭代器會使用代碼變得很簡單。 (3).deelgaet 經(jīng)常被人用來與回調(diào)相比較,其實兩者在某種程度上由很多共同點。 不過 delgeate 有很多更加強大的地方。首先,delgeaet 中可以注冊任意多個回調(diào),在一 個 delgeate 被調(diào)用的時候,己經(jīng)注冊的過程將會被逐個調(diào)用。其次,delgeate 允許注冊 一個對象的方法,而不像 c+中指可以使用靜態(tài)方法或者全局方法作為函數(shù)指針,提 供了更多的靈活性,同時也暗示我們,delgeate 中按照某種方式保存了。在 c#2.0 的匿 名 delgeate 中,我們甚至可以訪問當前匿名 delge
24、ate 的上下文變量。 3 系統(tǒng)分析與總體設計 很多網(wǎng)站都提供新聞欄目,例如搜狐、新浪等著名網(wǎng)站的新聞專欄。許多企業(yè)和 個人網(wǎng)站也需要定期發(fā)布一些關于企業(yè)或網(wǎng)站的新聞。因為網(wǎng)絡中新聞發(fā)布的頻率非 常高,如果使用靜態(tài)網(wǎng)頁作為新聞頁面,則維護工作將非常繁瑣,管理員每天需要制 作大量的網(wǎng)頁,從而浪費很多時間和精力。使用新聞發(fā)布及管理系統(tǒng)可以使新聞發(fā)布 和管理變得很輕松,管理員只需設置標題、內(nèi)容和圖片等新聞就可以了,系統(tǒng)將自動 生成對應的網(wǎng)頁。本文將對新聞發(fā)布及管理系統(tǒng)進行系統(tǒng)分析與總體設計。 3.1 系統(tǒng)功能模塊劃分 從功能描述的內(nèi)容可以看到,本系統(tǒng)可以實現(xiàn) 6 個完整的功能。我們根據(jù)這些功 能,設
25、計出系統(tǒng)的功能模塊,見圖 2: 7 新聞發(fā)布系統(tǒng) 新聞類別管理 新聞管理模塊 新聞查詢模塊 評論管理模塊 系統(tǒng)用戶管理 圖 2 新聞發(fā)布系統(tǒng)功能模塊示意圖 新聞發(fā)布及管理系統(tǒng)的功能模塊之間的關系見圖 3 所示。 后臺系統(tǒng) 提供數(shù)據(jù) 新聞類別管理 前臺系統(tǒng) 數(shù)據(jù)庫 基本信息發(fā)布 新聞查詢管理 瀏覽新聞 發(fā)表網(wǎng)友評論 圖 3 新聞發(fā)布系統(tǒng)的功能模塊關系圖 本系統(tǒng)在初始化時,有一個默認的“管理員”用戶 tyh,由程序設計人員手動地添 加到數(shù)據(jù)庫中。tyh 用戶可以創(chuàng)建用戶、修改、刪除用戶信息、給用戶設置權限;權限 有兩種,一個是管理員,另一個是普通用戶,普通用戶只能修改自己的用戶信息,發(fā) 布新聞,且
26、不能登錄后臺管理系統(tǒng)。 用戶管理功能模塊的關系見圖 4 所示。 8 系統(tǒng)用戶信息管理 修改 tyh 用戶的密碼 創(chuàng)建、修改、刪除普通用戶信息 修改自身的信息,發(fā)布新聞 tyh 用戶 普通用戶 圖 4 用戶管理功能模塊的關系圖 3.2 系統(tǒng)流程分析 多用戶系統(tǒng)的工作流程都是從用戶登錄模塊開始,對用戶的身份進行認證。身份 認證可以分為以下兩個過程: (1)確認用戶是否是有效的系統(tǒng)用戶。 (2)確定用戶的類型。 第 1 個過程決定用戶能否進入系統(tǒng)。第 2 個過程根據(jù)用戶的類型決定用戶的操作 權限,從而決定用戶的工作界面。 本系統(tǒng)分為前臺系統(tǒng)和后臺系統(tǒng)兩個部分。前臺系統(tǒng)不需要進行身份認證,任何 人都可
27、以通過瀏覽器閱讀已經(jīng)發(fā)布的新聞、發(fā)表網(wǎng)友評論。 后臺管理的流程分析見圖 5 所示。tyh 用戶擁有所有的權限,普通用戶只能發(fā)布自 己的新聞,修改自己的信息。 9 用戶登錄 失敗報錯 管理所有用戶的信息 管理新聞類別,發(fā)布信息,所有新聞信息 的管理 管理自己的信息 發(fā)布新聞。 tyh 普通用戶 圖 5 新聞發(fā)布系統(tǒng)后臺管理流程分析 4 數(shù)據(jù)庫結構設計與實現(xiàn) 4.1 創(chuàng)建數(shù)據(jù)庫 首先創(chuàng)建一個數(shù)據(jù)庫 news2005,用來保存本系統(tǒng)的所有數(shù)據(jù)。創(chuàng)建數(shù)據(jù)庫的腳本 代碼如下: create database news2005 go 可以在 sql 查詢分析器中執(zhí)行該語句,創(chuàng)建數(shù)據(jù)庫。 4.2 數(shù)據(jù)庫邏輯
28、結構設計 本系統(tǒng)定義的數(shù)據(jù)庫中包含以下 4 個表:新聞類別表:bigclass、新聞基本信息表: news、評論信息表:answer 和用戶信息表:admin。下面分別介紹這些表的結構。 管理頁面首頁 10 (1)新聞類別表 bigclass 新聞類別表 bigclass 用來保存新聞類別數(shù)據(jù),結構見表 1 所示。 表 1 新聞類別表 bigclass 的結構 編號字段名稱數(shù)據(jù)結構說明 1idint新聞類別編號 2namevarchar (50)新聞類別名稱 3flagchar(10)是否顯示分類標記 4cindexint新聞系統(tǒng)新聞的總條數(shù) 5newscount int當前類別新聞數(shù)目 在設
29、計數(shù)據(jù)庫結構時,很多表都需要設計一個整型字段作為標識列,這幾乎已經(jīng) 成為慣例,例如表 bigclass 中的 id 字段。所謂標識列,就是可以惟一標識一行記錄的 列,在表中不會存在兩條標識列相同的記錄。如果其他表需要引用表 bigclass 中的數(shù) 據(jù),則在表中添加一個 id 字段就可以了。在系統(tǒng)中,id 字段對于用戶來說是透明的, 用戶感覺不到它的存在,也無法對其進行修改。 (2)基本新聞表 news 基本新聞表 news 用來保存網(wǎng)上新聞的基本信息,結構見表 2 所示。 表 2 新聞表 news 的結構 編號字段名稱數(shù)據(jù)結構 說明 1 idint 新聞編號 2 titlevarchar(5
30、0) 新聞標題 3 infotext 新聞內(nèi)容 4 bigclassidvarchar(50) 欄目 id 5usernamevarchar(50) 發(fā)布人 6 infotimedatetime 發(fā)布時間 7 hits int點擊率 8flagvarchar(50) 是否通過審核 9cindexint新聞總數(shù) 11 在 sql server 2005 中,可以使用 char、varchar 和 text 等 3 種數(shù)據(jù)類型存儲非 unicode 字符數(shù)據(jù)。char 和 varchar 只能存儲最多 8000 個字符,其中 char 用于存儲固 定長度的字符數(shù)據(jù),varchar 用于存儲可變長度
31、的字符數(shù)據(jù)。如果需要存儲的數(shù)據(jù)很大, 則可以使用 text 數(shù)據(jù)類型,text 數(shù)據(jù)類型也是可變長度的,最多可為 2147483647 個字 符。 (3)評論信息表 answer 評論信息表 answer 用來保存網(wǎng)友對新聞的評論信息,結構見表 3 所示。 表 3 評論信息表 answer 的結構 編 號 字段名稱 數(shù)據(jù)結構 說明 1a_id int評論編號 2a_qq varchar(50)評論人 qq 3a_emailvarchar(50)評論人 email 4a_word varchar(200)評論內(nèi)容 5a_timedatetime評論時間 6newsidint評論的新聞 id 7c
32、indexint評論數(shù)目 在 sql server 2005 中,可以使用 datetime 和 smalldatetime 兩種數(shù)據(jù)類型存儲日 期時間數(shù)據(jù)。datetime 數(shù)據(jù)類型用于存儲從 1753 年 1 月 1 日到 9999 年 12 月 31 日的日 期和時間數(shù)據(jù),精確到 333ms;smalldatetime 數(shù)據(jù)類型用于存儲從 1900 年 1 月 1 日 到 2079 年 6 月 6 日的日期和時間數(shù)據(jù),精確到分鐘。 (4)用戶信息表 admin 用戶信息表 admin 用來保存用戶的基本信息,結構見表 4 所示。 表 4 用戶信息表 admin 的結構 編號字段名稱 數(shù)據(jù)
33、結構 說明 1cid int用戶 id 號 。 2 username varchar(50)用戶名 3password varcahr(50)密碼 4email varchar(50)用戶郵箱 5aleavevarchar(50)用戶權限 12 4.3 創(chuàng)建表的腳本文件 本節(jié)將介紹創(chuàng)建表的腳本文件,可以在“查詢分析器”中執(zhí)行這些腳本,在數(shù)據(jù) 庫 news 中創(chuàng)建表。 (1)創(chuàng)建表 bigclass 創(chuàng)建表 bigclass 的腳本文件為 bigclass.sql,它的代碼如下: use news2005 go create table bigclass ( id int identity pr
34、imary key, name varchar(50) cindex int , newscount int , ) go 在使用 create table 指令創(chuàng)建表時,應該注意使用 primary key 關鍵字定 義表的主鍵。表中每一行的主鍵都有惟一值,可以使用主鍵惟一地標識一行數(shù)據(jù)。 (2)創(chuàng)建表 news 創(chuàng)建表 news 的腳本文件為 news.sql,它的代碼如下: use news2005 go create table news ( id int identity primary key, title varchar(50) , info text, bigclassid v
35、archar(50), username varchar(50), infotime datetime, hits int , 13 flag int default 0 cindex int ) go 在使用 create table 指令創(chuàng)建表時,應該注意使用 not null 關鍵字定義表 的未空字段。使用 not null 定義的字段將不允許為空,這樣就可以避免表中出現(xiàn)無 效的數(shù)據(jù),影響系統(tǒng)運行。 在使用 create table 指令創(chuàng)建表時,使用 default 關鍵字可以字義字段的 默認值,例如表 news 中,flag 字段的默認值為 0。 (3)創(chuàng)建表 answer 創(chuàng)建表
36、answer 的腳本文件為 answer.sql,它的代碼如下: use news2005 go create table answer ( a_id int identity primary key, a_user varchar(50), a_qq varchar(50), a_emailvarchar(50), a_wordvarchar(200), a_time datetime, newsid int, cindex int, ) go 在使用 create table 指令創(chuàng)建表時,通??梢允褂?identity 關鍵字與 primary key 關鍵字相結合,創(chuàng)建標識字段。每次增
37、加新記錄時,標識字段自動遞增。程序員在 編寫程序的過程申,無需考慮標識字段的值。 (4)創(chuàng)建表 admin 創(chuàng)建表 admin 的腳本文件為 admin.sql,它的代碼如下: 14 use news2005 go create table admin ( cid int primary key identity, username varchar(50) not null, password varchar(50) not null, email varchar(50), aleave varchar(50) not null ) go insert into admin (username
38、, password, email) values(admin, admin, , ) go 在創(chuàng)建表 admin 的同時,將默認的用戶 tyh 插入到表中,默認的密碼為“11”。 在執(zhí)行這些腳本之前,請確定數(shù)據(jù)庫 news2005 已經(jīng)存在,否則會產(chǎn)生錯誤。如果要創(chuàng) 建的表已經(jīng)存在,則需要先將表刪除。 5 數(shù)據(jù)訪問類的實現(xiàn)、母版及用戶控件 5.1 數(shù)據(jù)訪問類的實現(xiàn) asp.net 為訪問數(shù)據(jù)庫提供了豐富的類庫,如 system.data,這些類庫在系統(tǒng)開發(fā) 中被頻繁地使用。本系統(tǒng)選用的是 sql server 2005 數(shù)據(jù)庫,所有的數(shù)據(jù)都保存在數(shù)據(jù) 庫表中。對 sql 數(shù)據(jù)庫的訪問可以使用
39、一個封裝的 sql 數(shù)據(jù)庫訪問類,這樣可以提高 程序的可讀性,提高效率。 下面定義一個名字空間通用類庫 databaase,在其中封裝了對 sql 數(shù)據(jù)庫的訪問 方法。 using system; using system.data; using system.data.sqlclient; 15 using system.configuration; using system.web; / dbbase 的摘要說明 public class dbbase public dbbase() / todo: 在此處添加構造函數(shù)邏輯 #region 定義連接字符串strcon / 定義連接字符串st
40、rcon public static string strcon = data source =(local);database = news2005;integrated security=true; /public static string strcon = system.configuration.configurationsettings.appsettingsconstr.tostring(); #endregion #region 實例化連接對象con / 實例化連接對象con sqlconnection con = new sqlconnection(strcon); #end
41、region #region 檢測連接是否打開 / 檢測連接的方法checkconnection(),若連接是關閉的則打開 sqlconnection連接 public void checkconnection() if (this.con.state = connectionstate.closed) this.con.open(); 16 #endregion #region 執(zhí)行語句返回dataset數(shù)據(jù)集 / / 執(zhí)行語句返回dataset數(shù)據(jù)集 / / 要執(zhí)行的sql語句 / dataset集合 public dataset returndataset(string strsql)
42、checkconnection(); try sqldataadapter sda = new sqldataadapter(strsql, con); dataset ds = new dataset(); sda.fill(ds); return ds; catch (exception ex) throw new exception(ex.message); finally con.close(); #endregion #region 執(zhí)行語句返回datarow / / 執(zhí)行語句返回datarow 17 / / 要執(zhí)行的sql語句 / 返回datarow對象 public dataro
43、w getdatarow(string strsql) checkconnection(); try sqldataadapter sda = new sqldataadapter(strsql, con); dataset ds = new dataset(); sda.fill(ds); return ds.tables0.rows0; catch (exception ex) throw new exception(ex.message); finally con.close(); #endregion #region 執(zhí)行sql語句或存儲過程的方法executenonquery() /
44、 執(zhí)行存儲過程或sql語句的方法executenonquery(),執(zhí)行成功返回true, 否則返回false / 為true是執(zhí)行存儲過程,false執(zhí)行sql語句 / 要執(zhí)行的sql語句 / 執(zhí)行成功返回true,否則返回false public bool executenonquery(bool ispro, string strsql) 18 checkconnection(); try sqlcommand com = new sqlcommand(strsql, con); if (ispro) com.commandtype = commandtype.storedprocedu
45、re; else com.commandtype = commandtype.text; com.commandtext = strsql; com.executenonquery(); con.close(); return true; catch return false; #endregion #region 執(zhí)行sql語句的方法executenonquery() / 執(zhí)行sql語句的方法executenonquery() / 要執(zhí)行的sql語句 public void executenonquery(string strsql) checkconnection(); 19 try sq
46、lcommand com = new sqlcommand(strsql, con); com.executenonquery(); catch (exception ex) throw new exception(ex.message); finally con.close(); #endregion #region 執(zhí)行語句返回datatable的方法 / 執(zhí)行語句返回datatable的方法 / 要執(zhí)行的sql語句 / 返回datatable對象 public datatable returntable(string strsql) checkconnection(); try sqld
47、ataadapter sda = new sqldataadapter(strsql, con); dataset ds = new dataset(); sda.fill(ds); return ds.tables0; catch (exception ex) 20 throw new exception(ex.message); finally con.close(); #endregion #region 執(zhí)行語句返回sqldatareader對象 / 執(zhí)行語句返回sqldatareader對象 / 待執(zhí)行的語句 / sqldatareader對象 public sqldatareade
48、r returndatareader(string strsql) checkconnection(); try sqlcommand com = new sqlcommand(strsql, con); sqldatareader myreader = com.executereader(); return myreader; catch (exception ex) throw new exception(ex.message); finally 21 #endregion #region 執(zhí)行語句,返回該語句查詢出的數(shù)據(jù)行的總數(shù) / 執(zhí)行語句,返回該語句查詢出的數(shù)據(jù)行的總數(shù) / 要執(zhí)行的
49、sql語句 / 整型值數(shù)據(jù)總行數(shù) public int returnrowcount(string strsql) checkconnection(); try sqldataadapter da = new sqldataadapter(strsql, con); dataset ds = new dataset(); da.fill(ds); return ds.tables0.rows.count; catch return 0; #endregion 這里只是一個通用數(shù)據(jù)類庫的設計實現(xiàn),對于數(shù)據(jù)庫中其他表的操作,由于頁面 有限,就不一一說明,要實現(xiàn)其他數(shù)據(jù)庫的操作,只要也定義相應的類及
50、屬性,再調(diào) 用通用數(shù)據(jù)庫中的方法既可實現(xiàn)。 5.2 母版 我們在網(wǎng)上瀏覽網(wǎng)頁的時候,一個網(wǎng)站的很多內(nèi)容往往是不變的,比如導航條、 用戶注冊等,本系統(tǒng)同用也包含一些不變的模塊,實現(xiàn)這些模塊,我主要用到了母版 和用戶控件。 22 母版頁可以為應用程序中的頁創(chuàng)建一致的布局。單個母版頁可以為應用程序中的 所有頁(或一組頁)定義所需的外觀和標準行為。然后可以創(chuàng)建包含要顯示的內(nèi)容的 各個內(nèi)容頁。當用戶請求內(nèi)容頁時,這些內(nèi)容頁與母版頁合并以將母版頁的布局與內(nèi) 容頁的內(nèi)容組合在一起輸出。 5.3 用戶控件 用戶控件是一種復合控件,工作原理非常類似于 asp.net 網(wǎng)頁,可以向用戶控 件添加現(xiàn)有的 web 服
51、務器控件和標記,并定義控件的屬性和方法。然后可以將控件 嵌入 asp.net 網(wǎng)頁中充當一個單元。 6 系統(tǒng)主界面與登錄程序設計 6.1 設計主界面 主界面為 default.aspx,它套用母版頁后,主要功能是顯示最新的 8 條新聞、新聞 類別及每個類別中的 4 條新聞。錄入新聞類別和新聞內(nèi)容后,default.aspx 的界面見圖 6 所示。 圖 6 新聞主頁 default.aspx 的界面 23 (1).顯示新聞類別鏈接 default.aspx 將新聞按照分類顯示,每個新聞類別只顯示最新的 4 條新聞。如果新 聞類別較多,則網(wǎng)頁會被拉長,給用戶閱讀帶來不便。為了解決這個問題,使用標簽
52、 來定義新聞類別的位置,標簽格式為下面 的代碼將在網(wǎng)頁中生成所有新聞類別的鏈接,每個鏈接都指相應新聞類別的標簽。這 樣,用戶就可以通過單擊鏈接直達新聞類別了。 dataset sortds = b_bc.getbigclass(); string content = ; for (int i = 0; i sortds.tables0.defaultview.count; i+) content = content + ; content = content + + sortds.tables0.rowsi1.tostring() + ; sort.text = content; (2) “新
53、聞管理”鏈接 系統(tǒng)管理員 tyh 可以通過“進入管理”鏈接進入新聞管理頁面 admin_login.aspx 相應代碼為 進入管理 (3)顯示各新聞類別中的 4 條新聞 default.aspx 的主要內(nèi)容是顯示新聞類別中的最新 8 條新聞及各新聞類別下的 4 條新 聞,在這里用到了 repeater 服務器控件,repeater 服務器控件是一個數(shù)據(jù)綁定容器控 件,用于生成各個項的列表。 6.2 登錄程序設計 在對系統(tǒng)進行管理之前,需要通過系統(tǒng)的身份認證。本系統(tǒng)中使用 admin_login.aspx 進行身份驗證。對于需要登陸才能察看的網(wǎng)頁可以在網(wǎng)頁的 cs 代碼 中加上如下代碼: if
54、(sessionadmin = null) response.redirect(admin_login.aspx); 24 這樣用戶沒有登錄將看到如下界面,見圖 7: 圖 7 管理員用戶登錄界面 在這里只有管理員用戶才能登錄后臺管理頁面,非管理員用戶可直接在前臺頁面 登錄。 7 后臺管理主界面 管理界面的功能是對新聞類別和新聞提供管理界面,只有有權限的用戶才能進入 管理界面。本節(jié)將介紹管理界面 admin_index.aspx 的實現(xiàn)方法。錄入新聞類別和新聞 內(nèi)容后,admin_index.aspx 的界面見圖 8 所示。 圖 8 后臺管理主界面 admin_index.aspx 25 adm
55、in_index.aspx 頁面運用了 html 語言中的框架,在這個頁面中其實包含了四個 頁面,分別為 admin_top.aspx、admin_left.aspx、admin_bottom.aspx、及后臺管理的初 始頁面 default.aspx ,admin_top.aspx 和 admin_bottom.aspx 主要是實現(xiàn)的是對頁面頂 端和底部的 設置,admin_left.aspx 實現(xiàn)的是后臺管理系統(tǒng)菜單。 實現(xiàn)其框架主要的代碼為: 8 新聞管理模塊設計 新聞類別管理模塊可以實現(xiàn)以下功能: (1)管理現(xiàn)有新聞 (2)添加新的新聞內(nèi)容; (3)審核最新新聞 (4)新聞評論管理.
56、8.1 管理現(xiàn)有新聞 打開管理現(xiàn)有新聞界面,見圖 9 所示。 26 圖 9 管理現(xiàn)有新聞界面 主要運用到了gridview這個服務器控件,gridview 控件可公開分頁事件和排序事 件,以及在創(chuàng)建當前行或將當前行綁定至數(shù)據(jù)時發(fā)生的事件。其相應的html代碼為: 8.1.1 修改新聞 點擊相應新聞的修改按鈕,出現(xiàn)如下的修改界面,見圖 10: 27 圖10 修改新聞界面 對于新聞內(nèi)容的編輯,這里我主要是用到了一個外部的編輯器freetextbox,將它 引用到工具箱,可以作為服務器控件使用。相關代碼如下: 8.1.2刪除新聞 刪除功能很簡單,點擊刪除按鈕,直接刪除新聞,而且會將新聞從數(shù)據(jù)庫中刪除
57、。 8.2添加新聞 添加新聞界面與修改新聞界面很相似,不同的是修改新聞時會將已有新聞的標題, 類別,內(nèi)容獲取到,在此基礎上修改,而添加新聞則全是空白的,需自己手動添加。 8.3 審核最新新聞 28 新聞添加到數(shù)據(jù)庫以后,并不是立即在前臺界面顯示,而是要經(jīng)過具有管理員權 限的用戶審核后才能在前臺顯示。審核界面如下,見圖11: 圖11 審核最新新聞界面 點擊審核按鈕,既可對新聞審核。 8.4 新聞評論管理 評論管理可以進行如下一些操作:按新聞編號查詢相應評論、刪除選中的評論、 刪除單條新聞的全部評論,界面如下,見圖 12: 圖 12 新聞評論管理頁面 對于新聞評論的綁定,主要運用的也是 gridv
58、iew 控件,相應代碼為: 29 asp:templatefield headertext=評論編號 asp:label id=label5 runat=server text= asp:label id=label2 runat=server text= asp:label id=label1 runat=server text= asp:label id=label3 runat=server text= asp:label id=label4 runat=server text= 9 類別管理模塊設計 9.1 設計新聞類別管理頁面 類別管理模塊主要對新聞類別進行管理,主要功能有:修改已有
59、類別屬性、修改 30 已有的新聞類別、刪除類別、添加新的新聞類別。界面如下,見圖 13: 圖 13 管理新聞類別界面 10 用戶管理模塊設計 10.1 管理系統(tǒng)用戶 用戶管理模塊只有擁有管理員權限的用戶才能進入,進入后可進行如下操作:修 改用戶信息、刪除用戶、添加新的用戶、用戶權限分配。 界面如下,見圖 14: 31 圖 14 系統(tǒng)用戶管理界面 11 系統(tǒng)運行 本系統(tǒng)可在 windows 9x/xp/server 2000/2003 下運行,在非服務器下運行,需要裝 相應的服務器,在這里由于我的電腦裝的 xp 的系統(tǒng),所以我裝的服務器是 iis. 11.1 安裝 iis 服務器程序 步驟:放入
60、光盤,點擊控制面板-添加或刪除程序-添加或刪除 windows 組件, , 選擇 internet 信息服務單擊下一步,見圖 15。 32 圖 15 添加或刪除 windows 組件界面 安裝好 iis 后,進入控制面板下的管理工具找到 internet 信息服務雙擊即可打 開。然后建立虛擬目錄,把系統(tǒng)的首頁的目錄寫上去,然后取一個別名,再在默認文 檔中,寫上主頁的文件名就可以了,以后在 ie 瀏覽器中只要打 就會顯示自 己的主頁。 33 結論 經(jīng)過老師耐心細致的指導,同時翻閱了大量的資料(包括網(wǎng)上資料,書本及學校的 一些相關資料)經(jīng)過近三個月的努力,系統(tǒng)的設計制作告一段落
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報書審查意見
- 研究課題申報書要素
- 氣象軟課題項目申報書
- 綜合實踐課題申報書
- 原礦石采購合同范本
- 保潔公司跨省經(jīng)營合同范本
- 分店入股門店合同范例
- 教學成果培育課題申報書
- 醫(yī)院承包協(xié)議合同范本
- 《工業(yè)控制網(wǎng)絡及組態(tài)技術》教案
- 多重耐藥菌相關知識
- 2021年云南省中考地理試卷(附答案詳解)
- 物業(yè)管理工作流程圖全套2
- 防蠅防鼠防蟲害情況記錄表
- 廣東省五年一貫制語文試卷
- 世界主要河流與湖泊(超好)
- 護理查房-股骨頸骨折護理查房
- 教程教科書i2analysts notebook8培訓中文版
- 新教科版六年級科學下冊教學計劃
- 農(nóng)田灌溉水利工程項目可行性研究報告
評論
0/150
提交評論