zoukankan      html  css  js  c++  java
  • 《ASP.NET1200例》实现投票的用户控件

    用户控件ascx

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="249VoteControl.ascx.cs" Inherits="FirstWeb._249VoteControl1" %>
    您对公司餐饮服务是否满意?
    <asp:RadioButtonList ID="RadioButtonList1" runat="server">
        <asp:ListItem Value="0">非常满意</asp:ListItem>
        <asp:ListItem Value="1">比较满意</asp:ListItem>
        <asp:ListItem Value="2">一般</asp:ListItem> 
    </asp:RadioButtonList>
    <asp:Button ID="Button1" runat="server" Text="我要投票" onclick="Button1_Click" />
    <asp:Button ID="Button2" runat="server" Text="查看结果" onclick="Button2_Click" />

    控件后台代码ascx.cs

    /// <summary>
        /// 将投票数量写入文件,然后读取出来显示投票结果
        /// </summary>
        public partial class _249VoteControl1 : System.Web.UI.UserControl
        {
            public static int readCount(String fielPath)
            {
                int count = 0;
                StreamReader sr = File.OpenText(fielPath) ;
                while (sr.Peek() != -1)
                {
                    count =int.Parse( sr.ReadLine().ToString());
                }
                sr.Close();
                return count;
            }
    
            public static void addCount(String filePath)
            {
                int count = readCount(filePath);
                StreamWriter sw = new StreamWriter(filePath,false);
                count = count + 1;
                sw.WriteLine(count);
                sw.Close();
            
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                String userIp = Request.UserHostAddress.ToString();
                HttpCookie oldCookie = Request.Cookies["ipCookie"];
                if (oldCookie == null)
                {
                    int flag = RadioButtonList1.SelectedIndex;//---
                    switch (flag)
                    {
                        case 0: addCount(Server.MapPath("Vote1.txt")); break;
                        case 1: addCount(Server.MapPath("Vote2.txt")); break;
                        case 2: addCount(Server.MapPath("Vote3.txt")); break;
                    }
                    Page.ClientScript.RegisterStartupScript(this.GetType(),"","alert('投票成功,感谢您的参与');",true);
                    HttpCookie newCookie = new HttpCookie("ipCookie");
                    newCookie.Values.Add("Ip", userIp);
                    newCookie.Expires = DateTime.Now.AddSeconds(5);//Cookie 的过期时间设置为当前时间之后5秒
                    Response.AppendCookie(newCookie);  //---
                }
                else
                {
                    if (oldCookie.Values["Ip"].ToString().Trim() == userIp.Trim())
                    {
                        Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('同一个IP只能投票一次');", true);
                    }
    
                    int flag = RadioButtonList1.SelectedIndex;   //---
                    switch (flag)
                    {
                        case 0: addCount(Server.MapPath("Vote1.txt")); break;
                        case 1: addCount(Server.MapPath("Vote2.txt")); break;
                        case 2: addCount(Server.MapPath("Vote3.txt")); break;
                    }
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('投票成功,感谢您的参与');", true);
                    HttpCookie newCookie = new HttpCookie("ipCookie");
                    newCookie.Values.Add("Ip", userIp);
                    newCookie.Expires = DateTime.Now.AddSeconds(5);//Cookie 的过期时间设置为当前时间之后5秒
                    Response.AppendCookie(newCookie);    //---
                }
            }
    
            protected void Button2_Click(object sender, EventArgs e)
            {
                Response.Write("<script>window.open('249VoteResult.aspx','','height=500,width=600');</script>");
            }
    View Code

    引用控件的页面aspx

    <%@ Register Src="~/249VoteControl.ascx" TagName="VoteControl" TagPrefix="uc3" %> 
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <uc3:VoteControl runat="server">//对投票控件的应用
        </uc3:VoteControl>
        </div>
        </form>
    </body>

    投票结果页面

    VoteResult.aspx

    <body>
        <form id="form1" runat="server">
        <div>
          <table id="myTable" border="1" cellpadding="5"  cellspacing="0"  runat="server" style="" >
         <h2>查看投票结果</h2>
         
          <tr><td>序号</td>
          <td>投票意见</td>
          <td>票数</td>
          <td>百分比</td>
          </tr>
          <tr><td>1</td>
          <td>非常满意</td>
          <td><%=vote1%></td>
          <td><%=vote1percent%> % </td>
          </tr>
          <tr><td>2</td>
          <td>比较满意</td>
          <td><%=vote2%></td>
          <td><%=vote2percent%> % </td>
          </tr>
          <tr><td>3</td>
          <td>一般</td>
          <td><%=vote3%></td>
          <td><%=vote3percent%> % </td>
          </tr>
          </table>
          <h3>参与投票人数共<%=count%></h3>
        </div>
        </form>
    </body>

    VoteResult.aspx.cs

      public int vote1;
            public int vote2;
            public int vote3;
            public String vote1percent;
            public String vote2percent;
            public String vote3percent;
            public int count;
            public static int readCount(String fielPath)
            {
                int count = 0;
                StreamReader sr = File.OpenText(fielPath);
                while (sr.Peek() != -1)
                {
                    count = int.Parse(sr.ReadLine().ToString());
                }
                sr.Close();
                return count;
            }
    
    
            protected void Page_Load(object sender, EventArgs e)
            {
                vote1 = readCount(Server.MapPath("Vote1.txt"));
                vote2 = readCount(Server.MapPath("Vote2.txt"));
                vote3 = readCount(Server.MapPath("Vote3.txt"));
                count=vote1+vote2+vote3;
                vote1percent = (Convert.ToDouble(vote1) * 100 / Convert.ToDouble(count)).ToString("0.00"); //将double型转换为string型。并保留2位小数点
                vote2percent = (Convert.ToDouble(vote2) * 100 / Convert.ToDouble(count)).ToString("0.00"); //将double型转换为string型。并保留2位小数点
                vote3percent = (Convert.ToDouble(vote3) * 100 / Convert.ToDouble(count)).ToString("0.00"); //将double型转换为string型。并保留2位小数点
    
            }

    总结:

    【1】对控件的引用<%@ Register Src="~/249VoteControl.ascx" TagName="VoteControl" TagPrefix="uc3" %>

     <uc3:VoteControl runat="server">
        </uc3:VoteControl>

    【2】关于文件的读写 

    StreamReader sr = File.OpenText(fielPath) ;

      while (sr.Peek() != -1)
          {
              count =int.Parse( sr.ReadLine().ToString());
           }

     StreamWriter sw = new StreamWriter(filePath,false);

    sw.WriteLine(count);

    【3】疑惑: Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('同一个IP只能投票一次');", true);

    【4】关于查看投票的结果百分比问题

    将double型转换为string型。并保留2位小数点

    vote1percent = (Convert.ToDouble(vote1) * 100 / Convert.ToDouble(count)).ToString("0.00");

     【5】最后发点牢骚---困扰程序运行的都是一些小的细节,以前老师总说:现在偷得懒以后总要还的,

    现在真的被一些基础的细节问题扰的崩溃。写代码需要沉下心,再沉下心,忌心浮气躁。

  • 相关阅读:
    C++笔记(2018/2/6)
    2017级面向对象程序设计寒假作业1
    谁是你的潜在朋友
    A1095 Cars on Campus (30)(30 分)
    A1083 List Grades (25)(25 分)
    A1075 PAT Judge (25)(25 分)
    A1012 The Best Rank (25)(25 分)
    1009 说反话 (20)(20 分)
    A1055 The World's Richest(25 分)
    A1025 PAT Ranking (25)(25 分)
  • 原文地址:https://www.cnblogs.com/abc8023/p/3461448.html
Copyright © 2011-2022 走看看