在線投票系統(tǒng)課程設(shè)計(jì)報(bào)告Word版_第1頁
在線投票系統(tǒng)課程設(shè)計(jì)報(bào)告Word版_第2頁
在線投票系統(tǒng)課程設(shè)計(jì)報(bào)告Word版_第3頁
在線投票系統(tǒng)課程設(shè)計(jì)報(bào)告Word版_第4頁
在線投票系統(tǒng)課程設(shè)計(jì)報(bào)告Word版_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!北京化工大學(xué)北方學(xué)院課程設(shè)計(jì)報(bào)告課程名稱 應(yīng)用軟件課程設(shè)計(jì) 設(shè)計(jì)題目 在線投票系統(tǒng) 專業(yè)、班級 軟件0803班 學(xué) 號(hào) 080203082 姓 名 王進(jìn) 指導(dǎo)教師 張玉英 設(shè)計(jì)時(shí)間 2011年10月1日 2011 年 10 月 10 日一、 引言(簡要說明設(shè)計(jì)題目的目的、意義、內(nèi)容、主要任務(wù)等)摘要在積極建立科學(xué)管理機(jī)制的今天,僅僅靠原始的手工管理或簡單的單機(jī)管理,管理部門面對大量的信息,無法有效率地將其中的重要部分提取出來,并做出相應(yīng)的判斷和處理。投票管理者的決策只能依據(jù)手工表數(shù)據(jù),在浪費(fèi)大量人力、物力的同時(shí)無法做到實(shí)時(shí)監(jiān)控,難以保證數(shù)據(jù)

2、的準(zhǔn)確性和及時(shí)性。因此,先進(jìn)的管理思想就成為了一個(gè)可望而不可及的目標(biāo)。投票非常急需一套既有先進(jìn)管理思想的系統(tǒng),作為實(shí)現(xiàn)目標(biāo)和提高現(xiàn)有投票管理水平的一種重要手段。隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來越重要的作用。作為計(jì)算機(jī)應(yīng)用的一部分,在先進(jìn)的計(jì)算機(jī)技術(shù)、通信技術(shù)、控制技術(shù)及IC卡技術(shù)基礎(chǔ)上,采用系統(tǒng)集成方法,逐步建立一個(gè)智能化的投票系統(tǒng)。編寫在線投票系統(tǒng),最重要的一點(diǎn)就是如何從煩瑣的投票結(jié)果中,導(dǎo)出全部投票項(xiàng)目的票數(shù),然后根據(jù)投票項(xiàng)目的各個(gè)票數(shù),進(jìn)行票數(shù)百分比計(jì)算,最后編輯出在線投票系統(tǒng)。開發(fā)該系統(tǒng)我主要采用JSP技術(shù)

3、和數(shù)據(jù)庫相結(jié)合的方式。JSP技術(shù)通過在靜態(tài)HTML內(nèi)容中嵌入服務(wù)器端腳本,實(shí)現(xiàn)網(wǎng)頁內(nèi)容的動(dòng)態(tài)改變。Web服務(wù)器從磁盤上讀取含有服務(wù)器端腳本的網(wǎng)頁,在網(wǎng)頁發(fā)送給客戶端瀏覽器之前,先對其中的服務(wù)器端腳本進(jìn)行解釋,輸出用戶定制內(nèi)容,從而產(chǎn)生動(dòng)態(tài)網(wǎng)頁。數(shù)據(jù)庫的采用,能夠勝投票系統(tǒng)中的數(shù)據(jù)處理。本文在相關(guān)理論指導(dǎo)下,在分析其他一些系統(tǒng)的基礎(chǔ)上,開發(fā)出了一個(gè)簡單的在線投票系統(tǒng)(包括功能模塊設(shè)計(jì)、數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)等)基本解決了管理人員的煩瑣事務(wù)。關(guān)鍵字:jSP,數(shù)據(jù)庫一緒論開發(fā)背景:如今很多的服務(wù)行業(yè)都要進(jìn)行服務(wù)的反饋,以便更好的提高產(chǎn)品的質(zhì)量和作出更好的服務(wù),投票系統(tǒng)就是一個(gè)反饋信息的軟件,通過它可以更好更

