【文章內容簡介】
據(jù)結構,數(shù)據(jù)庫的接口,定義數(shù)據(jù)庫表的結構,自動完成對各種信息的輸入、查詢、修改及系統(tǒng)用戶管理、系統(tǒng)用戶權限管理等。 數(shù)據(jù)功能模塊設計根據(jù)系統(tǒng)分析的結果,在系統(tǒng)功能分析的基礎上,考慮 ASP程序編制特點,得到如圖 32 所示的系統(tǒng)功能模塊圖。在線投票系統(tǒng)投票項目投票結果權限管理 編輯刪除添加修改投票結果投票人數(shù)帳戶管理用戶登陸 圖32 系統(tǒng)功能模塊圖 系統(tǒng)的主要功能設計在線投票系統(tǒng)的主要功能:投票結果的查詢:主要是實現(xiàn)投票人員從數(shù)據(jù)庫對各投票結果的查詢。投票項目管理:主要是實現(xiàn)投票人員對各個投票項目進行編輯,生成。 數(shù)據(jù)庫設計數(shù)據(jù)庫需求分析在線投票系統(tǒng)的數(shù)據(jù)項目是依據(jù)學院開設新課程制定的。根據(jù)系統(tǒng)開發(fā)的要求,從學院開設新課程中選取適當?shù)捻椖孔鳛橄到y(tǒng)數(shù)據(jù)庫的數(shù)據(jù)參數(shù)。在實際的工作中,在線投票系統(tǒng)的項目主要是根據(jù)學院任務來制定展開,因此與教學有相關的一些信息,如開設新課程等,都是學院需要統(tǒng)計的項目。結合學院開設課程任務選取了以下項目作為系統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)參數(shù):(1)開設游泳課。讓投票者根據(jù)網站界面進行投票。(2)開設就業(yè)指導課。讓投票者根據(jù)網站內容進行投票(3)開設心理咨詢室。讓投票者根據(jù)網站內容進行投票(4)開設演講課。主要分為討論、解說、演講等。(5)開設課外興趣小組。根據(jù)不同學生開設。(6)投票系統(tǒng)更新。對各個選項能在第一時間內更新。數(shù)據(jù)庫概念結構設計在系統(tǒng)的數(shù)據(jù)庫設計中,先要對系統(tǒng)分析得到的數(shù)據(jù)圖中的數(shù)據(jù)存儲進行分析,分析各數(shù)據(jù)存儲之間的關系,然后得出系統(tǒng)的關系模式。本系統(tǒng)采用了實體-關系圖中的相應符號來描述系統(tǒng)的概念模型。在需求分析的基礎上,設計出能夠滿足用戶需求的各種實體,以及它們之間的關系,為邏輯結構的設計打下基礎。根據(jù)上面的設計出的實體有:投票選項實體、投票結果實體。投票選項實體屬性具體描述如圖 33 所示。投票選項部分投票系統(tǒng)更新課外興趣小組開設演講課開設心理咨詢就業(yè)指導課開設游泳課圖33課程實體投票結果實體的屬性包括各個項目投票結果,各個項目投票人數(shù),各個項目投票所占百分比。數(shù)據(jù)庫邏輯結構設計數(shù)據(jù)庫邏輯結構設計的任務就是把概念結構設計階段設計的基本關系圖,轉換為與選用的具體相關的機器上的數(shù)據(jù)庫管理系統(tǒng)所支持的數(shù)據(jù)模型相符合的邏輯結構。在上面實體之間的關系的基礎上,形成數(shù)據(jù)庫中表格以及各個表格之間的關系。數(shù)據(jù)庫物理結構設計明確了以上所要建立的數(shù)據(jù)庫參數(shù),便可建立關系型數(shù)據(jù)庫。具體的結構是把數(shù)據(jù)表示成若干二維關系的表,通過建立表之間的關系來定義結構。在這種二維表中,每一列為一個字段,對應著表格中的數(shù)據(jù)項。每個項目的名稱為字段名。每一行為一條記錄,記錄中的每個字段的取值為字段值,記錄是字段值的集合。記錄中的數(shù)據(jù)隨著每一行記錄的不同而變化。在線投票系統(tǒng)數(shù)據(jù)庫中各個表格的設計結果如下面的幾個表格所示。各個表格表示數(shù)據(jù)庫中的一個表。表 31 為創(chuàng)建投票項目信息表 voteitem 的信息。字段名稱數(shù)據(jù)類型大小是否允許為空說明IDInt4否項目ID號ItemVarchar(50)8是項目名稱VoteCountint150否投票數(shù)量,缺省為0表31VoteItem的結構字段名稱數(shù)據(jù)類型大小是否允許為空說明IPvarchar(20)4否IP地址表32VoteIP的結構參數(shù)Soperate的值說明null無操作add添加記錄(單擊“添加”按鈕時產生)update修改記錄(單擊記錄后的“修改”鏈接時產生)edit修改記錄(單擊“修改”按鈕時產生)delete刪除記錄(單擊“刪除”按鈕時產生)表 33 參數(shù)Soperate狀態(tài)值的說明一般由多個用戶來管理在線投票系統(tǒng),因此需要對每個用戶分配一定的權限,實現(xiàn)信息的共享與安全。因此需要在數(shù)據(jù)庫中建立一個用戶口令表來管理使用在線投票系統(tǒng)的用戶。數(shù)據(jù)庫結構的實現(xiàn)在需求分析,概念結構設計基礎上得到數(shù)據(jù)庫邏輯結構以后,就可以在數(shù)據(jù)庫系統(tǒng)中實現(xiàn)該邏輯結構。本系統(tǒng)中采用了 Microsoft Office Access 2003數(shù)據(jù)庫管理系統(tǒng)。使用 Microsoft Office Access 2003創(chuàng)建前面所定義的各個數(shù)據(jù)表。第4章 詳細設計與實現(xiàn)運用ASP和Microsoft Office Access 2003相結合開發(fā)投票系統(tǒng),投票項目依據(jù)學院需要開設哪些新課程來制作,通過學生的投票結果統(tǒng)計確定下學期開設的新課程。以下就是設計投票系統(tǒng)步驟 投票界面模塊的設計投票界面模塊的功能是面向老師和學生的,因此不需要權限核實,進入系統(tǒng)頁面后,點擊“投票選項”即可進入。設計投票界面表單投票項目表單由3部分組成:投票選項列表框——用來選擇相應項目進行投票。投票按鈕。相應代碼如下:如果沒有投票,則變量isvoted為1,可以投票。投票按鈕代碼如下:input class=Submit type=submit value=39。 投 票 39。 name=submit onclick=39。return SelectChk()。39。這是個可以選擇多項的投票系統(tǒng),在函數(shù)SelectChk中取得被投票項目信息,并提交//取得被投票項目的編號,打開新窗口,查看投票結果function SelectChk(){ var s=false。 var deptid,n=0。 var strid,strurl。 var nn = (poster)。 var j。 for (j=0。j。j++) { if ((poster,j).checked) { n = n + 1。 s=true。 deptid = (poster,j).id+。 if(n==1) { strid = deptid。 } else { strid = strid + , + deptid。 } } } strurl = ?cid= + strid。 if(!s) { alert(請選擇投票項目!)。 return false。 } (strurl,newwin,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=400,height=300)。 return false。 }function newwin(url) { var oth=toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,left=200,top=200。 oth = oth+,width=400,height=300。 var newwin=(url,newwin,oth)。 ()。 return false。圖42 投票界面根據(jù)選擇查詢數(shù)據(jù)庫下面是實現(xiàn)該項功能的代碼:和數(shù)據(jù)庫建立連接的代碼如下:% 39。Server對象的CreateObject方法建立Connection對象 Set Conn=() =driver={SQL Server}。server=Ntserver。UID=sa。PWD=sa。Database=Vote %這段代碼使用Open方法連接數(shù)據(jù)庫。USE VoteGOCREATE TABLE VoteItem( Id int Primary Key IDENTITY, Item varchar(50) NOT NULL, VoteCount int DEFAULT 0)創(chuàng)建表voteItem的腳本文件USE VoteGOCREATE TABLE VoteIP( IP varchar(20))GO表VoteIP用來保存已經投票的IP地址% Dim rs,n n = 0 Set rs = () sql = Select * From VoteItem Order By id sql,Conn,1,1 If OR Then trtd colspan=3 align=centerfont style=39。COLOR:Red39。目前還沒有投票項目。/font/td/tr/table Else Do While Not n = n + 1 %從數(shù)據(jù)庫中提取投票項目信息 投票項目模塊的設計投票項目模塊的功能是進行投票選項的添加,修改,刪除??梢愿鶕?jù)每次需要投票的內容進行修改,添加,刪除。驗證用戶是否登錄因為只有管理員用戶才有修改項目的權利,包括添加、修改、刪除,所以系統(tǒng)需要驗證想要修改投票項目的用戶是否為管理員用戶。通過驗證用戶的Session對象的logined變量的值是否為1。如果Session對象的logined變量的值不為1,則跳轉到用戶登錄頁面()。代碼如下:%If Session(logined)1 Then End If%添加投票項目的設計與實現(xiàn)添加課程由以下幾部分組成:選擇按鈕框——用來選擇投票選項名稱。單行文本框——用來輸入投票名稱。實現(xiàn)功能的關鍵代碼如下:% Dim Soperate Soperate = (oper) 39。操作標記 Operid = (id) 39。項目編號 If Soperate=add Then 39。添加項目 newTitle = Request(txttitle) 39。判斷數(shù)據(jù)庫中是否存在此類別 sql = Select * from VoteItem Where Item=39。amp。newTitleamp。39。 Set rsInsert = (sql) If NOT Then 已經存在此投票項目,添加失敗! Else sql = Insert into VoteItem(Item) values(39。amp。newTitleamp。39。) (sql) 投票項目已經成功添加! End If ElseIf Soperate = edit Then 39。修改項目 newTitle = Request(txttitle) orgTitle = Request(sOrgTitle) 39。如果新類別名稱和舊的不同則執(zhí)行 If newTitleorgTitle Then 39。判斷數(shù)據(jù)庫中是否存在此類別 sql = Select * from VoteItem where Item=39。amp。newTitleamp。39。 Set rsInsert = (sql) If NOT Then 已經存在此投票項目,添加失敗! Else (Update VoteItem set Item=39。amp。newTitleamp。39。 where Id=amp。cint(Operid)) 投票項目已經成功修改! End If End If ElseIf Soperate=delete Then 39。刪除項目 sqldelt = Delete from VoteItem Where Id IN(amp。Cstr(Operid)amp。) (sqldelt) 投票項目已經成功刪除! End If%刪除項目function sltAll(){ var nn = (dept)。 for(j=0。j。j++) { (dept,j).checked = true。 }}function sltNull(){ var nn = (dept)。 for(j=0。j。j++) { (dept,j).checked = false。 }}得到要刪除的項目的編號,然后刪除項目function SelectChk(){ var s=false。 var deptid,n=0。 var strid,strurl。 var nn = (dept)。 for (j=0。j。j++) { if ((dept,j).checked) { n = n + 1。 s=true。 deptid = (dept,j).id+。 if(n==1) { strid = deptid。 } else { strid = strid + , + deptid。 } } } strurl = ?Oper=deleteamp。id= + strid。 if(!s) { alert(請選擇要刪除的投票項目!)