




已閱讀5頁,還剩16頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
在線投票系統XXX摘要:如今,越來越多的網站開始重視網頁的互動性。而在線投票就是一個非常重要的互動形式。本文以JSP、SQL Server2000為編程工具開發了一種通用網上投票系統,并介紹了系統的調試、運行環境、系統功能、系統設計以及系統實現。關鍵詞:在線投票;JSP;SQL Server2000Abstract: Nowadays, more and more sites starting to focus on interactive web pages. The online voting is a very important forms of interaction. In this paper, JSP, SQL Server2000 as program development of a common online voting system, and introduced the system of commissioning, operating environment, system function, system design and implementation.Keywords: online voting; JSP; SQL Server2000目 錄第一章 概述3第二章 相關知識介紹42.1 Java簡介42.1.1 什么是Java42.1.2 Java主要特性42.2 JSP簡介62.2.1 什么是JSP62.2.2 JSP的運行原理及優點72.2.3 JSP運行環境介紹82.3 SQL Server2000簡介92.3.1 SQL Server概述92.3.2 SQL Server2000特性92.4 JSP與SQL Server2000數據庫的連接10第三章 系統分析123.1 需求分析12第四章 系統設計134.1 總體設計134.2 模塊設計154.2.1 客戶投票模塊154.2.2 管理員模塊164.2.3 數據處理模塊184.3 數據庫設計18第五章 系統開發215.1 客戶投票模塊215.2 管理員模塊275.3 數據處理模塊36第六章 系統實現396.1 系統運行環境396.2 系統測試39【參考文獻】40第一章 概述如今,許許多多的網站設計者們開始意識到,網站的主要作用,除了給廣大網友們提供單項的信息資訊服務外,還應該成為網友們互相交流的場所。于是,他們把越來越多的注意力,集中到網站互動性的設計規劃上。互動的形式,除了我們經常見到的留言板、討論組和聊天室之外,還有一項非常重要的、正在被日益廣泛地采用的互動形式一一在線投票。在線投票和留言板、聊天室相比,其優點在于簡潔、規范、直觀。它不僅能夠給網友們提供互相交流看法、興趣的場所,還可以方便網站設計者們作廣泛的社會調查,進行社會研究或是制定商業策略。我的投票系統具有極大的靈活性,管理員可以在線設計不同的投票主題供用戶進行投票。對于該設計報告還有什么不當之處請見諒,同時也希望您能多提寶貴意見。我會認真參考您的意見,修改和完善該系統。第二章 相關知識介紹該在線投票系統主要采用Java、JSP、SQL Server2000進行設計與開發,下面主要介紹與之相關的知識。2.1 Java簡介2.1.1 什么是Java Java是由Sun公司開發的編程語言,使用它可在各式各樣不同種機器、不同種操作平臺的網絡環境中開發軟件。不論用戶使用的是哪一種WWW測覽囂、哪一種計算機、哪一種操作系統,只要www瀏覽器上面注明了”支持Java”,就可以看到生動的頁面。Java正在逐步成為Intemet應用的扛要開發語言。它徹底改變了應用軟件的開發模式,帶來了自個人計算機以來又一次技術革命,為迅速發展的信息世界增添了新的活力。2.1.2 Java主要特性1、Java語言是簡單的。Java語言的語法與C語言和C+語言很接近,使得大多數程序員很容易學習和使用Java。另一方面,Java丟棄了C+ 中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強制類型轉換。特別地,Java語言不使用指針,并提供了自動的廢料收集,使得程序員不必為內存管理而擔憂。2、Java語言是一個面向對象的。Java語言提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實現機制(關鍵字為implements)。Java語言全面支持動態綁定,而C+ 語言只對虛函數使用動態綁定。總之,Java語言是一個純的面向對象程序設計語言。3、Java語言是分布式的。Java語言支持Internet應用的開發,在基本的Java應用編程接口中有一個網絡應用編程接口(),它提供了用于網絡應用編程的類庫,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(遠程方法激活)機制也是開發分布式應用的重要手段。4、Java語言是健壯的。Java的強類型機制、異常處理、廢料的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。5、Java語言是安全的。Java通常被用在網絡環境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網絡下載的類具有一個安全防范機制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、字節代碼檢查,并提供安全管理機制(類SecurityManager)讓Java應用設置安全哨兵。 6、Java語言是體系結構中立的。Java程序(后綴為java的文件)在Java平臺上被編譯為體系結構中立的字節碼格式(后綴為class的文件), 然后可以在實現這個Java平臺的任何系統中運行。這種途徑適合于異構的網絡環境和軟件的分發。 7、Java語言是可移植的。這種可移植性來源于體系結構中立性,另外,Java還嚴格規定了各個基本數據類型的長度。Java系統本身也具有很強的可移植性,Java編譯器是用Java實現的,Java的運行環境是用ANSI C實現的。8、Java語言是解釋型的。如前所述,Java程序在Java平臺上被編譯為字節碼格式, 然后可以在實現這個Java平臺的任何系統中運行。在運行時,Java平臺中的Java解釋器對這些字節碼進行解釋執行,執行過程中需要的類在聯接階段被載入到運行環境中。9、Java是高性能的。與那些解釋型的高級腳本語言相比,Java的確是高性能的。事實上,Java的運行速度隨著JIT(Just-In-Time)編譯器技術的發展越來越接近于C+。 10、Java語言是多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創建。通常有兩種方法來創建線程:其一,使用型構為Thread(Runnable) 的構造子將一個實現了Runnable接口的對象包裝成一個線程,其二,從Thread類派生出子類并重寫run方法,使用該子類創建的對象即為線程。值得注意的是Thread類已經實現了Runnable接口,因此,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的代碼。線程的活動由一組方法來控制。 Java語言支持多個線程的同時執行,并提供多線程之間的同步機制(關鍵字為synchronized)。11、Java語言是動態的。Java語言的設計目標之一是適應于動態變化的環境。Java程序需要的類能夠動態地被載入到運行環境,也可以通過網絡來載入所需要的類。這也有利于軟件的升級。另外,Java中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。Java語言的優良特性使得Java應用具有無比的健壯性和可靠性,這也減少了應用系統的維護費用。Java對對象技術的全面支持和Java平臺內嵌的API能縮短應用系統的開發時間并降低成本。Java的編譯一次,到處可運行的特性使得它能夠提供一個隨處可用的開放結構和在多平臺之間傳遞信息的低成本方式。特別是Java企業應用編程接口(Java Enterprise APIs)為企業計算及電子商務應用系統提供了有關技術和豐富的類庫。2.2 JSP簡介2.2.1 什么是JSPJSP (JavaServer Pages)是由Sun Microsystems公司倡導,許多公司參與建立的一種動態網頁技術標準。在傳統的網頁HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標記( tag),就構成了JSP網頁(jsp)。Web服務器在遇到訪問JSP網頁的請求時,首先執行其中的程序片段,然后將執行結果以HTML格式返回給客戶。程序片段可以操作數據庫、重新定向網頁以及發送E-mail等,這就是建立動態網站所需要的功能。所有程序操作都在服務器端執行,網絡上傳送給客戶端的僅僅是結果,對客戶瀏覽器的要求最低。在Java的基礎上開發出的JSP實現了動態貞面與靜態頁而的分離,脫離了硬件平臺的束縛以及編譯后運行等方式,大大提高了其執行效率f酊逐漸成為Internet上的主流開發工具。在美國,EJB+Servlet+JSP幾乎成了電子商務的開發標準而在我國也正逐漸興起,不少網站部采用了JSP技術。2.2.2 JSP的運行原理及優點在一個JSP文件第一次被請求時,JSP引擎把該JSP文件轉換成為一個Servlet。而這個引擎本身也是一個Servlet。JSP的運行過程如下所示:(1)JSP引擎先把該JSP文件轉換成一個Java源文件(Servlet),在轉換時如果發現JSP文件有任何語法錯誤,轉換過程將中斷,并向服務端和客戶端輸出出錯信息。(2)如果轉換成功,JSP引擎用javac把該Java源文件編譯成相應的class文件。(3)創建一個該Servlet(JSP頁面的轉換結果)的實例,該Servlet的jspInit()方法被執行,jspInit()方法在Servlet的生命周期中只被執行一次。(4)jspService()方法被調用來處理客戶端的請求。對每一個請求,JSP引擎創建一個新的線程來處理該請求。如果有多個客戶端同時請求該JSP文件,則JSP引擎會創建多個線程。每個客戶端請求對應一個線程。以多線程方式執行可以大大降低對系統的資源需求,提高系統的并發量及響應時間。但不過也應該注意多線程的編程限制,由于該Servlet始終駐于內存,所以響應是非常快的。(5)如果.jsp文件被修改了,服務器將根據設置決定是否對該文件重新編譯,如果需要重新編譯,則將編譯結果取代內存中的Servlet,并繼續上述處理過程。(6)雖然JSP效率很高,但在第一次調用時由于需要轉換和編譯而有一些輕微的延 遲。此外,在任何時候如果由于系統資源不足的原因,JSP引擎將以某種不確定的方式將Servlet從內存中移去。當這種情況發生時jspDestroy()方法首先被調用。(7)然后Servlet實例便被標記加入“垃圾收集”處理。可在jspInit()中進行一些初始化工作,如建立與數據庫的連接,或建立網絡連接,從配置文件中取一些參數等,在jspDestory()中釋放相應的資源。基于Java語言的JSP技術具有很多其他動態網頁技術所沒有的特點,具體表現在如下方面:1簡便性和有效性 JSP動態網頁的編寫與一般的靜態HTML的網頁編寫是十分相似的。只是在原來的HTML網頁中加入一些JSP專有的標簽,或是一些腳本程序(此項不是必需的)。這樣,一個熟悉HTML網頁編寫的設計人員可以很容易進行JSP網頁的開發。而且開發人員完全可以不自己編寫腳本程序,而只是通過JSP獨有的標簽使用別人已寫好的部件來實現動態網頁的編寫。這樣,一個不熟悉腳本語言的網頁開發者,完全可以利用JSP做出漂亮的動態網頁。而這在其他的動態網頁開發中是不可實現的。2程序的獨立性JSP是Java API家族的一部分,它擁有一般的Java程序的跨平臺的特性。換句話說,就是擁有程序的對平臺的獨立性,即Write once,Run anywhere!。3程序的兼容性 JSP中的動態內容可以各種形式進行顯示,所以它可以為各種客戶提供服務,即從使用HTML/DHTML的瀏覽器,到使用WML的各種手提無線設備(例如,移動電話和個人數字設備PDA),再到使用XML的B2B應用,都可以使用JSP的動態頁面。4程序的可重用性 在JSP頁面中可以不直接將腳本程序嵌入,而只是將動態的交互部分作為一個部件加以引用。這樣,一旦這樣的一個部件寫好,它可以為多個程序重復引用,實現了程序的可重用性。現在,大量的標準JavaBeans程序庫就是一個很好的例證。2.2.3 JSP運行環境介紹從最開始的JSWDK到現在的Tomcat、WebLogic等,JSP的運行環境也有了很大的變化,出現了很多優秀的JSP容器,如Tomcat、WebLogic、IBM WebSphere等。本文介紹Tomcat 6.0。Tomcat是Apache Jakarta軟件組織的一個子項目,它是一個JSP/Servlet的容器,是在Sun公司的JSWDK(Java Server Web Development Kit)基礎上發展起來的一個JSP和Servlet規范的標準實現。使用Tomcat可以體驗JSP和Servlet的最新規范。經過多年的發展,使得Tomcat不僅是JSP和Servlet規范的標準實現,而且具備了很多商業Java Servlet容器的特性,使得它被一些企業用于商業用途。2.3 SQL Server2000簡介2.3.1 SQL Server概述SQL Server 是一個關系數據庫管理系統,它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同開發的,于1988 年推出了第一個OS/2 版本。在Windows NT 推出后,Microsoft與Sybase 在SQL Server 的開發上就分道揚鑣了。Microsoft 將SQL Server 移植到Windows NT系統上,專注于開發推廣SQL Server 的Windows NT 版本;Sybase 則較專注于SQL Server在UNIX 操作系統上的應用。SQL Server 2000 是Microsoft 公司推出的SQL Server 數據庫管理系統的最新版本。該版本繼承了SQL Server 7.0 版本的優點同時又比它增加了許多更先進的功能,具有使用方便,可伸縮性好與相關軟件集成程度高等優點,可跨越從運行Microsoft Windows 98 的膝上型電腦到運行Microsoft Windows 2000 的大型多處理器的服務器等多種平臺使用。2.3.2 SQL Server2000特性1.Internet 集成。SQL Server 2000 數據庫引擎提供完整的XML 支持。它還具有構成最大的Web 站點的數據存儲組件所需的可伸縮性、可用性和安全功能。SQL Server 2000 程序設計模型與 Windows DNA 構架集成,用以開發 Web 應用程序,并且SQL Server 2000 支持 English Query 和 Microsoft 搜索服務等功能,在Web 應用程序中包含了用戶友好的查詢和強大的搜索功能。2.可伸縮性和可用性。同一個數據庫引擎可以在不同的平臺上使用,從運行 Microsoft Windows® 98 的便攜式電腦,到運行 Microsoft Windows 2000 數據中心版的大型多處理器服務器。SQL Server 2000 企業版支持聯合服務器、索引視圖和大型內存支持等功能,使其得以升級到最大 Web 站點所需的性能級別。3.企業級數據庫功能。SQL Server 2000 關系數據庫引擎支持當今苛刻的數據處理環境所需的功能。數據庫引擎充分保護數據完整性,同時將管理上千個并發修改數據庫的用戶的開銷減到最小。SQL Server 2000 分布式查詢使您得以引用來自不同數據源的數據,就好象這些數據是 SQL Server 2000 數據庫的一部分,同時分布式事務支持充分保護任何分布式數據更新的完整性。復制同樣使您得以維護多個數據復本,同時確保單獨的數據復本保持同步。可將一組數據復制到多個移動的脫接用戶,使這些用戶自主地工作,然后將他們所做的修改合并回發布服務器。4.易于安裝、部署和使用。 SQL Server 2000 中包括一系列管理和開發工具,這些工具可改進在多個站點上安裝、部署、管理和使用 SQL Server 的過程。SQL Server 2000 還支持基于標準的、與 Windows DNA 集成的程序設計模型,使 SQL Server 數據庫和數據倉庫的使用成為生成強大的可伸縮系統的無縫部分。這些功能使您得以快速交付 SQL Server 應用程序,使客戶只需最少的安裝和管理開銷即可實現這些應用程序。5.數據倉庫。 SQL Server 2000 中包括析取和分析匯總數據以進行聯機分析處理 (OLAP) 的工具。SQL Server 中還包括一些工具,可用來直觀地設計數據庫并通過 English Query 來分析數據。SQL Server 2000共有4個版本,分別是個人版,標準版,企業版和開發版,本系統采用個人版。2.4 JSP與SQL Server2000數據庫的連接testsqlserver.jsp如下:您的第一個字段內容為:您的第二個字段內容為:第三章 系統分析3.1 需求分析需求分析是軟件工程中一個重要的過程,在很長的一-段時間內,人們一直認為需求分析是軟件開發過程中最簡單的一部分,但需求分析的草率行事往往會使最終的軟件產品不符合用戶的要求,從而導致軟件產品開發的失敗。下面就介紹在線投票系統的需求分析。對于普通用戶,在線投票系統在網頁中顯示需要調查的問題、接受用戶的投票,并以統計圖示的方式顯示當前調查結果。如下圖:進入投票頁投票查看結果退出對于管理員用戶,在線投票系統提供管理接口,管理員可以任意增加、修改、刪除投票,如下圖:管理員登錄判斷進入管理頁投票系統管理退出密碼錯誤 密碼正確第四章 系統設計4.1 總體設計為了更好地表述在線投票系統,這里將部分地使用UML的建模圖形。用例圖(Use Case Diagram)提供一個系統環境的建模辦式,它能夠幫助系統分析師確定系統內部利外部元素以及系統范圍。簡單來說,列例圖由用例和參與者構成,其中用例是外部可見的一個系統功能單元;參與者是與系統發生交互作用的外部用戶、進程或其他系統的理想化概念。在線投票系統的用例圖下圖所示,可以識別出兩個參與者,即系統管理員( Admin)和系統使用者( user)。系統管理員除了可以參加投票外還能對整個系統實施完全的管理。系統使用者只能參與投票升查看投票結果。在線投票用例圖 順序圖( Sequence Diagram)描述對象之問動態交互關系,著重體現對象間消息傳遞的時間順序。順序圖是一個二維圖,縱向是時問軸,時間延豎線向下延伸;橫向表示對象之間的消息傳遞。對象之間的消息從一個對象的生命線(時問軸上的雙道線用箭頭指向另一個對象的生命線。用戶參與投票的流程順序圖如下所示,用戶參與在線投票系統從進入投票模塊開始,投票模塊以網頁的形式顯示所有開放的問題,用戶在選取符合他要求的投票項后單擊“提交”按鈕,他的投票數據將提交給數據模塊,由數據模塊保存到SQL Server 2000數據庫中,從而完成投票提交的過程。用戶還可以查看某問題的投票統計結果,用戶進入顯示模塊,顯示模塊從數據模塊讀取開放問題的投票數據,并以柱狀統計圖的形式顯示。用戶參與投票的流程順序圖管理員增加新投票的過程從登錄管理模塊開始,管理員先把用戶名和密碼提交給登錄模塊,登求模塊根據用戶名到數據庫中搜索其對應的密碼,然后對比用戶名是否存在以及管理員輸入的密碼是否幣確。如果用戶名和密碼正確,登錄模塊把用戶信息提交到管理模塊并提示用戶登錄成功,管理員在管理模塊提交新投票數據,管理模塊把新投票數據提交到數據模塊并保存到數據庫中,管理模塊提示管理員操作成功,從而完成添加新投票的整個過程。管理員添加新投票的流程順序圖如下:管理員添加新投票的流程圖4.2 模塊設計在線投票系統大致可以分為客戶投票模塊、管理員模塊以及數據處理模塊3部分。4.2.1 客戶投票模塊用戶投票模塊包括showquestion.jsp、showresult.jsp、thanks.jsp、convert.jsp 4個程序頁面,具體的系統結構如下圖。其中,showquestion.jsp是用戶投票的首頁,用戶登錄在線投票系統后就自動跳轉到該頁面,該頁面通過數據處理模塊讀取數據庫中所有開放的問題并顯示,用戶可以選取一項或多項回答項并提交。 thanks.jsp是數據接收頁。用戶在showquestion.jsp中選擇投票的回答項并提交,用戶所選擇的數據項被提交到thanks.jsp,該頁把這些數據項儲存到數據庫中,并提示用戶投票數據提交成功。showresult.jsp是數據的顯示頁。當用廣在參加投票后可以查看該項投票的統計結果,該頁就用柱狀圖的顯示給出統計圖和所有選擇的百分比。convert.j sp足字符轉換頁,主要用于解決中文字符無法正確顯示的問題。在這里用清晰易懂的順序圖來描述用戶投票的過裎中上述頁面間的互相協作以及消息交互。客戶投票模塊各頁面間的順序圖如圖所示。 4.2.2 管理員模塊管理員模塊由用戶登錄頁面、新增投票頁面、編輯投票頁面組成,具體的系統結構圖如下圖所示。其中login,jsp是管理員的登錄頁,管理員要對在線投票系統進行管理必須先進行登錄,通過用戶名和密碼的驗證。Checkadmin.jsp是管理員登錄的驗證頁。管理員在login,jsp填入用戶名和密碼后,這些數據將被提交到該頁,然后與數據庫中的數據進行對比。如果驗證通過將跳轉到管理主頁面。Mainform.jsp是在線投票系統的管理主頁面,在管理員通過用戶名和密碼的驗證后,login.jsp將跳轉到該頁面。Mainform.jsp包含所有投票的鏈接,管理員單擊問題就能查看投票的結果,管理員還可以選擇編輯該投票或者刪除該投票。Result.jsp是查看投票結果的頁面。管理員在登錄劊管理主頁面Mainform,jsp后,單擊某投票的問題,系統會跳轉到該頁面。Result.jsp會以柱狀圖的形式在網頁上給出該投票每個選項所占的百分比。Addpoll.jsp和Savedata.jsp是新增投票的頁。管理員在登錄到管理主頁面Mainform.jsp后,選擇新增投票系統會跳轉到Addpoll.jsp頁而,管理員需要在該頁面填入新增投票的問題以及選項,然后提交。Savedata.jsp頁面把管理員所提交的新增投票資料保存到數據庫中,并提示管理員操作成功。Delete.jsp是刪除投票頁。管理員在登錄到管理主頁面Mainform.jsp后,呵以選擇刪除投票選項來刪除不需要的投票。 Edituserjsp和moduser.jsp是編輯密碼頁。管理員在登錄到管理主頁面Mainform.jsp后,可以選擇更改自己的登錄密碼 isopen.jsp和isvisible.jsp是編輯投票項頁面管理員在登錄到管理主頁面Main form.jsp后,可以編輯某個投票的屬性。isopen.jsp是設置投票結果為不開放,即接收用戶的投票但用戶不可以查看投票的結果。isvisible,jsp是把某個投票設置為對用戶不可見,即不再接收用戶的投票而且用戶也不能查看投票的結果,但系統管理員還可以查看投票的結果在這里選取典型的管理員添加投票過程來描述系統頁面間的互相協作以及消息交互的過程。管理員添加投票各頁面間的順序圖如下圖所示。4.2.3 數據處理模塊數據處理模塊由一個JavaBean程序opendata.java組成一般的系統都把與數據庫相關的代碼封裝在一個JavaBean組件中。本系統中的opendata.java負責連接數據庫、執行數據庫查詢、更新、刪除數據等操作。4.3 數據庫設計在線投票系統使用的數據庫是Microsof SQL Server 2000。系統所使用的表包括管理員信息表(Admins)、投票問題表(Questions)以及投票選項表(Items)。管理員信息表(Admins)字段說明類型備注Admname管理員用戶名Varchar 10主鍵Admpwd管理員密碼Varchar 10管理員信息表( Admins)包括管理員的用戶名和密碼,管理員登錄在線投票系統時Checkadmin.jsp就是讀取管理員輸入的用戶名和密碼與數據庫中的數據對比投票問題表(Questions)字段說明類型備注QuestionID投票問題ID號Int主鍵,自增1Question投票問題內容Varchar 500不為空IsVisable該問題對用戶是否可見Int1為可見,0為不可見IsOpen該問題統計結果是否可見Int1為可見,0為不可見Date該問題設立的時間Varchar 50投票問題表(Questions)包括的字段為投票的問題、投票問題是否可見、投票問題是否開放、投票問題設立的時間,當用戶登錄showquestion.jsp時該頁就從數據庫中讀取所有的可見問題及其選項并顯示在網頁上。投票選項表(Items)字段說明類型備注ItemID投票問題選項ID號Int主鍵,自增1QuestionID投票問題ID號Int不為空Item該問題選項內容Varchar 500不為空ItemCount該選項獲得的投票數Int不為空投票選項表(Items)包括的字段為投票問題ID號、該問題選項內容、該選項獲得的投票數。當用戶登錄showquestion.jsp時,該網頁先讀取投票問題表(Questions)中所有可見的問題,然后根據每一個問題的ID號在投票選項表(ltems)中找到該問題的對應選項并最終顯示在網頁上。當用戶完成自己的投票后,thanks.jsp將用戶所投的選項所對應的投票數加1。投票問題表(Questions)與投票選項表(Items)在SQL-Server 2000中的數據庫邏輯關系如下圖所示。第五章 系統開發5.1 客戶投票模塊1.用戶投票首頁用戶登錄在線投票系統后首先看到的就是該頁面,該頁面從數據庫中讀取所有的可見問題及其選項后以網頁的形式顯示,并且接收用戶的投票,然后把用戶的投票信息提交給數據接收頁。程序說明:用戶投票首頁。程序模塊名稱:Showquestion.jsp。相關數據表:投票問題表(Questions)、投票選項表(Items)。用戶投票頁的部分代碼如下: String permit; String SqlString=SELECT Question,QuestionID from questions where IsVisable = 1;try ResultSet rs=null; ResultSet ch_rs=null; /設置連接sqltest.setConnection(com.microsoft.jdbc.sqlserver.SQLServerDriver,jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=questionnaire,sa,); /設置SQL語句 rs=sqltest.executeQuery(SqlString); /得到查詢結果 int questionid = 0,itemid = 0; int i=0,j; /題目及選項標號 while(rs.next() i+; String question = rs.getString(1); questionid= rs.getInt(2); out.print(+ +i+.+ +question+);/子查詢語句,根據問題id號到items表中查詢該問題的所有選項 String ch_sql = SELECT Item,ItemID From Items Where QuestionID =+questionid+; ch_rs=sqltest.executeQuery(ch_sql); j = 0; while(ch_rs.next() j+;String item = ch_rs.getString(1); / itemid = ch_rs.getInt(2); % input type=radio value= name= % out.print( ); catch(SQLException e1) out.print(SQL異常!); 2.數據接收頁用戶首先登錄投票頁showquestion.jsp并提交他們認可的回答項,用戶所選擇的數據項被提交到數據接收頁thanks.jsp,該頁把這些數據項儲存到數據庫中并提示用戶投票數據提交成功。程序說明:數據接收頁。程序模塊名稱:Thanks.jsp相關數據表:投票問題表(Questions)、投票選項表(Items)數據接收頁的代碼如下:ResultSet rs=null; ResultSet ch_rs=null;/查詢所有可見問題 String sqlstring = SELECT QuestionID from questions where IsVisable = 1 ;try rs=sqltest.executeQuery(sqlstring); int questionid = 0,itemid = 0; while(rs.next() questionid = rs.getInt(1); /獲取用戶選擇的該問題的選項的id號 itemid = Integer.parseInt(request.getParameter(String.valueOf(questionid); /更新該問題選擇的計數值,做加1操作 sqlstring = update Items set ItemCount = ItemCount + 1 Where ItemID =+itemid; sqltest.executeUpdate(sqlstring); catch(SQLException e1) out.print(SQL異常!); 3.數據顯示頁showresult.jsp是數據的顯示頁。當用戶在用戶投票貞showquestion.jsp完成投票后可以跳轉到本頁面查看該頊投票的統計結果該頁就是用柱狀圖的顯示給出統計圖,并給出投票問題每個選項的百分比。程序說明:數據顯示頁。程序模塊名稱:showresult.jsp相關數據表:投票問題表(Questions)、投票選項表(Items)數據顯示頁的代碼如下:String question,date,Sqlstring; ResultSet rs=null; /定義數據集 ResultSet rs1=null; ResultSet rs2=null; int questionid = 0; Sqlstring = SELECT Question, Date, QuestionID from questions where IsVisable = 1 and IsOpen= 1; /查詢所有問題內容可見且投票結果可見的問題 rs=sqltest.executeQuery(Sqlstring); Sqlstring = SELECT ItemCount From Items Where QuestionID =+questionid; rs1 = sqltest.executeQuery(Sqlstring); int totalcount = 0; while(rs1.next() totalcount += rs1.getInt(1); if(totalcount=0) out.print(暫時還沒有人參加本題投票); Sqlstring = SELECT Item, ItemCount FROM Items where QuestionID =+questionid; rs2 = sqltest.executeQuery(Sqlstring); String item; int itemcount; String percent; while(rs2.next() item = rs2.getString(1); itemcount = rs2.getInt(2); percent = printf(String.valueOf(double)itemcount/totalcount*100)+0); out.print(+item+); out.print(+itemcount+); out.print(); else out.print(共有+totalcount+人參加本題投票); Sqlstring = SELECT Item, ItemCount FROM Items where QuestionID =+questionid; rs2 = sqltest.executeQuery(Sqlstring); String item; int itemcount; String percent; while(rs2.next() item = rs2.getString(1); itemcount = rs2.getInt(2); percent = printf(String.valueOf(double)itemcount/totalcount*100)+0); out.print(+item+); out.print(+itemcount+); out.print(+ percent+%); out.print(); 4.字符轉換頁此頁面主要用于解決中文字符無法正確顯示的問題,這是一個基礎頁面,在其他所有的頁面都有可能調用該頁的函數。程序說明:字符轉換頁。程序模塊名稱:converr.jsp。相關數據表:無。字符轉換頁代碼如下:%! String convert(String str) byte newstr = new bytestr.length(); for(int i=0;istr.length();i+) newstri=(byte)str.charAt(i); return new String(newstr); String Replace(String str) int index=0; while(index=str.indexOf(n) != -1) str = str.substring(0,index) + str.substring(index+1); return(str); %5.2 管理員模塊1. 管理員登陸頁程序說明:管理員登錄頁。程序模塊名稱:login.jsp。相關數據表:無。管理員登錄頁部分代碼如下:String errmsg = request.getParameter(errmsg); request.getSession(true); String chk = false; session.putValue(Enter,chk);if(errmsg != null & errmsg.equals(error1) out.print(您輸入管理員帳號或者密碼不正確!); else if(errmsg != null & errmsg.equals(error2) out.print(請先登陸!);2. 管理員驗證頁checkadmin.jsp是管理員登錄的驗證頁。管理員在login.jsp頁面填入用戶名和密碼后,這些數據將被提交到該頁,然后與數據庫中的相應數據進行對比。如果驗證通過將跳轉到管理主頁面。程序說明:管理員驗證頁。程序模塊名稱:checkadmin.jsp。相關數據庫:管理員信息表(Admins)。管理員驗證頁部分代碼如下:ResultSet rs=null; String name = request.getParameter(name); String password = request.getParameter(password);/根據用戶提交的用戶名和密碼查詢admins表 String sqlstring = select * from admins where Admname = +name+ and Admp
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 草原割草過程中的生態環境保護考核試卷
- 陶瓷潔具產品生命周期管理考核試卷
- 闌尾炎術后感染臨床管理要點
- 幼兒進餐環節衛生保健規范
- 月如意深呼吸
- 疫情期間普外科診療管理策略
- Influenza-virus-IN-9-生命科學試劑-MCE
- 超神數學-高考數學總復習基礎篇(一輪)(練習冊)專題03不等式(含答案或解析)
- 內部資料性出版物管理辦法
- 海豐縣鷺影禾香鄉村振興示范帶建設項目可行性研究報告
- 2023年湖北省黃石市中考地理真題
- 教師讀書分享《給教師的建議》課件
- 移動式腳手架操作平臺搭設方案
- FZ/T 07025-2022針織行業綠色工廠評價要求
- 湖南鄉村教育現狀分析報告
- 網絡安全技術與攻防演練
- 實用臨床護理-“三基”應知應會題庫完整
- 鐵路車輛-鐵路車輛的運用與檢修
- 內蒙古高考戶籍制度
- 二人合伙協議書(電子版)
- 上門廚師項目商業計劃書
評論
0/150
提交評論