4、快捷方便的反饋信息共服務(wù)商參考。因此開發(fā)一個(gè)能夠供客戶反饋信息的平臺(tái)是很有必要的。意義:其一,方便的操作。原有的手工投票管理基本上是人工操作,效率低下,缺乏方便性,在線投票管理系統(tǒng)運(yùn)用計(jì)算機(jī)和其他附加設(shè)備,不再需要手工操作,基本上是全自動(dòng)化,能夠節(jié)省人力、最大限度地利用各種寶貴的資源,大大的提高了效率。 其二,友好的界面。友好的用戶界面會(huì)給人一種親切的感覺,在使用起來不會(huì)覺得沉悶,效率自然也會(huì)提高了。在線投票系統(tǒng)主要用來統(tǒng)計(jì)網(wǎng)站用戶對某個(gè)主題或熱門話題的意見。決策者通過這些統(tǒng)計(jì)數(shù)據(jù)做出相應(yīng)的決策。在線投票系統(tǒng)是一般網(wǎng)站必備的程序之一,如果網(wǎng)站開發(fā)者想了解用戶對該網(wǎng)站的意見和建議。他可以設(shè)計(jì)這樣

5、一個(gè)投票主題:你認(rèn)為該網(wǎng)站如何?(A.很好B.一般C.不好)然后提供給用戶進(jìn)行投票二、開發(fā)環(huán)境開發(fā)環(huán)境MyEclipse簡介MyEclipse企業(yè)級工作平臺(tái)(MyEclipse Enterprise Workbench ,簡稱MyEclipse)是對Eclipse IDE的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫和J2EE的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的J2EE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。在結(jié)構(gòu)上,MyEclipse的特征可以被

6、分為7類:1. J2EE模型2. WEB開發(fā)工具3. EJB開發(fā)工具4. 應(yīng)用程序服務(wù)器的連接器5. J2EE項(xiàng)目部署服務(wù)6. 數(shù)據(jù)庫服務(wù)7. MyEclipse整合幫助對于以上每一種功能上的類別,在Eclipse中都有相應(yīng)的功能部件,并通過一系列的插件來實(shí)現(xiàn)它們。MyEclipse結(jié)構(gòu)上的這種模塊化,可以讓我們在不影響其他模塊的情況下,對任一模塊進(jìn)行單獨(dú)的擴(kuò)展和升級。簡單而言,MyEclipse是Eclipse的插件,也是一款功能強(qiáng)大的J2EE集成開發(fā)環(huán)境,支持代碼編寫、配置、測試以及除錯(cuò)。三、需求分析隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展和普及,眾多高校,科研機(jī)構(gòu)

7、及個(gè)人從理論與實(shí)踐兩個(gè)方面進(jìn)行了大量的研究與開發(fā)工作,涌現(xiàn)出了很多在線投票系統(tǒng),對學(xué)院、企業(yè)的管理起到了很好的作用??傊镀毕到y(tǒng)概括起來就是要通過科學(xué)的管理手段和專業(yè)化管理技術(shù)來實(shí)現(xiàn)統(tǒng)一。本系統(tǒng)是一個(gè)簡單的投票系統(tǒng),主要提供以下功能:系統(tǒng)首頁上顯示所有投票選項(xiàng)的列表,用戶可以通過選中某個(gè)選項(xiàng)并點(diǎn)擊“投票”按鈕進(jìn)行投票操作。另外,還提供查看投票詳細(xì)信息的超鏈接,用戶點(diǎn)擊后可在另一頁面上看到各個(gè)投票選項(xiàng)目前的投票情況,主要包括各選項(xiàng)所得的票數(shù)、占總票數(shù)的百分比等信息,并且以柱形圖顯示各選項(xiàng)的得票率,可以讓用戶從直觀上看到各項(xiàng)的得票情況投票系統(tǒng)主要是為用戶提供一個(gè)方便易用的投票界面,同時(shí)還具有查看投

