ASP.NET网站制作之用ASP.NET 2.0计划收集在线投票体系
我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。asp.net|计划|投票|收集|在线 1、体系功效计划和数据库计划1、体系功效计划和数据库计划
1.1体系功效计划
收集在线投票体系完成的功效对照复杂,详细以下:
◎投票项目标办理;
◎增加投票的项目;
◎删除投票的项目;
◎对项目举行投票;
◎检察项目标投票情形。
1.2数据库计划
本体系的数据库计划对照复杂,只必要存储投票的信息便可。在SQLServer2000中创立一个数据库,称号为“WebVoteDB”,并在该数据库中创立投票项目表Votes。个中“VoteID”字段存储投票项目ID;“Item”字段存储投票项目标称号;“VoteCount”字段存储每一个项目标票数。创立投票项目表Votes的操纵界面如所示。
投票项目表Votes必要存储投票项目称号及其票数,表的字段申明如表1所示。
创立投票项目表Votes的操纵界面
表1Votes表
字段名
数据类型
字段说明
键引用
备注
TreeIDint投票项目IDPK主键(主动增一)Itemvarchar(200)
投票项目标称号
VoteCount
int
票数
在线投票功效是网站使用程序最经常使用的功效之一,也是网站使用程序开辟经常使用的功效模块。当网站的办理员或用户提出一些新的设法与倡议大概呈现一种新产物时,他们大概必要经由过程用户大概客户的投票体例来断定这些新的设法、倡议大概新的产物是不是满意用户大概客户的需求,别的,网站还能够经由过程网站在线投票功效做一些实践性的查询拜访事情。本章先容的收集在线投票体系还以直不雅的图形化界面显现投票信息,并且还能够实时检察投票的情形。
2、投票体系完成
创立好体系所必要的数据库以后,收集在线投票体系的详细完成能够分为上面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
SQLHelper.SQLHelpersqlHelper=newSQLHelper.SQLHelper();
//创立会见数据库的参数
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的计划界面如所示。
页面Default.aspx的计划界面
页面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个链接按钮。
投票页面Default.aspx的初始化界面
投票项目办理页面计划
在使用程序WebVote中增加一个新的Web页面,并定名为VoteItemManage.aspx,它的代码埋没文件为VoteItemManage.aspx.cs文件。
1.页面计划
在页面VoteItemManage.aspx上增加一个列表控件、一个Button控件、一个TextBox控件和一个ImageButton控件,它们的称号分离为ItemList、AddBtn、Item和deleteBtn。控件ItemList显现投票项目表中的一切数据;控件AddBtn完成增加一个新的投票项目;控件Item用来输出新的投票项目称号;控件deleteBtn删除一个投票项目。页面ItemManage.aspx的计划界面如所示。
页面VoteItemManage.aspx的计划界面
页面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"/>
<asp:TextBoxID="Item"Runat="server"Width="252"
CssClass="InputCss"></asp:TextBox>
<asp:ButtonID="AddBtn"Runat="server"Text="增添新的投票项目"
CssClass="ButtonCss"></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();
SqlDataReaderrecv=vote.GetVotes();
//设置列表控件的Text属性和Value属性
ItemList.DataTextField="Item";
ItemList.DataValueField="VoteID";
//设置控件的数据源,并绑定控件的数据
ItemList.DataSource=recv;
ItemList.DataBind();
recv.Close();//封闭数据读取器
}
收集在线投票体系运转以后,投票项目办理页面VoteItemManage.aspx的初始化界面如所示,此时已显现投票的项目信息。
投票项目办理页面VoteItemManage.aspx的初始化界面
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="
+ASPNET2System.RedirectErrorUrl(Request.RawUrl)
+"&ErrorMessage="+ex.Message.Replace("
",""));
}
}
}
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("
",""));
}
}
投票页面计划
在使用程序WebVote中增加一个新的Web页面,并定名为WebOnlineVote.aspx,它的代码埋没文件为WebOnlineVote.aspx.cs文件。
1.页面计划
在页面WebOnlineVote.aspx上增加一个数据网格控件、两个Button控件和一个Label控件,它们的称号分离为VoteList、VoteBtn、ShowVote和VoteMessage。控件VoteList用来显现介入投票的一切项目;控件VoteBtn提交用户的投票;控件ShowVote完成用户检察投票情形;控件VoteMessage显现用户投票的操纵了局。页面WebOnlinVote.aspx的计划界面如所示。
页面WebOnlinVote.aspx的计划界面
页面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的初始化界面如所示,此时显现被投票的项目信息。
投票页面WebOnlinVote.aspx的初始化界面
2.投票功效
用户单击页面WebOnlinVote.aspx中的【我要投票】按钮和【检察投票】按钮分离触发事务VoteBtn_Click(objectsender,System.EventArgse)和事务ShowVote_Click(objectsender,System.EventArgse),它们分离完成用户投票功效和检察投票功效。在投票事务中,事务起首反省用户对哪些项目举行了投票,然后变动项目标票数。在检察投票事务中,事务重定向到页面ShowVoteInfo.aspx。事务VoteBtn_Click(objectsender,System.EventArgse)和事务ShowVote_Click(objectsender,System.EventArgse)的程序代码以下:
privatevoidVoteBtn_Click(objectsender,System.EventArgse)
{//界说类
WebVote.Votevote=newVote();
try
{//增加用户的投票的项目
foreach(DataGridItemiteminVoteList.Items)
{//查找每一个投票项目标选择控件
CheckBoxcheck=(CheckBox)item.FindControl("VoteCheck");
if(check!=null)
{//申明用户已投票,则必要增加这一票
if(check.Checked==true)
{//修正数据库中的票数
vote.UpdateVote(Int32.Parse(
VoteList.DataKeys.ToString()));
VoteMessage.Visible=true;//显现用户投票操纵的了局
}
}
}
//显现操纵了局信息
Response.Write("<script>window.alert(
投票乐成,感激您的介入!!!)</script>");
}
catch(Exceptionex)
{//显现修正操纵中的失利、毛病信息
Response.Redirect("~/DesktopModules/ErrorPage.aspx?ErrorUrl="
+ASPNET2System.RedirectErrorUrl(Request.RawUrl)
+"&ErrorMessage="+ex.Message.Replace("
",""));
}
}
privatevoidShowVote_Click(objectsender,System.EventArgse)
{//导向检察投票了局页面
Response.Redirect("~/ShowVoteInfo.aspx");
}
显现投票了局页面计划
在使用程序WebVote中增加一个新的Web页面,并定名为ShowVoteInfo.aspx,它的代码埋没文件为ShowVoteInfo.aspx.cs文件。
1.页面计划
在页面ShowVoteInfo.aspx上增加一个数据网格控件、一个Label控件和一个Button控件,它们的称号分离为VoteList、VoteMessage、WebOnlineVoteBtn。控件VoteList用来显现介入投票的项目标投票情形,并盘算各个投票项目所占的百分比;控件VoteMessage显现用户投票的总票数;控件WebOnlineVoteBtn完成投票页面WebOnlinVote.aspx。页面ShowVoteInfo.aspx的计划界面如所示。
页面ShowVoteInfo.aspx的计划界面
页面ShowVoteInfo.aspx的HTML计划代码以下:
<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ShowVoteInfo.aspx.cs"Inherits="ShowVoteInfo"%>
<HTML><HEAD><title>收集在线投票体系</title></HEAD>
<asp:DataGridID="VoteList"Runat="server"CssClass="Normal"
AutoGenerateColumns="False"DataKeyField="VoteID">
<HeaderStyleBackColor="Orange"></HeaderStyle>
<Columns>
<asp:TemplateColumnHeaderText="投票项目">
<ItemStyleWidth="200px"></ItemStyle>
<ItemTemplate><%#DataBinder.Eval(Container.DataItem,"Item")%>
</ItemTemplate></asp:TemplateColumn>
<asp:TemplateColumnHeaderText="所占总票的百分比">
<ItemStyleWidth="300px"></ItemStyle>
<ItemTemplate>
<asp:ImageID="voteImage"Runat="server"Height="20"Width=<%#
FormatVoteImage(FormatVoteCount(DataBinder.Eval(
Container.DataItem,"VoteCount").ToString()))%>
mageUrl="Images/vote.gif">
</asp:Image>
<%#FormatVoteCount(DataBinder.Eval(Container.DataItem,
"VoteCount").ToString())%>%
</ItemTemplate></asp:TemplateColumn>
<asp:TemplateColumnHeaderText="票数">
<ItemStyleWidth="100px"></ItemStyle>
<ItemTemplate>
<asp:LabelID="VoteCount"Runat="server">
<%#DataBinder.Eval(Container.DataItem,"VoteCount")%>
</asp:Label>
</ItemTemplate></asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<asp:LabelID="VoteMessage"Runat="server"ForeColor="Red"
Width="100%"></asp:Label>
<asp:buttonid="WebOnlineVoteBtn"Runat="server"Width="100"
Text="前往投票页面"CssClass="ButtonCss"
></asp:button>
</HTML>
2.页面初始化
页面ShowVoteInfo.aspx挪用函数Page_Load(Objectsender,EventArgse)初始化。该函数挪用函数BindVoteListData()从数据库投票表Votes中猎取一切投票的项目,并把猎取的数据绑定到数据网格控件VoteList。函数Page_Load(Objectsender,EventArgse)还挪用函数SetVoteTotal()从数据库中猎取投票的总票数。函数Page_Load(Objectsender,EventArgse)、函数SetVoteTotal()和函数BindVoteListData()的程序代码以下:
intvoteTotal=0;
privatevoidPage_Load(objectsender,System.EventArgse)
{//设置总票数voteTotal
SetVoteTotal();
if(!Page.IsPostBack)
{//显现用户投票的详细情形
BindVoteListData();
VoteMessage.Text="总票数为:"+voteTotal.ToString();
}
}
privatevoidSetVoteTotal()
{//猎取一切数据
WebVote.Votevote=newVote();
SqlDataReaderrecv=vote.GetVotes();
voteTotal=0;
//读取每个介入投票的项目,并盘算票数总和
while(recv.Read())
{//盘算它们的总和
voteTotal+=Int32.Parse(recv["VoteCount"].ToString());
}
recv.Close();
}
privatevoidBindVoteListData()
{//猎取数据
WebVote.Votevote=newVote();
SqlDataReaderrecv=vote.GetVotes();
//设置控件的数据源,并绑定控件的数据
VoteList.DataSource=recv;
VoteList.DataBind();
recv.Close();
}
页面ShowVoteInfo.aspx初始化时(即数据网格控件VoteList绑定命据时),分离挪用函数FormatVoteCount(StringvoteCount)和函数FormatVoteImage(intvoteCount)来盘算每一个投票项目所占的百分比和图象的长度(绘制比例图片)。函数FormatVoteCount(StringvoteCount)和函数FormatVoteImage(intvoteCount)的程序代码以下:
publicintFormatVoteCount(StringvoteCount)
{//假如投票没有被投票
if(voteCount.Length<=0)
{//前往0个百分比
return(0);
}
if(voteTotal>0)
{//前往实践的百分比
return((Int32.Parse(voteCount)*100/voteTotal));
}
return(0);
}
publicintFormatVoteImage(intvoteCount)
{//前往百分比的图象的长度
return(voteCount*3);
}
收集在线投票体系运转以后,显现投票了局页面ShowVoteInfo.aspx的初始化界面如所示,此时显现各个项目标投票了局。
某个时分的投票了局页面ShowVoteInfo.aspx
有时也搞不懂应该学那种;主要看你以后去的那个公司是使用哪种了。就像王千祥的课上说的:企业应用现在主要就三层(其实也差不多就是MVC):表示层(主要使用html写的,很简单)、业务逻辑层(主要就是应用服务器的)。最后就是数据层(其实就是学习数据库) 我的意思是.net好用,从功能上来说比JAVA强还是很明显的。 使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的 ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。 JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。 使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
页:
[1]