畢業(yè)設(shè)計(jì)(論文)新聞自動(dòng)提取系統(tǒng)_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)新聞自動(dòng)提取系統(tǒng)_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)新聞自動(dòng)提取系統(tǒng)_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)新聞自動(dòng)提取系統(tǒng)_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)新聞自動(dòng)提取系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、摘 要 新聞自動(dòng)提取系統(tǒng)是伴隨 internet 的發(fā)展而出現(xiàn)的,它實(shí)現(xiàn)了既讓用戶享受 到 internet 的新聞服務(wù),又提高了企業(yè)或公司的網(wǎng)絡(luò)安全性和資源利用效率的雙 重功能。 系統(tǒng)用 delphi 自動(dòng)地從 internet 上將網(wǎng)上新聞?dòng)枚?jí)文本分析技術(shù)提取出來(lái) 并存儲(chǔ)進(jìn)數(shù)據(jù)庫(kù),然后再用 asp.net 通過(guò)訪問(wèn) sql server 數(shù)據(jù)庫(kù)將新聞發(fā)布,供 局域網(wǎng)內(nèi)的用戶瀏覽和查詢。 系統(tǒng)具有自動(dòng)性、經(jīng)濟(jì)安全、易改變性和開發(fā)工具新的特點(diǎn)。新聞的提取、 數(shù)據(jù)庫(kù)更新及網(wǎng)頁(yè)內(nèi)容的更新全部是自動(dòng)實(shí)現(xiàn)的,不需要人工干預(yù),這就大大節(jié) 省了人力資源;系統(tǒng)只有一臺(tái)主機(jī)與 internet 相連,提高了

2、安全性,也節(jié)約了費(fèi) 用;系統(tǒng)采用模塊式編程方法,當(dāng)某部分改動(dòng)時(shí)只需改寫少量代碼就能保證系統(tǒng) 重新正確運(yùn)行;系統(tǒng)用下一代 windows 系統(tǒng)工具 asp.net 開發(fā),所以有很強(qiáng)的沿 用性。 關(guān)鍵詞:新聞提?。籲gws;internet;n 級(jí)網(wǎng)頁(yè) abstract the automatic news extract system is born with the development of internet. it implements two functions at the same time, one is to let users share internet news serv

3、ice, the other is to improve the enterprise or companys network security and resource efficiency. the system uses two-level text analysis to extract news from internet then store them to database automatically, after that use asp.net as developing tools to access the database and distribute the news

4、 to local area network for users to explore and query information that they need. the features of news extract system are automatism, security and price, flexibility, new developing tool. the main feature of the system is news extract, database access and web refresh are automatic implemented, its n

5、o need to intervene by man, so much more labor is saved;in the whole system there is only one mainframe is connected to internet, the security is improved, the expense is less as well;the system takes module programming coded method, when some part needs to be changed, rewrite several lines of code

6、can make the system function correctly as before;the last part of the system is developed by asp.net , which is called ngws(next generation windows system),so it can be used for a long time. keyword: news extract;next generation windows system; internet;n-level web 目 錄 第 1 章 新聞自動(dòng)提取系統(tǒng)概述.1 1.1 系統(tǒng)功能和組成

7、.1 1.2 系統(tǒng)的特點(diǎn)及技術(shù)創(chuàng)新.2 第 2 章 開發(fā)工具介紹.3 2.1 delphi6.0 簡(jiǎn)介 .3 2.2 sql server 簡(jiǎn)介.5 2.3 新一代網(wǎng)頁(yè)開發(fā)工具asp.net .8 第 3 章 需求分析.12 3.1 構(gòu)建新聞自動(dòng)提取系統(tǒng)的必要性和功能.12 3.2 新聞自動(dòng)提取的可行性.12 第 4 章 系統(tǒng)總體設(shè)計(jì).14 第 5 章 詳細(xì)設(shè)計(jì).17 5.1 技術(shù)難點(diǎn)與解決方案.17 5.2 delphi 新聞提取 .18 5.3 delphi 數(shù)據(jù)庫(kù)訪問(wèn)部分 .25 第 6 章 系統(tǒng)測(cè)試.29 結(jié)束語(yǔ).30 參考文獻(xiàn).31 致 謝.32 第 1 章 新聞自動(dòng)提取系統(tǒng)概述 1

8、.1 系統(tǒng)功能和組成 1.1.1 系統(tǒng)簡(jiǎn)介 新聞自動(dòng)提取是指一臺(tái)計(jì)算機(jī)作為主機(jī)將 internet 上的新聞自動(dòng)提取到本機(jī), 然后以網(wǎng)頁(yè)的形式發(fā)布出去,供局域網(wǎng)內(nèi)的其它用戶訪問(wèn)瀏覽。而新聞自動(dòng)提取 系統(tǒng)就是運(yùn)行在主機(jī)上完成上述功能的一套軟件。 1.1.2 系統(tǒng)功能 (1) 本系統(tǒng)可提供多個(gè)網(wǎng)站的新聞,用戶能選擇自己喜愛的網(wǎng)站; (2) 系統(tǒng)已將新聞分成教育、體育、財(cái)經(jīng)、娛樂(lè)等多類,用戶可依興趣選擇 類別,系統(tǒng)還提供了簡(jiǎn)單的模糊查詢的功能; (3) 本系統(tǒng)的新聞隨著 internet 上網(wǎng)站的更新而變化,也可將新聞存儲(chǔ)起來(lái), 形成一個(gè)可查詢的信息庫(kù); (4) 本系統(tǒng)可擴(kuò)展為圖片、mp3、mtv

9、等自動(dòng)提取系統(tǒng)。 1.1.3 系統(tǒng)組成 系統(tǒng)前端開發(fā)工具為 delphi 和 asp.net,后臺(tái)數(shù)據(jù)庫(kù)為 sql server,因此,系 統(tǒng)也由三大部分組成:sql server 部分,delphi 部分,asp.net 部分。 (1) sql server 部分 這部分要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)、數(shù)據(jù)表、表結(jié)構(gòu)及對(duì)數(shù)據(jù)庫(kù)的安全性和數(shù)據(jù)進(jìn)行管理, 也包括建立用戶登錄、數(shù)據(jù)冗余等控制。 (2) delphi 部分 這部分用 delphi 定時(shí)訪問(wèn) internet 的各大網(wǎng)站,將其上的新聞提取出來(lái),并 依靠 delphi 的數(shù)據(jù)庫(kù)訪問(wèn)機(jī)制按新聞?lì)悇e存入相應(yīng)的數(shù)據(jù)表,這部分還有對(duì)數(shù)據(jù) 庫(kù)進(jìn)行清空、查看等功能。

10、 (3) asp.net 部分 這部分主要將數(shù)據(jù)庫(kù)中的新聞發(fā)布出來(lái),并實(shí)現(xiàn)按關(guān)鍵字對(duì)新聞內(nèi)容的簡(jiǎn)單 查詢,實(shí)際還實(shí)現(xiàn)了添加、刪除、排序等功能。 1.2 系統(tǒng)的特點(diǎn)及技術(shù)創(chuàng)新 1.2.1 系統(tǒng)特點(diǎn) (1) 整個(gè)系統(tǒng)完全是自動(dòng)執(zhí)行的,包括新聞提取、數(shù)據(jù)庫(kù)更新、網(wǎng)頁(yè)內(nèi)容的 更新,這就使網(wǎng)絡(luò)管理員從繁重的人工下載中解脫出來(lái); (2) 系統(tǒng)具有良好的擴(kuò)展性,它可擴(kuò)展為圖片、mp3、mtv 等許多自動(dòng)提取 系統(tǒng); (3) 在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)和數(shù)據(jù)插入時(shí)考慮到了數(shù)據(jù)冗余的控制。 (4) 由于系統(tǒng)用到的主要編程工具是 delphi 和 asp.net,所以系統(tǒng)有很好的 網(wǎng)絡(luò)性能。 1.2.2 系統(tǒng)創(chuàng)新 (1) 整

