035. asp.netWeb用户控件之四通过用户控件实现投票和结果分析
用户控件Vote.ascx代码
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="vote.ascx.cs" Inherits="vote" %> <link href="style.css" rel="stylesheet" type="text/css" /> <style type="text/css"> .style1 { font-size: small; color: #0066CC; } </style> <div id="box"> <table width="370" border="0"> <tr> <td width="364" height="37" class="style1">您对本公司的售后服务是否满意?</td> </tr> <tr> <td height="106"> <asp:RadioButtonList ID="RadioButtonList1" runat="server" Font-Size="9pt"> <asp:ListItem Selected="True">非常满意</asp:ListItem> <asp:ListItem>基本满意</asp:ListItem> <asp:ListItem>不满意</asp:ListItem> <asp:ListItem>不发表意见</asp:ListItem> </asp:RadioButtonList> </td> </tr> <tr> <td height="30" align="center"> <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="images/dc_03.gif" onclick="ImageButton1_Click" /> <img src="images/dc_05.gif" width="82" height="33" onclick="window.location.replace('result.aspx')" style="cursor:pointer"/></td> </tr> </table> </div>
用户控件vote.ascx.cs代码:
public partial class vote : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) { } /// <summary> /// 从txt文件中读取投票数量 /// </summary> /// <param name="P_str_path">要读取的txt文件的路径及名称</param> /// <returns>返回一个int类型的值,用来记录投票数量</returns> public static int readCount(string P_str_path) { int P_int_count = 0; StreamReader streamread; streamread = File.OpenText(P_str_path); while (streamread.Peek() != -1) { P_int_count = int.Parse(streamread.ReadLine()); } streamread.Close(); return P_int_count; } /// <summary> /// 写入投票数量 /// </summary> /// <param name="P_str_path">要操作的txt文件的路径及名称</param> public static void addCount(string P_str_path) { int P_int_count = readCount(P_str_path); P_int_count += 1; //将数据记录写入文件 StreamWriter streamwriter = new StreamWriter(P_str_path, false); streamwriter.WriteLine(P_int_count); streamwriter.Close(); } protected void ImageButton1_Click(object sender, ImageClickEventArgs e) { string P_str_IP = Request.UserHostAddress.ToString(); HttpCookie oldCookie = Request.Cookies["userIP"]; if (oldCookie == null) { int flag = RadioButtonList1.SelectedIndex; switch (flag) { case 0: addCount(Server.MapPath("result1.txt")); break; case 1: addCount(Server.MapPath("result2.txt")); break; case 2: addCount(Server.MapPath("result3.txt")); break; case 3: addCount(Server.MapPath("result4.txt")); break; } Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('投票成功,谢谢您的参与!');", true); HttpCookie newCookie = new HttpCookie("userIP"); //定义新的Cookie对象 newCookie.Expires = DateTime.MaxValue; //添加新的Cookie变量IPaddress,值为P_str_IP newCookie.Values.Add("IPaddress", P_str_IP); Response.AppendCookie(newCookie); //将变量写入Cookie文件中 } else { string P_str_oldIP = oldCookie.Values["IPaddress"]; if (P_str_IP.Trim() == P_str_oldIP.Trim()) { Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('一个IP地址只能投一次票,谢谢您的参与!');", true); } else { HttpCookie newCookie = new HttpCookie("userIP"); newCookie.Values.Add("IPaddress", P_str_IP); newCookie.Expires = DateTime.MaxValue; Response.AppendCookie(newCookie); int rflag = RadioButtonList1.SelectedIndex; switch (rflag) { case 0: addCount("result1.txt"); break; case 1: addCount("result2.txt"); break; case 2: addCount("result3.txt"); break; case 3: addCount("result4.txt"); break; } Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('投票成功,谢谢您的参与!');", true); } } } }
结果页面result.aspx代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@ Register src="vote.ascx" tagname="vote" tagprefix="uc1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>在线投票系统</title> </head> <body> <form id="form1" runat="server"> <uc1:vote ID="vote1" runat="server" /> </form> </body> </html>
结果页面result.aspx.cs代码:
public partial class Default2 : System.Web.UI.Page { protected string M_str_rate1; protected string M_str_rate2; protected string M_str_rate3; protected string M_str_rate4; protected int P_int_count1; protected int P_int_count2; protected int P_int_count3; protected int P_int_count4; protected void Page_Load(object sender, EventArgs e) { P_int_count1 = readCount(Server.MapPath("result1.txt")); P_int_count2 = readCount(Server.MapPath("result2.txt")); P_int_count3 = readCount(Server.MapPath("result3.txt")); P_int_count4 = readCount(Server.MapPath("result4.txt")); int P_int_count = P_int_count1 + P_int_count2 + P_int_count3+P_int_count4; if (P_int_count == 0) { Response.Write("<script>alert('还没有人投过票!')</script>"); lblresult.Text = "共有0人参与投票"; } else { M_str_rate1 = (Convert.ToDouble(P_int_count1) * 100 / Convert.ToDouble(P_int_count)).ToString("0.00") + "%"; M_str_rate2 = (Convert.ToDouble(P_int_count2) * 100 / Convert.ToDouble(P_int_count)).ToString("0.00") + "%"; M_str_rate3 = (Convert.ToDouble(P_int_count3) * 100 / Convert.ToDouble(P_int_count)).ToString("0.00") + "%"; M_str_rate4 = (Convert.ToDouble(P_int_count4) * 100 / Convert.ToDouble(P_int_count)).ToString("0.00") + "%"; lblresult.Text = "共有" + P_int_count.ToString() + "人参与投票"; } } /// <summary> /// 从txt文件中读取投票数量 /// </summary> /// <param name="P_str_path">要读取的txt文件的路径及名称</param> /// <returns>返回一个int类型的值,用来记录投票数量</returns> public static int readCount(string P_str_path) { int P_int_count = 0; StreamReader streamread; streamread = File.OpenText(P_str_path); while (streamread.Peek() != -1) { P_int_count = int.Parse(streamread.ReadLine()); } streamread.Close(); return P_int_count; } }
默认页面Default.aspx页面代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@ Register src="vote.ascx" tagname="vote" tagprefix="uc1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>在线投票系统</title> </head> <body> <form id="form1" runat="server"> <uc1:vote ID="vote1" runat="server" /> </form> </body> </html>
style.css代码:
#box { height: 195px; width: 370px; background-image: url(images/1.jpg); background-repeat: no-repeat; padding-top: 65px; padding-right: 45px; padding-left: 45px; } #box2 { height: 195px; width: 370px; background-image: url(images/2.jpg); background-repeat: no-repeat; padding-top: 65px; padding-right: 45px; padding-left: 45px; }
用到的四个文件:
用到的几张图片:
最终效果展示: