




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
畢業(yè)設計(論文)基于PHP實現(xiàn)的網(wǎng)上留言管理系統(tǒng)的設計論文作者姓名:申請學位專業(yè):申請學位類別:論文提交日期:基于PHP實現(xiàn)的網(wǎng)上留言管理系統(tǒng)的設計摘要隨著互聯(lián)網(wǎng)技術的迅猛發(fā)展,網(wǎng)絡已經(jīng)充斥到我們生活的方方面面,網(wǎng)上留言系統(tǒng)已經(jīng)成為各種網(wǎng)站不可或缺的一個組成部分。一個設計美觀、功能完善的網(wǎng)上留言系統(tǒng)是網(wǎng)站吸引網(wǎng)民的一個重要因素。同時,它還為網(wǎng)絡用戶提供了一個多人參與的信息交流平臺?;赑HP實現(xiàn)的網(wǎng)上留言管理系統(tǒng)采用B/S(Browser/Server)應用架構以及MVC(ModelViewController)編程架構設計開發(fā)。具體的開發(fā)細節(jié)是使用PHP語言完成系統(tǒng)的開發(fā)。整個系統(tǒng)不僅能夠對網(wǎng)上留言信息進行錄入、發(fā)布、查詢與管理,而且還增加了如:驗證碼、郵件發(fā)送、聊天室、密碼管理等功能。這樣使得網(wǎng)上留言系統(tǒng)真正成為功能豐富、高效實用的網(wǎng)上信息交流平臺。關鍵詞:PHP;B/S;MVC;面向對象;留言系統(tǒng)DesignofMessageBoardSystemBasedonPHPAbstractWiththerapiddevelopmentoftheInternettechnology,thenetworkapplicationhasbeenwidelyusedintheworld,themessageboardsystemalreadybecomesanindispensableconstituentofthewebsite.Amessageboardsystemwhichhasbeautifuldesignsandintegratedfunctionscanbeanimportantfactorofattractingpeople.Meanwhile,itprovidesInternetuserswithaninformationexchangeplatform.ThedesignofmessageboardsystembasedonPHPisdevelopedbyB/S(Browser/Server)applicationconstructionandMVC(ModelViewController)programmingconstruction.ThedetailofthedevelopmentisusingthePHPlanguagetodevelopthesystem.Thewholesystemnotonlycaninput,issue,queryandmanagetheon-linemessagebutalsoaddssomefunctionssuchasvalidatingcode,mailtransmission,chattingroomorpasswordmanagement.Thismakesthemessageboardsystemtrulybeamultifunctionalandefficienton-lineinformationexchangeplatform.Keywords:PHP;B/S;MVC;ObjectOriented;MessageBoardSystem目錄論文總頁數(shù):20頁1 引言 11.1 課題背景 11.2 本課題研究的意義 11.3 本課題的研究方法 12 留言系統(tǒng)開發(fā)語言的介紹 12.1 PHP語言概述 12.2 PHP對MYSQL數(shù)據(jù)庫的訪問 22.3 JavaScript語言概述 23 留言系統(tǒng)開發(fā)架構的介紹 33.1 B/S應用架構的介紹 33.1.1 B/S架構概述 33.1.2 B/S架構的優(yōu)點 33.1.3 B/S架構的缺點 43.2 MVC編程架構的介紹 53.2.1 MVC架構概述 53.2.2 MVC架構的優(yōu)點 63.2.3 MVC架構的缺點 74 基于PHP的網(wǎng)上留言管理系統(tǒng)的設計與實現(xiàn) 74.1 功能的確定 74.2 數(shù)據(jù)表的設計 84.3 添加功能與管理功能的設計與實現(xiàn) 94.3.1 設計方案的介紹 94.3.2 各部分實現(xiàn)過程的介紹 104.4 發(fā)布功能的設計與實現(xiàn) 144.5 特色功能的設計與實現(xiàn) 16結論 18參考文獻 18致謝 19聲明 20引言課題背景隨著互聯(lián)網(wǎng)技術的迅猛發(fā)展,網(wǎng)絡給人們帶來了很多便利,我們在很多網(wǎng)站上都能看到各式各樣的留言板,它是網(wǎng)站與訪客之間進行交流的主要手段之一。一個設計合理,界面優(yōu)美的網(wǎng)上留言程序能從側面體現(xiàn)網(wǎng)站良好的服務,給來訪用戶留下美好的印象,增強用戶對網(wǎng)站的信心。本課題研究的意義網(wǎng)上留言系統(tǒng)利用網(wǎng)絡一定的時效性和廣泛的傳播面,可以方便人與人之間的信息交流和互動。對于一般企業(yè)而言,網(wǎng)上留言系統(tǒng)能夠通過網(wǎng)絡提供方便的日常信息管理和交互,同時只需要相對低廉的建設和維護成本。另外,企業(yè)還可以通過網(wǎng)上留言系統(tǒng),為客戶提供一個跨地域的交流平臺,以便及時了解和掌握客戶的需求,加強企業(yè)與客戶之間的溝通,提高企業(yè)的市場競爭力。因此,該課題具有一定的實用價值。本課題的研究方法網(wǎng)上留言系統(tǒng)的整體結構采用的是B/S(Browser/Server)應用架構,在這種架構下,軟件應用的業(yè)務邏輯完全在應用服務器端實現(xiàn),用戶表現(xiàn)完全在Web服務器實現(xiàn),客戶端只需要瀏覽器即可進行業(yè)務處理。整個系統(tǒng)的設計采用的是MVC(ModelViewController)編程架構,使得功能模塊和顯示模塊能夠分離,提高應用系統(tǒng)的可維護性、可擴展性、可移植性和組件的可復用性。留言系統(tǒng)的具體實現(xiàn)是采用服務器端腳本語言PHP來完成對系統(tǒng)后臺的開發(fā)以及使用Html語言和JavaScript腳本語言來完成對系統(tǒng)前臺的開發(fā)。留言系統(tǒng)開發(fā)語言的介紹PHP語言概述PHP是能讓你生成動態(tài)網(wǎng)頁的工具之一。PHP代表:超文本預處理器(PHP:HypertextPreprocessor)。PHP是完全免費的,不用花錢,你可以從PHP官方站點自由下載。PHP遵守GNU公共許可(GPL),在這一許可下誕生了許多流行的軟件諸如Linux和Emacs。你可以不受限制的獲得源碼,甚至可以從中加進你自己需要的特色。PHP在大多數(shù)Unix平臺,GUN/Linux和微軟Windows平臺上均可以運行。PHP很容易學習,但是速度上比Mod_Perl(植入Web服務器的Perl模塊)慢?,F(xiàn)在有了可以與Mod_Perl速度想媲美的被稱作Zend的新引擎,而PHP5就可以充分利用這個引擎。PHP5還引入了新的對象模型(ObjectModel)。完全重寫了PHP處理對象的方式,這樣可以提高程序的抽象程度,更接近人的思維方式,使程序結構更清晰并降低編碼和維護的工作量。當前PHP與Linux、Apache、MYSQL、Zend構成了性價比最高的Web系統(tǒng)。應用PHP有許多好處。當然已知的不利之處在于PHP由于是開放源碼項目,沒有什么商業(yè)支持,對于小項目,它可以是一個十分符合人意的編程語言。但是對于較大的和更為復雜的項目,PHP就顯出他的薄弱了。PHP是一個不斷發(fā)展的語言,相信這些問題在不久的將來會得到很好地解決。PHP對MYSQL數(shù)據(jù)庫的訪問MYSQL是一個快速、健壯和易用,且支持多線程、多用戶的SQL數(shù)據(jù)庫服務器。雖然PHP通過ODBC支持幾乎所有的數(shù)據(jù)庫。但對于開發(fā)數(shù)據(jù)驅動的網(wǎng)站而言,選擇MYSQL應該說是最佳組合,這不僅因為MYSQL是免費的,更在于它具有與同類大型數(shù)據(jù)庫相媲美甚至超過它們的優(yōu)良性能。PHP實現(xiàn)對MYSQL數(shù)據(jù)庫的訪問有兩種方法:(1)利用PHP的數(shù)據(jù)庫函數(shù)連接:創(chuàng)建MYSQL連接:MYSQL_CONNECT(數(shù)據(jù)庫所在位置,數(shù)據(jù)庫賬號,數(shù)據(jù)庫密碼)。數(shù)據(jù)庫選用:MYSQL_SELECT_DB(數(shù)據(jù)庫名)。執(zhí)行SQL指令:MYSQL_QUERY(SQL語句,$link)。分析表身:MYSQL_FETCH_ROW()函數(shù),必須傳入$result查詢結果變量,再通過for循環(huán),并配合count()函數(shù)計算數(shù)據(jù)行中的列數(shù),將$row數(shù)組中每一元素顯示出來。釋放資源:MYSQL_FREE_RESULT($result)或MYSQL_CLOSE($link)。(2)通過ODBC連接:PHP通過ODBC連接MYSQL數(shù)據(jù)庫主要用到四個函數(shù):ODBC_CONNECT():用來同ODBC數(shù)據(jù)源建立連接。ODBC_DO():用來在建立連接之后執(zhí)行數(shù)據(jù)庫查詢。ODBC_RESULT():用于取得當前記錄行中某個字段的值。ODBC_FETCH_ROW():用來把查詢結果保存到數(shù)組,每個數(shù)組元素對應一條記錄。上述兩種方法在與數(shù)據(jù)庫建立連接的語法上,并沒有太大差別。不過在相比較之下,通過ODBC方式存取數(shù)據(jù)庫比PHP直接存取MYSQL耗時間,但通過ODBC接口存取數(shù)據(jù)庫不必擔心使用何種數(shù)據(jù)庫,如Oracle,Informix,Sybase等。結合網(wǎng)上留言系統(tǒng)在實際當中的應用,還是決定選擇PHP直接存取MYSQL的方式來管理數(shù)據(jù)庫。另外以上兩種方式都支持ODBC接口,這樣可減少更換數(shù)據(jù)庫時需要更改程序的問題。JavaScript語言概述JavaScript是一種基于對象(Object)和事件驅動(EventDriven)并具有安全性能的腳本語言。使用它的目的是與HTML超文本標記語言、PHP腳本語言一起實現(xiàn)在一個Web頁面中鏈接多個對象,與Web客戶交互作用,從而可以開發(fā)客戶端的應用程序等。它是通過嵌入或調(diào)入在標準的HTML語言中實現(xiàn)的。它的出現(xiàn)彌補了HTML語言的缺陷。JavaScript的出現(xiàn)使得信息和用戶之間不僅只是一種顯示和瀏覽的關系,而是實現(xiàn)了一種實時的、動態(tài)的、可交式的表達能力。從而基于CGI靜態(tài)的HTML頁面將被可提供動態(tài)實時信息,并對客戶操作進行反應的Web頁面的取代。JavaScript腳本正是滿足這種需求而產(chǎn)生的語言。它深受廣大用戶的喜愛。它是眾多腳本語言中較為優(yōu)秀的一種,與WWW的結合有效地實現(xiàn)了網(wǎng)絡計算和網(wǎng)絡計算機的結合。使用JavaScript的優(yōu)勢在于傳統(tǒng)的數(shù)據(jù)提交和驗證工作均由用戶端瀏覽器通過網(wǎng)絡傳輸?shù)椒掌魃线M行。如果數(shù)據(jù)量很大,這對于網(wǎng)絡和服務器的資源來說實在是一種無形的浪費。而JavaScript則可以在客戶端進行數(shù)據(jù)驗證,可以方便地操縱各種瀏覽器的對象,可以控制瀏覽器的外觀,狀態(tài)甚至運行方式,可以根據(jù)用戶的需要“定制”瀏覽器,從而使網(wǎng)頁更加友好。JavaScript還可以使多種任務僅在客戶端就可以完成而不需要網(wǎng)絡和服務器的參與,從而支持分布式的運算和處理。留言系統(tǒng)開發(fā)架構的介紹B/S應用架構的介紹B/S架構概述B/S(Browser/Server)結構即瀏覽器和服務器結構。它是隨著Internet技術的興起,對C/S(Client/Server)結構的一種變化或者改進的結構。在這種結構下,用戶工作界面是通過WWW瀏覽器來實現(xiàn),極少部分事務邏輯在前端(Browser)實現(xiàn),主要的事務邏輯在服務器端(Server)實現(xiàn),形成所謂三層3-tier結構。這樣就大大簡化了客戶端電腦負荷,減輕了系統(tǒng)維護與升級的成本和工作量,降低了用戶的總體成本。以目前的技術看,局域網(wǎng)建立B/S結構的網(wǎng)絡應用,并通過Internet/Intranet模式下建立的數(shù)據(jù)庫應用,相對易于把握,成本也是較低的。B/S結構是一次性到位的開發(fā),能實現(xiàn)不同的人員,從不同的地點,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)訪問和操作共同的數(shù)據(jù)庫;它能有效地保護數(shù)據(jù)平臺和管理訪問權限,服務器數(shù)據(jù)庫也很安全。特別是在PHP這樣的跨平臺語言出現(xiàn)之后,B/S架構管理軟件更是方便、快捷、高效。B/S架構的優(yōu)點B/S結構最大的優(yōu)點就是可以在任何地方進行操作而不用安裝任何專門的軟件。只要有一臺能上網(wǎng)的電腦就能使用,客戶端零維護。系統(tǒng)的擴展非常容易,只要能上網(wǎng),再由系統(tǒng)管理員分配一個用戶名和密碼,就可以使用了。甚至可以在線申請,通過公司內(nèi)部的安全認證(如CA證書)后,不需要人的參與,系統(tǒng)可以自動分配給用戶一個賬號進入系統(tǒng)。其次是維護和升級方式簡單。目前,軟件系統(tǒng)的改進和升級越來越頻繁,B/S架構的產(chǎn)品明顯體現(xiàn)著更為方便的特性。對一個稍微大一點的單位來說,系統(tǒng)管理人員如果需要在幾百甚至上千部電腦之間來回奔跑,效率和工作量是可想而知的,但B/S架構的軟件只需要管理服務器就行了,所有的客戶端只是瀏覽器,根本不需要做任何的維護。無論用戶的規(guī)模有多大,有多少分支機構都不會增加任何維護升級的工作量,所有的操作只需要針對服務器進行;如果是異地,只需要把服務器連接專網(wǎng)即可,實現(xiàn)遠程維護、升級和共享。所以客戶機越來越“瘦”,而服務器越來越“胖”是將來信息化發(fā)展的主流方向。今后,軟件升級和維護會越來越容易,而使用起來會越來越簡單,這對用戶人力、物力、時間、費用的節(jié)省是顯而易見的,驚人的。因此,維護和升級革命的方式是“瘦”客戶機,“胖”服務器。最后是成本降低,選擇更多。大家都知道Windows在桌面電腦上幾乎一統(tǒng)天下,瀏覽器成為了標準配置,但在服務器操作系統(tǒng)上Windows并不是處于絕對的統(tǒng)治地位?,F(xiàn)在的趨勢是凡使用B/S架構的應用管理軟件,只需安裝在Linux服務器上即可,而且安全性高。所以服務器操作系統(tǒng)的選擇是很多的,不管選用哪種操作系統(tǒng)都可以讓大部分人使用Windows作為桌面操作系統(tǒng)的電腦不受影響,這就使得最流行Linux操作系統(tǒng)快速發(fā)展起來,Linux除了操作系統(tǒng)是免費的以外,連數(shù)據(jù)庫也是免費的,這種選擇是非常盛行的。比如說很多人每天上“新浪”網(wǎng),只要安裝了瀏覽器就可以了,并不需要了解“新浪”的服務器用的是什么操作系統(tǒng),而事實上大部分網(wǎng)站服務器是沒有使用Windows操作系統(tǒng)的,但用戶的電腦本身安裝的大部分是Windows操作系統(tǒng)。B/S架構的缺點應用服務器運行數(shù)據(jù)負荷較重是B/S架構的缺點。由于B/S架構管理軟件只安裝在服務器端(Server)上,網(wǎng)絡管理人員只需要管理服務器就行了,用戶界面主要事務邏輯在服務器(Server)端完全通過WWW瀏覽器實現(xiàn),極少部分事務邏輯在前端(Browser)實現(xiàn),所有的客戶端只有瀏覽器,網(wǎng)絡管理人員只需要做硬件維護。但是,應用服務器運行數(shù)據(jù)負荷較重,一旦發(fā)生服務器“崩潰”等問題,后果不堪設想。因此,許多單位都備有數(shù)據(jù)庫存儲服務器,以防萬一。MVC編程架構的介紹MVC架構概述MVC英文即Model,View,Controller,即把一個應用的輸入、處理、輸出流程按照Model,View,Controller的方式進行分離,這樣一個應用層被分為三個層—模型層,視圖層、控制層。視圖(View)代表用戶交互界面,對于Web來說,可以概括為HTML界面,但也有可能為XHTML、XML、Applet和Flash等。隨著應用的復雜性和規(guī)模性的提高,界面的處理也變得具有挑戰(zhàn)性,一個應用可能有很多不同的視圖,MVC設計模式對于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請求,而不包括在視圖上的業(yè)務流程的處理。業(yè)務流程的處理交予模型(Model)處理。比如一個訂單的視圖只接受來自模型的數(shù)據(jù)并顯示給用戶,以及將用戶界面的輸入數(shù)據(jù)和請求傳遞給Controller和Model。模型(Model)就是業(yè)務流程和狀態(tài)的處理以及業(yè)務規(guī)則的制定。業(yè)務流程的處理過程對其他層來說是暗箱操作,模型接受視圖請求的數(shù)據(jù),并返回最終的處理結果。業(yè)務模型的設計可以說是MVC最主要的核心。目前流行的EJB模型就是一個典型的應用例子,它從應用技術實現(xiàn)的角度對模型作了進一步的劃分,以便充分利用現(xiàn)有的組件,但它不能作為應用設計模型的框架。它僅僅告訴你按照模型設計就可以利用某些技術組件,從而減輕了技術上的困難。對一個開者來說,就可以專注于業(yè)務模型的設計。MVC設計模型告訴我們,把應用的模型按照一定的規(guī)劃抽取出來,抽取的層次很重要,這也是判斷開發(fā)人員是否優(yōu)秀的設計依據(jù)。抽象與具體不能隔得太遠,也不能太近。MVC并沒有提供模型的設計方法,而只告訴你應該組織管理這些模型,以便于模型的重構和提高重用性。業(yè)務模型還有一個很重要的模型那就是數(shù)據(jù)模型。數(shù)據(jù)模型主要是指實體對象的數(shù)據(jù)保存。比如將一張訂單保存到數(shù)據(jù)庫中,從數(shù)據(jù)庫獲取訂單。我們可以將這個模型單獨列出,所有有關的數(shù)據(jù)庫的操作只限在該模型中??刂疲–ontroller)可以理解為從用戶接受請求,將模型與視圖匹配在一起,共同完成用戶的請求,劃分控制層的作用很明顯,它清楚地告訴開發(fā)者,它僅是一個分發(fā)器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請求??刂茖硬蛔魅魏蔚臄?shù)據(jù)處理。例如,用戶點擊一個鏈接,控制層接收請求后,并不處理業(yè)務信息,它只把用戶的信息傳遞給模型,告訴模型做什么,把符合要求的視圖返回給用戶。因此,一個模型可能對應多個視圖,一個視圖可能對應多個模型。總之,模型、視圖與控制器的分離,使得一個模型可以具有多個顯示視圖。如果用戶通過某個視圖的控制器改變了模型的數(shù)據(jù),所有其他依賴于這些數(shù)據(jù)的視圖都能反映這些變化。因此,無論何時發(fā)生了何種數(shù)據(jù)變化,控制器都會將變化通知所有的視圖,導致顯示的更新。這實際上是一種模型的變化與傳播機制。模型、視圖、控制器三者之間的關系和各自的主要功能,如下圖(圖1)所示:圖1模型、視圖、控制器的關系和功能MVC架構的優(yōu)點當前有相當一部分Web應用程序都是用過程化語言來創(chuàng)建的。它們將像數(shù)據(jù)庫查詢語句這樣的數(shù)據(jù)層代碼和像HTML這樣的表示層代碼混在一起,直接向數(shù)據(jù)庫發(fā)送請求并用HTML顯示,開發(fā)速度往往比較快,但由于數(shù)據(jù)頁面的分離不是很直接,因而很難體現(xiàn)出業(yè)務模型的樣子或者模型的重用性。產(chǎn)品設計彈性力度很小,很難滿足用戶的變化性需求。經(jīng)驗比較豐富的開發(fā)者會將數(shù)據(jù)從表示層分離開來,但這通常不是很容易做到的,它需要精心的計劃和不斷的嘗試。MVC的出現(xiàn)很好地解決了以上問題,它要求對應用分層,雖然要花費額外的工作,但產(chǎn)品的結構清晰,產(chǎn)品的應用通過模型可以得到更好地體現(xiàn)。首先,MVC最重要的一點是多個視圖能共享一個模型。在目前用戶需求的快速變化下,可能有多種方式訪問應用的要求。例如,訂單模型可能有本系統(tǒng)的訂單,也有網(wǎng)上訂單,或者其他系統(tǒng)的訂單,但對于訂單的處理都是一樣,也就是說訂單的處理是一致的。按MVC設計模式,一個訂單模型以及多個視圖即可解決問題。這樣即減少了代碼的復制,又減少了代碼的維護量,一旦模型發(fā)生改變,也易于維護。并且由于模型返回的數(shù)據(jù)不帶任何顯示格式,因而這些模型也可直接應用于接口的使用。其次,將MVC分離可以讓不同的專家負責不同的模塊,一般情況下,Model部分由熟悉數(shù)據(jù)庫,網(wǎng)絡傳輸?shù)膶<襾碡撠?;View則交給對UI(UserInterface)有研究的專家。這對于項目的管理者而言是多么的誘人,分工意味著可以提高效率并可以按照傳統(tǒng)的責任劃分來處理軟件開發(fā)過程。對開發(fā)者而言也可以專心于一個領域。這樣做的前提是接口要明確,MVC的分離思想正為其提供了基礎。最后,控制器也提供了一個好處,就是可以使用控制器來連接不同的模型和視圖去完成用戶的需求,這樣控制器可以為構造應用程序提供強有力的手段。給定一些可重用的模型和視圖,控制器可以根據(jù)用戶的需求選擇模型進行處理,然后選擇視圖將處理結果顯示給用戶。總的來說MVC編程架構是有利于軟件工程化管理的,因為不同的層各司其職,每一層不同的應用具有某些相同的特征,有利于通過工程化、工具化產(chǎn)生管理程序代碼。MVC架構的缺點MVC的缺點是由于它沒有明確的定義,所以完全理解MVC并不是很容易。使用MVC需要精心的計劃,由于它的內(nèi)部原理比較復雜,所以需要花費一些時間去思考。具體的不足體現(xiàn)在以下幾個方面:(1)增加了系統(tǒng)結構和實現(xiàn)的復雜性。對于簡單的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增加結構的復雜性,并可能產(chǎn)生過多的更新操作,降低運行效率。(2)視圖與控制器間的連接過于緊密。視圖與控制器是相互分離,但卻是聯(lián)系緊密的部件,視圖沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了它們的獨立重用。(3)視圖對模型數(shù)據(jù)的低效率訪問。依據(jù)模型操作接口的不同,視圖可能需要多次調(diào)用才能獲得足夠的顯示數(shù)據(jù)。對未變化數(shù)據(jù)的不必要的頻繁訪問,也將損害操作性能。另外,你還將不得不花費相當可觀的時間去考慮如何將MVC運用到你的應用程序,同時由于模型和視圖要嚴格的分離,這樣也給調(diào)試應用程序到來了一定的困難。每個構件在使用之前都需要經(jīng)過徹底的測試。一旦你的構件經(jīng)過了測試,你就可以毫無顧忌的重用它們了。最后,根據(jù)開發(fā)者經(jīng)驗,由于開發(fā)者將一個應用程序分成了三個部件,所以使用MVC同時也意味著你將要管理比以前更多的文件,這一點是顯而易見的。這樣好像我們的工作量增加了,但是請記住這比起它所能帶給我們的好處是不值一提的。并且本系統(tǒng)也針對這些缺點做了一些改進,下面就將介紹系統(tǒng)詳細的設計開發(fā)過程?;赑HP的網(wǎng)上留言管理系統(tǒng)的設計與實現(xiàn)功能的確定網(wǎng)上留言管理系統(tǒng)把用戶分成兩類,一類是管理員,另一類是客戶。管理員負責維護整個留言系統(tǒng),在對其身份進行確認后,能夠對網(wǎng)上留言進行回復、修改以及刪除??蛻魟t可以直接錄入、查看和查詢網(wǎng)上留言信息。具體要實現(xiàn)的內(nèi)容如表1所示:表1系統(tǒng)詳細功能介紹添加功能支持心情圖片插入支持輸入內(nèi)容時插入圖片用戶基本信息以及留言內(nèi)容的錄入選擇留言信息正常顯示或僅管理員可見選擇管理員回復是否另外發(fā)送email給自己發(fā)布功能顯示留言者IP顯示滾動的系統(tǒng)公告顯示留言以及回復信息屏蔽只有管理員可見的留言信息顯示頁面處理時間以及PHP運行時間支持標題搜索,數(shù)據(jù)庫對標題建有索引管理功能支持在線公告修改支持批量刪除數(shù)據(jù)支持回復,編輯,刪除留言信息管理員信息經(jīng)過MD5加密,只能在線修改用戶名和密碼特色功能聊天室,實時的信息交流平臺建立SOCKET會話,根據(jù)SMTP協(xié)議發(fā)送郵件可在無GD庫的空間中正常運行的驗證碼功能運用大量PHP和JavaScript函數(shù)繪制網(wǎng)頁特效數(shù)據(jù)表的設計在著手開發(fā)一個Web項目時,數(shù)據(jù)庫的設計通常是第一位要做的,基本上所有的操作都會涉及到數(shù)據(jù)表的操作。那么數(shù)據(jù)表的設計就關系到整個項目的設計和功能的實現(xiàn)。網(wǎng)上留言信息需要一個表來存儲,另外聊天室也需要一個表來存儲信息,因此整個系統(tǒng)需要兩個表,具體設計如表2、表3所示:表2留言信息存儲表字段名類型說明idInt(6)primrykey留言idtnameVarchar(6)留言者姓名txInt(3)頭像dtimeDatetime留言時間titleVarchar(33)留言標題qqInt(13)留言者qqemailVarchar(25)留言者emailneiText留言內(nèi)容htimeDatetime回復時間estateInt(1)留言狀態(tài)hneiText回復內(nèi)容ipVarchar(15)留言者ipsend_mailBool是否接收回復郵件表3聊天室信息存儲表字段名類型說明chtimeDatetime信息發(fā)布時間nickVarchar(10)用戶名稱wordsVarchar(100)聊天內(nèi)容添加功能與管理功能的設計與實現(xiàn)設計方案的介紹在前面的文章中已經(jīng)介紹了MVC編程架構的特點,本系統(tǒng)的添加功能與管理功能就是采用MVC編程架構開發(fā)的。具體的系統(tǒng)結構如圖2所示:圖2添加與管理功能的MVC架構對添加與管理功能的設計選用的是類似SmartTicket中使用的MVC模式。這種模式的特點是將Controller設計成一個巨大的事物處理器(即:Switch……Case語句),所有由UI收集到的用戶需求都轉發(fā)給Controller進行處理。其具體的工作流程是這樣的:View通過“URL?變量名=變量值”的方式向Controller傳遞一個功能常量,Controller通過PHP系統(tǒng)變量“$_Get”接收到這個常量,然后將其放入Switch……Case語句中,Switch……Case語句根據(jù)比較不同的常量,來處理不同的請求,從而完成不同的功能。Controller主要是通過調(diào)用Model內(nèi)的自定義函數(shù)、MYSQL數(shù)據(jù)庫操作類以及郵件發(fā)送類來處理不同的請求。下面總結一下這個設計方案的優(yōu)點和缺點。從上文介紹的工作流程可以看到這種模式的優(yōu)點是用戶控制器提供一個控制和處理請求的集中入口點,它負責接收,截獲并處理用戶請求;并根據(jù)當前狀態(tài)和業(yè)務操作的結果決定向客戶呈現(xiàn)的視圖。這樣做能夠控制和協(xié)調(diào)每個用戶跨越多個請求的處理,從而達到了集中管理的目的。這種模式還具有多視圖對應一個模型的能力,對多種不同方式的訪問請求可以用一個模型來實現(xiàn),減少了代碼的重復和維護量,一旦模型改變也易于維護。其次由于模型返回的數(shù)據(jù)不帶任何顯示格式,因而這些模型也可直接應用于接口的使用。當然,這種模式也有一個缺陷,那就是隨著功能的不斷增加Controller將變得過于龐大,這樣將影響系統(tǒng)的運行速度,增加用戶等待響應的時間。但就本系統(tǒng)的功能而言,用Controller來完成還是綽綽有余的。各部分實現(xiàn)過程的介紹首先介紹View部分的實現(xiàn)過程。就添加功能而言設計了一個界面優(yōu)美的視圖如圖3所示,用戶主要是通過填寫Html表單完成個人信息以及留言信息的錄入,這些數(shù)據(jù)通過POST方式傳遞給Controller。另外還用JavaScript的“document.getElementById()”函數(shù)在客戶端即時獲取用戶輸入的數(shù)據(jù),然后再用if判斷語句檢查用戶輸入的數(shù)據(jù)是否標準,如果不標準系統(tǒng)就會通過“document.getElementById(obj_name).innerHTML”變量顯示提示語句,明確地告訴用戶如何輸入正確的數(shù)據(jù)。圖3留言信息添加界面就管理功能而言,將視圖分為兩級,一級是身份驗證界面,當用戶正確輸入用戶名、密碼以及驗證碼之后才能進入下一級的管理界面。在管理界面中,每一個功能都對應了一個視圖,這樣方便了管理員區(qū)分和使用不同的功能。接著介紹Controller部分的實現(xiàn)過程。前文已經(jīng)介紹了Controller是通過判斷視圖傳遞的功能常量來選擇相應的功能,下面的表4就給出了不同常量與不同功能的對應關系:表4常量與功能對應表常量功能add添加數(shù)據(jù)edit編輯留言信息huifu回復留言信息del刪除留言信息pldel批量刪除留言信息admin確認管理員身份editadmin在線修改管理員信息editgonggao在線修改公告內(nèi)容out管理員退出就添加功能而言,Controller會接收到View傳遞的“add”功能常量,于是Controller會先通過PHP的系統(tǒng)變量“$_POST”來接收用戶輸入的數(shù)據(jù),然后再應用Model內(nèi)的自定義函數(shù)對用戶輸入的數(shù)據(jù)進行鑒定和過濾,最后Controller就調(diào)用Model內(nèi)的數(shù)據(jù)庫操作類,通過使用對象的成員函數(shù)將數(shù)據(jù)保存到數(shù)據(jù)庫里。在錄入數(shù)據(jù)的同時,用戶還可以選擇是否通過郵件接收管理員回復,以及所發(fā)的留言是正常顯示,還是僅管理員可見。就管理功能而言,首先要明確的是身份認證的歸屬,它似乎是應用邏輯的一部分,因此是屬于Model。但是如果要限制只有通過驗證的用戶才能執(zhí)行特定動作,那么這一要求只能由Controller來完成,因為這些特定的動作必須在Controller內(nèi)定義,而且只有Controller可以進入Model,所以身份認證歸入Controller才是最合理的劃分。對身份驗證的安全性在Controller內(nèi)采用了雙保險:第一是使用PHP的系統(tǒng)函數(shù)“MD5()”對管理員密碼進行加密,使得用戶只能在網(wǎng)上修改管理員的用戶名和密碼;第二是使用特色功能里的驗證碼功能來防止某些用戶采用暴力破解方式進行不斷的登陸嘗試。當管理員成功登入系統(tǒng)后又面臨了一個問題,那就是網(wǎng)頁是一種無狀態(tài)的連接程序,因此你無法得知用戶的瀏覽狀態(tài)。要解決這個問題就會用到PHP的Session功能,我們通過Session記錄用戶的有關信息,以供用戶再次以此身份對Web服務器提供要求時作確認。具體的實現(xiàn)是這樣的:當用戶進入網(wǎng)站我們就調(diào)用“SESSION_START()”函數(shù)打開一個會話期,當管理員成功登入系統(tǒng)后,我們用“$_SESSION[admin]”這個全局變量保存下管理員密碼,那么服務器就記錄下了管理員的信息,以后在使用其他功能時就不需要用戶輸入用戶名和密碼了。當管理員退出系統(tǒng)時,我們可以使用“UNSET($_SESSION[admin])”來銷毀保存在服務器端的管理員信息。當然SESSION也存在一些不足之處,如它會占用少許服務器資源以及關閉瀏覽器即會失效。但換一種角度去思考,“關閉瀏覽器即會失效”其實是從安全的角度設計的。在整個管理員的會話期里,Controller是通過PHP的系統(tǒng)變量“$_Get”來接收管理員選擇的功能常量,然后再讓Switch……Case語句根據(jù)比較不同的常量,來處理不同的請求,從而完成管理員要求的功能。最后介紹Model部分的實現(xiàn)過程。Web開發(fā)歸根結底就是與數(shù)據(jù)庫打交道,對數(shù)據(jù)操作的封裝是最基本的,在設計時應當充分考慮到未來的需要和可擴展性,如果在開發(fā)業(yè)務邏輯模型期間再對數(shù)據(jù)操作的封裝進行修改,往往可能會傷筋動骨,牽連的內(nèi)容會較多。本系統(tǒng)涉及的數(shù)據(jù)表比較單一,即每次操作主要針對一個數(shù)據(jù)表。因此,在Model內(nèi)使用PHP語言設計了一個通用的類,只更換數(shù)據(jù)表即可完成對數(shù)據(jù)庫的操作。在這個類中,成員函數(shù)主要實現(xiàn)的功能包括:(1)初始化成員變量;(2)連接數(shù)據(jù)庫;(3)執(zhí)行SQL語句;(4)返回當前查尋數(shù)據(jù)的數(shù)據(jù)行數(shù);(5)返回數(shù)據(jù)總行數(shù);(6)讀取數(shù)據(jù);(7)關閉連接。通過這個類就將系統(tǒng)對數(shù)據(jù)庫的操作封裝起來,方便Controller的操作,同時也使系統(tǒng)更安全了。另外還設計了一個郵件發(fā)送類。開發(fā)這個類的目的在于滿足一些用戶希望通過Email接收管理員回復的要求。這個類支持兩種發(fā)送Email的方法:第一種,使用PHP自帶的“MAIL()”函數(shù)來發(fā)送;第二種,使用SMTP協(xié)議的SOCKET發(fā)送。由于PHP沒有提供現(xiàn)成的SMTP函數(shù),只提供了一個功能不甚靈活的“MAIL()”函數(shù),這個函數(shù)需要服務器配置上的支持,并且不支持SMTP驗證,在很多場合無法正常的工作,因此才開發(fā)了第二種發(fā)送Email的方法來彌補第一種方式的不足。第二種發(fā)送方式實際上是利用PHP的SOCKET函數(shù)來和SMTP服務器建立一個連接,然后發(fā)送文本的命令給服務器,一封內(nèi)容簡單的郵件就發(fā)送出去了。第二種方式的好處在于PHP中已經(jīng)存在很多現(xiàn)成的封裝得很好的類或者函數(shù)替我們完成底層的SOCKET級操作,只需要直接拿來用就好,而不用在本文里去討論底層的代碼。下面就給出通過SOCKET發(fā)送Email的具體實現(xiàn)過程:(1)創(chuàng)建SOCK,并打開連接;(2)設置為阻塞模式;(3)測試SMTP應答碼是否為220,220代表郵件服務就緒;(4)發(fā)送用戶身份驗證,然后讀取服務器端發(fā)送給客戶端的返回數(shù)據(jù);(5)發(fā)送AUTHLOGIN命令;(6)發(fā)送用戶名以及密碼;(7)身份驗證成功過后,向服務器添加From以及To;(8)發(fā)送DATA命令,開始輸入Email數(shù)據(jù),以“.”號結束;(9)書寫郵件內(nèi)容,將郵件內(nèi)容發(fā)送到SMTP服務器;(10)發(fā)送QUIT命令,結束會話。在Model中還包含了一個自定義函數(shù)文件,這些函數(shù)主要是被Controller調(diào)用,起到對用戶輸入數(shù)據(jù)進行鑒定和過濾的作用。這些函數(shù)的具體功能包括:(1)接收功能常量;(2)接收用戶在前臺輸入的數(shù)據(jù);(3)限制用戶信息輸入的范圍;(4)過濾用戶輸入的錯誤數(shù)據(jù);(5)顯示頁面跳轉窗口。發(fā)布功能的設計與實現(xiàn)發(fā)布功能主要是將留言信息顯示給用戶查看,其中發(fā)布的界面主要對應了三種使用功能:留言發(fā)布界面、管理員界面、用戶信息的搜索界面。由于發(fā)布功能不是很復雜,因此所采用的MVC的架構也有所不同。具體的系統(tǒng)結構如下圖4所示:圖4發(fā)布功能的MVC架構首先介紹View部分。在這里我用Html語言編寫了一個留言框模板,這個模板主要用于定義留言信息的顯示格式。它由Form表單組成,其中用“[%標簽名稱%]”標記出要動態(tài)顯示的內(nèi)容所在的位置,同時給Form表單的ID賦一個值,以便Controller調(diào)用。另外還使用JavaScript制作了一些實用的前臺動態(tài)效果,它們包括:(1)建立一些主要鏈接上的中文提示框;(2)支持在新的窗口打開用戶插入的圖片;(3)輸出滾動顯示的公告;(4)屏蔽腳本錯誤;(5)顯示頁面處理時間以及PHP運行時間等。下面就給出留言發(fā)布界面的效果圖(圖5):圖5留言發(fā)布界面接著介紹Controller部分。在這里ID是JavaScript標簽容器命名屬性,innerHTML表示一個容器內(nèi)所包含的所有代碼,通過“ID.innerHTML”就能夠在JavaScript中取得View部分所定義的留言框模板的代碼。然后再通過JavaScript的replace方法與正則表達式結合應用,從而替換模板中的標簽內(nèi)容,將留言信息插入到留言框模板中去。這種設計方法的好處在于客戶端不用刷新頁面就能看到動態(tài)更新的內(nèi)容,并且利用JavaScript語言將處理靜態(tài)頁面的代碼與處理動態(tài)頁面的代碼分離開,方便了程序員查找和修改程序。最后介紹Model部分。在這里主要還是用PHP語言調(diào)用MYSQL數(shù)據(jù)庫操作類去實現(xiàn)四個功能:讀取數(shù)據(jù)、搜索、分頁和統(tǒng)計。要實現(xiàn)前三個功能就必須執(zhí)行不同的SQL語句。讀取功能使用常規(guī)的“SELECT……FROM”語句就能解決。搜索功能需要在“SELECT……FROM”語句后面再加上“WHERE……LIKE”語句,通過判斷前臺表單所返回的搜索條件,從而篩選出要搜索的數(shù)據(jù)。分頁功能學要在“SELECT……FROM”語句后面加上“ORDERBY……LIMIT”限制每頁輸出固定條數(shù)的留言信息。統(tǒng)計功能只需要調(diào)用數(shù)據(jù)庫操作類的成員函數(shù)就能實現(xiàn)。特色功能的設計與實現(xiàn)首先介紹驗證碼功能。所謂驗證碼,就是將一串隨機產(chǎn)生的數(shù)字或符號,生成一幅圖片,圖片里加上一些干擾象素(防止OCR),由用戶肉眼識別其中的驗證碼信息,輸入表單提交網(wǎng)站驗證,驗證成功后才能使用某項功能。使用這項功能的好處還在于防止用戶利用機器人自動灌水以及防止某些用戶采用暴力破解方式對管理員密碼進行不斷的登陸嘗試。因此這項功能被應用在管理員登入界面以及用戶輸入留言信息界面。在本系統(tǒng)中實現(xiàn)了兩種輸出驗證碼的方法,在介紹這兩種方法之前必需介紹一下GD庫。GD庫是PHP處理圖形的擴展庫,它提供了一系列用來處理圖片的API,使用GD庫可以處理圖片,或者生成圖片。因此第一種方法就是對于那些支持GD庫的空間,調(diào)用PHP的GD庫函數(shù)來生成圖像再搭配PHP的“RAND()”函數(shù)來生成隨機數(shù)最終制作出驗證碼。第二種方法就是對于不支持GD庫的空間,系統(tǒng)判別后將自動調(diào)用編寫的256色BMP圖像輸出函數(shù),自定義生成256色BMP圖片。然后在配合一個圖像輸出文件生成驗證碼。下面具體介紹一下第二種方法的實現(xiàn)過程。我們要讓系統(tǒng)輸出BMP圖片就必需了解BMP文件的結構。BMP文件主要是由文件頭、位圖信息頭、顏色信息和圖形數(shù)據(jù)四部分組成。在合理配置了文件頭、位圖信息頭、顏色信息后,將本系統(tǒng)要顯示的驗證碼數(shù)據(jù),即0到9和a到z共36個字符的圖形數(shù)據(jù)錄入到BMP圖像輸出函數(shù)中,最后再使用三個嵌套的for語句逐行、逐字、逐像素地輸出圖像數(shù)據(jù),這樣就實現(xiàn)了BMP圖片的輸出。當然這其中還要用到PHP的“RAND()”函數(shù)來保證輸出的驗證碼是一串隨機數(shù)。下面就給出100象素的字符在400象素的方框內(nèi)隨機定位的256色BMP圖片生成函數(shù)的核心代碼:$ra_sj=rand(0,3);//隨機產(chǎn)生背景色$li=0;//逐行,逐字,逐像素地輸出圖像數(shù)據(jù)for($i=19;$i>=0;$i--)//歷經(jīng)所有行{$li++;for($ii=0;$ii<$num;$ii++)//歷經(jīng)所有字{for($iii=0;$iii<20;$iii++)//歷經(jīng)所有像素,一個字20個像素{$ra_sjs=rand(0,7);//隨機雜色if(rand(0,100)<$cOdds)//雜點出現(xiàn)的機率{$imgnei=$imgnei.$vColorData[$ra_sjs];//雜色}else{if(x_y($iii,$li,$ii)==0)//坐標在10*10px的方框中{$di=20-$rand_sj[$ii][2]-9;$di=$i-$di;$di=($di*10+$iii-$rand_sj[$ii][0]);if($vNumberData[$vCode[$ii]]{$di}==1)//不在字符上{$imgnei=$imgnei.$vColorData[$ra_sj];//背景顏色}else{$ra_sjs=rand(8,12);$imgnei=$imgnei.$vColorData[$ra_sjs];//字符顏色}}else//背景顏色{$imgnei=$imgnei.$vColorData[$ra_sj];} }}}}echo($imgnei);//輸出圖像另外還有一個聊天室功能。聊天室主要分為WebChat、BBSChat兩種。BBSChat是基于Telnet的Tcp協(xié)議,是BBS的附設功能,需要客戶端有Telnet程序。WebChat則采用瀏覽器方式,實際上是一個多人共同使用的CGI程序。其基本原理是把每個用戶的發(fā)言通過瀏覽器傳給系統(tǒng),再由系統(tǒng)收集處理后分發(fā)給特定用戶。本系統(tǒng)的聊天室就是采用WebChat的ClientPull技術,該技術是利用Html語言的Meta標簽“-equiv=Refresh”的屬性,每隔一段時間就檢查服務器上是否有新的數(shù)據(jù)。同時,為防止數(shù)據(jù)庫無限增大,還設計了刪除陳舊數(shù)據(jù)的功能。這種方法簡單有效,能夠基本滿足用戶的需求。結論通過以上的研究和實踐,可以預見基于PHP實現(xiàn)的網(wǎng)上留言管理系統(tǒng)因為它簡單豐富的功能和方便快捷的交流方式,將會在互聯(lián)網(wǎng)時代中,大有作為。網(wǎng)上留言系統(tǒng)也將由于越來越多的人學習和使用PHP語言,而變得更加完善。下面總結一下本次課題研究的一些收獲和不足。首先,通過畢業(yè)設計學會了使用MVC思想開發(fā)簡單的網(wǎng)絡軟件。這種開發(fā)模式的最大特點是多個視圖能夠共享一個模型,同時它將應用程序的輸入、處理和輸出分開,從而解決了傳統(tǒng)動態(tài)網(wǎng)頁開發(fā)中將像數(shù)據(jù)庫查詢語句這樣的數(shù)據(jù)層代碼和像HTML這樣的表示層代碼混在一起的問題。因此提高了編程人員的開發(fā)效率,使得系統(tǒng)的結構更加清晰,管理也更加方便。其次,還研究了BMP圖像文件的結構,學會了如何建立SOCKET會話,并根據(jù)SMTP協(xié)議發(fā)送郵件。另外還為系統(tǒng)加入了身份驗證,密碼管理,驗證碼,Session等功能,從而增強了系統(tǒng)的安全性。最后,本系統(tǒng)存在一個不足之處就是沒有設計客戶的注冊登入功能,這樣就給管理員管理客戶帶來了不便。但不開發(fā)這項功能也是從網(wǎng)上留言系統(tǒng)的實際應用出發(fā),如果開發(fā)了注冊登入功能就會增加客戶的操作次數(shù),從而影響客戶對系統(tǒng)的滿意度??傊_發(fā)網(wǎng)上留言管理系統(tǒng)最重要的工作就是要處理好整體架構與技術細節(jié)之間的關系,它是一個不斷協(xié)調(diào)和平衡的過程,只有將這兩方面處理和諧了,最終才能得到一個完美的作品。參考文獻[1]LukeWelling/LauraThomson[美].PHP和MySQLWeb開發(fā)(原書第三版)[M].武欣/邵煜譯.北京:機械工業(yè)出版社,2005。[2]勒道夫[美].PHP程序設計[M].鄧云佳等譯.北京:中國電力出版社,2003.7。[3]PHP5開發(fā)手則[EB].:///openpub/,2006-01-14。[4]MYSQL中文手冊[EB].://dev.mysql/,2005-11-15。[5]MVC模式[OL].:///chiefsailor/archive/2007/03/09/1524793.aspx,2007-03-09。[6]BMP文件結構[OL].://czqhh.bloghome/posts/61278.html,2006-11-28。[7]黃國輝.PHP聊天室技術[OL].:///tech/php/2006041846412.asp,2006-04-18。[8]讓插入到innerHTML中的Script跑起來[OL].://coolcode/?p=117,2006-06-04。致謝本文是在歐曉聰老師的熱情關心和指導下完成的,他淵博的知識和嚴謹?shù)闹螌W作風使我受益匪淺,對順利完成本課題起到了極大的作用。在此向他表示我最衷心的感謝!在論文完成過程中,本人還得到了金虎老師和韓光同學的熱心幫助,本人向他們表示深深的謝意!最后向在百忙之中評審本文的各位專家、老師表示衷心的感謝!作者簡介:成都信息工程學院網(wǎng)絡工程三班學生姓名:李偉性別:男出生年月:1984年12月13日民族:漢E-mail:lw2003032085@tom聲明本論文的工作是2007年02月至2007年06月在成都信息工程學院網(wǎng)絡工程系完成的。文中除了特別加以標注地方外,不包含他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學院或其他教學機構的學位或證書而使用過的材料。除非另有說明,本文的工作是原始性工作。關于學位論文使用權和研究成果知識產(chǎn)權的說明:本人完全了解成都信息工程學院有關保管使用學位論文的規(guī)定,其中包括:(1)學校有權保管并向有關部門遞交學位論文的原件與復印件。(2)學??梢圆捎糜坝 ⒖s印或其他復制方式保存學位論文。(3)學??梢詫W術交流為目的復制、贈送和交換學位論文。(4)學??稍试S學位論文被查閱或借閱。(5)學??梢怨紝W位論文的全部或部分內(nèi)容(保密學位論文在解密后遵守此規(guī)定)。除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息工程學院。特此聲明!作者簽名:2007年06月05日BillysawservicewiththeinfantryinEurope,andwastakenprisonerbytheGermans.AfterhishonorabledischargefromtheArmyin1945,BillyagainenrolledintheIliumSchoolofOptometry.Duringhissenioryearthere,hebecameengagedtothedaughterofthefounderandowneroftheschool,andthensufferedamildnervouscollapse.Hewastreatedinaveterans'hospitalnearLakePlacid,andwasgivenshocktreatmentsandreleased.Hemarriedhisfianc閑,finishedhiseducation,andwassetupinbusinessinIliumbyhisfather-in-law.IliumisaparticularlygoodcityforoptometristsbecausetheGeneralForgeandFoundryCompanyisthere.Everyemployeeisrequiredtoownapairofsafetyglasses,andtoweartheminareaswheremanufacturingisgoingon.GF&Fhassixty-eightthousandemployeesinIlium.Thatcallsforalotoflensesandalotofframes.Framesarewherethemoneyistionofcoal-mineswasfardistantandtherewasnodreadofscarcity.TherewerestillextensiveminestobeworkedinthetwoAmericas.Themanufactories,appropriatedtosomanydifferentuses,locomotives,steamers,gasworks,&c.,werenotlikelytofailforwantofthemineralfuel;buttheconsumptionhadsoincreasedduringthelastfewyears,thatcertainbedshadbeenexhaustedeventotheirsmallestveins.Nowdeserted,theseminesperforatedthegroundwiththeiruselessshaftsandforsakengalleries.ThiswasexactlythecasewiththepitsofAberfoyle.Tenyearsbefore,thelastbuttyhadraisedthelasttonofcoalfromthiscolliery.Theundergroundworkingstock,tractionengines,truckswhichrunonrailsalongthegalleries,subterraneantramways,framestosupporttheshaft,pipes--inshort,allthatconstitutedthemachineryofaminehadbeenbroughtupfromitsdepths.Theexhaustedminewaslikethebodyofahugefantastically-shapedmastodon,fromwhichalltheorgansoflifehavebeentaken,andonlytheskeletonremains.Nothingwasleftbutlongwoodenladders,downtheYarrowshaft--thes,carpenters,outsideandinsidelaborers,women,children,andoldmen,allwerecollectedinthegreatyardoftheDochartpit,formerlyheapedwithcoalfromthemine.ManyofthesefamilieshadexistedforgenerationsinthemineofoldAberfoyle;theywerenowdriventoseekthemeansofsubsistenceelsewhere,andtheywaitedsadlytobidfarewelltotheengineer.JamesStarrstoodupright,atthedoorofthevastshedinwhichhehadforsomanyyearssuperintendedthepowerfulmachinesoftheshaft.SimonFord,theforemanoftheDochartpit,thenfifty-fiveyearsofage,andothermanagersandoverseers,surroundedhim.JamesStarrtookoffhishat.Theminers,capinhand,keptaprofoundsilence.Thisfarewellscenewasofatouchingcharacter,notwantingingrandeur."Myfriends,"saidtheengineer,"thetimehascomeforustoseparate.TheAberfoylemines,whichforsomanyyearshaveunitedusinacommonwork,arenowexhausted.Allourresearcheshavenotledtothediscoveryofanewvein,andthelastblockofcoalhasjustbeenextractedfromtheDochartpit."Andinconfirmationofhiswords,JamesStarrpointedtoalumpofcoalwhichhadbeenkeptatthebottomofabasket."Thispieceofcoal,myfriends,"resumedJamesStarr,"islikethelastdropofbloodwhichhasflowedthroughtheveinsofthemine!Weshallkeepit,asthefirstfragmentofcoaliskept,whichwasextractedahundredandfiftyyearsagofromthebearingsofAberfoyle.Betweenthesetwopieces,howmanygenerationsofworkmenhavesucceededeachotherinourpits!Now,itisover!Thelastwordswhichyourengineerwilladdresstoyouareafarewell.Youhavelivedinthismine,whichyourhandshaveemptied.Theworkhasbeenhard,butnotwithoutprofitforyou.Ourgreatfamilymustrentpitscameforwardtoshakehandswithhim,whilsttheminerswavedtheircaps,shouting,"Farewell,JamesStarr,ourmasterandourfriend!"Thisfarewellwouldleavealastingremembranceinallthesehonesthearts.Slowlyandsadlythepopulationquittedtheyard.TheblacksoiloftheroadsleadingtotheDochartpitresoundedforthelasttimetothetreadofminers'feet,andsilencesucceededtothebustlinglifewhichhadtillthenfilledtheAberfoylemines.OnemanaloneremainedbyJamesStarr.Thiswastheoverman,SimonFord.Nearhimstoodaboy,aboutfifteenyearsofage,whoforsomeyearsalreadyhadbeenemployeddownbelow.JamesStarrandSimonFordknewandesteemedeachotherwell."Good-by,Simon,"saidtheengineer."Good-by,Mr.Starr,"repliedtheoverman,"letmeadd,tillwemeetagain!"Billbecamerich.Hehadtwochildren,BarbaraandRobert.Intime,hisdaughterBarbaramarriedanotheroptometrist.,andBillysethimupinbusiness.Billy'ssonRoberthadalotoftroubleinhighschool,butthenhejoinedthefamousGreenBerets.Hestraightenedout,becameafineYoungman,andhefoughtinVietnam.Earlyin1968,agroupofoptometrists,withBillyamongthem,charteredanairplanetoflythemfromIliumtoaninternationalconventionofoptometristsinMontreal.TheplanecrashedontopofSugarbushMountain,inVermont.EverybodywaskilledbutBilly.Soitgoes.WhileBillywasrecuperatinginahospitalinVermont,hiswifediedaccidentallyofcarbon-monoxidepoisoning.Soitgoes.WhenBillyfinallygothometoIliumaftertheairplanecrash,hewasquietforawhile.HehadaterriblescaracrossthetopOfhisskull.Hedidn'tresumepractice.Hehadahousekeeper.Hisdaughtercameoveralmosteveryday.Andthen,withoutanywarning,BillywenttoNewYorkCity,andgotonanall-nightradioprogramdevotedtotalk.Hetoldabouthavingcomeunstuckintime.Hesaid,too,thathehadbeenkidnappedbyaflyingsaucerin1967.ThesaucerwasfromtheplanetTralfamadore,hesaid.HewastakentoTralfamadore,wherehewasdisplayednakedinazoo,hesaid.HewasmatedtherewithaformerEarthlingmoviestarnamedMontanaWildhack.SomenightowlsinIliumheardBillyontheradio,andoneofthemcalledBilly'sdaughterBarbara.Barbarawasupset.SheandherhusbandwentdowntoNewYorkandbroughtBillyhome.Billyinsistedmildlythateverythinghehadsaidontheradiowastrue.HesaidhehadbeenkidnappedbytheTralfamadoriansonthenightofhisdaughter'swedding.Hehadn'tbeenmissed,hesaid,becausetheTralfamadorianshadtakenhimthroughatimewarp,sothathecouldbeonTralfamadoreforyears,andstillbeawayfromEarthforonlyamicrosecond.Anothermonthwentbywithoutincident,andthenBillywrotealettertotheIliumNewsLeader,whichthepaperpublished.ItdescribedthecreaturesfromTralfamadore.Thelettersaidthattheyweretwofeethigh,andgreen.,andshapedlikeplumber'sfriends.Theirsuctioncupswereontheground,andtheirshafts,whichwereextremelyflexible,usuallypointedtothesky.Atthetopofeachshaftwasalittlehandwithagreeneyeinitspalm.Thecreatureswerefriendly,andtheycouldseeinfourdimensions.TheypitiedEarthlingsforbeingabletoseeonly
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度景區(qū)景點精細化保潔服務協(xié)議
- 二零二五年度二手車轉讓及過戶手續(xù)協(xié)議
- 二零二五年度新型小區(qū)門衛(wèi)管理及應急預案合同
- 2025年度綠色節(jié)能庫房租賃合同
- 2025年度高新技術企業(yè)員工勞動合同解除終止協(xié)議書
- 2025年度物業(yè)服務合同主體變更協(xié)議范本
- 二零二五年度大數(shù)據(jù)服務股權投資與轉讓協(xié)議
- 二零二五年度冷凍庫租賃及冷鏈物流配送中心建設合同
- 二零二五年度離婚協(xié)議中財產(chǎn)分割執(zhí)行監(jiān)督補充協(xié)議
- 蘇武牧羊傳紅色故事觀后感
- 柴油機維修施工方案
- 根管治療病例分享
- 數(shù)學課后訓練:正態(tài)分布
- DB5115-T 129-2024《油樟優(yōu)樹選擇技術規(guī)程》
- (完整版)西泠印社出版社三年級下冊《書法練習指導》完整教案
- 《電工儀表與測量》課程教學大綱
- 【企業(yè)盈利能力探析的國內(nèi)外文獻綜述2400字】
- 危急值的考試題及答案
- 食品安全制度目錄
- 新犯罪學完整版課件電子教案
- 2025新高考方案一輪物理參考答案與詳解
評論
0/150
提交評論