11、個(gè)新聞提取過(guò)程完全靠程序?qū)崿F(xiàn),而且?guī)熘械膬?nèi)容隨各大網(wǎng)站新聞內(nèi) 容的變化而自動(dòng)刷新,刷新的間隔在最初設(shè)定,不需要人工干預(yù),這是系統(tǒng)最突 出的特點(diǎn); (2) 在用 delphi 提取新聞內(nèi)容時(shí),從理論上不但可以提取出各大類主頁(yè)中所 有二級(jí)新聞的內(nèi)容,而且經(jīng)改進(jìn)后可獲取多級(jí)新聞內(nèi)容,這是在理論上的重大突 破; (3) 提取經(jīng)濟(jì)、娛樂(lè)、體育等類新聞的標(biāo)題可直接從二級(jí)頁(yè)的網(wǎng)頁(yè)標(biāo)題提取, 大大化簡(jiǎn)了對(duì)標(biāo)題的提取,也更直觀; (4) 系統(tǒng)對(duì)每類新聞都有一個(gè)備份表用于存儲(chǔ)所有提取過(guò)的新聞,這樣用戶 不但可以選擇看最近的新聞,也可看歷史上的新聞; (5) 系統(tǒng)提供了讓用戶根據(jù)自己的興趣按關(guān)鍵字選擇想要的新聞,即

12、模糊搜 索功能。 第 2 章 開發(fā)工具介紹 2.1 delphi6.0 簡(jiǎn)介 2.1.1 delphi 的基本功能簡(jiǎn)介 delphi 是當(dāng)前最強(qiáng)大,最靈活的基于 windows 的可視化應(yīng)用程序開發(fā)工具。 它將可視化技術(shù)與 object pascal 語(yǔ)言完美結(jié)合,具有良好的數(shù)據(jù)庫(kù)訪問(wèn)能力,是 一個(gè)非常強(qiáng)大的應(yīng)用程序開發(fā)組件的集合,被喻為“第四代編程語(yǔ)言” 。delphi 6.0 是 borland 公司繼 delphi 5.0 后的又一力作。 delphi 的功能十分強(qiáng)大,這里只分類介紹如下: (1) 靈活的 vcl(visual component libarary)組件1 vcl 是 d

13、elphi 最重要的組成部分。在設(shè)計(jì)時(shí)添/刪除組件、自定義組件、使 用面向?qū)ο蠹夹g(shù)繼承其它組件的行為,這些能力都是決定 delphi 效率的關(guān)鍵因素。 在許多場(chǎng)合,編寫 vcl 組件都采用固定的面向?qū)ο蟮某绦蛟O(shè)計(jì)方法。 (2) 強(qiáng)大的數(shù)據(jù)庫(kù)功能 delphi 具有所有工具中最靈活的數(shù)據(jù)庫(kù)結(jié)構(gòu),對(duì)大多數(shù)基于數(shù)據(jù)庫(kù)平臺(tái)的應(yīng) 用程序來(lái)說(shuō),bde(borland database engineer)的功能已足夠強(qiáng)大,程序設(shè)計(jì)人員 無(wú)需直接同數(shù)據(jù)庫(kù)文件打交道,就可以操作和處理各個(gè)數(shù)據(jù)庫(kù)文件。 (3) 完善的網(wǎng)絡(luò)編程功能 作為一種流行的編程語(yǔ)言,優(yōu)良的網(wǎng)絡(luò)性能是十分重要的。delphi 提供了很 多與網(wǎng)絡(luò)

14、的接口,使用起來(lái)非常方便,而且 delphi 程序可在 windows 和 unix 操 作系統(tǒng)下運(yùn)行,無(wú)需改變代碼,所以說(shuō) delphi 有強(qiáng)大的網(wǎng)絡(luò)功能是當(dāng)之無(wú)愧的。 2.1.2 delphi 6.0 的新特性2 (1) delphi 6.0 通過(guò)完全基于 soap 的網(wǎng)絡(luò)服務(wù)和 xml 數(shù)據(jù)交換支持,從根 本上簡(jiǎn)化了在互聯(lián)網(wǎng)上構(gòu)筑下一代電子商務(wù)的程序。xml 及網(wǎng)絡(luò)服務(wù)技術(shù)和 delphi 6.0 的無(wú)縫融合為工業(yè)標(biāo)準(zhǔn)化的網(wǎng)絡(luò)服務(wù)和互聯(lián)網(wǎng)上 b2b、b2c 和 p2p 的 集成帶來(lái)了唯一的快速開發(fā)工具。 (2) websnap 使得 delphi 能夠直接融入當(dāng)今的網(wǎng)站開發(fā)團(tuán)隊(duì)。通過(guò) w

15、ebsnap, delphi 程序能夠無(wú)縫地集成到網(wǎng)站和使用現(xiàn)今流行的 html 開發(fā)環(huán)境(如 dreamweaver、frontpage、vbscript 和 javascript)的網(wǎng)站開發(fā)團(tuán)隊(duì)中。 (3) 編寫單一源代碼的 windows/linux 程序。delphi 6.0 和 kylix 兼容,使用 交叉平臺(tái)的 clx 控件庫(kù)和可視化設(shè)計(jì)器編寫的高性能、可移動(dòng)式的 windows 程 序能在 linux 上用 borland kylix 輕松編譯。 (4) 支持最新的 windows 2000/me 和 office 2000 圖形用戶接口。通過(guò) actionbands、actio

16、nmanagers 和 shell controls 可以輕松制作最流行的、符合微軟 ui 最新趨勢(shì)的動(dòng)態(tài)用戶界面。通過(guò)讓最終用戶完全自定義他們自己的 ui 使用來(lái) 排除復(fù)雜的用戶界面。 2.1.3 delphi 的 ide 環(huán)境 當(dāng)我們打開 delphi 6.0 的時(shí)候,首先進(jìn)入的就是它的集成開發(fā)環(huán)境 (integrated development environment,ide),我們編寫、運(yùn)行和調(diào)試程序就是 在這個(gè)環(huán)境中完成的。 在 delphi 6.0 中,集成開發(fā)環(huán)境由碟碼編輯器、調(diào)試器、工具欄、圖像編輯 器和數(shù)據(jù)庫(kù)工具組成,所有這些以集成的方式進(jìn)行操作。 (1) 主菜單 主菜單是位

17、于屏幕最頂端的主控窗口的菜單欄,通過(guò)它幾乎可以訪問(wèn)所有的 delphi 的提供工具。 (2) 工具條 工具條提供了一組快捷的按鈕來(lái)讓用戶能迅速訪問(wèn)到 delphi 6.0 中常用功能。 (3) 控件模板 位于主控窗口工具條右邊的就是控件模板,通常我們也將它們稱為 delphi 的 組件。delphi 6.0 將很多功能相近的控件放在同一個(gè)控件組中。按一般情況來(lái)說(shuō), 只需要雙擊一個(gè)控件就可以把它放到應(yīng)用程序的窗體中去。使用 delphi 進(jìn)行編程 大部分情況就是使用各種控件,只要掌握了基本控件的使用方法,你就可以很方 便地編制出一般的應(yīng)用程序了。 (4) 窗體設(shè)計(jì)器 當(dāng)你第一次運(yùn)行 delphi

18、 6.0 的時(shí)候,在整個(gè)界面的中間可以看到一個(gè)標(biāo)題用 程序的外觀進(jìn)行設(shè)置,它是整個(gè) delphi 應(yīng)用程序設(shè)計(jì)的基礎(chǔ)。在 delphi 6.0 的窗 體設(shè)計(jì)器是所見即所得的,你可以在窗體上任意放置自己所需要的可視或者是不 可視控件。 (5) 代碼編輯器 位于窗體設(shè)計(jì)器的下方的那一塊編輯區(qū)域稱為代碼編輯器。在 delphi 6.0 中, 代碼編輯器由兩部分組成,左側(cè)是一個(gè)代碼分析器,它可以讓你很方便地找到應(yīng) 用程序中的類、各種定義的方法和變量等。右側(cè)則是用戶輸入代碼的地方,我們 從代碼編輯器窗體上的標(biāo)簽可以看到,現(xiàn)在打開的文件是 unit1pas 文件,每一 個(gè)編輯的文件都可以打開在一個(gè)標(biāo)簽頁(yè)中