8、票、投票選項(xiàng)的功能。投票系統(tǒng)主要需要實(shí)現(xiàn)以下一些基本功能:1. 投票:用戶在投票系統(tǒng)首頁上可以通過選中每個(gè)投票項(xiàng)前面的單選按鈕并單擊“投票”按鈕來進(jìn)行投票。2. 查看投票情況:用戶在投票系統(tǒng)首頁上可以通過點(diǎn)擊“查看投票”超鏈接來查看當(dāng)前的最新投票情況,包括各投票項(xiàng)的得票數(shù)、得票率等。二、 正文(課程設(shè)計(jì)的主要內(nèi)容,包括實(shí)驗(yàn)與觀測方法和結(jié)果、儀器設(shè)備、計(jì)算方法、編程原理、數(shù)據(jù)處理、設(shè)計(jì)說明與依據(jù)、加工整理和圖表、形成的論點(diǎn)和導(dǎo)出的結(jié)論等。正文內(nèi)容必須實(shí)事求是、客觀真切、準(zhǔn)確完備、合乎邏輯、層次分明、語言流暢、結(jié)構(gòu)嚴(yán)謹(jǐn),符合各學(xué)科、專業(yè)的有關(guān)要求。)4.1概要設(shè)計(jì)1)開發(fā)平臺(tái):Microsoft

9、Windows XP Professional 版本 2002 Service Pack 3開發(fā)工具:MyEclipse 在線投票系統(tǒng)功能:功能 1:投票 功能 2:查看投票 功能 3:對同一IP地址的用戶重復(fù)投票的限制功能4:管理員功能,實(shí)現(xiàn)發(fā)布新問題,刪除主題,查看所有主題投票統(tǒng)計(jì),修改統(tǒng)計(jì)結(jié)果。2)實(shí)現(xiàn)該系統(tǒng)可劃分為三個(gè)模塊:顯示投票選項(xiàng),參與投票和顯示投票結(jié)果。下面來分別介紹。 投票界面: 4.2詳細(xì)設(shè)計(jì):4.2.1數(shù)據(jù)表的設(shè)計(jì) 本系統(tǒng)設(shè)計(jì)了兩張表,表tb-temp保存投票用用戶信息,表tb-vote保存投票選項(xiàng)信息。 表tb-temp字段名數(shù)據(jù)類型字段大小是否為主鍵IdInt4是Vo

10、teipChar20VotemselBigint8VotetimeChar50 表tb-vote字段名數(shù)據(jù)類型字段大小是否為主鍵IdSmallint2是Vote_titleChar50Vote_numInt4Vote_orderSmallint24.2.2值javabean的設(shè)計(jì)建一個(gè)值JavaBean用來封裝存儲(chǔ)表tb-temp中的投票選項(xiàng)信息,代碼如下:package com.yxq.valuebean;public class VoteSingle private String id; /存儲(chǔ)選項(xiàng)IDprivate String title;/存儲(chǔ)選項(xiàng)標(biāo)題private String n

11、um;/存儲(chǔ)選項(xiàng)所得票數(shù)private String order;/存儲(chǔ)選項(xiàng)的排列序號(hào)public String getId() return id;public void setId(String id) this.id = id;public String getNum() return num;public void setNum(String num) this.num = num;public String getOrder() return order;public void setOrder(String order) this.order = order;public Stri

12、ng getTitle() return title;public void setTitle(String title) this.title = title;同樣建另一個(gè)值JavaBean用來封裝存儲(chǔ)表tb-vote中的信息:package com.yxq.valuebean;public class TempSingle private String id;/存儲(chǔ)投票用戶IDprivate String voteIp;/存儲(chǔ)投票用戶IPprivate long voteMSEL;/存儲(chǔ)毫秒數(shù)private String voteTime;/存儲(chǔ)yyyy-MM-dd HH:mm:ss形式的

13、時(shí)間public long getVoteMSEL() return voteMSEL;public void setVoteMSEL(long voteMSEL) this.voteMSEL = voteMSEL;public String getVoteTime() return voteTime;public void setVoteTime(String voteTime) this.voteTime = voteTime;public String getId() return id;public void setId(String id) this.id = id;public S

14、tring getVoteIp() return voteIp;public void setVoteIp(String voteIp) this.voteIp = voteIp;4.2.3數(shù)據(jù)庫操作類的編寫對于查看投票內(nèi)容,參與投票和顯示結(jié)果的操作,都涉及了數(shù)據(jù)庫的操作。這些操作在一個(gè)DB類中實(shí)現(xiàn),具體代碼入下:定義屬性及構(gòu)造方法package com.yxq.toolbean;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.sql.ResultSet

