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;
}

用到的四个文件:

用到的几张图片:

最终效果展示:

原文地址:https://www.cnblogs.com/wxylog/p/6187345.html