摘要:該文介紹了網絡投票系統的設計與實現,該系統采用MVC設計模式進行開發。主要實現了用戶注冊、登錄、注銷,匿名投票,實名投票,查看投票結果,留言,發表意見,留言管理,用戶管理等功能。該系統界面友好、操作簡單,易于維護。
關鍵詞:投票系統;MVC;JSP
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)29-0117-02
Abstract: The design and implementation of a network voting system is introduced, which is developed with the MVC design pattern.Many functions are mainly implemenmted, such as user registration, login, cancellation, anonymous voting, real-name voting, checking the results of voting, leaving a message, commenting, message management, user management etc. Meanwhile, the system has friendly interface, simple operation and easy maintenance.
Key words: voting System;MVC;JSP
1 背景
隨著社會信息化程度的提高,及時、有效的獲取信息已成為關鍵,網上投票系統正好能滿足信息獲取的基本需求。投票系統不但擴展了信息反饋的規模,節流了人力資源,在日益競爭的市場中具有較強的作用。
2 系統的分析和設計
2.1 需求分析
投票系統中共有三種用戶角色:游客、注冊用戶、管理員。每種角色的操作權限是不同的。
游客的主要權限有:瀏覽信息、用戶注冊、匿名投票、留言。
注冊用戶的主要權限有:登錄、投票、查看結果、留言。
管理員的主要權限有:登錄、管理投票、管理用戶。
2.2 系統結構設計
該系統是基于B/S架構下的多層結構應用系統。系統采用三層架構,其中最上一層為表現層,該層主要負責接收用戶的請求,以及數據的返回,為客戶端提供應用程序的訪問。第二層為業務邏輯層,該層專注于實現業務邏輯功能,主要負責對數據層的操作。第三層為數據訪問層,有時候也稱為是持久層,其功能主要是負責數據庫的訪問,簡單來說就是實現對數據表的Select,Insert,Update,Delete的操作。在該系統中,使用開源的MySQL數據庫,持久化層使用Hibernate技術,業務邏輯層使用struts框架和javabean技術,表現層運用jsp技術。
2.3 數據庫設計
通過對投票系統的數據進行分析,確定了系統的五個實體分別是:用戶、管理員、投票內容、投票結果、留言。
用戶實體用來表示用戶的基本信息,包括以下屬性:用戶ID、用戶名、密碼、性別、出生日期、郵箱等。
管理員實體用來表示管理員的基本信息,包括以下屬性:管理員ID、管理員名、密碼、權限等。
投票內容實體用來表示投票的相關信息,包括以下屬性:投票ID、投票名、選項A、選項B、選項C、選項D等。
投票結果實體用來表示投票結果的相關數據,包括以下屬性:投票ID、選項A投票數、選項B投票數、選項C投票數、選項D投票數、總投票數等。
留言實體用來表示用戶留言的相關信息,包括以下屬性:用戶ID、留言內容、郵箱等。
3 系統實現
3.1 首頁顯示模塊
投票系統的首頁會顯示相關投票內容,提供選項進行投票。實現該模塊主要使用了Map數組,首先從數據庫的投票內容表中查詢到投票ID和投票名,把投票ID和投票名看成鍵值對應的關系,全部put到Map數組中,重寫集合框架Collection中的sort()方法,通過重寫compare()方法來實現升序排序,然后使用for循環遍歷Map數組,即可獲取到投票的列表信息。
3.2 注冊模塊
游客點擊注冊按鈕進入注冊頁,輸入相關注冊信息,首先查詢數據庫中是否存在此用戶名,如存在注冊失敗,如不存在,則會跳轉到登錄頁。 實現該模塊是通過JavaBean技術,建立用戶類,所有屬性一律用private修飾,利用get()和set()方法獲取和設置屬性值。JSP中的內置對象request用來獲取注冊表單里的內容,通過set()方法設置User類各屬性的信息,最后判斷是否成功插入數據庫中,如成功則跳轉到RegisterSuccess.jsp;如失敗,則跳轉到注冊頁。
3.3 登錄模塊
用戶進入登錄頁面,輸入用戶名和密碼,點擊登錄按鈕,此時會查詢數據庫進行驗證,驗證通過,則可以正常登錄。實現該模塊通過JavaBean技術,建立用戶類,所有屬性一律用private修飾,利用get()和set()方法獲取和設置屬性值。使用JSP中的內置對象request來獲取表單里的內容,判斷通過request獲取的用戶名、密碼是否與User類中getUserName()、getPassword()的返回值相同,如相同則跳轉到index.jsp;如失敗,則跳轉回登錄頁。
3.4 投票模塊
用戶在投票頁面選擇一個選項進行投票,如果成功會跳轉到投票結果顯示頁,如果不成功則返回到投票頁。實現該模塊也使用了JavaBean技術,首先查詢數據庫中投票內容表的數據,然后從結果集中一一取出,通過內置對象request的getParameter()獲取,最后傳遞到表單中,通過頁面顯示出來。
3.5 顯示結果模塊
投票成功后,系統會自動跳轉到投票結果顯示頁,實時查看投票結果,結果通過橫向柱狀圖顯示。實現該模塊是通過地址傳參,獲得投票ID,再根據投票ID查詢投票結果表中的相應記錄,得到每一個選項的投票數,求出總和,并求出每個選項所占比例,根據比例設置綠條的width屬性,即可柱狀顯示。
3.6 投票管理模塊
管理員成功登錄后,通過輸入投票名、投票選項等內容創建新的投票,系統會將輸入的內容插入到數據庫的投票內容表中。實現該模塊首先要把表單里輸入的內容保存到新建的Vote對象中,通過Vote類中的get()方法獲取所有屬性的值,然后使用insert語句插入到相應的投票內容表中。
4 結束語
該系統使用了J2EE相關技術,采用了MVC系統架構,較好地實現了投票系統的基本功能,實現了投票的無紙化管理,讓用戶投票以及統計投票結果更為快捷,讓組織投票更加便利。
參考文獻:
[1] 衡友躍. 基于MVC模式的網上購物系統應用研究[J]. 淮北職業技術學院學報, 2008,7(1):77-79.
[2] 孫衛琴. 精通struts:基于MVC的JAVA WEB設計與開發[M]. 北京: 電子工業出版社, 2004.
[3] 劉瑾, 詹玲超. 基于J2EE的網絡考試系統的設計與實現[J]. 電腦知識與技術, 2016(4).
【通聯編輯:謝媛媛】