15、;import java.util.ArrayList;import java.util.List;import com.yxq.valuebean.TempSingle;import com.yxq.valuebean.VoteSingle;public class DB private String className;/存儲(chǔ)數(shù)據(jù)庫驅(qū)動(dòng)類路徑private String url;/存儲(chǔ)數(shù)據(jù)庫URLprivate String username;/存儲(chǔ)登陸數(shù)據(jù)庫的用戶名private String password;/存儲(chǔ)登陸數(shù)據(jù)庫的密碼private Connection con;/聲明一

16、個(gè)Connection對象private Statement stm;/聲明一個(gè)Statement對象用來執(zhí)行SQL語句private ResultSet rs;/聲明一個(gè)ResultSet對象用來存儲(chǔ)結(jié)果集public DB() /通過構(gòu)造方法為屬性賦值className = org.apache.derby.jdbc.ClientDriver;url = jdbc:derby:/localhost:1527/myeclipse;username = classiccars;password = classiccars;/* * 功能 加載數(shù)據(jù)庫驅(qū)動(dòng)程序 */public void load

17、Drive() try Class.forName(className); /加載數(shù)據(jù)庫驅(qū)動(dòng)程序 catch (ClassNotFoundException e) System.out.println(加載數(shù)據(jù)庫驅(qū)動(dòng)程序失??!);e.printStackTrace(); /向控制臺(tái)輸出提示信息/*獲取數(shù)據(jù)庫連接 * 功能 */public void getCon() loadDrive(); /加載數(shù)據(jù)庫驅(qū)動(dòng)程序try con = DriverManager.getConnection(url, username, password);/獲取連接 catch (Exception e) Sys