19、,你可以通過(guò)點(diǎn)擊標(biāo)簽的方法方便地在 工程的各個(gè)文件之間進(jìn)行切換。 代碼編輯器是程序員編程的一個(gè)環(huán)境,幾乎所有的代碼都在這個(gè)地方進(jìn)行輸 入、運(yùn)行和調(diào)試。delphi 6.0 提供的代碼編輯器除了具有一般文字編輯器的功能 外,還有很多體貼的設(shè)計(jì)。例如當(dāng)你在輸入代碼時(shí),delphi 會(huì)自動(dòng)分析你的代碼, 以各種不同的顏色和狀態(tài)來(lái)區(qū)別不同的代碼、函數(shù)和關(guān)鍵字。例如,在默認(rèn)的設(shè) 置中,關(guān)鍵字是黑體的,數(shù)字是藍(lán)色的,而注釋的段落則是斜體的,這樣能方便 程序員整理和組織自己的代碼。 另外值得一提的是,在 delphi 中,代碼編輯器有一種很神奇的功能,稱為 code insight,當(dāng)輸入 delphi 所

20、能識(shí)別的對(duì)象名稱并打上一個(gè)“”的時(shí)候, delphi 會(huì)自動(dòng)分析這個(gè)對(duì)象所具有的屬性和方法,把它直接放在“”后面的下 拉列表中去,這樣你可以直接在下拉列表框中選擇所需要的東西就行了。同時(shí), 當(dāng)你在寫程序需要調(diào)用一個(gè)過(guò)程或方法的時(shí)候,只要輸入了該方法的名稱,然后 加一個(gè)“(”,delphi 就可以智能地將所需要的參數(shù)依次列出;在應(yīng)用程序調(diào)試 的時(shí)候,如果將光標(biāo)放在某個(gè)變量或表達(dá)式上停留一段時(shí)間,delphi 就會(huì)自動(dòng)列 出表達(dá)式的值。 (6) 對(duì)象觀察器 在 delphi 6.0 整個(gè)界面的最右邊,有一個(gè)稱為“object inspector”的窗體,它 就是對(duì)象觀察器了。 一個(gè)對(duì)象觀察器由兩個(gè)

21、標(biāo)簽頁(yè)組成:properties(屬性)和 event(事件), 當(dāng)我們?cè)诖绑w設(shè)計(jì)器中選中一個(gè)控件,它所對(duì)應(yīng)的屬性和事件就會(huì)列在這個(gè)對(duì)象 觀察器中。 以上介紹了 delphi 的 ide 編程環(huán)境,如果要了解其性能,還需動(dòng)手實(shí)際編寫 程序。 2.2 sql server 簡(jiǎn)介 2.2.1 sql server 的文件系統(tǒng)和特點(diǎn) microsoft 公司的 sql server 是一個(gè)完全的數(shù)據(jù)庫(kù)管理系統(tǒng)。sql server 是 一種使用傳統(tǒng)的 transact-sql 語(yǔ)言,基于客戶機(jī)服務(wù)器,并且在兩者間傳送請(qǐng) 求和答復(fù)的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。sql server 使用客戶機(jī)服務(wù)器體系結(jié)構(gòu)將

22、 所有的工作分解為客戶機(jī)任務(wù)和服務(wù)器任務(wù),由兩者分別完成。 在 sql server 2000 中,數(shù)據(jù)庫(kù)文件可以分為三種類型:主文件、輔助文件、日 志文件,擴(kuò)展名分別為:.mdf,.ndf,.ldf。每個(gè)數(shù)據(jù)庫(kù)中都有一個(gè)主文件,主文 件是一個(gè)數(shù)據(jù)庫(kù)的起點(diǎn)。輔助文件的個(gè)數(shù)沒有限制,可以有一個(gè)或者多個(gè)輔助文 件,也可以沒有輔助文件。這主要是看數(shù)據(jù)庫(kù)本身的大小和復(fù)雜情況。 數(shù)據(jù)庫(kù)的事務(wù)日志文件記錄了數(shù)據(jù)庫(kù)中所進(jìn)行的一切改變。它在恢復(fù)數(shù)據(jù)庫(kù) 時(shí)非常重要,它保存了所有當(dāng)系統(tǒng)出錯(cuò)時(shí)恢復(fù)數(shù)據(jù)庫(kù)時(shí)所需要的信息。缺省情況 下,事務(wù)日志記錄的尺寸為數(shù)據(jù)文件的 1/4,每一個(gè)數(shù)據(jù)庫(kù)必須有一個(gè)日志,而 且,事務(wù)日志

23、必須與數(shù)據(jù)存在不同的文件中。 在 sql server2000 中,使用文件組來(lái)管理具有相似特征的一組文件。一個(gè)主 文件或者輔助文件只能屬于一個(gè)文件組,日志文件是獨(dú)立的,不屬于任何文件組。 而一個(gè)文件組也只屬于一個(gè)數(shù)據(jù)庫(kù)。 在 sql server 2000 中,對(duì)數(shù)據(jù)庫(kù)的一切操作,都可以通過(guò)兩種方式進(jìn)行: 一種是通過(guò)圖形化的工具:enterprise manager,另一種是通過(guò)使用 transact-sql 語(yǔ) 言,直接進(jìn)行對(duì)數(shù)據(jù)庫(kù)的操作。前一種方式,比較直觀,操作簡(jiǎn)單。后一種方式, 比較復(fù)雜,需要對(duì) transact-sql 語(yǔ)言語(yǔ)法特別熟悉。 。 sql server2000 是 mi

24、crosoft 公司于 2000 年 8 月推出的最新數(shù)據(jù)庫(kù)引擎,商 務(wù)數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)庫(kù)解決方案,它具有以下幾個(gè)特點(diǎn): (1) 熟悉的界面 作為大型電子 sql server 2000 與 sql server 7.0 就界面而言并沒有太大差別, 相信許多曾經(jīng)使用過(guò) sql server7.0 的讀者見到 2000 時(shí)會(huì)有一種十分熟悉的感覺, 這方便了用戶從 7.0 版本到 2000 的升級(jí): (2) 更加強(qiáng)大的數(shù)據(jù)引擎 sqlserver2000 擁有增強(qiáng)的數(shù)據(jù)引擎,高級(jí)的管理方式,這樣就大大降低了 檢索的開銷。此外 sql server 2000 支持 xml,http,并與 web 相結(jié)

25、合,使其 功能更加強(qiáng)大。 (3) 與 windows 2000 更好的結(jié)合 (4) ms sql server 2000 相對(duì)其他數(shù)據(jù)庫(kù)產(chǎn)品,更好地利用了 win2000 的優(yōu) 勢(shì)。 此外 sql server 2000 還支持高達(dá) 32 個(gè) cpu,64gb。 2.2.2 數(shù)據(jù)庫(kù)管理系統(tǒng)的基本概念 (1) 數(shù)據(jù)庫(kù)的安全性 在計(jì)算機(jī)系統(tǒng)中,安全措施一般是分級(jí)設(shè)置的,在數(shù)據(jù)庫(kù)系統(tǒng)中,對(duì)數(shù)據(jù)的 存取權(quán)限一般支持自主存取控制和強(qiáng)制存取控制兩種機(jī)制,以對(duì)數(shù)據(jù)提供保護(hù)。 在自主存取控制中,用戶對(duì)不同的數(shù)據(jù)對(duì)象有不同的存取權(quán)限,不同的用戶對(duì)同 一對(duì)象也有不同的權(quán)限,用戶還可將自己的權(quán)限轉(zhuǎn)授給其他用戶。而強(qiáng)

