




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
摘要隨著我國經(jīng)濟發(fā)展,計算機以及計算機網(wǎng)絡(luò)的應(yīng)用也日益凸顯出其舉足輕重的地位,而留言系統(tǒng)的開發(fā)也成為必不可少的需求。留言系統(tǒng)屬于信息采集和管理系統(tǒng)。其開發(fā)的主要功能包括:在主頁面提示部分信息,使訪問者可以看到最近時間段內(nèi)的留言;訪問者可以訪問自己感興趣的留言內(nèi)容;訪問者可以在寫下自己的留言,可以給網(wǎng)站提出建議,發(fā)表自己的看法;設(shè)置管理員,管理員通過身份認證可以對所有留言進行管理,包括刪除,回復(fù)等。這種系統(tǒng)實現(xiàn)在線的查看,查找,管理,留言操作,功能強大,方便跨地域操作,擴展能力良好。基于利用計算機網(wǎng)絡(luò)的巨大潛力、數(shù)據(jù)信息的理念,從而減少人力、物力及財力上的消耗,完成合理的分配資源。ABSTRACTAsChina'seconomicdevelopment,theapplicationofcomputersandcomputernetworksarealsoincreasinglyhighlighteditspivotalposition,whilethemessagesystemdevelopmenthasbecomeanessentialneeds.Messagesystemsareinformationcollectionandmanagementsystems.
Thedevelopmentofitsmainfunctionsinclude:
Promptedsomeoftheinformationinthemainpage,sothatvisitorscanseetherecenttimeperiodofthemessage;
Visitorscanaccessyourinterestedmessagecontent;
Visitorscanwritetheirownmessage,youcanmakerecommendationstothesitetoexpresstheirviews;
Setupanadministrator,theadministratorthroughallmessageauthenticationcanbemanaged,includingdelete,replyandsoon.
Toachievesuchasystemonlinetoview,find,manage,messageoperations,powerful,convenientcross-boundaryoperations,goodscalability.Basedonthegreatpotentialofusingcomputernetworks,data,information,ideas,thusreducingmanpower,materialandfinancialresourcesconsumption,thecompletionofareasonableallocationofresources.目錄摘要 IABSTRACT II1緒論1.1課題的提出、現(xiàn)狀及研究意義1.2課題的研究內(nèi)容1.3論文的章節(jié)安排2相關(guān)技術(shù)介紹2.1XML簡介2.2ASP.NET簡介2.3Web服務(wù)簡介3系統(tǒng)需求分析3.1系統(tǒng)可行性分析3.2系統(tǒng)需求分析3.3系統(tǒng)數(shù)據(jù)流圖3.4系統(tǒng)數(shù)據(jù)字典4系統(tǒng)設(shè)計4.1系統(tǒng)總體結(jié)構(gòu)4.2系統(tǒng)詳細設(shè)計4.2.1普通用戶模塊詳細設(shè)計4.2.2管理員模塊詳細設(shè)計4.3數(shù)據(jù)庫設(shè)計4.3.1概念設(shè)計4.3.2邏輯設(shè)計4.3.3視圖設(shè)計5系統(tǒng)實現(xiàn)5.1系統(tǒng)數(shù)據(jù)庫連接實現(xiàn)5.2系統(tǒng)前臺頁面的實現(xiàn)5.2.1用戶控件5.2.2留言系統(tǒng)首頁5.2.3留言頁面5.3普通用戶功能模塊實現(xiàn)5.3.1登錄實現(xiàn)5.3.2提示部分信息(可以深入了解用戶感興趣的內(nèi)容)5.3.3用戶留言的實現(xiàn)5.4管理員功能模塊實現(xiàn)5.4.1管理員登錄實現(xiàn)5.4.2登錄的驗證實現(xiàn)5.4.3回復(fù)留言的實現(xiàn)5.4.4刪除留言的實現(xiàn)5.4.5設(shè)置系統(tǒng)配置信息6結(jié)束語6.1主要研究工作6.2進一步研究的方向致謝致謝 44參考文獻 451緒論1.1課題的提出、現(xiàn)狀及研究意義課題的準備背景意義:隨著我國經(jīng)濟發(fā)展,計算機以及計算機網(wǎng)絡(luò)的應(yīng)用也日益凸顯出其舉足輕重的地位,而留言系統(tǒng)的開發(fā)也成為必不可少的需求。留言系統(tǒng)屬于信息采集和管理系統(tǒng)。其開發(fā)的主要功能包括:在主頁面提示部分信息,使訪問者可以看到最近時間段內(nèi)的留言;訪問者可以訪問自己感興趣的留言內(nèi)容;訪問者可以在寫下自己的留言,可以給網(wǎng)站提出建議,發(fā)表自己的看法;設(shè)置管理員,管理員通過身份認證可以對所有留言進行管理,包括刪除,回復(fù)等。這種系統(tǒng)實現(xiàn)在線的查看,查找,管理,留言操作,功能強大,方便跨地域操作,擴展能力良好?;诶糜嬎銠C網(wǎng)絡(luò)的巨大潛力、數(shù)據(jù)信息的理念,從而減少人力、物力及財力上的消耗,完成合理的分配資源。課題的基本思路:本課題是設(shè)計一個基于.net的留言系統(tǒng)。該系統(tǒng)主要實現(xiàn)在線留言,并對部分留言內(nèi)容更進一步的訪問以及管理操作。采用技術(shù)方法:Microsoft.NET是一組能夠建立良好的,企業(yè)級的web服務(wù)的產(chǎn)品。Microsoft.NET是一個產(chǎn)品策略。Microsoft.NET允許創(chuàng)建真正意義上的分布式“Web服務(wù)”,從而將各種服務(wù)集中起來并使之相輔相成地為用戶服務(wù)。以軟件工程思想為指導(dǎo)從需求分析,概要設(shè)計,詳細設(shè)計,測試計劃,測試用例以及實施各階段的主要內(nèi)容和成果,包括系統(tǒng)結(jié)構(gòu)圖、業(yè)務(wù)流程圖、數(shù)據(jù)流程圖、功能模塊算法流程、界面設(shè)計并參考大量圖書,電子文檔等等。將采用Web服務(wù)和ASP.NET語言編寫,完成設(shè)計。使用Web服務(wù)技術(shù)會簡化和方便Internet應(yīng)用的開發(fā)和使用,實現(xiàn)真正的網(wǎng)上留言處理與管理。1.2課題的研究內(nèi)容該選題需要了解留言信息管理信息方面的知識。因此要求掌握ASP.NET和WEB服務(wù)等計算機專業(yè)知識。Web服務(wù)的留言系統(tǒng)設(shè)計與實現(xiàn)是將留言信息管理和計算機網(wǎng)絡(luò)功能結(jié)合起來的一種新型系統(tǒng),是當前新技術(shù)革命中一個非?;钴S和具有很強生命力的技術(shù)應(yīng)用領(lǐng)域,是信息化社會的產(chǎn)物。因此該系統(tǒng)的開發(fā)有一定的可行性,適應(yīng)發(fā)展和信息的查詢。1.3論文的章節(jié)安排整篇論文是基于Web服務(wù)為背景,從Web服務(wù)的知識、體系結(jié)構(gòu)等方面,介紹Web服務(wù)的留言板系統(tǒng)設(shè)計與實現(xiàn)。具體章節(jié)安排如下:第一章緒論闡明了論文課題的提出及其意義,以及本課題研究內(nèi)容。第二章主要介紹了研究本課題的相關(guān)技術(shù)和個性技術(shù)的特征、功能和應(yīng)用領(lǐng)域。第三章介紹系統(tǒng)的需求分析,并重點分析了系統(tǒng)功能需求分析以及系統(tǒng)的數(shù)據(jù)流圖等。第四章介紹系統(tǒng)設(shè)計,并對系統(tǒng)的數(shù)據(jù)庫設(shè)計進行的重點分析。第五章進行系統(tǒng)實現(xiàn)設(shè)計的分析,包括界面分析和代碼說明。第六章是結(jié)束語??偨Y(jié)論文所做的主要工作及取得的研究成果;并對系統(tǒng)和Web服務(wù)下一步要做的工作進行了分析。2相關(guān)技術(shù)介紹2.1XML簡介XML(ExtensibleMarkupLanguage)即可擴展標記語言,它與HTML一樣,都是SGML(StandardGeneralizedMarkupLanguage,標準通用標記語言)。Xml是Internet環(huán)境中跨平臺的,依賴于內(nèi)容的技術(shù),是當前處理結(jié)構(gòu)化文檔信息的有力工具。擴展標記語言XML是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標記描述數(shù)據(jù),而這些標記可以用方便的方式建立,雖然XML占用的空間比二進制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用。XML是從1996年開始有其雛形,并向W3C(全球信息網(wǎng)聯(lián)盟)提案,而在1998二月發(fā)布為W3C的標準(XML1.0)。XML的前身是SGML(TheStandardGeneralizedMarkupLanguage),是自IBM從60年代就開始發(fā)展的GML(GeneralizedMarkupLanguage)標準化后的名稱。Xml的作用主要歸納為:豐富文件(RichDocuments)-自定文件描述并使其更豐富屬于文件為主的XML技術(shù)應(yīng)用標記是用來定義一塊數(shù)據(jù)應(yīng)該如何呈現(xiàn)解釋數(shù)據(jù)(Metadata)-描述其它文件或在線信息屬于數(shù)據(jù)為主的XML技術(shù)應(yīng)用標記是用來說明一塊資料的意義組態(tài)檔案(ConfigurationFiles)-描述軟件的組態(tài)參數(shù)2.2ASP.NET簡介ASP是一項微軟公司的技術(shù),是一種使嵌入網(wǎng)頁中的腳本可由因特網(wǎng)服務(wù)器執(zhí)行的服務(wù)器端腳本技術(shù)。指ActiveServerPages(動態(tài)服務(wù)器頁面),運行于IIS之中的程序。ASP.net是把基于通用語言的程序在服務(wù)器上運行。不像以前的ASP即時解釋程序,而是將程序在服務(wù)器端首次運行時進行編譯,這樣的執(zhí)行效果,當然比一條一條的解釋強很多。ASP.net構(gòu)架是可以用Microsoft(R)公司最新的產(chǎn)品VisualS開發(fā)環(huán)境進行開發(fā),WYSIWYG(WhatYouSeeIsWhatYouGet所見即為所得)的編輯。這些僅是ASP.net強大化軟件支持的一小部分。因為ASP.net是基于通用語言的編譯運行的程序,所以它的強大性和適應(yīng)性,可以使它運行在Web應(yīng)用軟件開發(fā)者的幾乎全部的平臺上(筆者到現(xiàn)在為止只知道它只能用在Windows2000Server上)。通用語言的基本庫,消息機制,數(shù)據(jù)接口的處理都能無縫的整合到ASP.net的Web應(yīng)用中。ASP.net同時也是language-independent語言獨立化的,所以,你可以選擇一種最適合你的語言來編寫你的程序,或者把你的程序用很多種語言來寫,現(xiàn)在已經(jīng)支持的有C#(C++和Java的結(jié)合體),VB,Jscript。將來,這樣的多種程序語言協(xié)同工作的能力保護您現(xiàn)在的基于COM+開發(fā)的程序,能夠完整的移植向ASP.net。ASP.NET一般分為兩種開發(fā)語言,VB.NET和C#,C#相對比較常用,因為是.NET獨有的語言,VB.NET則為以前VB程序設(shè)計,適合于以前VB程序員,如果新接觸.NET,沒有其他開發(fā)語言經(jīng)驗,建議直接學(xué)習(xí)C#。2.3Web服務(wù)簡介Web服務(wù)(WebService)是基于XML和HTTPS的一種服務(wù),其通信協(xié)議主要基于SOAP,服務(wù)的描述通過WSDL,通過UDDI來發(fā)現(xiàn)和獲得服務(wù)的元數(shù)據(jù)。Web服務(wù)是一種新的重要的應(yīng)用程序。Web服務(wù)是一段可以用XML發(fā)現(xiàn)、描述和訪問的代碼。在這一領(lǐng)域有許多活動,但有三種主要的用于Web服務(wù)的XML標準:SOAP:最初是簡單對象訪問協(xié)議(SimpleObjectAccessProtocol),SOAP定義一個XML文檔格式,該格式描述如何調(diào)用一段遠程代碼的方法。我的應(yīng)用程序創(chuàng)建一個描述我希望調(diào)用的方法的XML文檔,并傳遞給它所有必需的參數(shù),然后應(yīng)用程序通過網(wǎng)絡(luò)將該XML文檔發(fā)送給那段代碼。代碼接收XML文檔、解釋它、調(diào)用我請求的方法,然后發(fā)回一個描述結(jié)果的XML文檔。SOAP規(guī)范版本1.1位于/TR/SOAP/。請訪問/TR/以了解W3C中SOAP相關(guān)的所有活動。WSDL:Web服務(wù)描述語言(WebServicesDescriptionLanguage)是一個描述Web服務(wù)的XML詞匯表。編寫一段接收WSDL文檔然后調(diào)用其以前從未用過的Web服務(wù)的代碼,這是可能的。WSDL文件中的信息定義Web服務(wù)的名稱、它的方法的名稱、這些方法的參數(shù)和其它詳細信息。您可以在/TR/wsdl(結(jié)尾沒有斜杠符號)找到最新的WSDL規(guī)范。UDDI:統(tǒng)一描述、發(fā)現(xiàn)和集成(UniversalDescription,Discovery,andIntegration)協(xié)議向Web服務(wù)注冊中心定義SOAP接口。如果您有一段代碼希望作為Web服務(wù)部署,UDDI規(guī)范定義如何將您的服務(wù)描述添加至注冊中心。如果您在尋找一段提供某種功能的代碼,UDDI規(guī)范定義如何查詢注冊中心以找到您想要的信息。有關(guān)UDDI的所有資料來源都可以在找到。3系統(tǒng)需求分析3.1系統(tǒng)可行性分析系統(tǒng)的可行性分析主要是技術(shù)可行性,經(jīng)濟可行性,操作可行性。技術(shù)條件可行性:Internet的發(fā)展給我們的教育更加現(xiàn)代化,幾乎所有的網(wǎng)站都使用到了留言內(nèi)容,用它來記錄訪問用戶對網(wǎng)站的建議,以幫助網(wǎng)站更好的發(fā)展。目前在呈幾何增長的因特網(wǎng)網(wǎng)站中,有相當一部分仍然固守“靜態(tài)”,這無形中已經(jīng)大大落后與時代的步伐。當用戶瀏覽器通過因特網(wǎng)向web服務(wù)器請求提供網(wǎng)頁內(nèi)容時,服務(wù)器僅僅是標準的HTML代碼,最多再加上流行的動態(tài)圖片,產(chǎn)生簡單的動畫效果。如果網(wǎng)站維護者需要更新網(wǎng)頁的內(nèi)容時,就必須手動更新所有相關(guān)的HTML文檔。為了不斷更新網(wǎng)頁內(nèi)容,必須不斷重復(fù)制作HTML文檔,隨著網(wǎng)站內(nèi)容和信息量的日益擴增,這個工作量將變的及其龐大。而如今很多網(wǎng)站都屬于動態(tài)網(wǎng)站,其具有較強的交互性,能夠根據(jù)用戶的要求和選擇做出動態(tài)改變;能夠自動更新,即不需要手動更新HTML文檔,便會自動生成新的頁面,這樣大大節(jié)省了工作量;因人因時而變,即當不同的時間,不同的人訪問同一個網(wǎng)址時會產(chǎn)生不同的頁面。經(jīng)濟條件可行性:幾乎所有網(wǎng)站都有留言板塊,用它來記錄訪問用戶對網(wǎng)站的建議,以幫助網(wǎng)站更好的發(fā)展??傮w而言,留言系統(tǒng)首頁是一個留言窗口,所以要給訪問者一個清晰完整的概念,給出基本的提示信息。這種系統(tǒng)實現(xiàn)在線的查看,查找,管理,留言操作,功能強大,方便跨地域操作,擴展能力良好。基于利用計算機網(wǎng)絡(luò)的巨大潛力、數(shù)據(jù)信息的理念,從而減少人力、物力及財力上的消耗,完成合理的分配資源。在系統(tǒng)分析和設(shè)計階段,所需要的投入主要是系統(tǒng)和程序的開發(fā)費用,它包括軟件的移植費用、程序開發(fā)費用、技術(shù)咨詢費用。在系統(tǒng)的實施階段,主要包括系統(tǒng)調(diào)試安裝費用,其中包括安裝調(diào)試軟件的一切硬件和軟件費用。系統(tǒng)安裝需要一定的磨合期,因此需要一定的人員咨詢費用。在系統(tǒng)運行階段所需要的費用主要有培訓(xùn)費、資料費、人員工資、消耗品費用、技術(shù)服務(wù)性費用。培訓(xùn)費包括與系統(tǒng)有關(guān)的一切人員的技術(shù)培訓(xùn)和業(yè)務(wù)咨詢費用等。在系統(tǒng)實施后,需要對用戶進行培訓(xùn),使其熟練掌握該系統(tǒng)的使用,并培訓(xùn)系統(tǒng)的維護人員。操作可行性留言系統(tǒng)采用Browser/Server(B/S)結(jié)構(gòu)模式來設(shè)計,Microsoft.NET解決方案,是目前比較流行的B/S架構(gòu)模式的解決方案,技術(shù)成熟,以此方案開發(fā)的應(yīng)用系統(tǒng)具有開發(fā)周期短,運行穩(wěn)定,維護簡便,投資少等優(yōu)點。Microsoft.NET應(yīng)用系統(tǒng)具有界面簡潔友好,操作簡單等特點。只需簡單的計算機基礎(chǔ)知識便可充分利用本系統(tǒng)完成畢業(yè)設(shè)計工作。3.2系統(tǒng)需求分析該選題以軟件工程思想為指導(dǎo)從需求分析,概要設(shè)計,詳細設(shè)計,測試計劃,測試用例以及實施各階段的主要內(nèi)容和成果,包括系統(tǒng)結(jié)構(gòu)圖、業(yè)務(wù)流程圖、數(shù)據(jù)流程圖、功能模塊算法流程、界面設(shè)計并參考大量圖書,電子文檔等等。目前在呈幾何增長的因特網(wǎng)網(wǎng)站中,有相當一部分仍然固守“靜態(tài)”,這無形中已經(jīng)大大落后與時代的步伐。當用戶瀏覽器通過因特網(wǎng)向web服務(wù)器請求提供網(wǎng)頁內(nèi)容時,服務(wù)器僅僅是標準的HTML代碼,最多再加上流行的動態(tài)圖片,產(chǎn)生簡單的動畫效果。如果網(wǎng)站維護者需要更新網(wǎng)頁的內(nèi)容時,就必須手動更新所有相關(guān)的HTML文檔。為了不斷更新網(wǎng)頁內(nèi)容,必須不斷重復(fù)制作HTML文檔,隨著網(wǎng)站內(nèi)容和信息量的日益擴增,這個工作量將變的及其龐大。而如今很多網(wǎng)站都屬于動態(tài)網(wǎng)站,其具有較強的交互性,能夠根據(jù)用戶的要求和選擇做出動態(tài)改變;能夠自動更新,即不需要手動更新HTML文檔,便會自動生成新的頁面,這樣大大節(jié)省了工作量;因人因時而變,即當不同的時間,不同的人訪問同一個網(wǎng)址時會產(chǎn)生不同的頁面。該選題以軟件工程思想為指導(dǎo)從需求分析,概要設(shè)計,詳細設(shè)計,測試計劃,測試用例以及實施各階段的主要內(nèi)容和成果,包括系統(tǒng)結(jié)構(gòu)圖、業(yè)務(wù)流程圖、數(shù)據(jù)流程圖、功能模塊算法流程、界面設(shè)計并參考大量圖書,電子文檔等等。將采用Web服務(wù)和ASP.NET語言編寫,完成設(shè)計。使用Web服務(wù)技術(shù)會簡化和方便Internet應(yīng)用的開發(fā)和使用,實現(xiàn)真正的網(wǎng)上留言處理與管理。3.3系統(tǒng)數(shù)據(jù)流圖4系統(tǒng)設(shè)計4.1系統(tǒng)總體結(jié)構(gòu)4.2系統(tǒng)詳細設(shè)計4.2.1普通用戶模塊詳細設(shè)計4.2.2管理員模塊詳細設(shè)計管理員登錄后,包括了系統(tǒng)的大部分管理。其中包括了留言刪除管理,留言修改管理,回復(fù)留言信息等等。留言刪除管理,如圖所示:留言修改管理,如圖所示:回復(fù)留言信息,如圖所示:4.3數(shù)據(jù)庫設(shè)計4.3.1概念設(shè)計根據(jù)系統(tǒng)功能的要求,在線留言系統(tǒng)可以分為兩大模塊:留言系統(tǒng)基本功能模塊,管理功能模塊。4.3.2邏輯設(shè)計根據(jù)系統(tǒng)功能設(shè)計的要求以及功能模塊的劃分,下面列出留言系統(tǒng)的各個組成部分的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)。對于留言系統(tǒng)基本功能模塊,可以列出以下數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu):留言信息:標題,內(nèi)容,作者,性別,主頁,信箱,QQ,IP,回復(fù),時間,頭像IP地址表:ip1,ip2,國家,城市對于留言系統(tǒng)管理功能模塊,它操作的數(shù)據(jù)較多,所以分為不同功能來給出表格:回復(fù)功能:留言信息表刪除功能:留言信息表登錄功能:web.config文件設(shè)置站點功能:web.config文件設(shè)置CSS功能:CSS文件根據(jù)數(shù)據(jù)庫需求分析,建立以下的表4.3.3視圖設(shè)計根據(jù)數(shù)據(jù)庫需求分析,建立以下的表5系統(tǒng)實現(xiàn)5系統(tǒng)實現(xiàn)5.1系統(tǒng)數(shù)據(jù)庫連接實現(xiàn)數(shù)據(jù)庫連接實現(xiàn)主要由以下代碼來實現(xiàn):DimconnAsOleDbConnection,comdAsOleDbCommandconn=NewOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(ConfigurationSettings.AppSettings("數(shù)據(jù)庫")))comd=NewOleDbCommand("Insertinto留言(標題,作者,內(nèi)容,性別,主頁,信箱,QQ,IP,頭像)Values(@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9)",conn)5.2系統(tǒng)前臺頁面的實現(xiàn)5.2.1用戶控件用戶控件是ASP.NET中一個非常重要的概念,它可以極大的提高代碼重用,減少量。留言系統(tǒng)主要使用了3個控件,分別是系統(tǒng)信息控件,公告欄控件和底部版權(quán)控件提示信息控件。功能選擇控件位于頁面的左側(cè),實際上就是一個功能選擇頁面,主要由以下代碼來實現(xiàn):<%@ControlLanguage="vb"Debug="true"AutoEventWireup="false"%><%@ImportNamespace="System.Data"%><%Dimhomepageasstring,logasstring,emailasstringhomepage=ConfigurationSettings.appSettings("首頁地址")IFSession("name")=""THEN log="管理員登錄"ELSE log="管理員退出"ENDIFemail=ConfigurationSettings.appSettings("信箱")%><TABLEid="Table1"cellSpacing="0"cellPadding="0"width="168"border="0"> <TR> <TD><IMGsrc="images\bar8.JPG"></TD> </TR> <TR> <TDstyle="PADDING-RIGHT:4px;BACKGROUND-POSITION:centertop;PADDING-LEFT:4px;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar9.JPG);PADDING-BOTTOM:4px;PADDING-TOP:4px;BACKGROUND-REPEAT:repeat-y"> <IMGheight="15"src="images\homepage.gif"><atitle="返回站點首頁"href="<%=homepage%>">首頁</a><BR> <IMGsrc="images\write.gif"width="15"><Atitle="簽寫新的留言"href="write.aspx">留言</A><BR> <IMGheight="15"src="images\log.gif"width="15"> <Atitle="<%=log%>"href="log.aspx"><%=log%></A> <br> <IMGheight="15"src="images\system.gif"width="15"> <% IFSession("name")<>""THEN Response.write("<ahref=setup.aspxtitle=系統(tǒng)環(huán)境變量設(shè)置>系統(tǒng)環(huán)境設(shè)置</a>") ELSE Response.write("系統(tǒng)環(huán)境設(shè)置") ENDIF %> <br> <IMGheight="15"src="images\css.gif"width="15"> <% IFSession("name")<>""THEN Response.write("<ahref=css.aspxtitle=在線修改CSS樣式表>CSS樣式設(shè)置</a>") ELSE Response.write("CSS樣式設(shè)置") ENDIF DimdsAsDataSet,iAsInteger ds=NewDataSet Try ds.ReadXml(Server.MapPath("list.xml")) Fori=0Tods.Tables(0).Rows.Count-1 Response.write("<br><IMGheight=15src="+ds.Tables(0).Rows(i)(0)+"width=15> ") Response.write("<ahref="+ds.Tables(0).Rows(i)(2)+"title="+ds.Tables(0).Rows(i)(3)+">"+ds.Tables(0).Rows(i)(1)+"</a>") Next Catch EndTry ds.Reset() %> </TD> </TR> <TR> <TDheight="20"></TD> </TR> <TR> <TDstyle="HEIGHT:18px"><IMGalt=""src="images\bar10.JPG"align="absMiddle"></TD> </TR> <TR> <TDstyle="PADDING-RIGHT:4px;BACKGROUND-POSITION:centertop;PADDING-LEFT:4px;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar9.JPG);PADDING-BOTTOM:4px;PADDING-TOP:4px;BACKGROUND-REPEAT:repeat-y"> <P><IMGsrc="images\info.gif"> 留言簿信息<BR> <BR> <%ds.ReadXml(Server.MapPath("data/count.xml"))Response.write(" 今日留言:"+ds.Tables(0).Rows(0)(0)+"<br>")Response.write(" 今日來賓:"+ds.Tables(0).Rows(0)(1)+"<br>")Response.write(" 留言總數(shù):"+ds.Tables(0).Rows(0)(2)+"<br>")Response.write(" 來賓總數(shù):"+ds.Tables(0).Rows(0)(3)+"<br>")ds.Clear()ds.Dispose() %> <BR> <IMGsrc="images\user.gif"> 站長:<%=ConfigurationSettings.appSettings("站長")%><BR> <IMGsrc="images\email.gif"> 信箱:<ahref="mailto:<%=email%>"title="信箱地址:<%=email%>"><%=email%></a></P> </TD> </TR></TABLE>通過以上代碼的實現(xiàn),給出對應(yīng)的實現(xiàn)界面:公告欄用戶控件位于頁面的上方,實際上是個一段不斷移動的文本,這段文本是從web.config文件中讀取的,所以可以隨時修改這段文本,主要由以下代碼來實現(xiàn):<%@ControlLanguage="vb"AutoEventWireup="false"%><FONTface="宋體"> <TABLEid="Table1"cellSpacing="1"cellPadding="1"width="100%"align="center"border="0"> <TR> <TDalign="middle"> <IMGsrc="images\bar8.gif"width="100%"height="2"><IMGsrc="images\announce.gif"align="absMiddle"><STRONG>公告欄:</STRONG><marqueewidth="624"scrollamount="3"><%=ConfigurationSettings.AppSettings("公告欄")%></marquee> <IMGsrc="images\bar8.gif"width="100%"height="2"style="MARGIN-TOP:-10px"> </TD> </TR> </TABLE></FONT>通過以上代碼的實現(xiàn),給出對應(yīng)的實現(xiàn)界面:底部空間是留言系統(tǒng)的低端嵌入控件,它的功能是顯示留言系統(tǒng)的版權(quán)和其他的信息,所以代碼比較簡單,主要由以下代碼來實現(xiàn):<%@ControlLanguage="vb"AutoEventWireup="false"%><TABLEid="Table1"cellSpacing="1"cellPadding="1"width="100%"border="0"><TR> <TDalign="middle"> <IMGalt=""src="images\bar8.gif"width="100%"height="2"style="MARGIN-BOTTOM:5px">占勝留言簿版權(quán)所有 </TD></TR></TABLE>通過以上代碼的實現(xiàn),給出對應(yīng)的實現(xiàn)界面:5.2.2留言系統(tǒng)首頁留言系統(tǒng)首頁頁面是用戶登錄系統(tǒng)后首先接觸到的所以包括了所有用戶能夠使用的信息,這個頁面主要包括以下幾個部分:(1)左側(cè)的功能提示信息(2)關(guān)于留言系統(tǒng)的統(tǒng)計信息(3)最近的留言,分頁顯示(4)公告欄(5)版權(quán)提示主要由以下代碼來實現(xiàn):<%@PageLanguage="vb"AutoEventWireup="false"Debug="false"%><%@RegisterTagPrefix="uc1"TagName="notice"Src="notice.ascx"%><%@RegisterTagPrefix="uc1"TagName="sysInfo"Src="sysInfo.ascx"%><%@RegisterTagPrefix="uc1"TagName="copy"Src="copy.ascx"%><%@Importnamespace="system.data"%><%@Importnamespace="system.data.oledb"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML> <HEAD> <title> <%=ConfigurationSettings.appSettings("留言簿名稱")%> </title> <Scriptlanguage="vb"runat="server">PrivateFunctionAddress(ByValIPAsString)IfIsNumeric(Left(IP,2))=TrueThenDimconnAsOleDbConnection,comdAsOleDbCommand,drAsOleDbDataReaderDimstr1AsString,str2AsString,str3AsString,str4AsString,numAslongIfIP=""ThenIP=""IFLeft(IP,8)="192.168."THEN Address="內(nèi)部局域網(wǎng)" EXITFunctionENDIFstr1=Left(IP,InStr(IP,".")-1)IP=Mid(IP,InStr(IP,".")+1)str2=Left(IP,InStr(IP,".")-1)IP=Mid(IP,InStr(IP,".")+1)str3=Left(IP,InStr(IP,".")-1)str4=Mid(IP,InStr(IP,".")+1)IFisNumeric(str1)=FalseorisNumeric(str2)=FalseorisNumeric(str3)=FalseorisNumeric(str4)=FalseTHEN Address="未知" EXITFunctionENDIFnum=Int(str1)*256*256*256+Int(str2)*256*256+Int(str3)*256+Int(str4)-1conn=NewOleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;DataSource="&Server.MapPath(ConfigurationSettings.AppSettings("數(shù)據(jù)庫")))comd=NewOleDbCommand("SelectTop1country,cityFrom鑒定Whereip1<="+num.ToString+"andip2>="+num.ToString,conn)comd.connection.open()dr=comd.ExecuteReaderIfdr.ReadThen DimtemStrasString temStr=dr(0)&dr(1) IFtemStr.Length>17THEN Address="<spantitle="+temStr+">"+Left(temStr,15)+"...</span>" ELSE Address=temStrENDIFElseAddress="亞洲"EndIfdr.Close()comd.connection.close()comd.Dispose()conn.Close()conn.Dispose()ElseAddress="未知"EndIfEndFunctionPrivateSubcount()DimcieAsHttpCookie,newguestAsBoolean=Falsecie=Request.cookies("rwfj")IfcieisnothingThen newguest=True Else Ifcie("name")<>"guest"Thennewguest=True EndIfDimdsAsDataSetds=NewDataSet()ds.ReadXml(Server.MapPath("data/count.xml"))IfDateValue(ds.Tables(0).Rows(0)(4))<>DateValue(Date.Now)Then ds.Tables(0).Rows(0)(0)=0ds.Tables(0).Rows(0)(1)=0EndIfIfnewguest=TrueThencie=NewHttpCookie("rwfj")cie.Values.Add("name","guest")Response.AppendCookie(cie)ds.Tables(0).Rows(0)(1)=CInt(ds.Tables(0).Rows(0)(1))+1ds.Tables(0).Rows(0)(3)=CInt(ds.Tables(0).Rows(0)(3))+1EndIfds.Tables(0).Rows(0)(4)=Date.Nowds.AcceptChanges()ds.WriteXml(Server.MapPath("data/count.xml"))ds.Clear()ds.Dispose()EndSub </Script> <metacontent="MicrosoftVisualStudio.NET7.0"name="GENERATOR"> <metacontent="VisualBasic7.0"name="CODE_LANGUAGE"> <metacontent="JavaScript"name="vs_defaultClientScript"> <metacontent="/intellisense/ie5"name="vs_targetSchema"> <LINKhref="Styles.css"type="text/css"rel="stylesheet"> </HEAD> <body> <formid="Form1"method="post"runat="server"> <%Callcount()Dimcolor1asstring,color2asstring,color3asstring,color4asstring,color5asstringcolor1=ConfigurationSettings.appSettings("標題")color2=ConfigurationSettings.appSettings("時間欄")color3=ConfigurationSettings.appSettings("留言內(nèi)容")color4=ConfigurationSettings.appSettings("回復(fù)內(nèi)容")color5=ConfigurationSettings.appSettings("表格背景")%> <TABLEid="Table1"style="MARGIN-TOP:-15px"cellSpacing="1"cellPadding="1"width="750"align="center"border="0"> <TR> <TDcolSpan="2"><uc1:noticeid="Notice1"runat="server"></uc1:notice></TD> </TR> <TR> <TDvAlign="top"align="middle"width="50%"><uc1:sysinfoid="SysInfo1"runat="server"></uc1:sysinfo></TD> <TDvAlign="top"align="middle"width="50%"> <TABLEid="Table2"cellSpacing="1"cellPadding="1"width="90%"border="0"> <TR> <TD></TD> </TR> <TR> <TDvAlign="top"align="middle"> <%DimiAsInteger,pageAsString,pagesizeAsInteger,nowpageAsInteger,AllRecordAsIntegerDimallpageAsIntegeri=0page=Request.QueryString("page")Ifpage=""OrIsNumeric(page)=FalseThennowpage=1Elsenowpage=Int(page)EndIfpagesize=ConfigurationSettings.AppSettings("每頁留言數(shù)量")DimconnAsOleDbConnection,daAsOleDbDataAdapter,dsAsDataSet,sqlAsStringDimcomdAsOleDbCommand,drAsOleDbDataReadersql="SelectCount(*)From留言"conn=NewOleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;DataSource="&Server.MapPath(ConfigurationSettings.AppSettings("數(shù)據(jù)庫")))comd=NewOleDbCommand(sql,conn)comd.Connection.Open()dr=comd.ExecuteReaderIfdr.ReadThenAllRecord=dr(0)dr.Close()comd.Connection.Close()comd.Dispose()ifallrecord=0THENResponse.write("<TABLEwidth=530border=0><tr><tdalign=centerheight=200>當前還沒有留言</td></tr></table>")elseIfAllRecordModpagesize=0Thenallpage=AllRecord\pagesizeElseallpage=AllRecord\pagesize+1EndIfifnowpage>allpagethennowpage=allpagesql="Select*From留言O(shè)rderBy時間DESC"da=NewOleDbDataAdapter(sql,conn)ds=Newdatasetda.Fill(ds,(now1)*pagesize,pagesize,"ly")Fori=0Tods.Tables(0).Rows.Count-1 DimtemTimeasDate,temStrasString,IPasstring temTime=ds.Tables(0).Rows(i)(10) temStr=Year(temTime).ToString+"年"+Month(temTime).ToString+"月"+Day(temTime).ToString+"日"+Hour(temTime).ToString+"時"+Minute(temTime).ToString+"分" IFUcase(ConfigurationSettings.appSettings("允許查看IP"))="NO"ANDSession("name")<>ConfigurationSettings.appSettings("站長")THEN IP="(已設(shè)置保密)" ELSE IP=ds.Tables(0).Rows(i)(8)+"〖"+Address(ds.Tables(0).Rows(i)(8))+"〗" ENDIF%> <TABLEid=Table3style="MARGIN-BOTTOM:5px"cellSpacing=0cellPadding=1width=530bgColor="<%=color5%>"border=0> <TR> <TDstyle="BACKGROUND-POSITION:centerbottom;FONT-SIZE:10pt;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-IMAGE:url(images\bar11.JPG);BACKGROUND-REPEAT:no-repeat"width="100%"colSpan="3"height="32"> <STRONG><FONTcolor="<%=color1%>"> <%=Cstr((now1)*pagesize+i+1)+"."+ds.Tables(0).Rows(i)(1)%> </FONT></STRONG> </TD> </TR> <TR> <TDstyle="BACKGROUND-POSITION:centertop;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar2.JPG);BACKGROUND-REPEAT:repeat-y"width="3"></TD> <TDstyle="PADDING-LEFT:2px"width="524"> <TABLEid="Table4"style="MARGIN-TOP:-1px;MARGIN-LEFT:-1px"cellSpacing="0"cellPadding="0"width="100%"border="0"> <TR> <TDstyle="BACKGROUND-POSITION:centertop;PADDING-LEFT:2px;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar4.JPG);BACKGROUND-REPEAT:repeat-x"vAlign="top"colSpan="2"height="18"><FONTcolor="<%=color2%>"> 發(fā)表時間:<%=temStr%> IP:<%=IP%></FONT></TD> </TR> <TR> <TDalign="middle"width="116"rowSpan="2"><IMGwidth=90height=90src="face\<%=ds.Tables(0).Rows(i)(11)%>"><BR> <BR> <TABLEid="Table5"cellSpacing="1"cellPadding="1"width="100%"border="0"> <TR> <TDstyle="FILTER:glow(color=#9898BA,strength=3)"align="middle"><FONTcolor="#990000"><FONTsize="2"><%=ds.Tables(0).Rows(i)(3)%></FONT><BR> </FONT>(<%=ds.Tables(0).Rows(i)(4)%>)</TD> </TR> </TABLE> </TD> <TDstyle="PADDING-RIGHT:3px;PADDING-LEFT:3px;PADDING-BOTTOM:3px;PADDING-TOP:3px;HEIGHT:71px"width="408"> <FONTcolor="<%=color3%>"><%=ds.Tables(0).Rows(i)(2)%></FONT> <%IFds.Tables(0).Rows(i)(9).tostring<>""THEN%> <br><FONTcolor="<%=color4%>">站長回復(fù)<BR> <%=ds.Tables(0).Rows(i)(9)%> </FONT> <%ENDIF%> </TD> </TR> <TR> <tdstyle="PADDING-RIGHT:2px;PADDING-LEFT:2px;PADDING-BOTTOM:1px;PADDING-TOP:1px"width="408"><IMGstyle="MARGIN-BOTTOM:3px"height="2"alt=""src="images\bar8.gif"width="350"><BR> <IMGalt=""src="images\homepage.gif"width="15"> <% IFds.Tables(0).Rows(i)(5)<>"(保密)"THEN Response.write("<atitle=瀏覽該留言者的主頁href=") IFLeft(Lcase(ds.Tables(0).Rows(i)(5)),7)<>"http://"THENResponse.write("http://") Response.write(ds.Tables(0).Rows(i)(5)+"target=_blank>主頁</a>") ELSE Response.write("主頁") ENDIF %> <IMGalt=""src="images\qq.gif"width="15"> <% IFds.Tables(0).Rows(i)(7)<>"(保密)"THEN Response.write("<atitle=查看該留言者的QQ信息href=/cgi-bin/friend/user_show_info?ln="+ds.Tables(0).Rows(i)(7)+"target=_blank>QQ</a>") ELSE Response.write("QQ") ENDIF %> <IMGalt=""src="images\email.gif"width="15"> <% IFds.Tables(0).Rows(i)(6)<>"(保密)"THEN Response.write("<atitle=給該留言者發(fā)郵件href=mailto:"+ds.Tables(0).Rows(i)(6)+"target=_blank>信箱</a>") ELSE Response.write("信箱") ENDIF %> <IMGalt=""src="images\write.gif"width="15"> <% IFSession("name")=ConfigurationSettings.appSettings("站長")THEN Response.write("<ahref=reply.aspx?ID="+ds.Tables(0).Rows(i)(0).ToString+"&page="+nowpage.ToString+">回復(fù)</a>") ELSE Response.write("回復(fù)") ENDIF %> <IMGalt=""src="images\del.gif"> <% IFSession("name")=ConfigurationSettings.appSettings("站長")THEN Response.write("<ahref=del.aspx?ID="+ds.Tables(0).Rows(i)(0).ToString+"&page="+nowpage.ToString+">刪除</a>") ELSE Response.write("刪除") ENDIF %> </td> </TR> </TABLE> </TD> <TDstyle="BACKGROUND-POSITION:centertop;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar3.JPG);BACKGROUND-REPEAT:repeat-y"width="3"></TD> </TR> <TR> <TDwidth="3"style="BACKGROUND-POSITION:righttop;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar5.JPG);BACKGROUND-REPEAT:no-repeat"height="8"></TD> <TDwidth="524"style="BACKGROUND-POSITION:centercenter;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar7.JPG);BACKGROUND-REPEAT:repeat-x"height="8"colSpan="1"></TD> <TDwidth="3"style="BACKGROUND-POSITION:righttop;BACKGROUND-ATTACHMENT:fixed;BACKGROUND-IMAGE:url(images\bar6.JPG);BACKGROUND-REPEAT:no-repeat"height="8"></TD> </TR> </TABLE> <% Next ds.clear ds.dispose da.dispose ENDIF conn.dispose%> </TD> </TR> <TR> <TD> <Palign="center"><STRONG>每頁顯示<%=ConfigurationSettings.AppSettings("每頁留言數(shù)量")%>條留言當前頁<%=nowpage%>/<%=allpage%> <% IFnowpage>1THEN Response.write("[<ahref=default.aspx?page=1>第一頁</a>][<ahref=default.aspx?page="+Cstr(now1)+">上一頁</a>]") ELSE Response.write("[第一頁][上一頁]") ENDIF IFnowpage<allpageTHEN Response.write("[<ahref=default.aspx?page="+Cstr(nowpage+1)+">下一頁</a>][<ahref=default.aspx?page="+allpage.ToString+">最后頁</a>]") ELSE Response.write("[下一頁][最后頁]") ENDIF %> </STRONG> </P> </TD> </TR> </TABLE> </TD> </TR> <TR> <TDcolSpan="2"><uc1:copyid="Copy1"runat="server"></uc1:copy></TD> </TR> </TABLE> </form> </body></HTML>通過以上代碼的實現(xiàn),給出對應(yīng)的實現(xiàn)界面。5.2.3留言頁面當用戶需要在網(wǎng)站留下自己的想法時,就需要給他一個留言頁面。而用戶需要在這個頁面提示下填寫許多的內(nèi)容,包括必須的,比如留言主題,名稱和留言地址以及可選填寫的,包括個人主頁,QQ號碼和出生日期,還可以選擇是否顯示IP地址和選擇自己的留言圖標。主要由以下代碼來實現(xiàn):<%@RegisterTagPrefix="uc1"TagName="copy"Src="copy.ascx"%><%@RegisterTagPrefix="uc1"TagName="sysInfo"Src="sysInfo.ascx"%><%@RegisterTagPrefix="uc1"TagName="notice"Src="notice.ascx"%><%@PageLanguage="vb"AutoEventWireup="false"src="write.aspx.vb"Inherits="write"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML> <HEAD> <title> <%=ConfigurationSettings.appSettings("留言簿名稱")+"-簽寫留言"%> </title> <metaname="GENERATOR"content="MicrosoftVisualStudio.NET7.0"> <metaname="CODE_LANGUAGE"content="VisualBasic7.0"> <metaname="vs_defaultClientScript"content="JavaScript"> <metaname="vs_targetSchema"content="/intellisense/ie5"> <LINKhref="Styles.css"type="text/css"rel="stylesheet"> </HEAD> <bodyonload="javascript:Form1.imgshow.src='face/'+Form1.face.value"> <formid="Form1"method="post"runat="server"> <TABLEid="Table1"style="MARGIN-TOP:-15px"cellSpacing="1"cellPadding="1"width="750"align="center"border="0"> <TR> <TDcolSpan="2"><uc1:noticeid="Notice1"runat="server"></uc1:notice></TD> </TR> <TR> <TDvAlign="top"align="middle"width="50%"><uc1:sysinfoid="SysInfo1"runat="server"></uc1:sysinfo></TD> <TDvAlign="top"align="middle"width="50%"> <TABLEid="Table2"cellSpacing="1"cellPadding="1"width="90%"border="0"> <tr> <td> <TABLEid="Table3"style="MARGIN-BOTTOM:5px"cellSpacing="0"cellPadding="1"width="530"bgColor="#e0dfe3"border="0"> <TR> <TDstyle="BACKGROUND-POSITION:centerbottom;FONT-SIZE:10pt;BACKGROUND-ATTACHMENT:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《行業(yè)會計實務(wù)》課件-項目三 3.3臨時設(shè)施的核算
- 重慶市名校聯(lián)盟2024-2025學(xué)年高二下學(xué)期4月第一次聯(lián)合考試化學(xué)試卷(含答案)
- 小兒擴張型心肌病的臨床護理
- 2025贈與合同公證樣本
- 2025倉儲保管合同范本3
- 浙江國企招聘2025寧波大通開發(fā)有限公司招聘6人筆試參考題庫附帶答案詳解
- 2025年股票交易授權(quán)代理合同
- 2025年初級銀行從業(yè)資格之初級個人貸款通關(guān)考試題庫帶答案解析
- 2025年初級經(jīng)濟師之初級建筑與房地產(chǎn)經(jīng)濟綜合檢測試卷B卷含答案
- 發(fā)力新質(zhì)生產(chǎn)力
- 北師大版四年級下冊小數(shù)乘法豎式計算練習(xí)100題及答案
- 2024年湖南省長沙市中考地理試卷真題(含答案解析)
- 《中國健康成年人身體活動能量消耗參考值》(編制說明)
- 食堂大米采購招標文件
- 醫(yī)療美容診所規(guī)章制度上墻
- CJT 216-2013 給水排水用軟密封閘閥
- CJ-T250-2018建筑排水用高密度聚乙烯(HDPE)管材及管件
- 大學(xué)遺傳學(xué)期末考試題庫和答案
- 2024注冊信息安全專業(yè)人員CISP培訓(xùn)講義全集
- 心臟介入術(shù)后穿刺部位并發(fā)癥的預(yù)防及護理講解
- DB64 1996-2024 燃煤電廠大氣污染物排放標準
評論
0/150
提交評論