1、如何设计网络在线投票系统NET 20轻松实一、系统功能设计和数据库设计1、系统功能设计和数据库设计 1.1 系统功能设计 网络在线投票系统实现的功能比较简单,具体如下:投票项目的管理;添加投票的项目;删除投票的项目;对项目进行投票;查看项目的投票情况。1.2 数据库设计 本系统的数据库设计比较简单,只需要存储投票的信息即可。在SQL Server 2000中创建一个数据库,名称为“WebVoteDB”,并在该数据库中创建投票项目表Votes。其中“VoteID”字段存储投票项目ID;“Item”字段存储投票项目的名称;“VoteCount”字段存储每个项目的票数。创建投票项目表Votes的操作
2、界面如图1所示。投票项目表Votes需要存储投票项目名称及其票数,表的字段说明如表1所示。图1 创建投票项目表Votes的操作界面字 段 名数 据 类 型字 段 说 明键 引 用备 注TreeIDint 投票项目ID PK主键(自动增一)Itemvarchar(200) 投票项目的名称VoteCountint票数表1 Votes表在线投票功能是网站应用程序最常用的功能之一,也是网站应用程序开发常用的功能模块。当网站的管理员或用户提出一些新的想法与建议或者出现一种新产品时,他们可能需要通过用户或者客户的投票方式来确定这些新的想法、建议或者新的产品是否满足用户或者客户的需求,另外,网站还可以通过网
3、站在线投票功能做一些实际性的调查工作。本章介绍的网络在线投票系统还以直观的图形化界面显示投票信息,而且还可以及时查看投票的情况。二、投票系统实现 创建好系统所需要的数据库之后,网络在线投票系统的具体实现可以分为下面3个部分:(1)存储过程的实现部分;(2)数据库访问层的实现部分;(3)功能页面的实现部分。下面将详细介绍上述3个部分的具体实现方法。首先在Microsoft Visual Studio .NET 2005中创建一个Web站点,名称为“WebVote”。2.1 存储过程设计 在数据库WebVoteDB中创建存储过程Pr_GetVotes、Pr_GetSingleVote、Pr_Add
4、Vote、Pr_UpdateVote和Pr_DeleteVote。其中:Pr_GetVotes 从投票项目表Votes中获取所有投票项目的信息;Pr_GetSingleVote 从投票项目表Votes中获取某一条投票项目的信息;Pr_AddVote 添加一条新记录到投票项目表Votes中;Pr_UpdateVote 更新参与投票项目的票数;Pr_DeleteVote 从投票项目表Votes中获取删除一条投票项目信息。以上各存储过程的程序代码如下:/* 存储过程Pr_GetVotes */CREATE PROCEDURE Pr_GetVotesASSELECT * FROM Votes ORDE
5、R BY VoteID/* 存储过程Pr_GetSingleVote */CREATE PROCEDURE Pr_GetSingleVote(VoteID int)ASSELECT Votes.* FROM Votes WHERE VoteID = VoteID/* 存储过程Pr_AddVote */CREATE PROCEDURE Pr_AddVote(Item varchar(100)ASINSERT INTO Votes(Item,ItemCount) VALUES(Item,0) RETURN Identity/* 存储过程Pr_UpdateVote */CREATE PROCEDUR
6、E Pr_UpdateVote (VoteID int)ASUPDATE Votes SET VoteCount = VoteCount + 1WHERE VoteID = VoteID/* 存储过程Pr_DeleteVote */CREATE PROCEDURE Pr_DeleteVote (VoteID int)ASDELETE VotesWHERE VoteID = VoteID2.2 数据库访问层设计在应用程序WebVote中添加访问投票表Votes的类Vote,该类封装对投票项目表Votes中记录的选择、添加、修改和删除的方法。其中:方法GetVotes() 从投票项目表Votes中
7、获取所有投票项目的信息;方法AddVote(String sItem) 添加一条新记录到投票项目表Votes中;方法UpdateVote(int nVoteID) 更新参与投票项目的票数;方法DeleteVote(int nVoteID) 从投票项目表Votes中获取删除一条投票项目信息。类Vote的程序设计代码如下:public class Votepublic SqlDataReader GetVotes()/定义类SQLHelperSQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();/定义保存从数据库获取的结果的DataRe
8、aderSqlDataReader dr = null;try /执行存储过程sqlHelper.RunProc(Pr_GetVotes, out dr);catch (Exception ex) /抛出执行数据库异常SystemError.CreateErrorLog(ex.Message);throw new Exception(ex.Message, ex);/返回从数据库获取的结果return (dr);public int AddVote(String sItem) /定义类SQLHelperSQLHelper.SQLHelper sqlHelper = new SQLHelper.
9、SQLHelper();/创建访问数据库的参数SqlParameter paramList = sqlHelper.CreateInParam(Item, SqlDbType.VarChar,100,sItem);try /执行存储过程return (sqlHelper.RunProc(Pr_AddVote, paramList);catch (Exception ex) /抛出执行数据库异常SystemError.CreateErrorLog(ex.Message);throw new Exception(ex.Message, ex);public void UpdateVote(int
10、nVoteID) /定义类SQLHelperSQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();/创建访问数据库的参数SqlParameter paramList = sqlHelper.CreateInParam(VoteID, SqlDbType.Int, 4,nVoteID);try /执行存储过程sqlHelper.RunProc(Pr_UpdateVote, paramList);catch (Exception ex) /抛出执行数据库异常SystemError.CreateErrorLog(ex.Message);t
11、hrow new Exception(ex.Message, ex);public void DeleteVote(int nVoteID) /定义类SQLHelperQLHelper();/创建访问数据库的参数SqlParameter paramList = sqlHelper.CreateInParam(VoteID, SqlDbType.Int, 4,nVoteID);try /执行存储过程sqlHelper.RunProc(Pr_DeleteVote, paramList);catch (Exception ex) /抛出执行数据库异常SystemError.CreateErrorLo
12、g(ex.Message);throw new Exception(ex.Message, ex);系统主页面设计 在应用程序WebVote中添加一个新的Web页面,并命名为Default.aspx,它的代码隐藏文件为Default.aspx.cs。在页面Default.aspx上添加3个超链接控件,名称分别为ItemManageLink、OnlineVoteLink、ViewVoteLink。它们分别实现跳转投票项目管理页面VoteItemManage.aspx、投票页面WebOnlinVote.aspx、投票结果页面ShowVoteInfo.aspx。页面Default.aspx的设计界面
13、如图2所示。页面Default.aspx的HTML设计代码如下:asp:HyperLink ID=ItemManageLink NavigateUrl=/VoteItemManage.aspxrunat=server Font-Bold=True投票项目管理/asp:HyperLinkasp:HyperLink ID=OnlineVoteLink NavigateUrl=/WebOnlinVote.aspxrunat=server Font-Bold=True网站在线投票/asp:HyperLinkasp:HyperLink ID=ViewVoteLink NavigateUrl=/ShowV
14、oteInfo.aspxrunat=server Font-Bold=True查看投票结果/asp:HyperLink在线投票系统运行之后,系统默认页面Default.aspx的初始化界面如图3所示,此时显示3个链接按钮。投票项目管理页面设计 在应用程序WebVote中添加一个新的Web页面,并命名为VoteItemManage.aspx,它的代码隐藏文件为VoteItemManage.aspx.cs文件。1页面设计 在页面VoteItemManage.aspx上添加一个列表控件、一个Button控件、一个TextBox控件和一个ImageButton控件,它们的名称分别为ItemList、A
15、ddBtn、Item和deleteBtn。控件ItemList显示投票项目表中的所有数据;控件AddBtn实现添加一个新的投票项目;控件Item用来输入新的投票项目名称;控件deleteBtn删除一个投票项目。页面ItemManage.aspx的设计界面如图4所示。页面VoteItemManage.aspx的HTML设计代码如下:title网络在线投票系统/titlelink href=CSS/ASPNET2BaseCss.css type=text/css rel=stylesheetasp:ListBox id=ItemList width=150 rows=10 runat=server
16、CssClass=SelectSta /asp:ImageButton id=deleteBtn ImageUrl=/images/delete.gifAlternateText=删除此项 runat=serverCommandName=delete OnClick=deleteBtn_Click /asp:TextBox ID=Item Runat=server Width=252CssClass=InputCss/asp:TextBoxasp:Button ID=AddBtn Runat=server Text=增加新的投票项目CssClass=ButtonCss OnClick=AddB
17、tn_Click/asp:Button2页面初始化页面VoteItemManage.aspx调用函数Page_Load(Object sender,EventArgs e)初始化,该函数调用函数BindVoteListData()从数据库投票表Votes中获取所有投票的项目,并把获取的数据绑定到列表控件ItemList。函数Page_Load(Object sender,EventArgs e)和函数BindVoteListData()的程序代码如下:private void Page_Load(object sender, System.EventArgs e)if(!Page.IsPost
18、Back) /绑定投票项目列表的数据BindVoteListData();private void BindVoteListData() /获取投票项目的所有数据WebVote.Vote vote = new Vote();etVotes();/设置列表控件的Text属性和Value属性ItemList.DataTextField = Item;ItemList.DataValueField = VoteID;/设置控件的数据源,并绑定控件的数据ItemList.DataSource = recv;ItemList.DataBind();recv.Close(); /关闭数据读取器网络在线投票
19、系统运行之后,投票项目管理页面VoteItemManage.aspx的初始化界面如图5所示,此时已经显示投票的项目信息。3添加功能 单击页面VoteItemManage.aspx中的【增加新的投票项目】按钮,触发事件AddBtn_Click(object sender, System.EventArgs e),该事件实现添加一个新的投票项目。事件AddBtn_Click(object sender, System.EventArgs e)的程序代码如下:private void AddBtn_Click(object sender, System.EventArgs e)if (Item.Te
20、xt.Length 0) /定义类WebVote.Vote vote = new Vote();try /添加新数据项vote.AddVote(Item.Text.Trim();BindVoteListData();/显示操作结果信息Response.Write(scriptwindow.alert(+ ASPNET2System.OPERATIONADDSUCCESSMESSAGE + )/script);catch (Exception ex) /显示添加操作中的失败、错误信息Response.Redirect(/DesktopModules/ErrorPage.aspx?ErrorUrl
21、=rectErrorUrl(Request.RawUrl)+ &ErrorMessage= + ex.Message.Replace(n, );4删除功能 单击页面VoteItemManage.aspx中的【】按钮,触发事件deleteBtn_Click(object sender, System.EventArgs e),该事件实现删除已选择的投票项目。事件deleteBtn_Click(object sender, System.EventArgs e)的程序代码如下:protected void deleteBtn_Click(object sender, ImageClickEvent
22、Args e)if (ItemList.SelectedIndex = -1) /显示操作结果信息Response.Write(scriptwindow.alert(+ ASPNET2System.OPERATIONNOSELECTMESSAGE + )/script);return;/定义类WebVote.Vote vote = new Vote();try /删除数据vote.DeleteVote(Int32.Parse(ItemList.SelectedValue);/重新绑定数据BindVoteListData();catch (Exception ex) /显示删除操作中的失败、错误
23、信息Response.Redirect(/DesktopModules/ErrorPage.aspx?ErrorUrl=+ ASPNET2System.RedirectErrorUrl(Request.RawUrl)+ &ErrorMessage= + ex.Message.Replace(n, );投票页面设计 在应用程序WebVote中添加一个新的Web页面,并命名为WebOnlineVote.aspx,它的代码隐藏文件为WebOnlineVote.aspx.cs文件。1页面设计 一个数据网格控件、两个Button控件和一个Label控件,它们的名称分别为VoteList、VoteBtn、
24、ShowVote和VoteMessage。控件VoteList用来显示参与投票的所有项目;控件VoteBtn提交用户的投票;控件ShowVote实现用户查看投票情况;控件VoteMessage显示用户投票的操作结果。页面WebOnlinVote.aspx的设计界面如图6所示。页面WebOnlinVote.aspx的HTML设计代码如下:% Page Language=C# AutoEventWireup=trueCodeFile=WebOnlinVote.aspx.cs Inherits=WebOnlinVote %HTMLHEADtitle网络在线投票系统/title/HEADasp:dat
25、agrid id=VoteList CssClass=GbText Runat=serverAutoGenerateColumns=False DataKeyField=VoteIDColumnsasp:TemplateColumn ItemStyle-Width=200ItemTemplate%# DataBinder.Eval(Container.DataItem,Item)%/ItemTemplate/asp:TemplateColumnasp:TemplateColumn ItemStyle-Width=100ItemTemplateasp:CheckBox ID=VoteCheck
26、Runat=server/asp:CheckBox/ItemTemplate/asp:TemplateColumn/ColumnsFooterStyle BackColor=#FFFFCC ForeColor=#330099 /SelectedItemStyle BackColor=#FFCC66 Font-Bold=TrueForeColor=#663399 /PagerStyle BackColor=#FFFFCC ForeColor=#330099HorizontalAlign=Center /ItemStyle BackColor=White ForeColor=#330099 /He
27、aderStyle BackColor=#990000 Font-Bold=TrueForeColor=#FFFFCC /asp:datagridasp:button id=VoteBtn Runat=server Width=100Text=我要投票/asp:button asp:button id=ShowVote Runat=server Width=100Text=查看投票/asp:buttonasp:Label ID=VoteMessage Runat=server Visible=FalseForeColor=red Font-Bold=True投票成功!/asp:Label/td
28、/HTML1页面初始化 页面WebOnlinVote.aspx调用函数Page_Load(Object sender,EventArgs e)初始化,该函数调用函数BindVoteListData()从数据库投票表Votes中获取所有投票项目的信息,并把获取的数据设置为数据网格控件VoteList的数据源。函数Page_Load(Object sender,EventArgs e)和函数BindVoteListData()的程序代码如下:private void Page_Load(object sender, System.EventArgs e)if(!Page.IsPostBack) /
29、绑定投票的项目BindVoteListData();VoteMessage.Visible = false;private void BindVoteListData() /获取所有数据WebVote.Vote vote = new Vote();SqlDataReader recv = vote.GetVotes();/设置控件的数据源,并绑定数据VoteList.DataSource = recv;VoteList.DataBind();recv.Close(); /关闭数据读取器网络在线投票系统运行之后,投票页面WebOnlinVote.aspx的初始化界面如图7所示,此时显示被投票的项目信息。2投票功能 用户单击页面WebOnlinVote.aspx中的【我要投票】按钮和【查看投票】按钮分别触发
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1