26、制存取控 制中,每一個(gè)數(shù)據(jù)對(duì)象被標(biāo)以一定的密級(jí),每個(gè)用戶也被授予某密級(jí)的許可證, 因此只有數(shù)據(jù)對(duì)象的密級(jí)和許可證上標(biāo)明的密級(jí)相匹配時(shí)用戶才能存取數(shù)據(jù)對(duì)象。 通過(guò)為不同的用戶定義不同的數(shù)據(jù)視圖,就可以向不同的用戶展示不同的數(shù)據(jù), 這樣實(shí)現(xiàn)了一定程度的數(shù)據(jù)隱藏,因而能對(duì)數(shù)據(jù)提供保護(hù)。此外,可以利用數(shù)據(jù) 庫(kù)系統(tǒng)提供的審計(jì)功能將所有用戶對(duì)數(shù)據(jù)的操作自動(dòng)記錄下來(lái),存入電子記錄簿, 必要時(shí)可用它跟蹤某些用戶對(duì)數(shù)據(jù)庫(kù)的操作。最后常用的安全措施還有數(shù)據(jù)加密 技術(shù),即將數(shù)據(jù)通過(guò)一定方式變換成密文保存在數(shù)據(jù)庫(kù)中,必要時(shí)再變換成原始 數(shù)據(jù)。若非法用戶不知道解密的方法,即使讀取了數(shù)據(jù)也不明白其含義。 (2) 數(shù)據(jù)的完

27、整性 數(shù)據(jù)庫(kù)的完整性指數(shù)據(jù)的正確性和兼容性。數(shù)據(jù)庫(kù)管理系統(tǒng)一般提供下面三 種手段支持?jǐn)?shù)據(jù)的完整性。 定義功能 向用戶提供定義完整性約束條件的機(jī)制。 檢查功能 檢查用戶的操作是否違背了完整性約束條件。 錯(cuò)誤處理功能 在檢查到用戶的操作違背了完整性約束條件后,就采取相 應(yīng)的應(yīng)對(duì)措施。 (3) 數(shù)據(jù)庫(kù)恢復(fù) 雖然數(shù)據(jù)庫(kù)系統(tǒng)是非??煽康?,但是有時(shí)也會(huì)遭到各種破壞活動(dòng),包括自然 的和人為的原因。例如自然災(zāi)害、硬件故障、軟件故障和人為破壞等。如何將數(shù) 據(jù)庫(kù)恢復(fù)到一個(gè)已知的正確狀態(tài)就是數(shù)據(jù)庫(kù)的恢復(fù)。數(shù)據(jù)庫(kù)的恢復(fù)經(jīng)常涉及到下 面兩個(gè)問(wèn)題。 如何建立數(shù)據(jù)備份 如何利用所建立的數(shù)據(jù)備份恢復(fù)數(shù)據(jù)庫(kù) 建立數(shù)據(jù)備份常用的

28、技術(shù)是數(shù)據(jù)轉(zhuǎn)儲(chǔ)和覆蓋文件,一般同時(shí)使用這兩種方 法。數(shù)據(jù)轉(zhuǎn)儲(chǔ)就是管理人員定期地將數(shù)據(jù)備份到磁帶或磁盤上以建立數(shù)據(jù)備份的 過(guò)程。利用數(shù)據(jù)備份可將數(shù)據(jù)庫(kù)恢復(fù)到建立備份時(shí)的狀態(tài)。若要將數(shù)據(jù)庫(kù)恢復(fù)到 當(dāng)前狀態(tài),就需要將備份后所有更新數(shù)據(jù)庫(kù)的事務(wù)運(yùn)行一遍,因此需要用日志記 錄運(yùn)行過(guò)的事務(wù)。 (4) 并發(fā)控制 在數(shù)據(jù)庫(kù)系統(tǒng)中,通常有很多事務(wù)同時(shí)運(yùn)行,同時(shí)對(duì)數(shù)據(jù)進(jìn)行存取和更新, 如不加以控制,就會(huì)產(chǎn)生下面導(dǎo)致數(shù)據(jù)一致性錯(cuò)誤的三個(gè)問(wèn)題。 丟失修改 事務(wù) a 和 事務(wù) b 同時(shí)操作同一數(shù)據(jù)庫(kù)并修改,a 先將結(jié)果寫 入,接著 b 也將結(jié)果寫入,這樣事務(wù) a 對(duì)數(shù)據(jù)所作的修改就會(huì)丟失。 不能重讀 事務(wù) a 先對(duì)數(shù)據(jù)

29、庫(kù)作了修改,而事務(wù) b 接著對(duì)數(shù)據(jù)庫(kù)作了更新 或修改,或刪除或增加某一紀(jì)錄,這樣當(dāng)事務(wù) a 第二次讀的時(shí)候,發(fā)現(xiàn)和第一次 讀的結(jié)果不同。 臟讀 事務(wù) a 修改了某一數(shù)據(jù),并將其寫回磁盤,事務(wù) b 讀了該數(shù)據(jù)并 使用了該數(shù)據(jù),結(jié)果因某種原因被取消,它所修改的數(shù)據(jù)回到了以前的狀態(tài),那 么事務(wù) b 所讀得數(shù)據(jù)就是不正確的,也稱為讀臟數(shù)據(jù)。 解決這三個(gè)問(wèn)題的主要方法之加鎖。鎖有兩種類型,即排他鎖和共享鎖。如 事務(wù) a 對(duì)數(shù)據(jù)對(duì)象加上了排他鎖,則該數(shù)據(jù)對(duì)象將由它獨(dú)占地使用,不能被其他 事務(wù)讀取、修改和加鎖,直到事務(wù) a 釋放自己加的排他鎖。若某事務(wù) a 對(duì)數(shù)據(jù) 對(duì)象加上了共享鎖,則它只能讀這個(gè)數(shù)據(jù)對(duì)象而

30、不能修改它,其他事務(wù)也可以在 該數(shù)據(jù)對(duì)象上加共享鎖,而不能加排他鎖。 在對(duì)數(shù)據(jù)對(duì)象加鎖時(shí),需要遵循一定的規(guī)則,這些規(guī)則稱為加鎖協(xié)議,常用 的是三級(jí)封鎖協(xié)議,現(xiàn)介紹如下。 一級(jí)封鎖協(xié)議 事務(wù)在修改數(shù)據(jù)之前必須先對(duì)其加排他鎖,事務(wù)結(jié)束時(shí)釋放 所加的鎖,若需要讀操作,則不用加鎖。這樣就解決了修改丟失問(wèn)題,但是解決 不了不能重讀和臟讀。 二級(jí)封鎖協(xié)議 在一級(jí)封鎖協(xié)議的基礎(chǔ)上,加上事務(wù)在讀取數(shù)據(jù)之前必須先 對(duì)其加共享鎖,讀完后可釋放共享鎖。二級(jí)封鎖協(xié)議可以解決讀臟數(shù)據(jù)的問(wèn)題, 但不能解決不能重讀問(wèn)題。可以形象地說(shuō)明為: 事務(wù) a 在對(duì)某數(shù)據(jù)對(duì)象修改之前,對(duì)其加上排他鎖,事務(wù) b 要讀取該數(shù)據(jù)對(duì) 象,需要

31、給其加共享鎖,但因?yàn)橛惺聞?wù) a 所加的排他鎖,這樣 b 只能等待事務(wù) a 由于某種原因被撤消,釋放了所加的排他鎖,而且數(shù)據(jù)對(duì)象也恢復(fù)到原來(lái)狀態(tài)。 事務(wù) b 對(duì)數(shù)據(jù)對(duì)象加上了共享鎖,讀得正確的數(shù)值。 三級(jí)封鎖協(xié)議 在二級(jí)封鎖協(xié)議的基礎(chǔ)上,加上事務(wù)在讀取數(shù)據(jù)之前必須先 對(duì)其加共享鎖,直到事務(wù)結(jié)束才釋放共享鎖??梢孕蜗蟮卣f(shuō)明如下: 事務(wù) a 在對(duì)某數(shù)據(jù)對(duì)象讀取之前,對(duì)其加上共享鎖,事務(wù) b 想要修改該數(shù)據(jù) 對(duì)象,需要給其加排他鎖,但因?yàn)橛惺聞?wù) a 所加的共享鎖,這樣 b 只能等待,不 能加上排他鎖。事務(wù) a 再讀一次數(shù)據(jù)對(duì)象,所得的當(dāng)然是正確的結(jié)果事務(wù) a 完成, 釋放所加的共享鎖,這時(shí)事務(wù) b 才