18、tem.out.println(連接數(shù)據(jù)庫失??!);e.printStackTrace();/* * 功能 獲取Statement對象 */public void getStm() getCon();/獲取數(shù)據(jù)庫連接try stm = con.createStatement();/獲取Statement類對象 catch (Exception e) System.out.println(獲取Statement對象失?。?;e.printStackTrace();/* * 功能 查詢數(shù)據(jù)表,獲取結(jié)果集 */public void getRs(String sql) getStm();try rs

19、 = stm.executeQuery(sql);/執(zhí)行SQL語句查詢數(shù)據(jù)表獲取結(jié)果集 catch (Exception e) System.out.println(查詢數(shù)據(jù)庫失??!);e.printStackTrace();/* * 功能 查詢數(shù)據(jù)表,獲取投票選項(xiàng) */public List selectVote(String sql) List votelist = null;if (sql != null & !sql.equals() getRs(sql);/查詢數(shù)據(jù)表獲取結(jié)果集if (rs != null) votelist = new ArrayList();try while (

20、rs.next() /依次將結(jié)果集中的記錄封裝到VoteSingle類對象中VoteSingle voteSingle = new VoteSingle();voteSingle.setId(MyTToStr(rs.getInt(1);voteSingle.setTitle(rs.getString(2);voteSingle.setNum(MyTToStr(rs.getInt(3);voteSingle.setOrder(MyTToStr(rs.getInt(4);votelist.add(voteSingle);/將VoteSingle類對象

21、存儲(chǔ)到List集合中 catch (Exception e) System.out.println(封裝tb_vote表中數(shù)據(jù)失?。?;e.printStackTrace(); finally closed(); /關(guān)閉 數(shù)據(jù)庫return votelist;/* * 功能 查詢數(shù)據(jù)表,獲取指定IP最后一次投票的記錄 */public TempSingle selectTemp(String sql) TempSingle tempSingle = null;if (sql != null & !sql.equals() getRs(sql);/查詢數(shù)據(jù)表獲取結(jié)果集if (rs != null

22、) try while (rs.next() /若該結(jié)果集中有記錄,說明當(dāng)前用戶投過票tempSingle = new TempSingle();tempSingle.setId(MyTToStr(rs.getInt(1);tempSingle.setVoteIp(rs.getString(2);tempSingle.setVoteMSEL(rs.getLong(3);tempSingle.setVoteTime(rs.getString(4); catch (Exception e) System.out.println(封裝tb_temp表中數(shù)據(jù)失??!);e.printSt

23、ackTrace(); finally closed(); /關(guān)閉數(shù)據(jù)庫return tempSingle;/返回TempSingle類對象中/* * 功能 更新數(shù)據(jù)表,實(shí)現(xiàn)票數(shù)累加 */public int update(String sql) int i = -1;if (sql != null & !sql.equals() getStm();/獲取Statement類對象try i = stm.executeUpdate(sql);/執(zhí)行SQL語句更新數(shù)據(jù)表 catch (Exception e) System.out.println(更新數(shù)據(jù)庫失?。?;e.printStackTra

24、ce(); finally closed();return i;/* * 功能 關(guān)閉數(shù)據(jù)庫連接 */public void closed() try if (rs != null)rs.close();/關(guān)閉結(jié)果集if (stm != null)stm.close();/關(guān)閉Statement類對象if (con != null)con.close();/關(guān)閉數(shù)據(jù)庫連接 catch (Exception e) System.out.println(關(guān)閉數(shù)據(jù)庫失??!);e.printStackTrace();4.2.4工具類的編寫該系統(tǒng)涉及了類型的轉(zhuǎn)換,計(jì)算時(shí)間差等操作,這些操作在一個(gè)類中實(shí)現(xiàn),

25、這樣可以實(shí)現(xiàn)代碼的重復(fù)使用。該工具類為mytools,代碼如下:package com.yxq.toolbean;import java.text.SimpleDateFormat;import java.util.Date;public class MyTools /* * 功能 將int型數(shù)據(jù)轉(zhuǎn)換為String型數(shù)據(jù) * 參數(shù) num為要轉(zhuǎn)換的int型數(shù)據(jù) * 返回值 String類型 */public static String intToStr(int num)return String.valueOf(num);/* * 功能 比較時(shí)間。 * 參數(shù) today當(dāng)前時(shí)間,temp為上次

26、投票時(shí)間。這兩個(gè)參數(shù)都是以毫秒顯示的時(shí)間 * 返回值 String類型 */public static String compareTime(long today,long temp)int limitTime=60;/設(shè)置限制時(shí)間為60分鐘long count=today-temp;/計(jì)算當(dāng)前時(shí)間與上次投票時(shí)間相差的毫秒數(shù)(該結(jié)果一定是大于等于0)if(count=limitTime*60*1000)/如果相差小于等于60分鐘(1分=60秒,1秒=1000毫秒)return no;else/如果相差大于60分鐘return yes;/* * 功能 格式化時(shí)間為指定格式。首先通過Date類的構(gòu)

27、造方法根據(jù)給出的毫秒數(shù)獲取一個(gè)時(shí)間,然后將該時(shí)間轉(zhuǎn)換為指定格式,如年-月-日 時(shí):分:秒 * 參數(shù) ms為毫秒數(shù) * 返回值 String類型 */public static String formatDate(long ms)Date date=new Date(ms);SimpleDateFormat format=new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);String strDate=format.format(date);return strDate;4.2.5顯示投票選項(xiàng)的設(shè)計(jì)當(dāng)用戶訪問首頁面后,單擊“參與投票”就會(huì)進(jìn)入vote.jsp頁面顯

28、示投票選項(xiàng),在該頁面中先要查詢tb_vote數(shù)據(jù)表獲取所有的投票選項(xiàng),然后逐一顯示投票選項(xiàng)的標(biāo)題 在線投票 沒有選項(xiàng)可顯示! % int i=0; while(i input type=radio name=ilike value= 注意事項(xiàng): 1小時(shí)內(nèi)只能投一次票!              4.2.6參與投票的設(shè)計(jì)% String mess=; /用來保存提示信息 String selectId=request.getParameter(ilike);/獲取用戶選擇 if

29、(selectId=null|selectId.equals()/沒有選擇投票選項(xiàng) mess=請選擇投票!; else /選擇了投票選項(xiàng) boolean mark=false;/是否允許投票的標(biāo)志 long today=(new Date().getTime();/new Date()獲取當(dāng)前時(shí)間,通過調(diào)用Date類的getTime()方法獲取從1970年1月1日00:00:00起到當(dāng)前時(shí)間的毫秒數(shù) long last=0;/上次投票的時(shí)間(以毫秒顯示) String ip=request.getRemoteAddr();/獲取用戶IP地址 String sql=SELECT * FROM app.tb_temp WHERE voteMSEL = (SELECT MAX(voteMSEL) FROM tb_temp WHERE voteIp=+ip+);/SQL語句,功能:從數(shù)據(jù)表中獲取當(dāng)前用戶上次投

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論