如何设计网络在线投票系统NET 20轻松实.docx
《如何设计网络在线投票系统NET 20轻松实.docx》由会员分享,可在线阅读,更多相关《如何设计网络在线投票系统NET 20轻松实.docx(23页珍藏版)》请在冰豆网上搜索。
![如何设计网络在线投票系统NET 20轻松实.docx](https://file1.bdocx.com/fileroot1/2023-2/3/42d75495-79b9-4468-aa81-4ea66a3e837b/42d75495-79b9-4468-aa81-4ea66a3e837b1.gif)
如何设计网络在线投票系统NET20轻松实
一、系统功能设计和数据库设计
1、系统功能设计和数据库设计
1.1系统功能设计
网络在线投票系统实现的功能比较简单,具体如下:
◎投票项目的管理;
◎添加投票的项目;
◎删除投票的项目;
◎对项目进行投票;
◎查看项目的投票情况。
1.2数据库设计
本系统的数据库设计比较简单,只需要存储投票的信息即可。
在SQLServer2000中创建一个数据库,名称为“WebVoteDB”,并在该数据库中创建投票项目表Votes。
其中“VoteID”字段存储投票项目ID;“Item”字段存储投票项目的名称;“VoteCount”字段存储每个项目的票数。
创建投票项目表Votes的操作界面如图1所示。
投票项目表Votes需要存储投票项目名称及其票数,表的字段说明如表1所示。
图1创建投票项目表Votes的操作界面
字段名
数据类型
字段说明
键引用
备注
TreeID
int
投票项目ID
PK
主键(自动增一)
Item
varchar(200)
投票项目的名称
VoteCount
int
票数
表1Votes表
在线投票功能是网站应用程序最常用的功能之一,也是网站应用程序开发常用的功能模块。
当网站的管理员或用户提出一些新的想法与建议或者出现一种新产品时,他们可能需要通过用户或者客户的投票方式来确定这些新的想法、建议或者新的产品是否满足用户或者客户的需求,另外,网站还可以通过网站在线投票功能做一些实际性的调查工作。
本章介绍的网络在线投票系统还以直观的图形化界面显示投票信息,而且还可以及时查看投票的情况。
二、投票系统实现
创建好系统所需要的数据库之后,网络在线投票系统的具体实现可以分为下面3个部分:
(1)存储过程的实现部分;
(2)数据库访问层的实现部分;
(3)功能页面的实现部分。
下面将详细介绍上述3个部分的具体实现方法。
首先在MicrosoftVisualStudio.NET2005中创建一个Web站点,名称为“WebVote”。
2.1存储过程设计
在数据库WebVoteDB中创建存储过程Pr_GetVotes、Pr_GetSingleVote、Pr_AddVote、Pr_UpdateVote和Pr_DeleteVote。
其中:
Pr_GetVotes从投票项目表Votes中获取所有投票项目的信息;
Pr_GetSingleVote从投票项目表Votes中获取某一条投票项目的信息;
Pr_AddVote添加一条新记录到投票项目表Votes中;
Pr_UpdateVote更新参与投票项目的票数;
Pr_DeleteVote从投票项目表Votes中获取删除一条投票项目信息。
以上各存储过程的程序代码如下:
/*存储过程Pr_GetVotes*/
CREATEPROCEDUREPr_GetVotes
AS
SELECT*FROMVotesORDERBYVoteID
/*存储过程Pr_GetSingleVote*/
CREATEPROCEDUREPr_GetSingleVote
(@VoteIDint)
AS
SELECTVotes.*FROMVotesWHEREVoteID=@VoteID
/*存储过程Pr_AddVote*/
CREATEPROCEDUREPr_AddVote(@Itemvarchar(100))
AS
INSERTINTOVotes(Item,ItemCount)VALUES(@Item,0)RETURN@@Identity
/*存储过程Pr_UpdateVote*/
CREATEPROCEDUREPr_UpdateVote(@VoteIDint)
AS
UPDATEVotesSETVoteCount=VoteCount+1
WHEREVoteID=@VoteID
/*存储过程Pr_DeleteVote*/
CREATEPROCEDUREPr_DeleteVote(@VoteIDint)
AS
DELETEVotes
WHEREVoteID=@VoteID
2.2数据库访问层设计
在应用程序WebVote中添加访问投票表Votes的类Vote,该类封装对投票项目表Votes中记录的选择、添加、修改和删除的方法。
其中:
方法GetVotes()从投票项目表Votes中获取所有投票项目的信息;
方法AddVote(StringsItem)添加一条新记录到投票项目表Votes中;
方法UpdateVote(intnVoteID)更新参与投票项目的票数;
方法DeleteVote(intnVoteID)从投票项目表Votes中获取删除一条投票项目信息。
类Vote的程序设计代码如下:
publicclassVote
{
publicSqlDataReaderGetVotes()
{
//定义类SQLHelper
SQLHelper.SQLHelpersqlHelper=newSQLHelper.SQLHelper();
//定义保存从数据库获取的结果的DataReader
SqlDataReaderdr=null;
try
{//执行存储过程
sqlHelper.RunProc("Pr_GetVotes",outdr);
}
catch(Exceptionex)
{//抛出执行数据库异常
SystemError.CreateErrorLog(ex.Message);
thrownewException(ex.Message,ex);
}
//返回从数据库获取的结果
return(dr);
}
publicintAddVote(StringsItem)
{//定义类SQLHelper
SQLHelper.SQLHelpersqlHelper=newSQLHelper.SQLHelper();
//创建访问数据库的参数
SqlParameter[]paramList={
sqlHelper.CreateInParam("@Item",SqlDbType.VarChar,100,sItem)
};
try
{//执行存储过程
return(sqlHelper.RunProc("Pr_AddVote",paramList));
}
catch(Exceptionex)
{//抛出执行数据库异常
SystemError.CreateErrorLog(ex.Message);
thrownewException(ex.Message,ex);
}
}
publicvoidUpdateVote(intnVoteID)
{//定义类SQLHelper
SQLHelper.SQLHelpersqlHelper=newSQLHelper.SQLHelper();
//创建访问数据库的参数
SqlParameter[]paramList={sqlHelper.CreateInParam("@VoteID",SqlDbType.Int,4,nVoteID)};
try
{//执行存储过程
sqlHelper.RunProc("Pr_UpdateVote",paramList);
}
catch(Exceptionex)
{//抛出执行数据库异常
SystemError.CreateErrorLog(ex.Message);
thrownewException(ex.Message,ex);
}
}
publicvoidDeleteVote(intnVoteID)
{//定义类SQLHelper
QLHelper();
//创建访问数据库的参数
SqlParameter[]paramList={
sqlHelper.CreateInParam("@VoteID",SqlDbType.Int,4,nVoteID)
};
try
{//执行存储过程
sqlHelper.RunProc("Pr_DeleteVote",paramList);
}
catch(Exceptionex)
{//抛出执行数据库异常
SystemError.CreateErrorLog(ex.Message);
thrownewException(ex.Message,ex);
}
}
}
系统主页面设计
在应用程序WebVote中添加一个新的Web页面,并命名为Default.aspx,它的代码隐藏文件为Default.aspx.cs。
在页面Default.aspx上添加3个超链接控件,名称分别为ItemManageLink、OnlineVoteLink、ViewVoteLink。
它们分别实现跳转投票项目管理页面VoteItemManage.aspx、投票页面WebOnlinVote.aspx、投票结果页面ShowVoteInfo.aspx。
页面Default.aspx的设计界面如图2所示。
页面Default.aspx的HTML设计代码如下:
<asp:
HyperLinkID="ItemManageLink"NavigateUrl="~/VoteItemManage.aspx"
runat="server"Font-Bold="True">投票项目管理</asp:
HyperLink>
<asp:
HyperLinkID="OnlineVoteLink"NavigateUrl="~/WebOnlinVote.aspx"
runat="server"Font-Bold="True">网站在线投票</asp:
HyperLink>
<asp:
HyperLinkID="ViewVoteLink"NavigateUrl="~/ShowVoteInfo.aspx"
runat="server"Font-Bold="True">查看投票结果</asp:
HyperLink>
在线投票系统运行之后,系统默认页面Default.aspx的初始化界面如图3所示,此时显示3个链接按钮。
投票项目管理页面设计
在应用程序WebVote中添加一个新的Web页面,并命名为VoteItemManage.aspx,它的代码隐藏文件为VoteItemManage.aspx.cs文件。
1.页面设计
在页面VoteItemManage.aspx上添加一个列表控件、一个Button控件、一个TextBox控件和一个ImageButton控件,它们的名称分别为ItemList、AddBtn、Item和deleteBtn。
控件ItemList显示投票项目表中的所有数据;控件AddBtn实现添加一个新的投票项目;控件Item用来输入新的投票项目名称;控件deleteBtn删除一个投票项目。
页面ItemManage.aspx的设计界面如图4所示。
页面VoteItemManage.aspx的HTML设计代码如下:
<title>网络在线投票系统</title>
<linkhref="CSS/ASPNET2BaseCss.css"type="text/css"rel="stylesheet">
<asp:
ListBoxid="ItemList"width="150"rows="10"runat="server"
CssClass="SelectSta"/>
<asp:
ImageButtonid="deleteBtn"ImageUrl="~/images/delete.gif"
AlternateText="删除此项"runat="server"
CommandName="delete"OnClick="deleteBtn_Click"/>
<asp:
TextBoxID="Item"Runat="server"Width="252"
CssClass="InputCss"></asp:
TextBox>
<asp:
ButtonID="AddBtn"Runat="server"Text="增加新的投票项目"
CssClass="ButtonCss"OnClick="AddBtn_Click"></asp:
Button>
2.页面初始化
页面VoteItemManage.aspx调用函数Page_Load(Objectsender,EventArgse)初始化,该函数调用函数BindVoteListData()从数据库投票表Votes中获取所有投票的项目,并把获取的数据绑定到列表控件ItemList。
函数Page_Load(Objectsender,EventArgse)和函数BindVoteListData()的程序代码如下:
privatevoidPage_Load(objectsender,System.EventArgse)
{
if(!
Page.IsPostBack)
{//绑定投票项目列表的数据
BindVoteListData();
}
}
privatevoidBindVoteListData()
{//获取投票项目的所有数据
WebVote.Votevote=newVote();
etVotes();
//设置列表控件的Text属性和Value属性
ItemList.DataTextField="Item";
ItemList.DataValueField="VoteID";
//设置控件的数据源,并绑定控件的数据
ItemList.DataSource=recv;
ItemList.DataBind();
recv.Close();//关闭数据读取器
}
网络在线投票系统运行之后,投票项目管理页面VoteItemManage.aspx的初始化界面如图5所示,此时已经显示投票的项目信息。
3.添加功能
单击页面VoteItemManage.aspx中的【增加新的投票项目】按钮,触发事件AddBtn_Click(objectsender,System.EventArgse),该事件实现添加一个新的投票项目。
事件AddBtn_Click(objectsender,System.EventArgse)的程序代码如下:
privatevoidAddBtn_Click(objectsender,System.EventArgse)
{
if(Item.Text.Length>0)
{//定义类
WebVote.Votevote=newVote();
try
{//添加新数据项
vote.AddVote(Item.Text.Trim());
BindVoteListData();
//显示操作结果信息
Response.Write("<script>window.alert('"
+ASPNET2System.OPERATIONADDSUCCESSMESSAGE+"')</script>");
}
catch(Exceptionex)
{//显示添加操作中的失败、错误信息
Response.Redirect("~/DesktopModules/ErrorPage.aspx?
ErrorUrl="
rectErrorUrl(Request.RawUrl)
+"&ErrorMessage="+ex.Message.Replace("\n",""));
}
}
}
4.删除功能
单击页面VoteItemManage.aspx中的【×】按钮,触发事件deleteBtn_Click(objectsender,System.EventArgse),该事件实现删除已选择的投票项目。
事件deleteBtn_Click(objectsender,System.EventArgse)的程序代码如下:
protectedvoiddeleteBtn_Click(objectsender,ImageClickEventArgse)
{
if(ItemList.SelectedIndex<=-1)
{//显示操作结果信息
Response.Write("<script>window.alert('"
+ASPNET2System.OPERATIONNOSELECTMESSAGE+"')</script>");
return;
}
//定义类
WebVote.Votevote=newVote();
try
{//删除数据
vote.DeleteVote(Int32.Parse(ItemList.SelectedValue));
//重新绑定数据
BindVoteListData();
}
catch(Exceptionex)
{//显示删除操作中的失败、错误信息
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、ShowVote和VoteMessage。
控件VoteList用来显示参与投票的所有项目;控件VoteBtn提交用户的投票;控件ShowVote实现用户查看投票情况;控件VoteMessage显示用户投票的操作结果。
页面WebOnlinVote.aspx的设计界面如图6所示。
页面WebOnlinVote.aspx的HTML设计代码如下:
<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="WebOnlinVote.aspx.cs"Inherits="WebOnlinVote"%>
<HTML><HEAD><title>网络在线投票系统</title></HEAD>
<asp:
datagridid="VoteList"CssClass="GbText"Runat="server"
AutoGenerateColumns="False"DataKeyField="VoteID">
<Columns>
<asp:
TemplateColumnItemStyle-Width="200">
<ItemTemplate><%#DataBinder.Eval(Container.DataItem,"Item")%>
</ItemTemplate></asp:
TemplateColumn>
<asp:
TemplateColumnItemStyle-Width="100">
<ItemTemplate>
<asp:
CheckBoxID="VoteCheck"Runat="server"></asp:
CheckBox>
</ItemTemplate></asp:
TemplateColumn>
</Columns>
<FooterStyleBackColor="#FFFFCC"ForeColor="#330099"/>
<SelectedItemStyleBackColor="#FFCC66"Font-Bold="True"
ForeColor="#663399"/>
<PagerStyleBackColor="#FFFFCC"ForeColor="#330099"
HorizontalAlign="Center"/>
<ItemStyleBackColor="White"ForeColor="#330099"/>
<HeaderStyleBackColor="#990000"Font-Bold="True"
ForeColor="#FFFFCC"/>
</asp:
datagrid>
<asp:
buttonid="VoteBtn"Runat="server"Width="100"
Text="我要投票"></asp:
button>
<asp:
buttonid="ShowVote"Runat="server"Width="100"
Text="查看投票"></asp:
button>
<asp:
LabelID="VoteMessage"Runat="server"Visible="False"
ForeColor="red"Font-Bold="True">投票成功!
!
!
</asp:
Label></td>
</HTML>
1.页面初始化
页面WebOnlinVote.aspx调用函数Page_Load(Objectsender,EventArgse)初始化,该函数调用函数BindVoteListData()从数据库投票表Votes中获取所有投票项目的信息,并把获取的数据设置为数据网格控件VoteList的数据源。
函数Page_Load(Objectsender,EventArgse)和函数BindVoteListData()的程序代码如下:
privatevoidPage_Load(objectsender,System.EventArgse)
{
if(!
Page.IsPostBack)
{//绑定投票的项目
BindVoteListData();
VoteMessage.Visible=false;
}
}
privatevoidBindVoteListData()
{//获取所有数据
WebVote.Votevote=newVote();
SqlDataReaderrecv=vote.GetVotes();
//设置控件的数据源,并绑定数据
VoteList.DataSource=recv;
VoteList.DataBind();
recv.Close();//关闭数据读取器
}
网络在线投票系统运行之后,投票页面WebOnlinVote.aspx的初始化界面如图7所示,此时显示被投票的项目信息。
2.投票功能
用户单击页面WebOnlinVote.aspx中的【我要投票】按钮和【查看投票】按钮分别触发