32、獲得使用數(shù)據(jù)對(duì)象的機(jī)會(huì)。 2.3 新一代網(wǎng)頁(yè)開發(fā)工具asp.net 2.3.1 asp.net 概述 asp.net 是 microsoft 公司動(dòng)態(tài)服務(wù)頁(yè)面(active server page)的最新版本, 它是該公司提供的基于服務(wù)器的強(qiáng)大的技術(shù),用于為萬(wàn)維網(wǎng)站點(diǎn)或企業(yè)的內(nèi)部網(wǎng) 創(chuàng)建動(dòng)態(tài)的、交互式的 html 頁(yè)面。asp.net 作為 asp 與.net 相結(jié)合的產(chǎn)物, 是以前各版本 asp 的一大飛躍。 asp.net 作為新一代的網(wǎng)絡(luò)開發(fā)工具,不僅與 asp 以前的版本相兼容,而且 增加了許多新的功能??偨Y(jié)起來(lái)有以下幾個(gè)方面:3 (1) 多語(yǔ)言支持。asp.net 支持四種編程語(yǔ)言,

33、用戶可根據(jù)自己特長(zhǎng)和實(shí)際 需要進(jìn)行選擇,甚至可以用這些語(yǔ)言的組合來(lái)編程。 (2) 兼容性。asp.net 和 asp 完全兼容,對(duì)于以前的 asp 文件,仍可在 iis 環(huán)境下運(yùn)行。asp.net 文件以新的擴(kuò)展名出現(xiàn)。即.aspx,可以清楚的區(qū)分新老文 件。 (3) 分離程序代碼和網(wǎng)頁(yè)內(nèi)容。在 asp 中網(wǎng)頁(yè)顯示的 html 標(biāo)記和程序代碼 混在一起,給人以雜亂無(wú)章的感覺。在 asp.net 中引入了全新的 html 編程模式, 包括全新的服務(wù)器端控件,表單的事件驅(qū)動(dòng)、數(shù)據(jù)綁定等,將程序代碼與接口清 楚地分開。 2.3.2 asp.net 詳析 asp.net 在開發(fā)效率、性能、可靠性和部署

34、上的結(jié)合都是前所未有的,下面 詳細(xì)介紹。4 (1) 開發(fā)效率 asp.net 幫你在極短的時(shí)間內(nèi)開發(fā)出真正的大量的網(wǎng)頁(yè)應(yīng)用程序。 簡(jiǎn)便的編程模型 asp.net 顯著簡(jiǎn)化了構(gòu)建真正的大規(guī)模的網(wǎng)頁(yè)應(yīng)用程序。asp.net 服務(wù)管理使 與 html 類型相似的編程變得比經(jīng)典 asp 編程所用的代碼大大減少。顯示數(shù)據(jù), 用戶輸入的有效性驗(yàn)證和上傳文件都驚人的容易。最重要的是,asp.net 網(wǎng)頁(yè)可 在所有的瀏覽器中運(yùn)行包括 netscape, opera, aol, and internet explorer。 靈活的語(yǔ)言選擇 asp.net 使你最大效率的發(fā)揮你當(dāng)前編程語(yǔ)言的技巧。不像經(jīng)典的 as

35、p,僅 支持解釋后的 vbscript 和 javascript, asp.net 支持的.net 語(yǔ)言超過(guò) 25 種(包 括支持 vb.net, c#和 jscript.net 的混合而不需要其它的工具) 。在語(yǔ)言的 選擇上,asp.net 為您提供了空前的靈活性。 強(qiáng)大的工具支持 您可以用任何一種文本編輯器展示 asp.net 的強(qiáng)大功能,即使是記事本也 行但 visual studio.net 提高了網(wǎng)頁(yè)的基本可視化類型的開發(fā)效率。現(xiàn)在你可你所 熟悉的拖放雙擊技術(shù)可視化的設(shè)計(jì)網(wǎng)頁(yè)窗體,并享受完全快速的編碼。 豐富的類框架結(jié)構(gòu) 應(yīng)用程序的特色通常很難實(shí)現(xiàn),或需要第三方控件,但現(xiàn)在只用幾行代

36、碼引 用.net framework 就能實(shí)現(xiàn)。.net framework 提供了超過(guò) 4500 個(gè)類,封裝了豐 富的功能,像 xml, data access, file upload, regular expressions, image generation, performance monitoring and logging, transactions, message queuing, smtp mail 等等。 (2) 改進(jìn)的性能和可測(cè)量性 asp.net 讓您能用相同的硬件為更多的用戶服務(wù)。 編譯執(zhí)行 asp.net 比經(jīng)典 asp 更快,而不是 asp 的單步保存模型。然而

37、,asp.net 編譯時(shí)沒有明確的編譯單步。asp.net 將自動(dòng)檢查任何變化,動(dòng)態(tài)編譯需要文件, 并存儲(chǔ)將要用到的結(jié)果。這樣便使執(zhí)行的速度加快,大部分經(jīng)典 asp 移植到 asp.net 上速度提高 3-5 倍。 高速輸出緩存 asp.net 輸出緩存可顯著改善程序的性能和可測(cè)量性。 當(dāng)輸出緩存在一個(gè)頁(yè)中可用時(shí),asp.net 只執(zhí)行這個(gè)頁(yè)一次,并把結(jié)果存儲(chǔ) 在內(nèi)存的同時(shí)發(fā)送給用戶。當(dāng)另一個(gè)用戶需要同樣的網(wǎng)頁(yè)時(shí),asp.net 服務(wù)器經(jīng) 緩存將內(nèi)存中結(jié)果取來(lái)而不重新執(zhí)行網(wǎng)頁(yè)輸出緩存是可配置的,可用于緩存?zhèn)€別 區(qū)或整個(gè)頁(yè),由于避免了每個(gè)請(qǐng)求都訪問(wèn)數(shù)據(jù)庫(kù),輸出緩存大大改善了數(shù)據(jù)驅(qū)動(dòng) 頁(yè)的性能。

38、(3) 增強(qiáng)的可靠性 asp.net 確保你的應(yīng)用程序?qū)τ脩艨偸强捎玫摹?磁盤漏洞、死鎖和沖突保護(hù) asp.net 自動(dòng)檢測(cè)錯(cuò)誤并從磁盤漏洞或死鎖中恢復(fù)出來(lái),使應(yīng)用程序?qū)τ脩?都是可用的。假設(shè)你的應(yīng)用程序中有一個(gè)小的磁盤漏洞,并且一周后這個(gè)漏洞成 為你虛擬內(nèi)存的很重要的一部分,asp.net 會(huì)檢查到這種情況,自動(dòng)啟動(dòng)另一個(gè) 備份的 asp.net 工作進(jìn)程 ,并把所有的新請(qǐng)求定向到新進(jìn)程。一旦老進(jìn)程完成 了所有的懸掛請(qǐng)求的處理,它就被釋放掉,同時(shí)內(nèi)存漏洞也被釋放掉。整個(gè)過(guò)程 是自動(dòng)地,不需要管理員的干預(yù)和任何服務(wù)的中斷,但 asp.net 已從錯(cuò)誤中恢 復(fù)出來(lái)。 (4) 布局的簡(jiǎn)單性5 as

39、p.net 把你從布局服務(wù)器程序的痛苦中解脫出來(lái)。 “非接觸”應(yīng)用程序布局 asp.net 顯著簡(jiǎn)化了應(yīng)用程序的安裝,用 asp.net,你可像開發(fā) html 頁(yè) 一樣對(duì)整個(gè)程序布局:只需把程序拷貝到服務(wù)器,不需要運(yùn)行 regsvr32 注冊(cè)任何 組件,并且環(huán)境配置存儲(chǔ)在應(yīng)用程序的一個(gè) xml 文件中。 動(dòng)態(tài)更新正在運(yùn)行的程序 asp.net 可以在不重新啟動(dòng)網(wǎng)頁(yè)服務(wù)器的情況下更新編譯的組件,過(guò)去經(jīng)典 com 組件,開發(fā)者每次更新布局都必須重新啟動(dòng)網(wǎng)頁(yè)服務(wù)器,用 asp.net,你 只簡(jiǎn)單把組件從已存在的 dll(動(dòng)態(tài)鏈接庫(kù))中拷貝過(guò)來(lái)asp.net 將自動(dòng) 檢測(cè)變化并開始使用新的代碼。 方便

40、的路徑移植 為了開始使用 asp.net 你不需要移植已經(jīng)存在的程序,asp.net 運(yùn)行在 iis 上與經(jīng)典 asp 并置在 windows 2000 和 windows xp 平臺(tái)上,已經(jīng)存在的 asp 程 序可由 asp.dll 繼續(xù)處理,而新的 asp.net 頁(yè)由新的 asp.net 引擎處理。你 可以移動(dòng)整個(gè)應(yīng)用程序,也可移動(dòng)單個(gè)頁(yè),asp.net 甚至允許你繼續(xù)用已經(jīng)存在 的 com 商業(yè)組件類。 (5) 新的應(yīng)用程序模型。 xml 網(wǎng)頁(yè)服務(wù) xml 網(wǎng)頁(yè)服務(wù)允許應(yīng)用程序通過(guò) internet 交換和共享數(shù)據(jù),而無(wú)需考慮操作 系統(tǒng)和編程語(yǔ)言,asp.net 使 xml 網(wǎng)頁(yè)服務(wù)更

41、加簡(jiǎn)單明了。任何類一調(diào)用 soap client 用幾行代碼就能將其轉(zhuǎn)化為 xml 網(wǎng)頁(yè)服務(wù)。同時(shí),asp.net 使你 的應(yīng)用程序很容易調(diào)用 xml 網(wǎng)頁(yè)服務(wù),不需要任何網(wǎng)絡(luò),xml 或 soap 知識(shí)。 數(shù)據(jù)庫(kù)訪問(wèn) asp.net 提供了 ado 和 ole 兩種技術(shù),其訪問(wèn)數(shù)據(jù)庫(kù)的方式已經(jīng)接近一般 的面向?qū)ο缶幊陶Z(yǔ)言,使用起來(lái)非常容易,而且其功能也相當(dāng)完備。 第 3 章 需求分析 3.1 構(gòu)建新聞自動(dòng)提取系統(tǒng)的必要性和功能 隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的成熟和計(jì)算機(jī)價(jià)格的變化,一場(chǎng)信息領(lǐng)域的劃時(shí)代革 命internet 出現(xiàn)了。現(xiàn)在 internet 提供的服務(wù)應(yīng)有盡有,新聞、影視、圖形、 圖像,

42、不勝枚舉。但出于網(wǎng)絡(luò)安全和實(shí)際情況的考慮,一個(gè)公司或企業(yè)的內(nèi)部仍 有很多人不能直接登錄到 internet,但又應(yīng)該讓他們享受 internet 的服務(wù)。這樣網(wǎng) 絡(luò)服務(wù)的自動(dòng)提取系統(tǒng)就應(yīng)運(yùn)而生了,新聞自動(dòng)提取系統(tǒng)不過(guò)是小試牛刀而已。 系統(tǒng)需完成的功能: (1) internet 上將各大商業(yè)網(wǎng)絡(luò)服務(wù)網(wǎng)站上的新聞標(biāo)題和新聞內(nèi)容完全由程序 自動(dòng)提取出來(lái),不需要人工干預(yù); (2) 將新聞分類后放入數(shù)據(jù)庫(kù)中; (3) 以網(wǎng)頁(yè)的形式將新聞發(fā)布出來(lái),供局域網(wǎng)中的用戶瀏覽,并可實(shí)現(xiàn)簡(jiǎn)單的 按關(guān)鍵字查詢的功能; (4) 應(yīng)該對(duì)提取的新聞在一段時(shí)間內(nèi)刷新,同時(shí)更新數(shù)據(jù)。 3.2 新聞自動(dòng)提取的可行性 在介紹可行

43、性之前,先介紹幾個(gè)概念: 一級(jí)網(wǎng)頁(yè):也叫大類首頁(yè),是從網(wǎng)站的首頁(yè)中各類直接鏈接到的網(wǎng)頁(yè),教 育類首頁(yè)地址為:http:/,經(jīng)濟(jì)類首頁(yè)地址為: http:/. 多級(jí)網(wǎng)頁(yè):從一級(jí)網(wǎng)頁(yè)直接鏈接到的網(wǎng)頁(yè)為二級(jí)網(wǎng)頁(yè),依次可定義三級(jí)網(wǎng)頁(yè)、 四級(jí)網(wǎng)頁(yè)。大于等于三級(jí)的網(wǎng)頁(yè),稱為多級(jí)網(wǎng)頁(yè)。二級(jí)新聞:如果新聞的內(nèi)容能 從二級(jí)網(wǎng)頁(yè)上找到,這樣的新聞稱為二級(jí)新聞。 新聞的類標(biāo)志串:它用來(lái)標(biāo)志新聞的類別,也是能判斷網(wǎng)頁(yè)是否是二級(jí)網(wǎng)頁(yè) 的一個(gè)字符串。教育類新聞的標(biāo)志串是: () 在本系統(tǒng)中只提取二級(jí)新聞,所用技術(shù)為二級(jí)網(wǎng)頁(yè)提取技術(shù)。 (1) 通過(guò)對(duì)五類上百個(gè)新聞網(wǎng)頁(yè)進(jìn)行統(tǒng)計(jì)表明:搜狐上新聞內(nèi)容網(wǎng)頁(yè)的布局格 式同類的極其相

44、近,而各類間區(qū)別也不大。 (2) 對(duì)一級(jí)網(wǎng)頁(yè)的分析表明,該頁(yè)中的新聞都是通過(guò)超鏈接鏈接到對(duì)應(yīng)二類新 聞頁(yè)的。而超聯(lián)接的提取可通過(guò)反復(fù)截取的方法獲得。 (3) 每類新聞在其新聞網(wǎng)頁(yè)(二級(jí)網(wǎng)頁(yè))中都含有相應(yīng)的標(biāo)志(一般在新聞標(biāo) 題前,也是新聞開始的標(biāo)志) ,而且二級(jí)網(wǎng)頁(yè)中新聞內(nèi)容的開始和結(jié)束也有標(biāo)志, 教育類的開始標(biāo)志為,結(jié)束標(biāo)志為 (有時(shí) p 是 大寫的) 。 新聞提取的基本思想和過(guò)程是:先定位到各類新聞的主頁(yè),再獲得其對(duì)應(yīng) 的文本串,取出其中的超鏈接,再把超鏈接中的地址取出來(lái),如果該地址對(duì)應(yīng)網(wǎng) 頁(yè)含有類新聞標(biāo)志,則提取新聞內(nèi)容和標(biāo)題。新聞內(nèi)容和標(biāo)題的提取方法:新聞 內(nèi)容和標(biāo)題在二級(jí)網(wǎng)頁(yè)對(duì)應(yīng)的文

45、本中都有相應(yīng)的起始標(biāo)志,可從開始截取到結(jié)尾 的部分即得之。由于 delphi 中提供了對(duì)字符串的操作函數(shù),所以整個(gè)新聞提取的 過(guò)程從技術(shù)上是完全可行的。整個(gè)提取在 timer 控件中完成,就實(shí)現(xiàn)了自動(dòng)提取 的功能。利用 asp.net 的 ado 數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),就可將數(shù)據(jù)庫(kù)中的新聞發(fā)布出 來(lái)。 系統(tǒng)的數(shù)據(jù)流圖如圖 3.1 所示. sql server 新聞庫(kù) internet 網(wǎng)頁(yè) 分類后 的新聞 文本 文件 數(shù)據(jù)庫(kù) 文件 新聞 網(wǎng)頁(yè) 1.1 delphi 網(wǎng) 絡(luò) 接 口 1.2 文 本 分 析 模 塊 1.3 asp.net 模塊 用戶 d1 internet 圖 3.1 新聞自動(dòng)提取系統(tǒng)

46、數(shù)據(jù)流圖 第 4 章 系統(tǒng)總體設(shè)計(jì) 從功能和所用的開發(fā)工具可將整個(gè)系統(tǒng)分為三個(gè)部分:sql server 部分、 delphi 部分 、asp.net 部分。而 delphi 部分又可以分成網(wǎng)絡(luò)訪問(wèn)及新聞提取、數(shù) 據(jù)庫(kù)管理兩個(gè)子模塊。 (1) sql server 部分 這部分主要包括數(shù)據(jù)庫(kù)設(shè)計(jì): 由于各類新聞除了類別外,主要由新聞標(biāo)題和新聞內(nèi)容組成,故各類新聞均 采用下表結(jié)構(gòu)進(jìn)行數(shù)據(jù)存儲(chǔ)。整個(gè)建庫(kù)、建表通過(guò)企業(yè)管理器完成,同時(shí)對(duì)數(shù)據(jù) 庫(kù)建立登錄,然后再 odbc(open database connection)中為數(shù)據(jù)庫(kù)建立別名,以 便在程序中訪問(wèn)。數(shù)據(jù)庫(kù)中存儲(chǔ)新聞表的結(jié)構(gòu)如表 4-1 所

47、示. 表 4-1 數(shù)據(jù)庫(kù)中表的結(jié)構(gòu) 字段名no(編號(hào))title(標(biāo)題)content(內(nèi)容)station(網(wǎng)站) 類型decimalvarchar(100)varchar(8000)char(50) (2) delphi 部分 delphi 中網(wǎng)絡(luò)訪問(wèn)及新聞提取子模塊 網(wǎng)絡(luò)訪問(wèn)部分: 通過(guò)對(duì)控件欄中 fastnet 頁(yè)中的 nmhttp 控件編程,用字符串變量返回網(wǎng)頁(yè) 對(duì)應(yīng)的文本串。 新聞提取部分 這部分需要對(duì)網(wǎng)頁(yè)進(jìn)行全面細(xì)致的分析,準(zhǔn)確提取出網(wǎng)頁(yè)中的超鏈接,然后 從超鏈接串中提取出地址,在判斷該頁(yè)是否是二級(jí)網(wǎng)頁(yè),是則提取新聞標(biāo)題和內(nèi) 容,否則進(jìn)入下一次提取,直到文本中無(wú)超鏈接為止。 de

48、lphi 中數(shù)據(jù)庫(kù)管理子模塊 建立數(shù)據(jù)庫(kù)別名,并對(duì) odbc 進(jìn)行配置,以便在 delphi 和 asp.net 中訪問(wèn) 數(shù)據(jù)庫(kù); 檢查記錄是否存在,如果不存在則插入之,否則放棄操作; 能對(duì)表進(jìn)行清空操作,以便刷新數(shù)據(jù)庫(kù)中的數(shù)據(jù); 能對(duì)表中記錄進(jìn)行修改和刪除; 在刷新數(shù)據(jù)庫(kù)時(shí),將數(shù)據(jù)庫(kù)中的數(shù)據(jù)無(wú)冗余存儲(chǔ)于信息庫(kù)中。 (3) asp.net 部分 該程序作為服務(wù)器端程序,將數(shù)據(jù)庫(kù)中的數(shù)據(jù)以網(wǎng)頁(yè)的形式發(fā)布出來(lái),共 用戶對(duì)各類信息瀏覽; 用戶可根據(jù)自己的興趣愛好,動(dòng)態(tài)的選擇想要瀏覽的新聞,也就是簡(jiǎn)單的 搜索引擎功能; 方便的網(wǎng)頁(yè)鏈接,用戶在瀏覽一類新聞時(shí)可直接鏈接到其它類新聞。 這部分由登錄、主頁(yè)和

49、五個(gè)鏈接頁(yè)組成,五個(gè)鏈接頁(yè)與主頁(yè)之間均由超鏈接 聯(lián)系。五個(gè)鏈接頁(yè)的組成大體相同,每個(gè)頁(yè)均能實(shí)現(xiàn)添加,刪除,排序,查詢的 功能,而新聞內(nèi)容的顯示用 datagrid 控件綁定數(shù)據(jù)庫(kù)實(shí)現(xiàn)。 a 的總體布局如圖 4.1 所示. 系統(tǒng)的功能模塊圖如圖 4.2 所示. 系統(tǒng)實(shí)現(xiàn)流程為:先建立數(shù)據(jù)庫(kù),再通過(guò) delphi 訪問(wèn) internet 提取新聞,存 儲(chǔ)于數(shù)據(jù)庫(kù),再由 asp.net 將數(shù)據(jù)庫(kù)中信息發(fā)布出來(lái)。 圖 4.1 網(wǎng)頁(yè)基本布局 基于 internet 的新聞自動(dòng)提取系統(tǒng) delphi 的 internet 訪問(wèn)及新聞 提取模塊 sql server 數(shù)據(jù)庫(kù) 管 理 系 統(tǒng) delphi 數(shù)

50、據(jù)庫(kù) 管 理 模 塊 asp.net 數(shù)據(jù)庫(kù) 訪 問(wèn) 模 塊 網(wǎng) 頁(yè) 獲 取 文 本 分 析 新 聞 提 取 建 數(shù) 據(jù) 庫(kù) 建 數(shù) 據(jù) 表 表 清 空 刪 除 數(shù) 據(jù) 新 聞 瀏 覽 新 聞 搜 索 圖 4.2 新聞自動(dòng)提取系統(tǒng)模塊圖 插 入 數(shù) 據(jù) 第 5 章 詳細(xì)設(shè)計(jì) 5.1 技術(shù)難點(diǎn)與解決方案 如前所述,整個(gè)系統(tǒng)由 sql server 部分、delphi 部分 、asp.net 部分組成, 在各部分中遇到的技術(shù)問(wèn)題及實(shí)現(xiàn)方案將分述之。由于各大網(wǎng)站的網(wǎng)頁(yè)組織結(jié)構(gòu) 相近,故以提取搜狐上的新聞為例闡明。 5.1.1 sql server 中的技術(shù)問(wèn)題及實(shí)現(xiàn)方案 (1) 表結(jié)構(gòu)的選取 構(gòu)建表

51、的結(jié)構(gòu)有兩種方法:一表法和多表法。這兩種方法均能滿足系統(tǒng)對(duì)數(shù) 據(jù)庫(kù)的操作要求,但結(jié)構(gòu)略有差異: 一表結(jié)構(gòu):所有類新聞放在一個(gè)表中。 字段設(shè)置:類別,類內(nèi)標(biāo)號(hào),新聞標(biāo)題,新聞內(nèi)容,來(lái)源網(wǎng)站。 多表結(jié)構(gòu):每類新聞?dòng)靡粋€(gè)表存儲(chǔ)。 本系統(tǒng)有以下五類:教育類,體育類,經(jīng)濟(jì)類,娛樂(lè)類,出國(guó)類。每類的字 段設(shè)置相同,如下所示:標(biāo)號(hào),新聞標(biāo)題,新聞內(nèi)容,來(lái)源網(wǎng)站。 本系統(tǒng)采用多表結(jié)構(gòu),因?yàn)槎啾斫Y(jié)構(gòu)較一表結(jié)構(gòu)可減少數(shù)據(jù)冗余。 (2) 建立數(shù)據(jù)庫(kù)連接 在連接時(shí)有四種方法: 用 bde 連接 用 odbc 連接 用 ado 連接 用 ole 連接 本系統(tǒng)首先用 odbc 建立連結(jié),在 delphi 中用 bde 訪

52、問(wèn)數(shù)據(jù)庫(kù),在 asp.net 中用 ado 連接訪問(wèn)數(shù)據(jù)庫(kù); (3) 數(shù)據(jù)庫(kù)中的冗余控制 在記錄插入前檢查其是否存在,不存在則插入。 5.1.2 delphi 中的技術(shù)問(wèn)題及實(shí)現(xiàn)方案 (1) 技術(shù)難點(diǎn) 1:如何對(duì)提取出的新聞進(jìn)行分類. 解決方案:搜狐網(wǎng)本身已將新聞分成教育、出國(guó)、健康、財(cái)經(jīng)、體育等 類,在提取時(shí)直接定位到各類的主頁(yè)中,然后在各頁(yè)中提取出新聞自然存入 相應(yīng)的表中。 (2) 技術(shù)難點(diǎn) 2:如何用 delphi 訪問(wèn)網(wǎng)頁(yè)的內(nèi)容. 解決方案:用 delphi6 控件欄的 fastnet 頁(yè)中的 nmhttp 控件,經(jīng)編程可返 回整個(gè)網(wǎng)頁(yè)的基于 html 的文本串。 (3) 技術(shù)難點(diǎn) 3

53、:如何從文本串中提取出新聞標(biāo)題. 解決方案:共三種。 直接從各大類主頁(yè)中獲取; 從二級(jí)網(wǎng)頁(yè)新聞的標(biāo)題獲得; 從二級(jí)網(wǎng)頁(yè)的窗體的標(biāo)題獲得。 注:體育、娛樂(lè)、出國(guó)、經(jīng)濟(jì)類新聞均可通過(guò)以上三種方式獲取新聞標(biāo)題, 但教育類新聞只能通過(guò)前兩種途徑獲得標(biāo)題,因?yàn)榻逃愋侣劥绑w的標(biāo)題為 “sohu 教育頻道” 。 (4) 技術(shù)難點(diǎn) 4:如何從各大類主頁(yè)開始提取出新聞內(nèi)容。(以教育類為例) 解決方案:大致分四步: 從教育類主頁(yè)中的超鏈接中提取出地址串,并對(duì)地址串進(jìn)行標(biāo)準(zhǔn)化; 對(duì) nmhttp 控件進(jìn)行編程,獲得地址串所對(duì)應(yīng)的網(wǎng)頁(yè)文本串; 判斷該網(wǎng)頁(yè)中是否含有教育類新聞的標(biāo)志串 (),如果含有,則從該二級(jí)頁(yè)中提

54、取出 新聞內(nèi)容,否則提取下一個(gè)超鏈接,直到教育類網(wǎng)頁(yè)文本串的結(jié)尾; 將新聞內(nèi)容中的換行符、注釋符及其它多余字符去掉。 5.1.3 asp.net 技術(shù)問(wèn)題 (1) 技術(shù)難點(diǎn) 1:如何將數(shù)據(jù)庫(kù)綁定到 datagrid 控件. 解決方案:首先 sqlconnection 建立數(shù)據(jù)庫(kù)連結(jié),再在 page_load 事件中用 sqlcommand 添加 sql 語(yǔ)句。最后打開連接,對(duì) datagrid 控件進(jìn)行數(shù)據(jù)綁定。 (2) 技術(shù)難點(diǎn) 2:記錄的添加、刪除和排序. 解決方案:先建立數(shù)據(jù)庫(kù)連接,然后在對(duì)應(yīng)的按鈕的單擊事件中設(shè)置 sqlcommand 的 sql 語(yǔ)句,有參變量的對(duì)參變量賦值,再對(duì) d

55、atagrid 控件進(jìn)行數(shù) 據(jù)綁定。 5.2 delphi 新聞提取 5.2.1 整體布局和大體流程 提取部分總體由一個(gè)工程組成,這個(gè)工程由五個(gè)窗體組成,每個(gè)窗體對(duì)應(yīng)一 類新聞的提取。 由于教育類新聞標(biāo)題與其它類不同,但新聞內(nèi)容的提取卻相同,故只將標(biāo)題 的提取分別實(shí)現(xiàn)之。整個(gè)提取過(guò)程在 timer 控件內(nèi)完成。窗體布局如圖 5.1 所示, 而新聞提取的流程圖如圖 5.2 所示。 窗體布局詮釋如下: 標(biāo)號(hào),標(biāo)題,內(nèi)容和網(wǎng)站分別用來(lái)顯示提取到新聞的各個(gè)屬性,查詢按鈕可 實(shí)現(xiàn)在 delphi 中查詢新聞內(nèi)容,dbgrid 控件用來(lái)顯示所有的新聞。也可在標(biāo)號(hào), 標(biāo)題,內(nèi)容和網(wǎng)站手動(dòng)輸入內(nèi)容,按添加按鈕

56、將其寫入數(shù)據(jù)庫(kù)中。 圖 5.1 窗體布局 注:rest 串用來(lái)實(shí)現(xiàn)循環(huán)時(shí)對(duì)文本串賦初值,它的值為串 s 提取出超鏈接后 的剩余串。流程圖中的多數(shù)功能的詳細(xì)實(shí)現(xiàn)在下面敘述。 y n y n y n 開始 定義全局變量并初始化之 求出上面超鏈接往后的剩余串 rest 超鏈接是否為圖片 獲取地址串定位網(wǎng)頁(yè)對(duì)應(yīng)文本串 str 提取新聞內(nèi)容和標(biāo)題 結(jié)束 s:=rest 從文本串中提取超鏈接串 提取地址串并標(biāo)準(zhǔn)化 該頁(yè)是二級(jí)頁(yè) 串 s 有超鏈接 圖 5.2 提取新聞的整個(gè)流程圖 5.2.2 新聞提取子模塊的實(shí)現(xiàn) 為了清楚的解釋各模塊的程序,先說(shuō)明其中最重要的幾個(gè)函數(shù): pos(substring:stri

57、ng;s:string):integer; 說(shuō)明:函數(shù)返回子串 substring 在主串 s 中的位置,如果主串中不包含子串, 返回 0 copy(s:string;m:integer;n:integer):string; 說(shuō)明:函數(shù)返回在串 s 中截取從 m 開始的 n 個(gè)字符組成的串。如果截取的長(zhǎng) 度比最大可截取長(zhǎng)度大,則從開始位置截取到串結(jié)尾。 (1) 從一級(jí)網(wǎng)頁(yè)的文本串中截取超鏈接 超鏈接有兩種形式:分別以和作為開始和結(jié)束標(biāo)志。程序 中通過(guò)判斷和的位置來(lái)定位超鏈接的開始。 下面是定位超鏈接開始的代碼,可參照?qǐng)D 5.3 理解。 l0:=pos(h0,s); /定位到a l1:=pos(

58、h1,s); /定位到a if l1l0 then /如果 l1 比 l0 小, /說(shuō)明串 s 中將找到的超鏈接 /以為起始標(biāo)志 hstart:=l1 else hstart:=l0; /找到超連接的開始 /再截取從a 或下面是兩個(gè)例子: 美指使 美指使 從超鏈接提取的粗略地址有幾種形式: http:/www.(此種形式為絕對(duì)地址) http:/www. / /(此種形式為相對(duì)地址) http:/www. 其中第 5 種定為標(biāo)準(zhǔn)形式,也就是能直接寫在 url(統(tǒng)一資源定位) ,地址的 標(biāo)準(zhǔn)化就是如果有前四種地址,將其轉(zhuǎn)化為對(duì)應(yīng)的標(biāo)準(zhǔn)地址。 上面已經(jīng)截取出超鏈接后,以下敘述從超鏈接中取出地址串并

59、進(jìn)行標(biāo)準(zhǔn)化。 可參照?qǐng)D 5.4 理解之。 先定位到地址串的開始“href=” ,再截取從地址開始到“” 。 以下程序段定位地址串末尾 l6:=pos(space,cut2); /定位到空格 if pos(,cut2),cut2); /判斷地址串是否以結(jié)尾 cut3:=copy(cut2,1,l6-1) /初步截取地址串 /以下程序段對(duì)地址串進(jìn)行標(biāo)準(zhǔn)化處理,cut3 是 初/步地址 if pos(,cut3)=1 then /如果地址串中含有雙引號(hào),則去掉之 begin /third begin cut4:=copy(cut3,2,length(cut3)-1); address:=copy(c

60、ut4,1,length(cut4)-1); end / third end else if pos(/,address)2 then address:=http:/ else address:=cut3; /標(biāo)準(zhǔn)化結(jié)束 (3) 新聞標(biāo)題和內(nèi)容的提取 以下為獲取網(wǎng)頁(yè)對(duì)應(yīng)文本的代碼6,可參閱圖 5.5 理解。 nmhttp1.inputmode:=false; /輸入模式選擇 nmhttp1.outputmode:=false; /輸出模式選擇 nmhttp1.get(address); n y n y n y 去掉雙引號(hào) 地址串中是否 含雙引號(hào) 超鏈接不是圖片的超鏈接 定位到超鏈接地址串的開頭

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論